iptables控制Linux系统的网络数据包过滤规则。,是Linux系统下的一个命令行工具,用于配置网络数据包的过滤规则。它允许用户定义如何处理进入或离开系统的网络数据包,包括但不限于允许或拒绝特定的网络连接、端口访问等。
下面这个命令可以查看iptables的规则链:
iptables -L
下面这个命令可以将当前iptables的规则导出,并保存到根目录下的iptables_rules文件下,以便后续修改或删除iptables的规则:
iptables-save > /iptables_rules
此时可以编辑iptables_rules文件,下面的语句可以开放某IP地址段的设备对此服务器某端口的访问权限,如果是要关闭权限则最后ACCEPT改为DROP:
-A INPUT -s 【IP地址】 -p tcp --dport 【端口号】 -j ACCEPT
需要注意,iptables的规则链按顺序生效,即先添加的规则会先被处理,如果后续添加的规则与之前的规则冲突,则后续规则不会生效。举个例子:
-A INPUT -s 192.168.10.0/24 -p tcp -m tcp --dport 443 -j DROP
-A INPUT -s 192.168.10.211/32 -p tcp -m tcp --dport 443 -j ACCEPT
这里第一行语句会关闭192.168.10.0/24这个IP段所有设备对本服务器的443端口访问权限,第二行语句是开放192.168.10.211/32对本服务器的443端口访问权限。但由于规则按顺序生效的特性,实际效果上192.168.10.211/32无法访问443端口。
如何实现只有192.168.10.211/32才能访问443端口呢,参考下面语句:
-A INPUT -s 192.168.10.211/32 -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j DROP
完成规则编辑后只需写入到iptables规则链里就行了:
iptables-restore < /iptables_rules
可以iptables -L验证一下规则编辑效果