UFW防火墙十分钟入门:先立规则再开门,别把自己锁外面

来源:互联网 时间:2026-09-11

服务器装完 Web 环境,Nginx、MySQL、Redis、phpMyAdmin 一套下来,机器上开着七八个监听端口。用 ss 一查吓一跳:

sudo ss -tlnp
State Local Address:Port Process
LISTEN 0.0.0.0:22 sshd
LISTEN 0.0.0.0:80 nginx
LISTEN 0.0.0.0:443 nginx
LISTEN 127.0.0.1:3306 mysqld
LISTEN 0.0.0.0:6379 redis-server # 危险!全网可达
LISTEN 0.0.0.0:8888 面板/管理程序 # 危险!

问题一眼可见:Redis 和管理面板监听在 0.0.0.0,意思是全世界都能连。Redis 默认无密码,历史上大规模勒索事件就是暴露的 6379 端口贡献的。防火墙的作用就是把“只该本机或内网访问的端口”从公网上藏起来,原则很简单:一个端口要么对公网开放有明确理由,要么就该关上。没有中间态。

Ubuntu 自带 UFW(Uncomplicated Firewall),iptables 的人性化封装,十分钟够用。但先记住使用铁律:**UFW enable 的那一刻,不在放行名单里的端口立刻断连**。所以正确顺序永远是:先放行 SSH,再开防火墙。顺序反了,你自己就是第一个被封在门外的连接——如果当时连着 SSH 会话,会话断了机器就成了摸不着的砖头。

# 第一步:默认策略——进来的全拒绝,出去的全放行

sudo ufw default deny incoming

sudo ufw default allow outgoing

# 第二步:先把命脉放行(SSH用22还是自定义端口,按实际来)

sudo ufw allow 22/tcp comment 'SSH'

sudo ufw allow 80/tcp comment 'HTTP'

sudo ufw allow 443/tcp comment 'HTTPS'

# 第三步:检查规则列表,确认无误

sudo ufw show added

# 第四步:启用

sudo ufw enable

# Command may disrupt existing ssh connections. Proceed? y

启用之后逐项验证。先看状态:

sudo ufw status verbose

# Status: active

# 22, 80, 443/tcp    ALLOW IN   Anywhere

# 从外部验证端口通不通(在另一台机器或手机热点执行)

nc -zv 服务器IP 22     # succeeded

nc -zv 服务器IP 6379   # timed out —— 该有的效果

nc -zv 服务器IP 3306   # timed out

MySQL 和 Redis 不放行是对的:它们在 127.0.0.1 或者只服务本机的 PHP-FPM。如果你的应用需要从别的机器连数据库(开发机连测试库之类),不要开放公网端口,用 SSH 隧道更安全:

# 本地执行,把服务器的3306映射到本地的13306

ssh -L 13306:127.0.0.1:3306 user@服务器IP

# 之后本地连 127.0.0.1:13306 就等于连服务器的MySQL

# 流量全程走SSH加密,公网上不暴露数据库端口

日常使用中还有三个高频场景。第一个是临时放行管理面板给固定 IP:sudo ufw allow from 1.2.3.4 to any port 8888,只有你家宽带能访问,比全网开放强得多;换宽带 IP 变了就 update 规则。第二个是删规则:sudo ufw status numbered 看编号,sudo ufw delete 3 按编号删,删完规则列表会重新排序,连删多条要重新看编号,别按一个编号连删。第三个是 IPv6:UFW 默认同时管 v4 和 v6,不用单独配置,但要防一种疏漏——只放行了 v4 的规则配上启用了 v6 的服务,等于留了旁门,status 里确认 v6 行也在。

云服务器用户注意一个双层结构:云厂商的安全组和系统里的 UFW 是两道独立的门,流量要穿过两道都放行才能到达。很多人在 UFW 里放行了端口却连不上,九成是安全组那道门没开;反过来,安全组全开的端口 UFW 没放行也一样不通。排查连通性问题时永远两层一起看。另外面板类产品(宝塔、1Panel)通常自带端口管理功能,和 UFW 操作的是同一套 iptables 规则,两边混着改容易出混乱,选一处管理就好。

和前一篇连起来看:SSH 加固管的是 22 端口上发生了什么,UFW 管的是哪些端口存在。两件事都做完,再把《SSH加固两板斧:密钥登录+fail2ban,让爆破脚本空手而归》的 fail2ban 挂上,一台小服务器的基础网络防线就成型了。下次装任何新服务,第一反应应该是查它监听在哪、要不要暴露——这个习惯本身就是最好的安全实践。

相关阅读:防火墙是安全组的第二道门。《性能与安全加固总清单:按这张表打勾,新站48小时达到生产水准》按入口、网络、应用、传输的顺序排安全项,照表打勾不遗漏。

相关文章

标签:

A5创业网 版权所有