SSH 服务器默认使用 22 端口,这使得攻击者可以轻松识别并尝试攻击 SSH 服务。为了增加服务器的安全性,建议更改默认的 SSH 端口。本文将详细介绍如何在 Linux 系统上更改 SSH 服务端口,并包含一些最佳实践和注意事项。
1. 检查新的 SSH 端口是否被占用
在更改 SSH 端口之前,首先应检查所选的新端口是否已经被其他服务占用。可以使用以下命令检查特定端口是否已被占用:
sudo netstat -tuln | grep [PORT_NUMBER]
将 [PORT_NUMBER]
替换为您计划使用的新端口号。如果命令没有返回任何结果,表示该端口是空闲的,可以使用。
2. 编辑 SSH 配置文件
SSH 服务器的配置文件通常位于 /etc/ssh/sshd_config
。使用文本编辑器(如 vi
或 nano
)打开该文件:
sudo vi /etc/ssh/sshd_config
找到以下行:
#Port 22
取消注释,并将 22
修改为您想要使用的新端口号。例如,如果希望将 SSH 端口更改为 4444
,修改如下:
Port 4444
注意:确保您选择的端口不被保留或常用服务占用,建议选择一个较高的端口号(如 1024 以上)。
3. 修改防火墙规则
如果您的服务器使用了防火墙(如 iptables
或 firewalld
),您需要允许新的 SSH 端口通过防火墙。
firewalld
:
sudo firewall-cmd --permanent --zone=public --add-port=4444/tcp
sudo firewall-cmd --reload
iptables
:
sudo iptables -A INPUT -p tcp --dport 4444 -j ACCEPT
sudo service iptables save
sudo service iptables restart
注意:在更新防火墙规则后,建议不要立即删除旧的 22 端口规则,先测试新端口是否正常工作后再进行移除操作。
4. 重启 SSH 服务
完成配置文件和防火墙规则的更改后,需要重启 SSH 服务使更改生效:
sudo systemctl restart sshd
在 CentOS 或 RHEL 系统上,也可以使用以下命令:
sudo service sshd restart
注意:在远程管理的情况下,建议保持现有 SSH 会话打开,直到确认可以通过新端口连接成功后再关闭旧的会话。
5. 测试新的 SSH 端口
更改后,测试新端口以确保 SSH 服务正常运行:
ssh -p 4444 username@your_server_ip
注意:使用 ssh -p [PORT_NUMBER]
参数指定连接的新端口号。
6. 清理旧的防火墙规则(可选)
如果新端口测试通过,且确认不再需要通过默认的 22 端口访问 SSH,可以将防火墙规则中的端口 22 删除:
firewalld
:
sudo firewall-cmd --permanent --zone=public --remove-port=22/tcp
sudo firewall-cmd --reload
iptables
:
sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT
sudo service iptables save
sudo service iptables restart
7. 其他注意事项
-
端口范围:尽量选择一个不常用的高端口,避免与其他服务冲突。
-
SELinux:如果系统启用了 SELinux,可能需要为新端口配置适当的策略。使用以下命令添加新的端口号到 SELinux 规则中:
sudo semanage port -a -t ssh_port_t -p tcp 4444
-
日志检查:更改端口后,建议定期检查 SSH 日志 (
/var/log/auth.log
或/var/log/secure
) 以确保没有未授权的访问尝试。
总结
通过更改默认的 SSH 端口,可以降低被扫描和攻击的风险。尽管这并不是一个彻底的安全解决方案,但它可以有效地增强服务器的安全性。记得在更改端口后,更新所有相关的配置和规则,确保服务的稳定和安全运行。