在Linux系统中关闭22端口(SSH服务)的核心方法是停止并禁用sshd服务,这能直接切断远程登录通道,但需确保已配置备用访问方式以防失联。
很多刚接触Linux服务器的小伙伴,第一反应都是看到22端口就紧张,毕竟它是SSH协议的默认端口,黑客扫描器最爱盯着它,关闭22端口,本质上是为了减少攻击面,提升服务器的安全性,但这不仅仅是改个配置文件那么简单,操作不当可能导致你再也连不上服务器,下面咱们就一步步拆解,怎么安全、彻底地处理这个问题。
为什么需要关闭Linux默认22端口
安全风险与自动化攻击
业内专家指出,超过80%的服务器入侵尝试都源于未保护的SSH服务,22端口作为SSH的默认入口,暴露在公网环境中,就像给房子留了一扇不锁的门,自动化攻击脚本会全天候扫描互联网,尝试暴力破解密码或寻找已知漏洞,一旦你的服务器IP被收录进扫描列表,每秒可能都会收到成百上千次的登录请求,这种噪音不仅消耗服务器资源,还容易掩盖真正的攻击行为。
合规性与最小权限原则
行业共识认为,遵循“最小权限原则”是网络安全的基础,默认情况下,SSH服务监听所有网络接口,关闭或修改默认端口,是实施网络分层防御的第一步,对于金融、医疗等对数据敏感度极高的行业,关闭不必要的端口是合规审计的基本要求,这不仅是技术选择,更是管理策略。
如何安全地关闭SSH服务
停止并禁用sshd服务
这是最直接的方法,通过系统服务管理器,我们可以彻底关闭SSH守护进程,操作前,请务必确认你拥有控制台访问权限(如云服务商提供的VNC或串口控制台),否则一旦断连,你将无法远程恢复。
具体操作步骤如下:
- 使用root权限登录服务器。
- 执行停止命令,立即终止当前运行的SSH服务。
- 执行禁用命令,防止系统重启后服务自动启动。
以CentOS/RHEL系列为例,命令如下:
sudo systemctl stop sshd sudo systemctl disable sshd
对于Ubuntu/Debian系列,服务名称可能略有不同,但逻辑一致:
sudo systemctl stop ssh sudo systemctl disable ssh
执行完上述命令后,你可以使用netstat -tlnp | grep 22或ss -tlnp | grep 22来验证端口是否已关闭,如果输出为空,说明服务已成功停止。
修改防火墙规则
有些场景下,你不想完全禁用SSH,只是希望屏蔽22端口,这时,修改防火墙规则是更灵活的选择。
使用firewalld
如果你使用的是CentOS 7+或RHEL 7+,默认防火墙是firewalld,你可以移除22端口的开放规则:
sudo firewall-cmd --permanent --remove-port=22/tcp sudo firewall-cmd --reload
使用iptables
对于更底层的控制,或者使用Ubuntu旧版本的用户,iptables依然强大,添加一条拒绝规则:
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
注意,这条命令是即时生效的,但重启后会失效,若要持久化,需保存iptables规则。
关闭22端口后的替代方案
更换非标准端口
如果完全关闭SSH让你感到不安,换个端口是更好的折中方案,修改/etc/ssh/sshd_config文件中的Port参数,将其改为一个高位端口,如2222或50000。
Port 2222
修改后,重启服务使配置生效:
sudo systemctl restart sshd
这样,默认的22端口不再监听,但SSH服务仍在运行,只是入口变了,这种方式既降低了被扫描到的概率,又保留了远程管理的能力。
使用密钥认证强化安全
无论是否关闭22端口,密钥认证都比密码认证安全得多,建议禁用密码登录,仅允许密钥访问,在sshd_config中设置:
PasswordAuthentication no PubkeyAuthentication yes
这一步能彻底杜绝暴力破解攻击,因为黑客无法通过猜测密码来突破防线。
常见误区与注意事项
不要盲目关闭所有端口
有些用户为了安全,关闭了所有入站端口,这会导致服务器变成“孤岛”,无法接收任何外部请求,包括HTTP、HTTPS等业务流量,关闭22端口只是针对SSH服务的优化,不应扩展到所有服务。
备份配置文件
在修改任何系统配置前,养成备份的习惯。
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
这样,如果配置出错导致无法登录,你可以从控制台登录服务器,恢复备份文件。
云服务商的安全组
对于云服务器用户,除了系统内部的防火墙,云服务商提供的安全组(Security Group)是第一道防线,在安全组中直接拒绝22端口的入站流量,比在系统内部配置更直观、更高效,建议优先在安全组层面进行管控。
Q&A:关于Linux关闭22端口
关闭22端口后,如何远程管理服务器?
如果你完全禁用了sshd服务,唯一的远程管理方式是使用云服务商提供的VNC控制台、串口控制台或通过IPMI/iDRAC等带外管理接口,这些接口不依赖于操作系统的网络服务,即使SSH服务崩溃或关闭,你依然可以访问服务器,在关闭SSH前,务必测试这些备用通道的可用性。
修改SSH端口会影响现有连接吗?
修改端口配置并重启服务后,现有的SSH连接不会立即断开,但新的连接请求必须使用新端口,如果你将端口改为2222,客户端连接时需要指定ssh -p 2222 user@ip,建议先在本地测试新端口连通性,再关闭旧端口,避免操作失误导致失联。
关闭22端口是否意味着绝对安全?
关闭22端口只是提升了安全基线,并非绝对安全,如果黑客通过其他漏洞(如Web应用漏洞、数据库漏洞)获取了服务器权限,他们可以直接在本地启动SSH服务或使用其他后门,安全是一个多层次的过程,包括系统补丁、应用加固、入侵检测等,关闭22端口是其中重要的一环,但不是全部。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/467089.html



