iptables 是 Linux 中的一个防火墙软件,它可以管理 Linux 系统上的网络流量,帮助保护网络安全。下面是一些常用的 iptables 命令及其功能:
1. iptables -L:列出 iptables 规则,可以查看当前系统中的所有防火墙规则。
2. iptables -F:清空 iptables 规则,可以删除所有规则,从而重新开始配置。
3. iptables -P INPUT DROP:将 INPUT 链的默认策略设置为 DROP,拒绝所有的入站数据包。
4. iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT:允许来自 192.168.1.0/24 网段的数据包进入系统。
5. iptables -A INPUT -p tcp --dport 22 -j ACCEPT:允许通过 SSH 连接进入系统,前提是 SSH 服务已经开启并监听在 22 端口上。
6. iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT:允许已经建立的连接数据包通过防火墙。
7. iptables -A INPUT -i lo -j ACCEPT:允许本地回环接口的数据包通过防火墙。
8. iptables -A INPUT -j DROP:拒绝所有未匹配到规则的数据包进入系统。
9. iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT:在 INPUT 链的第一条规则之前插入一条允许 HTTP 流量的规则。
10. iptables-save:保存 iptables 规则,可以将当前配置的防火墙规则保存到一个文件中。
11. iptables-restore:还原 iptables 规则,可以从一个文件中加载之前保存的防火墙规则。
12. iptables -D:删除指定规则,可以根据规则的编号或者内容来删除已经存在的规则。例如:
13. iptables -D INPUT 2:删除 INPUT 链中的第二条规则。
14. iptables -D INPUT -s 192.168.1.0/24 -j ACCEPT:删除允许 192.168.1.0/24 网段的数据包进入系统的规则。
15. iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT:允许从 eth0 接口到 eth1 接口的数据包转发,用于多网卡的情况。
16. iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE:使用 NAT 技术将内部网络的 IP 地址转换成公网 IP 地址,从而实现对外访问。这个命令是在 nat 表中新增 POSTROUTING 规则,表示对从 192.168.1.0/24 网段发出的数据包,通过 eth0 接口发送出去时进行地址转换,使用 MASQUERADE 参数可以自动获取外部网络的 IP 地址。
17. iptables -A OUTPUT -d 192.168.1.10 -j DROP:拒绝系统向指定 IP 地址发送数据包,用于限制系统对某些地址的访问。
18. iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT:限制 HTTP 流量,每分钟最多接受 25 个数据包,最大缓冲 100 个数据包。
19. iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/second -j ACCEPT:限制 ICMP 流量,每秒最多接受一个 echo-request 数据包。
20. iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 10 -j REJECT:限制 HTTP 流量,最多允许 10 个并发连接,超过限制则拒绝连接。
21. iptables -A INPUT -p tcp --dport 22 -m recent --name ssh --set -j ACCEPT:使用 recent 模块记录 SSH 连接,设置为 SSH,如果连续多次连接失败,则拒绝连接。可以通过以下命令实现:
22. iptables -A INPUT -p tcp --dport 22 -m recent --name ssh --rcheck --seconds 60 --hitcount 3 -j DROP:检查 SSH 连接是否已经超过 3 次,如果在 60 秒内达到了 3 次,则拒绝连接。
23. iptables -A INPUT -m geoip --src-cc CN -j DROP:使用 geoip 模块限制国家/地区访问,只允许来自中国的数据包进入系统。
iptables 是一个非常强大的工具,可以帮助我们保障系统的网络安全,但需要掌握一定的网络知识和技能,才能够正确地配置和使用 iptables。在使用 iptables 的时候,需要注意以下几点:
1. 确保自己已经备份了原始的 iptables 配置,以防止在操作过程中出现意外情况,导致系统无法访问网络。
2. iptables 规则的优先级很重要,如果某个规则匹配了数据包,则之后的规则就不再执行,因此必须保证规则的顺序正确。
3. 避免在 iptables 中使用 DROP 命令,除非非常必要,因为 DROP 会丢弃数据包,而 REJECT 会向发送方发送拒绝连接的消息,可以让发送方知道连接失败的原因。
4. 避免在 iptables 中使用 ACCEPT 命令,因为 ACCEPT 会接受所有的数据包,包括恶意数据包,容易被攻击者利用。
5. iptables 支持多个链,可以根据不同的目的和功能,将规则添加到不同的链中,从而更加灵活地管理网络安全。
6. iptables 支持模块化设计,可以使用不同的模块来扩展 iptables 的功能,例如使用 conntrack 模块来跟踪连接状态,使用 limit 模块限制流量,使用 geoip 模块限制地理位置等。
7. iptables 规则是在内核中执行的,因此对性能有一定的影响,需要合理地配置规则,避免过多的规则和不必要的复杂度,以保证系统的稳定性和安全性。
文中如有误请后台留言指正,感谢支持。