凌晨三点,主机某金融公司的高危安全运维老张被电话吵醒。告警平台显示,端口一台面向公网的主机数据库服务器,3306端口正被来自境外IP的高危脚本持续扫描。他登录后台一看,端口弱口令字典已经跑了十二万次。主机这不是高危电影桥段,是端口每周都在发生的真实对抗。
主机高危端口,主机本质上是高危业务需求和安全策略之间的裂缝。你开了22端口要远程运维,端口就给了暴力破解的主机机会;你开了3389图省事,勒索病毒最喜欢顺着它横向移动;你为了调试方便临时放行445,高危可能一夜之间就被永恒之蓝打成肉鸡。端口这些端口不是原罪,但暴露在公网上,等于把家门钥匙挂在门口垫子底下。
我见过最离谱的案例,是一家做智能硬件的创业公司。他们为了远程查看摄像头日志,把Redis的6379端口直接映射到公网,连密码都没设。结果被攻击者用一条命令写入计划任务,挖了三天门罗币,直到云平台账单爆表才发现。运维小哥说:“我以为内网地址没人知道。”——可互联网上,扫描器不会漏掉任何一个IPv4地址。
别迷信防火墙策略。你拦了外部IP的1433端口访问,可如果业务服务器被沦陷,它作为跳板就能直连内网数据库。真正的防护逻辑应该是:默认关闭所有端口,只在需要时按最小权限开放,并且强制走VPN或堡垒机。这个原则不新鲜,但执行起来总是被打折扣——因为“方便”永远比“安全”更让业务部门买账。
有个细节值得注意:高危端口并不总是固定那几个。比如MongoDB的27017,在2017年之前几乎没人关注,后来因为默认无认证配置导致大量数据被删库勒索,才被列入黑名单。这说明端口风险是动态的,跟流行漏洞、攻击工具甚至暗网教程都强相关。你光盯着常见端口表没用,得看威胁情报。
那怎么自查?别等着扫描报告,直接登录生产环境,用netstat -ano看看哪些端口在监听外部地址。如果你发现一个不认识的端口,比如5672(RabbitMQ)或者9200(Elasticsearch),先别急着关——搞清楚谁在调用,再决定是加白名单还是彻底禁用。最怕那种“先开着,出了问题再说”的思维,等出了问题,往往就不是账单爆炸那么简单了。
最后说个反常识的操作:有些团队故意把SSH端口从22改成22022,以为能躲过扫描。没用,nmap全端口扫描也就几分钟的事。真正有效的,是配合密钥登录加fail2ban,把尝试次数锁死。安全不是靠隐藏,是靠机制让攻击成本高于收益。
端口是门,但门锁的价值在于让贼觉得撬开不合算。你要做的,不是把门砌死,而是让每一扇该开的门都装好锁,并确保钥匙只在自己人手里。