Linux 防火墙基础:ufw、firewalld、iptables
防火墙用于控制网络流量。它可以允许 SSH 进入,也可以阻止不该暴露的端口。学习 Linux 网络服务时,你至少要知道如何查看防火墙状态,以及如何谨慎放行端口。
防火墙解决什么问题
假设你在服务器上启动了一个 Web 服务,监听 8080 端口。别人能不能访问它,取决于多件事:
- 服务是否正在运行。
- 服务是否监听正确地址和端口。
- 操作系统防火墙是否放行。
- 云平台安全组是否放行。
- 中间网络是否允许访问。
防火墙只是其中一层,但它很关键。
ufw:Ubuntu 常见工具
Ubuntu 上常见的是 ufw,也就是 Uncomplicated Firewall。
查看状态:
sudo ufw status
放行 SSH:
sudo ufw allow ssh
或明确放行 22 端口:
sudo ufw allow 22/tcp
放行 HTTP 和 HTTPS:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
启用防火墙:
sudo ufw enable
注意
远程服务器上启用防火墙前,务必先确认 SSH 端口已经放行,否则你可能把自己锁在服务器外面。
firewalld:Fedora/RHEL 常见工具
Fedora、RHEL、CentOS Stream、Rocky Linux 等系统常见 firewalld。它的命令行工具是 firewall-cmd。
查看状态:
sudo firewall-cmd --state
查看当前开放服务:
sudo firewall-cmd --list-all
临时放行 HTTP:
sudo firewall-cmd --add-service=http
永久放行 HTTP:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload
如果你的系统没有 firewall-cmd,说明可能没有安装或没有使用 firewalld。
iptables 和 nftables
iptables 是传统 Linux 防火墙管理工具。现代系统底层更多转向 nftables,但很多资料、脚本和旧系统仍然使用 iptables。
查看规则:
sudo iptables -L -n -v
初学阶段不建议直接手写复杂 iptables 规则。优先使用发行版推荐的上层工具,例如 ufw 或 firewalld。
检查端口是否监听
放行防火墙前,先确认服务是否监听:
ss -tulpn | grep ":8080"
如果没有任何输出,说明服务可能根本没有监听 8080 端口。此时修改防火墙也解决不了问题。