SSH 暴力破解攻击的诊断与防御

2025-07-28 17:35:57 0点赞 0收藏 0评论
SSH 暴力破解攻击的诊断与防御

SSH 暴力破解攻击是攻击者通过不断尝试用户名和密码组合来获得服务器访问权限的一种常见攻击方式。这种攻击不仅会威胁服务器的安全,还可能导致性能下降、数据泄露,甚至服务器被完全控制。以下是对 SSH暴力破解攻击的诊断与防御的全面解析。


1. SSH 暴力破解攻击的诊断

1.1 症状表现

  • 大量失败的登录尝试
    日志中可以看到短时间内来自单一或多个IP的频繁登录失败。

  • 异常的服务器性能
    攻击可能导致系统负载升高或网络连接异常。

  • 异常的网络连接
    可以观察到多个来源IP对SSH端口(默认22)发起大量连接请求。

  • 成功的非授权登录
    如果攻击成功,可能存在未知用户或IP成功登录的记录。


1.2 检查日志文件

SSH 服务的日志记录了所有登录尝试,包括成功和失败的记录。

1. 检查失败的登录尝试

  • 查看失败的登录记录:

    bash

    复制

    sudo grep "Failed password" /var/log/auth.log # Ubuntu/Debian sudo grep "Failed password" /var/log/secure # CentOS/RHEL

  • 示例输出:

    apache

    复制

    Jul 28 12:34:56 server sshd[1234]: Failed password for root from 192.168.1.100 port 54321 ssh2 Jul 28 12:35:01 server sshd[1235]: Failed password for invalid user admin from 192.168.1.101 port 54322 ssh2

    分析

    • IP地址:频繁出现的IP可能是攻击来源。

    • 用户名:常见的目标用户名包括rootadmintest等。

2. 检查成功的登录记录

  • 查看成功的登录记录:

    bash

    复制

    sudo grep "Accepted password" /var/log/auth.log # Ubuntu/Debian sudo grep "Accepted password" /var/log/secure # CentOS/RHEL

  • 示例输出:

    复制

    Jul 28 12:36:00 server sshd[1236]: Accepted password for user1 from 192.168.1.102 port 54323 ssh2

    分析

    • 检查是否有非授权用户或未知来源IP的登录。

3. 统计失败尝试的次数

  • 统计失败尝试的来源IP:

    bash

    复制

    sudo grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr

  • 示例输出:

    basic

    复制

    150 192.168.1.100 120 192.168.1.101 50 10.0.0.1

    分析

    • 登录失败次数较多的IP可能是攻击者。


1.3 检查网络连接

  • 查看SSH端口(默认22)上的连接:

    bash

    复制

    netstat -tnp | grep :22

  • 使用ss查看更详细的连接信息:

    bash

    复制

    ss -tuln | grep :22

  • 示例输出:

    复制

    tcp 0 0 192.168.1.200:22 192.168.1.100:54321 ESTABLISHED 1234/sshd tcp 0 0 192.168.1.200:22 192.168.1.101:54322 TIME_WAIT -

分析

  • 如果有大量ESTABLISHEDTIME_WAIT连接,可能正在遭受暴力破解攻击。


1.4 系统资源异常

暴力破解可能导致系统资源被大量占用:

  • 查看系统负载:

    bash

    复制

    top

  • 查看sshd进程:

    bash

    复制

    ps aux | grep sshd


2. SSH 暴力破解攻击的防御措施

2.1 禁用Root用户登录

默认情况下,root用户是攻击的首要目标。禁用root登录可以显著提高安全性。

  • 修改SSH配置文件:

    bash

    复制

    sudo nano /etc/ssh/sshd_config

  • 设置以下参数:

    bash

    复制

    PermitRootLogin no

  • 重启SSH服务:

    bash

    复制

    sudo systemctl restart sshd


2.2 使用SSH密钥认证

SSH密钥认证比密码更为安全,并且可以禁用密码登录。

1. 生成SSH密钥

  • 在客户端生成密钥对:

    bash

    复制

    ssh-keygen -t rsa -b 4096

  • 将公钥复制到服务器:

    bash

    复制

    ssh-copy-id user@server-ip

