服务器高危端口关闭防护:新手也能操作
新手也能操作:如何一步步关闭服务器高危端口
很多刚接触服务器的朋友,都听说过“高危端口”这个词——22(SSH)、3389(RDP)、21(FTP)、23(Telnet)、3306(MySQL)、6379(Redis)这些默认端口,一旦暴露在公网上,就等于给攻击者留了后门。
今天这篇教程,我会用最直白的语言,带你从零开始识别并关闭这些端口,全程可操作,不绕弯子。
1. 先搞清楚自己服务器上开了哪些端口
不管你是用Linux系统还是装了宝塔面板,第一步都是先扫描当前开放的端口,心里有数再动手。
命令行方式(适合Linux服务器,已SSH登录)
运行下面两条命令,看哪些端口在监听:
sudo netstat -tlnp
或者
sudo ss -tlnp
输出示例:
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234,fd=3))
LISTEN 0 128 0.0.0.0:3306 0.0.0.0:* users:(("mysqld",pid=5678,fd=20))这里0.0.0.0:22表示SSH端口对所有IP开放,0.0.0.0:3306说明MySQL也在监听公网。
你一眼就能看到哪些是高危端口。
宝塔面板方式
登录宝塔面板 → 左侧“安全” → 在“系统防火墙”页签下,直接能看到当前开放的端口列表。
如果没装防火墙模块,也可以点“防火墙”查看。
2. 关闭高危端口的两种靠谱方法
针对不同的端口,处理方式不同:要么直接关闭对应的服务(比如不用FTP就卸载vsftpd),要么用防火墙规则限制访问来源。
以下是最常用的做法。
方法一:关闭服务本身(一劳永逸)
如果你确定不需要某个服务,直接停掉并禁止开机自启。
例如关闭MySQL端口(3306):
sudo systemctl stop mysql
sudo systemctl disable mysql再检查一下端口是否消失:
ss -tlnp | grep 3306如果返回空,说明成功。注意:关闭服务前确认业务是否依赖它。
方法二:用防火墙限制端口(保留服务但只允许内网)
很多情况不能直接关服务(比如SSH要留着远程登录),那就用防火墙只允许特定IP访问。
使用firewalld(CentOS 7+ / Rocky Linux):
# 移除SSH端口默认允许规则,只允许你本机IP访问(假设你固定IP是 123.123.123.123)
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="123.123.123.123" service name="ssh" accept'
sudo firewall-cmd --reload使用iptables(Ubuntu/Debian):
# 先拒绝所有进站请求(注意会断连!先添加允许SSH的规则)
sudo iptables -A INPUT -p tcp --dport 22 -s 123.123.123.123 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
保存规则(不同发行版命令不同)
sudo netfilter-persistent save
宝塔面板操作:在“安全” → “系统防火墙”中,点击对应端口行的“删除”或“修改”,填入允许的IP段,然后保存。
宝塔会自动处理规则。
3. 最容易踩的三个坑(避坑说明)
坑1:没测试新规则就直接断开当前会话
修改SSH端口或防火墙规则时,先另开一个SSH连接测试新规则是否生效,再关掉旧的。
否则一旦规则配错,你可能再也进不去服务器。
坑2:关闭端口后忘了相应的服务重启后又开
有些服务(如docker、
systemd管理的服务)会在重启后自动监听端口。需要做两件事:
一是禁用服务自启(systemctl disable),
二是在服务配置中修改监听地址(比如MySQL只绑定127.0.0.1)。
坑3:只关了一个端口,忽略了其他高危端口
很多人只关22端口,却开着6379(Redis)或27017(MongoDB)。建议用nmap扫描一下外网视角的端口:nmap -p- 你的服务器公网IP,看看还有哪些端口暴露着。
4. 高频问题解答
Q:我把22端口关了,但新SSH连不上怎么办?
A: 如果你没设其他访问方式(如VNC、云厂商控制台),只能通过云服务商后台的VNC/救援模式登录,然后修改规则。所以关闭端口前一定要留后路。
Q:宝塔面板里删除了端口规则,但服务还是能连上?
A: 宝塔的安全规则只控制面板内置的防火墙,如果你之前自己改过iptables或firewalld,宝塔可能没覆盖。建议统一用宝塔的接口操作,或者直接在系统防火墙里确认规则。
Q:关闭端口后,业务会受影响吗?
A: 只有当你关闭了业务依赖的端口才会影响。比如关闭3306会导致数据库无法远程连接,但如果你只在内网用,可以改成127.0.0.1监听,这样外网无法访问但内部程序正常。
5. 效果验证:确认高危端口真的关了
做完上述操作,一定要验证。
本地验证:再次运行ss -tlnp,看端口是否消失或监听地址变为127.0.0.1。
外部验证:用另一台电脑(或手机流量)运行:
nmap -p 22,3306,6379 你的服务器公网IP或者直接访问在线端口扫描工具(如站长工具),输入你的IP,检测这些端口是否显示“过滤”或“关闭”。
如果显示“open”,说明还没封住,回去重新检查防火墙规则。
宝塔面板验证:在“安全” → “系统防火墙”中,看规则状态是否生效(绿色勾表示正在生效)。
---
如果你正在处理服务器高危端口关闭防护,建议先按本文步骤完整执行一遍,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
安全无小事,花半小时把端口管好,能省去日后被入侵的麻烦。