iptables基础知识
1、四表五链
filter表:主要用来对数据包进行过滤,包含INPUT、FORWARD、OUTPUT等三个规则链
nat表:主要用修改数据包IP地址、端口号等信息。包含PREROUTING、POSTROUTING、OUTPUT等三个规则链。
mangle表:主要用来修改数据包的TOS,TTL值,或者为数据包设置Mark标记
raw表:主要用来决定是否对数据包进行状态跟踪。包含OUTPUT、PREROUTING两个规则链。
其中:在iptables规则表中,filter表和nat表用的最多
INPUT链:处理入站数据包。
OUTPUT链:处理出站数据包。
FORWARD链:处理转发数据包。
POSTROUTING链:在进行路由选择后处理数据包。
PREROUTING链:在进行路由选择前处理数据包。
2、数据包过滤匹配流程 ,详见 数据包过滤匹配流程.JPG 图片
3、规则之间的顺序(即优先级)
当数据包抵达防火墙时,
将依次应用raw,mangle,net和filter表中对应链内的规则(如果有的话)。
4、规则链之间的顺序。
入站数据流向:来自外界的数据包到达防火墙后,首先被PREROUTING链处理,然后进行路由选择,
如果数据的目标地址是防火墙本机,那么内核将其传递给INPUT链进行处理,
通过处理后再交给上层应用程序。
转发数据流向:来自外界的数据包到达防火墙,首先被PREROUTING链处理,然后再进行路由选择,
如果数据包的目标地址是其他外部地址,则内核将其传递给FORWARD链处理,
最后交给POSTROUTING链进行处理。
出站数据流向:防火墙向外部地址发送数据包,首相被OUTPUT链进行处理,然后进进行路由选择,
再交给POSTROUTING链进行处理。
5、规则链内部各条防火墙规则之间的顺序。
当数据包经过规则链时,依次按照第一条规则,第二条规则......的顺序进行匹配和处理,
链内的过滤遵循“匹配即停止”的原则,一旦找到一条匹配的规则,则不在检查本链中后续的规则。
6、iptables基本的命令的格式
iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]
-t:用来指定表名,默认是filter表。
表名,链名:用来指定iptables命令所操作的表和链。
管理选项:表示iptables规则的方式,如:插入,追加,删除,查看等。
匹配条件:用来指定要处理的处理数据包的特征,不符合指定条件的将不会处理。
控制类型:指的是数据包的处理方式,如:允许,拒绝,丢弃等。
eg:
-A 在链的末尾追加一条规则
-I 在链的开头插入一条规则
-L 列出所有规则条目
-D 删除链内指定序号的一条规则
-F 清空所有规则
常见的控制类型:
ACCEPT:允许数据包通过。
DROP:直接丢弃数据包,不给出任何回应信息。
REJECT:拒绝数据包通过,必要时会给数据包发送端一个响应信息。
LOG:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则。
7、iptables规则的匹配条件
-p 协议名
编写iptables拒绝通过icmp的数据包
iptables -A INPUT -p icmp -j DROP
-s源地址 或 -d目标地址
编写iptables拒绝转发192.168.1.0/24到202.106.123.0/24的数据包
iptables -A FORWARD -s 192.168.1.0/24 -d 202.106.123.0/24 -j DROP
-i 接口名和-o 接口名 (入站网卡(--in-interface),出站网卡(--out-interface))
拒绝从防火墙的eth1网卡接口ping防火墙主机。
iptables -A INPUT -i eth1 -p icmp -j DROP
-m multiport --dport 端口列表 或 -m multiport --sport 端口列表 的形式,多端口之间以逗号进行分隔
若允许本机开放25,80,110,143等端口
iptables -A INPUT -p tcp -m multiport --dport 25,80,110,143 -j ACCEPT
-m iprange --src-range IP范围,-m -iprange --dst-range IP地址范围
若要允许转发源地址IP位于192.168.4.21与192.168.4.28之间的TCP数据包
iptables -A FORWARD -p tcp -m iprange --src-range 192.168.4.21-192.168.4.28 -j ACCEPT
-m mac --mac-source MAC地址
若要根据MAC地址封锁主机,禁止其访问本机的任何应用
iptables -A INPUT -m mac --mac-source 00:0c:29:c0:55:3f -j DROP
-m state --state 连接状态
常见的连接状态包括NEW(如任何连接无关的),ESTABLISHED(相应请求或者已建立连接的),
RELATED(与已有连接有相关性的,如FTP数据连接)。
只开放本机的80端口服务,对于发送给本机的TCP应答数据包给予放行,其他入站数据包均拒绝
iptables -A INPUT -p tcp -m multiport --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
service iptables save
service iptables restart
参考链接:
http://www.111cn.net/sys/linux/54609.htm 规则命令
http://blog.csdn.net/a351945755/article/details/22831775 基础知识