你家大门装了防盗锁,但窗户一直开着——这就像服务器开了22、3389、8080这些端口,却没做任何限制。端口不是摆设,它是服务的入口,也是攻击者最先敲门的地方。
哪些端口最常被盯上?
SSH(22端口)、远程桌面(3389)、MySQL(3306)、Redis(6379)、Web服务(80/443/8080)……这些端口一旦暴露在公网,又没加固,等于把钥匙挂门口。去年某公司就因 Redis 未设密码、6379端口裸奔,被挖矿程序霸占服务器三天。
几招实打实的防护动作
1. 关掉不用的端口
用 netstat -tuln(Linux)或 netstat -ano(Windows)查当前监听的端口,确认哪些是真正需要对外提供服务的。比如测试环境的Tomcat默认开8009,生产环境根本用不上,直接关掉配置文件里的Connector就行。
2. 限制访问来源
别让全世界都能连你的数据库。用防火墙规则只放行运维IP:
iptables -A INPUT -p tcp --dport 3306 -s 203.123.45.67 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j DROP云服务器也一样,在安全组里精确到IP段,别图省事全放开。3. 换掉默认端口
不是玄学,是降低被自动化扫描器扫中的概率。把SSH从22改成2222,RDP从3389改成3390,配合强密码+密钥登录,能拦下一大半脚本小子。
4. 加个代理层
Web服务别直接暴露Nginx/Apache的80端口。前面套一层Cloudflare或自建反向代理,真实服务器只监听127.0.0.1:8080,外部流量经代理转发,既隐藏真实IP,又能过滤恶意请求。
别忽略这些细节
端口转发要慎用。家里路由器开着DMZ或UPnP,等于把内网设备直接扔到公网;开发时习惯性把本地调试服务绑到0.0.0.0:5000,上线前忘了改回127.0.0.1,第二天就可能收到端口扫描告警邮件。
最后提醒一句:定期用 YouGetSignal 或 nmap -sT your-domain.com 自己扫一遍——你主动看到的漏洞,总比黑客告诉你的好。