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 开启前最重要的事?
下一节
下一节 性能调优