ToolkitX
知识库工具箱

防火墙管理

iptables, firewalld, ufw

25min·进阶

01. 防火墙是什么——保安大爷

防火墙说白了就是站在服务器门口检查进出的保安大爷——只放行你允许的流量,拦下你不认识的。Linux 底层都是 iptables/nftables,但直接写 iptables 规则门槛太高,所以有了各种「前台」工具帮你简化操作。 就像酒店门禁——你要么在前台登记(简单工具),要么去机房接网线(直接操作 iptables),效果一样但操作难度差远了。

02. ufw——Ubuntu 的傻瓜防火墙

ufw 全称 Uncomplicated FireWall(不复杂的防火墙),名字说明一切。适合个人和小项目,几行命令搞定:
bash
sudo ufw enable              # 打开防火墙
sudo ufw disable             # 关闭防火墙
sudo ufw status              # 看看当前规则

sudo ufw allow 22            # 允许 SSH
sudo ufw allow 80/tcp        # 允许 HTTP
sudo ufw allow 443/tcp       # 允许 HTTPS
sudo ufw allow from 10.0.0.0/24  # 允许整个子网访问

sudo ufw deny 3306           # 禁止 MySQL 端口
sudo ufw delete allow 80     # 删除某条规则

sudo ufw default deny incoming   # 默认拒绝所有入站
sudo ufw default allow outgoing  # 默认允许所有出站
开启 ufw 前一定先 allow 22(SSH),别把自己锁门外了,尤其是操作远程服务器的时候。

03. firewalld——企业级方案

RHEL/CentOS 系用 firewalld,它比 ufw 强大很多,引进了「区域(zone)」的概念——不同网络区域用不同策略。公司内网可以宽松点,公共 WiFi 就得严。
bash
sudo systemctl start firewalld
sudo firewall-cmd --state              # 防火墙在跑吗?

sudo firewall-cmd --list-all           # 查看当前区域完整规则
sudo firewall-cmd --get-active-zones   # 查看活动区域

sudo firewall-cmd --add-port=80/tcp --permanent   # 永久开放 80 端口
sudo firewall-cmd --add-service=http --permanent   # 开放 http 服务
sudo firewall-cmd --remove-port=3306/tcp --permanent  # 关掉 3306
sudo firewall-cmd --reload             # 重载规则使之生效

sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.0.0/24" port port="22" protocol="tcp" accept'  # 复杂规则
firewalld 改规则要加 --permanent 才会永久保存,否则重启就没了。加完记得 firewall-cmd --reload。

04. iptables——底层的终极武器

iptables 是直接操作内核的防火墙,所有那些高级工具底层调的其实都是它。学会 iptables 你不怕任何防火墙问题,但确实不好记:
bash
sudo iptables -L -n -v           # 查看当前规则
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 -j DROP                         # 默认拒绝所有

sudo iptables -D INPUT 3           # 删除 INPUT 链第 3 条规则
sudo iptables-save > /etc/iptables/rules.v4  # 保存规则
sudo iptables-restore < /etc/iptables/rules.v4  # 恢复
iptables 规则是立即生效的。iptables -F 会清空所有规则——如果默认策略是 DROP,清空后你就可能失去连接。

知识测验

1/4正确 0

ufw 开启前最重要的事?

下一节

性能调优

下一节