服务器装完 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创业网 版权所有