2. 禁用密码登录

  • 修改SSH配置文件:

    bash

    复制

    sudo nano /etc/ssh/sshd_config

  • 设置以下参数:

    bash

    复制

    PasswordAuthentication no PubkeyAuthentication yes

  • 重启SSH服务:

    bash

    复制

    sudo systemctl restart sshd


2.3 更改默认端口

将SSH端口从默认的22更改为其他端口,可以减少被扫描和攻击的概率。

  • 修改SSH配置文件:

    bash

    复制

    sudo nano /etc/ssh/sshd_config

  • 设置新的端口号(如2222):

    bash

    复制

    Port 2222

  • 重启SSH服务:

    bash

    复制

    sudo systemctl restart sshd

  • 注意:更改端口后需要在防火墙中开放新端口。


2.4 限制登录来源IP

1. 使用防火墙限制IP

  • 允许特定IP访问SSH:

    bash

    复制

    sudo ufw allow from 192.168.1.100 to any port 22

  • 禁止其他IP访问:

    bash

    复制

    sudo ufw deny 22

2. 使用/etc/hosts.allow和/etc/hosts.deny

  • /etc/hosts.allow中添加允许的IP:

    复制

    sshd: 192.168.1.100

  • /etc/hosts.deny中拒绝所有其他IP:

    复制

    sshd: ALL


2.5 启用Fail2Ban

Fail2Ban可以自动检测并封禁多次失败尝试的IP。

1. 安装Fail2Ban

bash

复制

sudo apt install fail2ban # Debian/Ubuntu sudo yum install fail2ban # CentOS/RHEL

2. 配置Fail2Ban

  • 编辑配置文件:

    bash

    复制

    sudo nano /etc/fail2ban/jail.local

  • 添加以下内容:

    ini

    复制

    [sshd] enabled = true port = 22 filter = sshd logpath = /var/log/auth.log maxretry = 5 bantime = 600

  • 重启Fail2Ban服务:

    bash

    复制

    sudo systemctl restart fail2ban

  • 查看Fail2Ban状态:

    bash

    复制

    sudo fail2ban-client status sshd


2.6 设置登录尝试次数限制

  • 修改SSH配置文件:

    bash

    复制

    sudo nano /etc/ssh/sshd_config

  • 设置以下参数:

    bash

    复制

    MaxAuthTries 3 LoginGraceTime 60

  • 重启SSH服务:

    bash

    复制

    sudo systemctl restart sshd


2.7 使用双因素认证(2FA)

通过2FA为SSH添加额外的安全层。

  • 安装Google Authenticator:

    bash

    复制

    sudo apt install libpam-google-authenticator

  • 配置2FA:

    bash

    复制

    google-authenticator

  • 修改PAM配置:

    bash

    复制

    sudo nano /etc/pam.d/sshd

    添加:

    bash

    复制

    auth required pam_google_authenticator.so

  • 重启SSH服务。


2.8 使用跳板机(Bastion Host)

  • 设置一个专用的跳板机,通过跳板机登录其他服务器,隐藏实际服务器的SSH端口和访问方式。


2.9 定期更新与监控

  • 定期更新系统和SSH服务:

    bash

    复制

    sudo apt update && sudo apt upgrade -y # Debian/Ubuntu sudo yum update -y # CentOS/RHEL

  • 使用工具(如logwatchossec)监控日志并发送报警。


3. 总结

诊断方法:

  1. 检查系统日志中的失败和成功登录记录。

  2. 统计来源IP和尝试次数。

  3. 检查网络连接和系统资源状态。

防御措施:

  1. 禁用root登录,使用SSH密钥认证。

  2. 更改默认端口,限制登录来源IP。

  3. 部署Fail2Ban,自动封禁攻击来源IP。

  4. 添加双因素认证,提升安全性。

通过上述方法,您可以有效检测和防御SSH暴力破解攻击,确保服务器的安全性和稳定性

展开 收起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
相关好价
最新文章 热门文章
0
扫一下,分享更方便,购买更轻松