Linux的防火墙工作在网络层,属于典型的包过滤防火墙。


  netfilter和iptables都是指linux防火墙的,但是他们的区别在于:

1. netfilter指的是linux内核中实现包过滤的结构,称为“内核态”

2. iptables指的是管理linux防火墙的命令程序,称为“用户态”


iptables采用了表和链的分层结构,

包括4个表:filter 主要用于包过滤

           nat    主要用于地址转换

  mangle 主要用于数据×××

    raw    主要用于状态跟踪


和5个链:INPUT      入站口

OUTPUT       出站口

FORWARD      负责转发

PREROUTING   路由选择前

POSTROUTING  路由选择后

      (表中包含链,链中包含规则)

  自定义的链是不能单独使用的,必须由默认链调用才可以。



如今最常用的防火墙分为:

主机型防火墙: 主要用到了filter表的INPUT OUTPUT

网络型防火墙: 主要用到了nat表的PREROUTING FORWARD POSTROUTING



1.规则表的应用顺序:raw--mangle--nat--filter

2.规则链的应用顺序:

1)入站时 PREROUTING -- INPUT

2)出站时 OUTPUT -- POSTROUTING

3)转发时 PREROUTING -- FORWARD -- POSTROUTING

3.规则的应用顺序:匹配即停止,log策略除外,如果找不到相符的规则就按照默认策略


iptables的语法结构:

iptables (-t表名,如果不指定则默认是filter表) 选项 链 匹配条件 -j 控制类型

控制类型有:ACCEPT 允许通过

            DROP 直接丢弃数据包

            REJECT 拒接通过

            LOG 日志类型


iptables配置实例:

1.查看防火墙列表:

IPTABLES防火墙管理(filter)_防火墙


2.清空filter表中所以规则:

IPTABLES防火墙管理(filter)_filter_02


3.清空filter表中所有自定义的规则链:

IPTABLES防火墙管理(filter)_linux_03


4.删除INPUT链中的第一条规则:

IPTABLES防火墙管理(filter)_linux_04


5.更改防火墙默认规则:

IPTABLES防火墙管理(filter)_linux_05


6.允许所有tcp包进入:

IPTABLES防火墙管理(filter)_linux_06


7.允许tcp的80端口进入:

IPTABLES防火墙管理(filter)_linux_07


8.将各个链中的规则进行保存:

IPTABLES防火墙管理(filter)_linux_08