1.iptables使用方法
流量经过防火墙设备,防火墙会从上至下来读取规则策略,一旦匹配到了合适的就会去执行并立即结束匹配且不再进行默认区域的匹配;如果不能匹配到明细规则,则进行默认区域的匹配。这是硬件防火墙手册写的话,也同样适用于别的形态防火墙逻辑
原文参考:https://www.cnblogs.com/wdp-home/p/11651855.html
系统学习建议参考原文,写以下笔记只是为了让我后续使用过程中快速查找
-
iptables命令把对数据进行过滤或处理数据包的策略叫做规则,把多条规则又存放到一个规则链中,规则链是依据处理数据包位置的不同而进行的分类,包括有:在进行路由选择前处理数据包(PREROUTING)、处理流入的数据包(INPUT)、处理流出的数据包(OUTPUT)、处理转发的数据包(FORWARD)、在进行路由选择后处理数据包(POSTROUTING)。只考虑INPUT
-
其中REJECT和DROP的动作操作都是把数据包拒绝,DROP是直接把数据包抛弃不响应,而REJECT会拒绝后再回复一条“您的信息我已收到,但被扔掉了”,让对方清晰的看到数据被拒绝的响应,分别显示以下现象
当把系统设置为REJECT之后对方会显示不可达先设置drop: //丢弃所有入方向的icmp协议 [root@localhost admin]# iptables -I INPUT -p icmp -j DROP ----------------------------------------------------------------------------- 然后去ping: C:\Users\18432>ping 192.168.119.220 正在 Ping 192.168.119.220 具有 32 字节的数据: 请求超时。 请求超时。 请求超时。 请求超时。 192.168.119.220 的 Ping 统计信息: 数据包: 已发送 = 4,已接收 = 0,丢失 = 4 (100% 丢失),清空规则后先设置REJECT: [root@localhost admin]# iptables -F //清空规则 [root@localhost admin]# iptables -L INPUT //查看当前INPUT规则 Chain INPUT (policy ACCEPT) target prot opt source destination [root@localhost admin]# iptables -I INPUT -p icmp -j REJECT //入方向icmp拒绝 ------------------------------------------------------------------------------- 然后去ping: C:\Users\18432>ping 192.168.119.220 正在 Ping 192.168.119.220 具有 32 字节的数据: 来自 192.168.119.220 的回复: 无法连到端口。 来自 192.168.119.220 的回复: 无法连到端口。 来自 192.168.119.220 的回复: 无法连到端口。 来自 192.168.119.220 的回复: 无法连到端口。 192.168.119.220 的 Ping 统计信息: 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失), -
基本的命令参数,区分大小写(记不住的,用的时候查)
参数 作用 -P 设置默认策略:iptables -P INPUT (DROP|ACCEPT) -F 清空规则链 -L 查看规则链 -A 在规则链的末尾加入新规则 -I num 在规则链的头部加入新规则 -D num 删除某一条规则 -s 匹配来源地址IP/MASK,加叹号"!"表示除这个IP外。 -d 匹配目标地址 -i 网卡名称 匹配从这块网卡流入的数据 -o 网卡名称 匹配从这块网卡流出的数据 -p 匹配协议,如tcp,udp,icmp --dport num 匹配目标端口号 --sport num 匹配来源端口号
具体命令解释:
iptables配置的防火墙规则会在下一次重启时候失效,配置完之后输入如下命令即可永久保存:
[root@localhost ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
-
查看已有的防火墙策略
[root@localhost admin]# iptables -L INPUT //查看INPUT策略 Chain INPUT (policy ACCEPT) target prot opt source destination REJECT icmp -- anywhere anywhere reject-with icmp-port-unreachable [root@localhost admin]# iptables -L //查看所有策略 Chain INPUT (policy ACCEPT) target prot opt source destination REJECT icmp -- anywhere anywhere reject-with icmp-port-unreachable Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain FORWARD_IN_ZONES (0 references) target prot opt source destination ……省略输出…… -
清空已有防火墙策略
[root@localhost ~]# iptables -F //清空防火墙策略 [root@localhost ~]# iptables -L INPUT Chain INPUT (policy ACCEPT) target prot opt source destination -
把INPUT链的默认策略设置为拒绝;
如前面所提到的防火墙策略设置无非有两种方式,一种是“通”,一种是“堵”,当把INPUT链设置为默认拒绝后,就要往里面写入允许策略了,否则所有流入的数据包都会被默认拒绝掉,需要留意规则链的默认策略拒绝动作只能是DROP,而不能是REJECT。这里的DROP是包括SSH流量的,即会把自己踢出来
[root@localhost admin]# iptables -P INPUT DROP [root@localhost admin]# iptables -L INPUT Chain INPUT (policy DROP) //这个地方默认策略是拒绝 target prot opt source destination -
在INPUT数据链中允许icmp协议:
iptables -I INPUT -p icmp -j ACCEPT[root@localhost admin]# iptables -I INPUT -p icmp -j ACCEPT [root@localhost admin]# iptables -L INPUT Chain INPUT (policy DROP) target prot opt source destination ACCEPT icmp -- anywhere anywhere -
删除INPUT中的允许icmp策略:
iptables -D INPUT 1[root@localhost admin]# iptables -D INPUT 1 [root@localhost admin]# iptables -L INPUT Chain INPUT (policy DROP) target prot opt source destination -
设置INPUT只允许指定网段访问本机22端口:
iptables -I INPUT -s 192.168.119.0/24 -p tcp --dport 22 -j ACCEPT[root@localhost admin]# iptables -I INPUT -s 192.168.119.0/24 -p tcp --dport 22 -j ACCEPT [root@localhost ~]# iptables -A INPUT -p tcp --dport 22 -j REJECT [root@localhost ~]# iptables -P INPUT ACCEPT ----------------------------------------------------------------------------------------------------- [root@localhost ~]# iptables -L INPUT Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- 192.168.119.0/24 anywhere tcp dpt:ssh REJECT tcp -- anywhere anywhere tcp dpt:ssh reject-with icmp-port-unreachable -
禁止192.168.10.5访问本机80端口:
iptables -I INPUT -s 192.168.80.5 -p tcp --dport 80 -j REJECT[root@localhost ~]# iptables -I INPUT -s 192.168.80.5 -p tcp --dport 80 -j REJECT [root@localhost ~]# iptables -L INPUT Chain INPUT (policy ACCEPT) target prot opt source destination REJECT tcp -- 192.168.80.5 anywhere tcp dpt:http reject-with icmp-port-unreachable ACCEPT tcp -- 192.168.119.0/24 anywhere tcp dpt:ssh REJECT tcp -- anywhere anywhere tcp dpt:ssh reject-with icmp-port-unreachable -
向INPUT链中添加拒绝所有主机不能访问本机1000至1024端口的防火墙策略:
[root@localhost ~]# iptables -I INPUT -p tcp --dport 1000:1024 -j REJECT [root@localhost ~]# iptables -I INPUT -p udp --dport 1000:1024 -j REJECT [root@localhost ~]# iptables -L INPUT Chain INPUT (policy ACCEPT) target prot opt source destination REJECT udp -- anywhere anywhere udp dpts:cadlock2:1024 reject-with icmp-port-unreachable REJECT tcp -- anywhere anywhere tcp dpts:cadlock2:1024 reject-with icmp-port-unreachable ACCEPT tcp -- 192.168.119.0/24 anywhere tcp dpt:ssh REJECT tcp -- anywhere anywhere tcp dpt:ssh reject-with icmp-port-unreachable
解决iptables保存报错
- 关闭防火墙:
systemctl stop firewalld - 安装iptables-service:
yum install iptables-services - 然后就可以保存了
设置开机启动iptables:
systemctl enable iptables - 关闭防火墙:

浙公网安备 33010602011771号