在Debian系统中,iptables是一个强大的命令行工具,用于配置Linux内核防火墙。它允许系统管理员定义规则,这些规则决定了数据包如何被处理,包括接受、拒绝或转发。iptables规则被组织成不同的链(chains),每个链对应于数据包处理的不同点。
iptables主要有五个默认链:
使用iptables进行过滤的基本步骤如下:
查看现有规则:
sudo iptables -L
sudo iptables -L -n
清空所有规则(谨慎操作):
sudo iptables -F
设置默认策略: 你可以为每个链设置默认策略,例如DROP或ACCEPT。
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
允许特定IP访问:
sudo iptables -A INPUT -s 192.168.1.100 -j ACCEPT
拒绝特定IP访问:
sudo iptables -A INPUT -s 192.168.1.101 -j DROP
允许特定端口通信:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许SSH
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 允许HTTP
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT # 允许HTTPS
拒绝所有其他进入的连接:
sudo iptables -A INPUT -j DROP
保存规则:
Debian系统通常使用iptables-persistent来保存iptables规则,以便在重启后仍然有效。
sudo netfilter-persistent save
sudo netfilter-persistent reload
删除规则:
如果需要删除特定规则,可以使用-D选项。
sudo iptables -D INPUT -s 192.168.1.100 -j ACCEPT
请注意,修改iptables规则可能会影响系统的连通性,因此在生产环境中进行更改之前,建议在测试环境中进行充分的测试。此外,确保你有足够的权限来执行这些命令,通常需要root权限。