前阵子有个粉丝找我吐槽,自己花几十块买了云服务器搭博客,刚上线一周就被黑了。后台被塞了挖矿脚本,CPU天天跑满100%,最后还收到云服务商的违规通知。我帮他查了下原因,就是他开了近千个没用的端口,被黑客批量扫到钻了空子。
很多人买了服务器只会装应用,根本不管开了多少端口。这就像你家出门不锁门,小偷不偷你偷谁?今天全是可落地的实操步骤,不管你用Windows还是Linux服务器,看完就能自己动手关端口,不用花冤枉钱找运维。
说白了,端口就是服务器对外的门。你平时访问网站,走的是80或者443端口;远程连Windows桌面,默认走3389端口;连Linux服务器默认走22端口。每开一个端口,相当于给服务器多开了一扇门。你要是把没用的门全打开,黑客自然随便进。
举个例子,我之前有个朋友搭测试站,Redis端口开着没设密码,被人塞了挖矿脚本,服务器跑了半个月挖矿程序,光流量费多花了好几百,就是没关端口闹的。
适合你暂时不用某个端口,后续可能还要开的情况,步骤跟着走就行:
避坑提醒:别手滑把80或者443端口关了,不然你网站直接打不开,哭都没地方哭
如果你根本不用某个服务,直接禁用服务比单独封端口更稳,不会后续开服务忘了关端口:
动手关之前,先搞清楚你服务器当前开了哪些端口,对着清单关不会错。直接在服务器命令行输下面的命令:
``` netstat -tunlp ```运行完会列出所有正在监听的端口,后面会标对应的程序名。比如22端口对应sshd,3306对应mysqld,先把没用的端口记下来。
避坑提醒:别看到陌生端口就瞎关,先搜下是不是系统默认要用的,关错了直接服务器失联

第一种是直接封指定端口,适合你暂时要留服务,但是不让外网访问的情况:
如果你的服务器用的是firewalld防火墙,输下面两条命令,把“端口号”换成你要关的数字就行:
``` firewall-cmd --permanent --remove-port=端口号/tcp firewall-cmd --reload ```如果用的是ufw防火墙,直接输:
``` ufw deny 端口号 ```第二种是直接停掉对应服务,适合你根本不用这个服务的情况,比封端口更彻底:
比如你不用Redis,直接输下面的命令,服务停了端口自然就关了:
``` systemctl stop redis && systemctl disable redis ```Windows服务器直接开命令提示符,输下面的命令,连不上就说明关成功了:
``` telnet 127.0.0.1 端口号 ```Linux服务器直接输curl命令,报连接拒绝就是关成功了:
``` curl 127.0.0.1:端口号 ```本地验证完还不够,得确认外网也扫不到这个端口。拿你自己的电脑开命令提示符,输下面的命令,把“服务器公网IP”换成你自己的IP:
``` telnet 你的服务器公网IP 端口号 ```要是提示连接失败,就说明这个端口真的关好了,外网访问不到。
其实服务器安全真没你想的那么复杂,很多黑客都是挑软柿子捏,你把没用的端口都关了,就已经筛掉了90%的批量攻击。现在就打开你的服务器后台,先查下当前开了哪些端口,没用的就照着步骤关掉,整个过程最多10分钟,换个安心太值了。要是碰到拿不准的端口,就先搜下对应的作用,确认没用再操作就行。
上一篇: 服务器端口冲突诊断与标准化解决方案












易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图