防火墙入门:UFW、Firewalld 与 iptables 场景速查

🌙
⬆️

防火墙入门:UFW、Firewalld 与 iptables 场景速查

适用系统:Ubuntu、Debian、CentOS 7/8、Rocky/Alma 9、Fedora、Arch

1. 选型速览

发行版/场景默认前端底层引擎建议方案
Ubuntu ≥18、Debian ≥10UFWiptables继续用 UFW
CentOS 7Firewalldiptables继续用 Firewalld
CentOS 8、Rocky/Alma 9、FedoraFirewalldnftables继续用 Firewalld
Arch Linuxnftables任选:nftables 原生 或 UFW
极简镜像 / 容器内直接 nftables/iptables 规则

2. 端口开关一句话命令

2.1 UFW(Ubuntu / Debian)

# 安装(若最小化镜像)
sudo apt update && sudo apt install ufw -y

# 允许 80、443、22443
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 22443/tcp comment 'SSH-Alt'

# 拒绝 3306
sudo ufw deny 3306/tcp

# 启用
sudo ufw --force enable

# 查看
sudo ufw status numbered

2.2 Firewalld(CentOS / Rocky / Alma / Fedora)

# 安装 & 启动
sudo dnf install -y firewalld
sudo systemctl enable --now firewalld

# 永久放行端口
sudo firewall-cmd --permanent --add-port=22443/tcp
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https

# 立即生效
sudo firewall-cmd --reload

# 查看
sudo firewall-cmd --list-all

2.3 iptables(传统,CentOS 7 底层)

# 安装
sudo yum install -y iptables-services
sudo systemctl enable --now iptables

# 放行 22443
sudo iptables -I INPUT -p tcp --dport 22443 -j ACCEPT

# 持久化
sudo service iptables save

2.4 nftables(CentOS 8+/Arch 默认)

# 创建规则文件
sudo tee /etc/nftables.conf <<'EOF'
table inet filter {
  chain input {
    type filter hook input priority 0; policy drop;
    ct state established,related accept
    iif lo accept
    tcp dport {22,22443,80,443} accept
  }
}
EOF

# 启动
sudo systemctl enable --now nftables

3. 场景化速查表

任务UFWFirewalldiptablesnftables
临时放行 8080ufw allow 8080/tcpfirewall-cmd --add-port=8080/tcpiptables -I INPUT -p tcp --dport 8080 -j ACCEPTnft add rule inet filter input tcp dport 8080 accept
仅允许某 IP 22ufw allow from 1.2.3.4 to any port 22firewall-cmd --add-rich-rule='rule family="ipv4" source address="1.2.3.4/32" port protocol="tcp" port="22" accept'iptables -I INPUT -p tcp -s 1.2.3.4 --dport 22 -j ACCEPTnft add rule inet filter input ip saddr 1.2.3.4 tcp dport 22 accept
删除规则ufw delete allow 8080/tcpfirewall-cmd --remove-port=8080/tcp --permanentiptables -L --line-numbersiptables -D INPUT <num>nft list rulesetnft delete rule ... handle <num>
查看规则ufw status numberedfirewall-cmd --list-alliptables -L -n -vnft list ruleset
持久化自动--permanent + --reloadservice iptables save修改 /etc/nftables.conf 后 reload

4. 常见坑 & 修复

错误提示原因修复
ERROR: initcapsUFW 未加载内核模块sudo ufw reset && sudo ufw enable
FirewallD is not running服务未启动sudo systemctl start firewalld
端口已放行仍不通SELinux / 云安全组getenforce 查看 + 云控制台检查
nftables 规则不生效未启用服务sudo systemctl enable --now nftables

5. 一键快速模板

5.1 Ubuntu / Debian:最小可用 UFW 规则

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow from <你的IP> to any port 22
sudo ufw allow 80,443/tcp
sudo ufw --force enable

5.2 CentOS 8:最小 Firewalld 规则

sudo firewall-cmd --permanent --zone=public --add-service=ssh
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

6. 延伸阅读

Linux 服务器 SSH 安全加固指南[端口修改|密钥登录等]
使用 acme.sh 申请单域名与泛域名 SSL 证书

✍️ 添加新评论

💨 由 PIGYun全球优质服务器 提供快速评论体验
🚀 评论由PIGYun高性能服务器处理