一、Linux防火墙的状态机制
1.iptables是可以配置有状态的防火墙,其有状态的特点是能够指定并记住发送或者接收信息包所建立的连接状态,其一共有四种状态,分别为established invalid new related。
established:该信息包已建立连接,该连接一直用于发送和接收信息包完全有效
invalid:该信息包和其他都无关联,可能包含错误的信息
new:该信息包已经或即将启动新的连接,或者还未与用于发送和接收信息包相关联
related:表示该信息包已经或正在启动新的连接并和已建立的连接相关联
二、Linux防火墙语法
1.数据包流向:
prerouting -> forward -> postrouting
prerouting -> input -> 本机output -> postrouting
2.iptables根据不同的数据包处理功能使用不同的规则表,其包括三个表:filter nat mangle
filter:默认的表,包含真正的的防火墙过滤规则,其中的规则链包括:input output forward
nat:包含源地址、目标地址及端口转换使用规则,其中的规则链包括:prerouting output和postrouting
mangle:包含用于设置特殊的数据包路由标志的规则,这些标志随后被filter表中的规则检查,其中的规则链包括:prerouting input forward postrouting output
3.表对应的相关规则链的功能:
input链:当一个数据包由内核中的路由计算确定为本地的linux系统后,会通过input链检查
output链:保留给系统自身生成的数据包
froward链:经过linux系统路由的数据包
prerouting链:用于修改目的地址(DNAT)
postrouting链:用于修改源地址(SNAT)
4.定义默认策略
默认策略定义格式:iptables -t(表名) -P(链名) (动作)
-t:表示指定默认策略应用于哪个表,可以使用filter nat mangle,如果没有指定使用哪个,默认使用filter表
链名:指定默认策略应用于哪个链,可以使用input ouput等
动作:处理数据包的动作,可以使用accept(接收数据包)和 drop(丢弃数据包)
5.查看iptables规则:
命令格式:
iptables -t(表名) -L(链名)
-L:查看指定表和指定链的规则列表
6.增加、插入、删除、替换iptables规则
参数说明:
-t 表名:定义默认策略将应用于哪个表
-A:新增一条规则,该规则将会增加到规则列表的最后一行,该参数不能使用规则编号
-I:插入一条规则,原本该位置上的规则会往后顺序移动,如果指定规则编号,则在第一条规则前插入
-D:从规则列表中删除一条规则,可以输入完整规则或直接指定规则编号来删除
-R:替换某条规则,规则被替换并不会改变顺序,必须指定要替换的规则编号
规则编号:规则编号在插入、删除和替换规则时使用,编号按照规则列表的顺序排列,第一条规则编号为1
-i | o 网卡名称:i用于指定数据包从哪块网卡进入,o用于指定数据包从那快网卡输出
-p 协议类型:指定规则应用的协议,包含tcp udp和icmp等
-s 源IP地址 | 源子网:后面接源主机IP地址或子网地址
--sport 源端口号:数据包的ip源端口号
-d 目标ip地址 | 目标子网:后面接目标主机的ip地址或子网地址
--dport 目标端口号:数据包的ip目标的端口号
-j 动作:
accept:接收数据包
drop:丢弃数据包
redirect:将数据包重新转向本机本机或另一台主机的某一个端口
reject:拦截该数据包并发回包通知对方
snat:源地址切换,改变数据包的源地址
dnat:目标地址切换,改变数据包的目的地址
masquerade:ip伪装。主机的ip地址由isp分配动态
log:日志功能,将符合规则的数据包相关信息记录在日志中
7.清除规则和计数器
在新建规则时往往需要清除原有的旧规则以免影响新设定的规则
iptables -t表名 -F | Z
-F:删除指定表中的所有规则
-Z:将指定规则中的数据包计数器和流量计数器归零
三、iptables基础知识
1.iptables的状态 state
new:本机向远程机器发送一个连接请求,这个数据包的状态时new
established:在连接建立之后,远程主机和本机通信数据的状态
related:和现有联机相关的新联机封包,类似于ftp这样的服务,用21号端口传送命令,用20号端口传送数据
invalid:无效的数据包,不能识别属于哪个连接状态或没有任何连接状态,一般会被丢弃