Linux 进阶 L17:防火墙入门——ufw 保卫你的服务器
服务器放公网上,等于把家门敞开。Fail2Ban 是看门狗,防火墙就是防盗门。
防火墙在干啥
Linux 内核有个叫 netfilter 的模块,所有进出网卡的数据包都要过它这一关。防火墙就是给它写规则:谁能进、谁不能进。
默认策略两种思路:白名单(默认全挡,只放行需要的,服务器都用这个)、黑名单(默认全放,只挡坏的)。
ufw:新手最好的门
sudo ufw status # 看状态(默认 inactive)
开防火墙前,先放行 SSH!不然门一关,自己也被锁外面:
sudo ufw allow 22/tcp # 先放行 SSH
sudo ufw enable # 再开防火墙
常用规则
sudo ufw allow 80/tcp # 放行网站 HTTP
sudo ufw allow 443/tcp # 放行 HTTPS
sudo ufw allow 22/tcp # 放行 SSH
sudo ufw deny 25/tcp # 挡掉某端口
sudo ufw delete allow 80/tcp # 删除一条规则
sudo ufw status numbered # 带编号看规则
sudo ufw delete 2 # 按编号删
只让某个 IP 连 SSH:
sudo ufw allow from 1.2.3.4 to any port 22
实战:给博客 VPS 配防火墙
sudo ufw default deny incoming # 进来的默认全挡
sudo ufw default allow outgoing # 出去的默认全放
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80,443/tcp # 网站
sudo ufw enable
就四行,博客 VPS 已经固若金汤。
背后原理:iptables
ufw 只是"遥控器",真正的门是 iptables:
sudo iptables -L -n --line-numbers
三条链:INPUT(进来的包)、OUTPUT(出去的包)、FORWARD(路过的包)。
和 Fail2Ban 的配合
Fail2Ban 发现爆破 IP 后,就是往 iptables 里加一条 DROP 规则:
sudo iptables -L -n | grep DROP
防火墙定规矩,Fail2Ban 动态加黑名单,它俩是搭档。
小结
铁律:开防火墙前先放行 SSH。