博客 / Others/ 如何检测SSH暴力破解攻击并修改SSH端口增强服务器安全

如何检测SSH暴力破解攻击并修改SSH端口增强服务器安全

默认的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暴力破解攻击的风险,提升整体安全性。

  1. avatar
    名人婚纱摄影

    不错 赞个

    1. 谢谢~~
      可惜你的是婚纱摄影的网站,不然大家可以做个友链

发表评论

您的邮箱不会公开。必填项已用 * 标注。