默认的SSH端口(22)是黑客和自动化脚本进行暴力破解攻击的常见目标。为了增强服务器安全,建议定期检查登录日志,并考虑修改默认的SSH端口。本文将介绍如何查看攻击尝试以及安全地修改SSH端口。
检测SSH登录失败尝试
您可以通过分析 /var/log/secure(RHEL/CentOS)或 /var/log/auth.log(Debian/Ubuntu)日志文件来查看失败的SSH登录尝试及其来源IP地址。
以下命令可以统计并列出尝试失败次数最多的IP地址:
cat /var/log/secure | awk '/Failed/{print $(NF-3)}' | sort | uniq -c | awk '{print $2" = "$1" 次"}'
如果发现大量来自特定IP的失败尝试,说明您的服务器正在遭受暴力破解攻击。除了修改端口,还应考虑使用Fail2ban等工具进行主动防御。
修改SSH默认端口(以CentOS/RHEL 7+为例)
重要提示:修改端口前,请确保您有另一种方式(如控制台)可以访问服务器,以防配置错误导致无法连接。
步骤一:编辑SSH配置文件
使用文本编辑器打开SSH配置文件:
sudo vi /etc/ssh/sshd_config
找到 #Port 22 这一行。为了平滑过渡,建议先添加一个新端口,而不是直接修改22端口。
#Port 22
Port 12449
说明:
- 取消
Port 22的注释(删除#)并保留它,同时添加新端口(例如12449)。这样SSH服务会同时监听22和新端口。 - 端口号范围是0-65535,建议选择1024-65535之间的非知名端口,避免与常用服务冲突。
步骤二:配置防火墙(如果启用)
如果系统启用了防火墙(如firewalld或iptables),需要放行新的SSH端口。
对于firewalld(CentOS/RHEL 7+默认):
sudo firewall-cmd --permanent --add-port=12449/tcp
sudo firewall-cmd --reload
对于iptables(旧版系统):
编辑iptables规则文件(如 /etc/sysconfig/iptables),添加一条规则:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 12449 -j ACCEPT
然后重启iptables服务:
sudo systemctl restart iptables # 或 sudo service iptables restart
步骤三:重启SSH服务并测试新端口
重启SSH服务以使配置生效:
sudo systemctl restart sshd # 或 sudo service sshd restart
重启后,请勿立即关闭当前连接。请打开一个新的终端窗口,使用新端口尝试连接:
ssh -p 12449 username@your_server_ip
如果新端口连接成功,再进行下一步。
步骤四:禁用默认的22端口
确认新端口工作正常后,返回SSH配置文件,注释掉(或删除)Port 22 这一行,只保留新端口:
#Port 22
Port 12449
再次重启SSH服务:
sudo systemctl restart sshd
至此,SSH将只在新端口上监听,默认的22端口已关闭。
安全建议
- 使用密钥认证:彻底禁用密码登录,改用SSH密钥对认证,安全性更高。
- 限制root登录:在
sshd_config中设置PermitRootLogin no,禁止直接以root用户登录。 - 使用Fail2ban:自动封锁多次尝试失败IP地址的工具。
- 定期更新系统:保持系统和软件处于最新状态。
通过以上步骤,您可以有效降低服务器遭受SSH暴力破解攻击的风险,提升整体安全性。
不错 赞个
谢谢~~
可惜你的是婚纱摄影的网站,不然大家可以做个友链