iptables防火墙
iptables的结构:iptables -> Tables -> Chains -> Rules
简单地讲,tables由chains组成,而chains又由rules组成,牢记以下三点是理解iptables规则的关键
Rules包括一个条件和一个目标(target) 如果满足条件就执行目标(target)中的规则或者特定值, 如果不满足条件,就判断下一条Rules
iptables里默认的4个规则表
raw表 --记录状态,确定你是新的数据包还是老的数据包 mangle表 --为数据包设置标记 nat表 --修改数据包中的源、目标IP地址和端口号 (用的第二多的表) filter表–过滤,确定是否放行该数据包 (用的最多的表,同时也是iptables的默认表)
iptables里默认的5种规则链
INPUT --处理入站数据包 OUTPUT --处理出站数据包 FORWARD --处理转发数据包 PREROUTING --在进行路由选择前处理数据包 POSTROUTING --在进行路由选择后处理数据包
默认情况下路由功能是关闭的(FORWARD)
cat /proc/sys/net/ipv4/ip_forward
0
打开路由功能
echo 1 >/proc/sys/net/ipv4/ip_forward
cat /proc/sys/net/ipv4/ip_forward
1
规则表间的优先顺序
依次为: raw、mangle、nat、filter
规则链内的匹配顺序
按顺序依次进行检查,找到相匹配的规则即停止(LOG策略会有例外) ,若在该链内找不到相匹配的规则,则按该链的默认策略处理
查看iptables防火墙默认的规则表
(1)iptables -L
查看filter表
iptables -t filter -L
查看mangle表
iptables -t mangle -L
查看raw表
iptables -t raw -L
查看nat表
iptables -t nat -L
Chain INPUT (policy ACCEPT) target prot opt source destination 目标 协议 选项 源 目的地
iptables [-t 表名] 管理选项 [链名] [条件匹配] [-j 目标动作或跳转]
iptables严格区分大小写
设置规则内容
-A
append
在链尾追加一条新的规则
-I
insert
在指定位置(或链首)插入一条新的规则
-R
replace
修改、替换指定位置或内容的规则
-P
policy
设置指定链的默认策略
列表查看规则
-L
列表查看各条规则信息
--line-numbers (或者--line)
查看规则信息时显示规则的行号
-n
以数字形式显示IP地址、端口等信息
-v
显示数据包个数、字节数等详细信息
清除规则
-D
删除指定位置或内容的规则
-F
清空规则链内的所有规则
自定义规则链
-N
创建一条新的规则链
-X
删除自定义的规则链
新创建的规则链如何被使用?
通过默认的5条规则链调用(类似于归于五链某个管)
删除新创建的规则链 先将链里面的规则删除,然后再将新创建的规则链删除 iptables -D sanchuang 1 iptables -X sanchuang
通用条件匹配
协议匹配
-p 协议名
常用的协议包括tcp、udp、icmp等
地址匹配
-s 源地址
-d 目标地址
地址可以是单个IP地址、网络地址(带掩码长度)
接口匹配
-i 网络接口名
对应接收数据包的网络接口
-o 网络接口名
对应发送数据包的网络接口
隐含条件匹配
端口匹配
--sport 源端口
--dport 目的端口
端口号之前必须要指明用的是哪种协议
使用"端口1:端口2"的形式可以指定一个范围的端口
TCP标记匹配
使用“--tcp-flags 检查范围 被设置的标记”的形式
如“--tcp-flags SYN,RST,ACK SYN”表示检查SYN、RST、ACK这3个标记,只有SYN为1时满足条件
ICMP类型匹配
使用“--icmp-type ICMP类型”的形式
ICMP类型可以使用类型字符串或者对应的数值,例如Echo-Request(对应的数值为8)、Echo-Reply(对应的数值为0)
显式条件匹配
MAC地址匹配
使用“-m mac”结合“--mac-source MAC地址”的形式
多端口匹配
使用“-m multiport”结合“--sports 源端口列表”或者“--dports 目标端口列表”的形式
多个端口之间使用逗号“,”分隔,连续的端口也可以使用冒号“:”分隔
举例
iptables -A INPUT -p tcp -m multiport --dport 9988,8877,6655 -j ACCEPT
IP地址范围匹配
使用“-m iprange”结合“--src-range 源IP范围”或者“--dst-range 目标IP范围”的形式
以“-”符号连接起始IP地址、结束IP地址
几个实例
在filter表的INPUT链尾追加一条新的规则
iptables -t filter -A INPUT -p tcp -j ACCEPT
在filter表的INPUT链首插入一条新的规则
iptables -I INPUT -p udp -j ACCEPT
在filter表的INPUT链的第2个位置插入一条新的规则
iptables -I INPUT 2 -p icmp -j ACCEPT
更改filter表的INPUT链的默认策略为DROP
iptables -P INPUT DROP
查看filter表的INPUT链的全部规则
iptables -L INPUT --line
[root@huyuxuan lianxi]# iptables -L INPUT --line
Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT udp – anywhere anywhere 2 ACCEPT icmp – anywhere anywhere 3 ACCEPT tcp – anywhere anywhere ! 取反
iptables -A FORWARD -p ! icmp -j ACCEPT
这里表示除了icmp协议之外的其他所有协议都ACCEPT,是icmp协议的就拒绝
|