在这里插入图片描述

明显被攻击

1.查看日志获取攻击源 IP

grep "Failed password" /var/log/secure | grep root | awk '{print $(NF-3)}' | sort | uniq -c

这条命令的作用是在/var/log/secure文件中查找包含 “Failed password” 且涉及root用户的行,然后提取出攻击源 IP 地址,并统计每个 IP 出现的次数。

可以采取以下措施来增强服务器的安全性:(目前采取最后一种,看第三步)

  • 封禁攻击 IP:可以使用iptables等防火墙工具,将这些频繁尝试攻击的 IP 地址封禁,阻止它们继续访问服务器。例如,使用命令sudo iptables -A INPUT -s 攻击IP -j DROP来封禁特定 IP。
  • 修改 SSH 端口:将 SSH 服务的默认端口(22)修改为其他不常用的端口,减少被扫描和攻击的概率。修改/etc/ssh/sshd_config文件中的Port参数,然后重启 SSH 服务。
    • 编辑 /etc/ssh/sshd_config,将 Port 22 改为其他端口(如2222),然后 sudo systemctl restart sshd 重启 SSH 服务,减少被扫描的概率。
  • 启用密钥认证:禁用密码登录,只允许通过 SSH 密钥进行登录。这样可以大大提高 SSH 登录的安全性,因为暴力破解密钥几乎是不可能的。生成密钥对并将公钥添加到服务器的~/.ssh/authorized_keys文件中,然后在/etc/ssh/sshd_config中设置PasswordAuthentication no
    • 生成密钥:本地执行 ssh-keygen,一路回车生成密钥对。
    • 上传公钥:ssh-copy-id -i ~/.ssh/id_rsa.pub root@你的服务器IP
    • 禁用密码登录:编辑 /etc/ssh/sshd_config,设置 PasswordAuthentication no,重启 SSH 服务。
  • 安装 Fail2ban:Fail2ban 是一个可以自动监测日志文件,发现暴力破解等攻击行为,并自动封禁攻击 IP 的工具。安装并配置 Fail2ban 后,它会根据预设的规则自动对攻击 IP 进行封禁。
    • 安装:sudo apt-get install fail2ban(Debian/Ubuntu)或 sudo yum install fail2ban(CentOS)。
    • 配置:复制 /etc/fail2ban/jail.confjail.local,编辑 jail.local,设置 [sshd] 下的 enabled = true 等规则,然后 sudo systemctl start fail2ban 启动服务,自动监测并封禁攻击 IP。

2.查看详细攻击日志

 grep "Failed password" /var/log/secure | grep 攻击IP

使用命令 grep "Failed password" /var/log/secure | grep 攻击IP(将攻击IP替换为具体 IP,如202.105.21.108),查看该 IP 的具体攻击时间、尝试的用户名等详细日志,进一步了解攻击情况。

3.封禁攻击 IP:安装fail2ban

3.1安装

sudo yum install fail2ban
cd /etc/fail2ban/
sudo cp jail.conf jail.local

3.2配置封禁主机规则

vi /etc/fail2ban/jail.local

设置 [sshd] 下的 enabled = true 等规则(取消注释):

[DEFAULT]
#bantime = 600m
findtime = 600
maxretry = 10 # 可选:登录失败多少次后封禁

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/secure # CentOS 系统 SSH 日志默认路径
bantime = -1  # 永久封禁

3.3封禁失败规则

3.3.1打开配置文件

/etc/fail2ban/filter.d/sshd.conf

找到failregex字段

设置为

failregex = ^.*Failed password for.*from <HOST>.*$

如果这个规则不行的话,

解决步骤

  1. 简化 failregex 测试
    先将sshd.conf中的failregex改为更简单的规则,测试是否能让fail2ban正常启动。比如修改为:

    failregex = ^.*Failed password for.*from <HOST>.*$
    

    这个正则会匹配所有包含 “Failed password for” 和来源主机 <HOST> 的行,更宽松,便于测试。

  2. 重启 fail2ban 并检查状态
    执行 sudo systemctl restart fail2ban,然后用 sudo systemctl status fail2ban 查看服务是否能正常启动。如果能启动,说明是之前的正则太复杂或有语法错误;如果仍不能启动,继续下一步。

  3. 恢复 sshd.conf 到默认配置
    如果有 sshd.conf 的备份,恢复备份文件;如果没有,可卸载并重新安装 fail2ban(CentOS 系统命令:sudo yum remove fail2ban && sudo yum install fail2ban),恢复默认配置后,再尝试逐步修改 failregex

  4. 匹配系统日志格式
    查看 /var/log/secure 中 “Failed password” 相关的日志行,确保 failregex 能准确匹配。例如,若日志行是 Sep 10 16:00:00 VolcanicEngineECS1 sshd[12345]: Failed password for root from 192.168.1.1 port 22 ssh2,则之前的简化正则是可以匹配的。

保存文件后,重启 fail2ban

sudo systemctl restart fail2ban
sudo systemctl status fail2ban  # 再次查看状态

4.验证

修改配置并重启后,通过以下命令确认 sshd 监狱是否正常启用:

sudo fail2ban-client status sshd

5排错:

查看日志:

sudo tail -f /var/log/fail2ban.log
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