Linux防火墙管理工具 — IPtables

一、防火墙简述

        IPtables防火墙是基于内核的防火墙,由netfilteriptables两个组件组成。主要工作在网络层,直接操作Linux内核的netfilter子系统,针对IP数据包,体现在对包内的IP地址、端口等信息的处理上。

        注:文章便于区分,整体防火墙用大写的IPtables表示,实际中还是统一简称iptables。

二、netfilteriptables关系

        iptables是IPtables防火墙的管理工具而已,真正实现防火墙功能的是netfilter,我们配置了iptables规则后,netfilter通过这些规则来进行防火墙过滤等操作。

netfilter:属于“内核态”,是内核的一部分,由–些数据包过滤表组成,这些表包含内核用来控制数据包过滤处理的规则集。firewalld即是基于netfilter的防火墙,通过libnftables库来操作netfilter。

iptables:属于“用户态”,是一种用来管理Linux防火墙的命令程序,它使插入、修改和删除数据包过滤表中的规则变得容易。

三、四表五链

        IPtables的主要的工作模块netfilter,位于内核中,在网络层的五个位置(也就是防火墙四表五链中的五链)注册了一些钩子函数,用来抓取数据包;把数据包的信息拿出来匹配各个各个链位置在对应表中的规则:匹配之后,进行相应的处理ACCEPT、DROP等等。 

表:容纳各种链

链:容纳各种规则

规则:即匹配条件+控制类型

总结:表里有链,链里有规则

四表:

        filter表 — 过滤数据包,默认表。包含三个规则链,INPUT、 FORWARD、0UTPUT

        nat表 — 网络地址转换,用来修改数据包中的源、目标IP地址或端口。包含三个规则链,OUTPUT、PREROUTING、 POSTROUTING

        mangle表 — 修改数据包内容,用来做流量整形的,给数据包设置标记。包含五个规则链,INPUT、 OUTPUT、FORWARD、 PREROUTING、 POSTROUTING

        raw表 — 确定是否对该数据包进行状态跟踪。包含两个规则链,OUTPUT、 PREROUTING

五链:

        INPUT — 处理入站数据包,匹配目标IP为本机的数据包

        OUTPUT — 处理出站数据包,–般不在此链上做配置

        FORWARD — 处理转发数据包,匹配流经本机的数据包

        PREROUTING — 在进行路由选择前处理数据包,用来修改目的地址,用来做DNAT。相当于把内网服务器的IP和端口映射到路由器的外网IP和端口上

        POSTROUTING — 在进行路由选择后处理数据包,用来修改源地址,用来做SNAT。相当于内网通过路由器NAT转换功能实现内网主机通过一个公网IP地址上网

四、IPtables防火墙命令语法

        若想使用iptables防火墙。则须关闭firewalld防火墙(开启iptables服务同时会关闭firewalld服务)。

        配置方法

      (1)使用 iptables 命令行

      (2)使用 system-config-firewall (图形界面)

        命令格式

iptables -t [表名] [管理选项] [链名] [匹配条件] -j [控制类型]

注意事项:

• -t 指定表名,不指定时默认指filter表

• 不指定链名时,默认指filter表内的所有链

• 除非设置链的默认策略,否则必须指定匹配条件

• 控制类型使用大写字母,其余均为小写

常用的控制类型

参数含义
ACCEPT允许数据包通过
DROP直接丢弃数据包,不给出任何回应信息
REJECT拒绝数据包通过,会给数据发送端一个响应信息。 SNAT∶修改数据包的源地址
DNAT修改数据包的目的地址
MASQUERADE伪装成一个非固定公网IP地址
LOG

在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则。LOG只是一种辅助动作,并没有真正处理数据包

常用的管理选项

参数含义
-A在指定链的末尾追加 (–append)一条新的规则
-I在指定链的开头插入(–insert)一条新的规则, 未指定序号时默认作为第一条规则
-R修改、替换(–replace)指定链中的某一条规则,可指定规则序号或具体内容
-P设置指定链的默认策略(–policy)
-D删除 (–delete)指定链中的某一条规则, 可指定规则序号或具体内容
-F清空(–flush)指定链中的所有规则,若未指定链名,则清空表中的所有链
-L列出 (–list)指定链中所有的规则,若未指定链名,则列出表中的所有链
-n使用数字形式(–numeric)显示输出结果,如显示 IP 地址而不是主机名
-v显示详细信息,包括每条规则的匹配包数量和匹配字节数
--line-numbers查看规则时,显示规则的序号
五、IPtables防火墙常用命令

查看规则列表∶

iptables -t [表名] -nL [链名] [--line-numbers]
或
iptables -[vn]L      # 默认查看filter表里各链的规则
iptables -nL --line-numbers      # 默认查看filter表里各链的规则,并显示序列号

清空规则∶

iptables -t [表名] -F [链名]
iptables -F      #(慎用)默认清空filter表中所有链里的所有规则,但不会清除-p配置或默认的规则,默认规则需要手动进行修改
iptables -X      #(慎用)删除用户自定义的链
iptables -Z      # 清除链记录的数据包计数和数据

删除规则∶

iptables -D INPUT 2    # 删除默认filter表INPUT链的第2条规则
iptables -t filter -D INPUT -p icmp -jREJECT    # 删除filter表INPUT链所有拒绝icmp协议的规则

一般在生产环境中设置网络型防火墙、主机型防火墙时都要设置默认规则为DROP,并设置白名单

注意∶

  • 若规则列表中有多条相同的规则时, 按内容匹配只删除的序号最小的一条
  • 按号码匹配删除时, 确保规则号码小于等于已有规则数,否则报错
  • 按内容匹配删数时, 确保规则存在, 否则报错

参考:Linux防火墙——iptables(四表五链)-CSDN博客

  • 18
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值