帮助中心 >  技术知识库 >  云服务器 >  服务器教程 >  Linux 服务器遭遇 SSH 暴力破解怎么办?一次完整的排查与加固流程

Linux 服务器遭遇 SSH 暴力破解怎么办?一次完整的排查与加固流程

2026-07-07 17:36:48 643

Linux 服务器遭遇 SSH 暴力破解怎么办?一次完整的排查与加固流程

很多运维人员都会收到类似告警:

/var/log/secure 日志暴增

CPU 异常升高

大量 SSH 登录失败

登录服务器后查看日志:

grep "Failed password" /var/log/secure | tail

或者 Ubuntu:

grep "Failed password" /var/log/auth.log | tail

可能看到:

Failed password for root from 185.xxx.xxx.xxx

Failed password for admin from 103.xxx.xxx.xxx

Failed password for test from 45.xxx.xxx.xxx

这说明服务器正在遭受 SSH 暴力破解攻击。

快速统计攻击来源

统计攻击 IP:

grep "Failed password" /var/log/secure | \\

awk '{print $(NF-3)}' | \\

sort | uniq -c | sort -rn | head -20

输出示例:

5321 185.xxx.xxx.xxx

4215 103.xxx.xxx.xxx

3877 45.xxx.xxx.xxx

统计被尝试登录的账号:

grep "Failed password" /var/log/secure | \\

awk '{print $11}' | \\

sort | uniq -c | sort -rn

结果:

2100 root

1800 admin

950 oracle

820 mysql

可以快速了解攻击目标。

检查是否已经被入侵

查看最近登录记录:

last -a | head -20

查看当前在线用户:

who

查看最近成功登录:

grep "Accepted password" /var/log/secure

重点检查是否存在异常 IP:

Accepted password for root from xxx.xxx.xxx.xxx

如果发现陌生来源,需要立即处理。

检查可疑账号

查看系统用户:

cat /etc/passwd

筛选可登录账户:

awk -F: '$7 !~ /(nologin|false)/ {print $1}' /etc/passwd

检查是否存在异常账号:

backup1

admin2

test123

查看 sudo 权限:

grep -v "^#" /etc/sudoers

以及:

ls /etc/sudoers.d/

确认没有被恶意添加权限。

检查 SSH 配置

查看配置:

cat /etc/ssh/sshd_config

重点关注:

PermitRootLogin

PasswordAuthentication

PubkeyAuthentication

推荐配置:

PermitRootLogin no

PasswordAuthentication no

PubkeyAuthentication yes

修改后重启:

systemctl restart sshd

验证:

ss -lntp | grep ssh

确认服务正常。

修改 SSH 端口

默认端口:

22

长期暴露在公网会持续被扫描。

修改:

vim /etc/ssh/sshd_config

例如:

Port 22222

开放防火墙:

firewall-cmd --permanent --add-port=22222/tcp

firewall-cmd --reload

重启 SSH:

systemctl restart sshd

验证:

ssh -p 22222 user@server_ip

虽然不能彻底防御,但能过滤大量自动扫描器。

使用 Fail2ban 自动封禁

安装:

yum install fail2ban -y

Ubuntu:

apt install fail2ban -y

配置:

cat > /etc/fail2ban/jail.local << EOF

[sshd]

 

enabled = true

port = ssh

 

maxretry = 5

findtime = 300

bantime = 3600

EOF

启动:

systemctl enable fail2ban

systemctl start fail2ban

查看状态:

fail2ban-client status sshd

输出:

Currently banned: 125

说明封禁已生效。

利用防火墙限制来源

如果服务器仅供内部运维使用:

允许固定办公 IP:

firewall-cmd \\

--permanent \\

--add-rich-rule='rule family="ipv4" source address="1.2.3.4" port protocol="tcp" port="22222" accept'

拒绝其他来源:

firewall-cmd \\

--permanent \\

--add-rich-rule='rule family="ipv4" port protocol="tcp" port="22222" drop'

生效:

firewall-cmd --reload

这种方式比单纯修改端口更加有效。

检查是否存在后门

查看计划任务:

crontab -l

检查系统计划任务:

ls -al /etc/cron*

查看异常进程:

ps -ef --sort=-%cpu | head

查看异常网络连接:

ss -antp

检查近期修改文件:

find / -mtime -3 -type f 2>/dev/null

重点关注:

/tmp

/dev/shm

/var/tmp

这些目录经常被恶意程序利用。

 


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: