iptables 管理防火墙
在 Debian 发行版上,默认可能没有安装 iptables,你可以手动安装:
sudo apt update
sudo apt install iptables -y
卸载
apt remove iptables
查看版本
iptables -V
启用 iptables
iptables 本身不是一个守护进程,它是 Linux 内核的防火墙模块,因此没有 systemctl start iptables 这样的命令。
可通过查看当前 iptables 设置规则(如用 ufw 底层是 iptables 会影响到)
sudo iptables -L -n -v
- -L:列出所有规则
- -n:不解析 IP(加快显示速度)
- -v:显示详细信息
暂停 iptables
临时清空所有 iptables 规则
sudo iptables -F
检查 iptables 状态
sudo systemctl status nftables
设置默认策略
sudo iptables -P INPUT DROP # 默认拒绝所有传入连接
sudo iptables -P FORWARD DROP # 禁止流量转发
sudo iptables -P OUTPUT ACCEPT # 允许服务器访问外部网络
开放以下端口:
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 -p tcp --dport 25 -j ACCEPT # SMTP
sudo iptables -A INPUT -p tcp --dport 587 -j ACCEPT # SMTP Submission
sudo iptables -A INPUT -p tcp --dport 465 -j ACCEPT # SMTPS
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许 SSH 连接
阻止 IP 地址
sudo iptables -A INPUT -s 192.168.1.100 -j DROP # 禁止单个 IP
sudo iptables -A INPUT -s 192.168.1.0/24 -j DROP # 禁止整个 IP 段
删除规则
sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT
恢复默认策略
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
设置 iptables 开机自启
Debian 默认不会自动恢复 iptables 规则,因此需要手动保存和恢复规则。Debian 关闭 iptables 后,规则不会自动保存,重启后会丢失。
保存和恢复 iptables 规则
保存规则
sudo iptables-save > /etc/iptables.rules
恢复规则
sudo iptables-restore < /etc/iptables.rules
自动加载规则
编辑 /etc/network/interfaces,在 iface lo inet loopback 下添加:
pre-up iptables-restore < /etc/iptables.rules
或者查看规则编号并删除:
sudo iptables -L --line-numbers
sudo iptables -D INPUT 3 # 删除第 3 条规则