跳到主要内容

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 条规则