暴露端口等于直接扩大互联网攻击面,22、3306、6379、27017、80/443等端口因明文传输、缺认证或默认开放而风险最高,须通过绑定地址限制、防火墙配置及外部验证确认真实暴露情况,并遵循最小化原则加固。
暴露端口等于直接面对互联网攻击面
Linux 上任何监听在 0.0.0.0 或公网 IP 的端口,只要没被防火墙或反向代理严格限制,就等同于把服务接口裸露在公网上。哪怕只开一个 22(SSH)或 80(HTTP),都可能成为突破口——攻击者用 nmap 扫描几秒就能发现,接着尝试弱口令、未授权访问、已知 CVE 利用(比如 OpenSSH 8.5p1 之前的 auth bypass 漏洞)。
哪些端口最常被滥用且风险最高
不是所有端口风险相同,关键看协议是否默认明文、是否自带认证、是否常被配置为开放状态:
-
22(SSH):高危,但可加固;若允许密码登录 + root 直连 + 无 fail2ban,hydra十分钟爆破成功很常见 -
3306(MySQL):极危险,99% 的暴露实例没设网络白名单,SELECT USER()都不用执行,攻击者直接拖库 -
6379(Redis):无认证+默认监听公网 = 等于送服务器控制权,攻击者写入authorized_keys或执行systemctl命令 -
27017(MongoDB):老版本默认无鉴权,db.runCommand({listDatabases: 1})可直查全部数据库名 -
80/443:表面安全,但若后端是未更新的Apache Tomcat或含log4j2的 Java 应用,JNDI 注入仍可 RCE
如何快速确认本机哪些端口真正在外网暴露
别只信 netstat -tuln 或 ss -tuln,它们只显示监听状态,不反映实际可达性。必须结合网络位置判断: