iptables是基于内核的防火墙,,iptables内置了filter、nat和mangle三张表。
filter 负责过滤数据包,包括的规则链有,input,output和forward;
nat 表示Network Address Translator即网络地址转换,包括的规则链有,prerouting,postrouting和output;
mangle 表则主要应用在修改数据包内容上,用来做流量整形的,默认的规则链有:INPUT,OUTPUT,NAT,POSTROUTING,PREROUTING;
input匹配目的IP是本机的数据包,forward匹配流经本机的数据包,prerouting用来修改目的地址用来做DNAT,postrouting用来修改源地址用来做SNAT。
-----------------------------------------------------------------------------------------------------------------------------------------------
启动前:
[root@localhost ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
# 各个链中都不存在任何规则。
启动后:
[root@localhost ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0 #所有输入数据包都转到 RH-Firewall-1-INPUT 链处理。
Chain FORWARD (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0 #所有转发数据包都转到 RH-Firewall-1-INPUT 链处理。
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain RH-Firewall-1-INPUT (2 references) #自定义链 RH-Firewall-1-INPUT,下面是它的规则。
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:631
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:631
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306 flags:0x16/0x02
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:3306
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
-----------------------------------------------------------------------------------------------------------------------------------------------
iptables 指令的基本格式:
<iptables> [-t 表] < 操作命令 > [ 链 ] [ 规则 ] [ -j 动作 ]
注:iptables 严格区分大小写,所有链名必须大写,表明必须小写,动作必须大写,匹配必须小写
iptables中的表:
filter、nat、mangle 。不指定则默认 filter 表。
iptables操作命令:
-A 向规则链中添加一条规则,默认被添加到末尾
-T 指定要操作的表,默认是filter
-D 从规则链中删除规则,可以指定序号或者匹配的规则来删除
-R 进行规则替换
-I 插入一条规则,默认被插入到首部,可指定插入位置顺序号,默认顺序号为1
-F 清空所选的链,重启后恢复,如清空指定链规则 iptable -F RH-Firewall-1-INPUT
-L 查看指定链规则,默认所用链,如查看指定链规则 iptables -L RH-Firewall-1-INPUT,或 iptables -L -n
iptables规则:
-N 新建用户自定义的规则链
-X 删除用户自定义的规则链
-p 用来指定协议可以是tcp,udp,icmp等也可以是数字的协议号,
-s 指定来源地址,如 -s 192.168.1.10 匹配来自 192.168.1.10 网络的数据包
--sport 来源端口,端口必须-p指定协议一起来配合使用
-d 指外出的地址,如 -d www.163.com 匹配去往 www.163.com 网络的数据包
--dport 流出端口,端口必须-p指定协议一起来配合使用
-i 进入接口,如 -i eth0 匹配是否从网络接口 eth0 进来
-o 流出接口,如 -o eth0 匹配是否从网络接口 eth0 出去
iptables动作:
ACCEPT ,允许数据包通过本链而不拦截它
DROP ,阻止数据包通过本链而丢弃它
SNAT ,来源地址转换,如 iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1 将内网 192.168.0.0/24 的原地址修改为 1.1.1.1,用于 NAT
DNAT ,转换外出地址,如 iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to 192.168.0.1 把从 ppp0 进来的要访问 TCP/80 的数据包目的地址改为192.168.0.1
MASQUERADE ,动态源地址转换(动态 IP 的情况下使用),如 iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE 将源地址是 192.168.0.0/24 的数据包进行地址伪装
注:iptables 规则修改后会马上生效,但重启 iptables 后规则会恢复到修改之前的规则,需要保存新修改的规则重启才不会恢复:
service iptables save
-----------------------------------------------------------------------------------------------------------------------------------------------
iptables 命令操作
最新推荐文章于 2024-03-22 16:38:58 发布