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.查看防火墙列表:
2.清空filter表中所以规则:
3.清空filter表中所有自定义的规则链:
4.删除INPUT链中的第一条规则:
5.更改防火墙默认规则:
6.允许所有tcp包进入:
7.允许tcp的80端口进入:
8.将各个链中的规则进行保存: