iptables简介

iptables简介

  • 从linux防火墙知道iptables是一个防火墙工具,通过系统调用调用hook function实现访问控制。
  • iptables 命令行工具,工作于用户空间。
  • iptables的主要功能:用来编写规则,写好的规则被送往netfilter,告诉内核如何处理数据报文。

iptables的组成

  • iptables由五个表和五个链以及一些规则组成

  • 五个表table:

    • filter:过滤规则表,根据预定义的规则过滤符合条件的数据包
    • nat:network address translation 地址转换规则表
    • mangle:修改数据标记位规则表
    • raw:关闭NAT表上启用的连接跟踪机制,加快封包穿越防火墙速度
    • security:用于强制访问控制(MAC)网络规则,由Linux安全模块(如SELinux)实现
    • 优先级由高到低的顺序为:security -->raw–>mangle–>nat–>filter
      优先级次序的意思是:如果在各个表中均定义的规则有冲突时生效的次序。
  • 五个内置链chain

    • INPUT
    • OUTPUT
    • FORWARD
    • PREROUTING
    • POSTROUTING
  • 主要介绍filter和nat表

    • :其中每个表并不是完全对应于五条链
    • 注: filter表可以默认省略不写
      ==>iptables命令默认对filter表进行规则的增删改。
查看表对应的链:


方式一:
[root@centos8-8 ~]# iptables -t filter -A  此处两下tab补全
FORWARD  INPUT    OUTPUT


方式二:查看表的规则
[root@centos8-8 ~]# iptables -vnL  -t nat
  • Netfilter表和链对应关系图示:
    <img src="4.png" width = "80%"/

IPTABLES和路由

  • 路由功能发生的时间点
    • 报文进入本机后
      • 判断目标主机是否为本机
      是:INPUT
      否:FORWARD

    • 报文离开本机之前
      • 判断由哪个接口送往下一跳

    • IPTABLES和路由图示:

    • 数据包过滤匹配流程图示:

内核中数据包的传输过程

  • 当一个数据包进入网卡时,数据包首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去

  • 如果数据包就是进入本机的,数据包就会沿着图向下移动,到达INPUT链。数据包到达INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包经过OUTPUT链,然后到达POSTROUTING链输出

  • 如果数据包是要转发出去的,且内核允许转发,数据包就会向右移动,经过FORWARD链,然后到达POSTROUTING链输出

iptables规则

  • 规则rule:根据规则的匹配条件尝试匹配报文,对匹配成功的报文根据规则定义的处理动作作出处理。
  • iptables规则主要包含两部分:匹配条件处理动作
    • 匹配条件:默认为与条件,同时满足
      基本匹配:IP,端口,TCP的Flags(SYN,ACK等)
      扩展匹配:通过复杂高级功能匹配

    • 处理动作:称为target,跳转目标

      • 内建处理动作:ACCEPT,DROP,REJECT,SNAT,DNAT,MASQUERADE,MARK,LOG…
      • 自定义处理动作:自定义chain,利用分类管理复杂情形
DROP:   将数据报文丢弃,通信对方不知道。
REJECT: 明确拒绝接收数据报文,通信对方知道被拒收啦。
  • 规则要添加在链上,才生效;添加在自定义上不会自动生效

  • 链chain:

    • 内置链:每个内置链对应于一个钩子函数。
    • 自定义链:用于对内置链进行扩展或补充,可实现更灵活的规则组织管理机制;只有Hook钩子调用自定义链时,才生效。

==> iptables是OSI模型下四层(物理层、数据链路层、网络层和传输层)的防火墙。

iptables添加要点

  • iptables规则添加时考量点
    • 要实现哪种功能:判断添加在哪张表上  报文流经的路径:判断添加在哪个链上  报文的流向:判断源和目的
    • 匹配规则:业务需要

iptables学习的实验环境

  • 实验环境准备:

    • Centos7/8:
      systemctl stop firewalld.service
      systemctl disable firewalld. service

    • Centos6:
      service iptables stop
      chkconfig iptables off

  • 主机可能存在虚拟网卡的情况:

    • 虚拟网卡的存在导致centos7/8上默认禁用了firewalld时,还是存在一些默认的防火墙规则
    • 卸载libvirt-daemon此包
    • 虚拟网卡与虚拟化技术相关,此处用不着,防止默认的防火墙规则影响接下来的实验换件,暂时卸掉。
  • centos7往后的版本推荐使用firewalld,iptables-server服务默认未安装。

[root@centos8-8 ~]# ip a
    ....
    3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> ...
    ....
    4: virbr0-nic: <BROA...
    ....

[root@localhost ~]# dnf/yum remove libvirt-daemon
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值