文章开篇就提到了暴力破解,这玩意儿就像是网络世界的“敲门砖”,坏人拿着它,挨家挨户试密码。今天我们就来聊聊,当 Linux 服务器遭遇 SSH 暴力破解后,该如何亡羊补牢。
你的 SSH 连接还好吗?别等“砰”的一声才后悔!
首先,得看看“案发现场”。用 netstat -pantu
就像是给服务器做个全身 CT,看看有没有啥不正常的连接。
- Proto
?TCP 还是 UDP?就像是进你家的路,是高速公路还是乡间小道。 - Recv-Q
和 Send-Q?这两个家伙就像是服务器的“消化系统”,积压太多数据,不是被 DOS 攻击了,就是服务器便秘了。 - Local Address
和 Foreign Address?一个是“家”,一个是“贼”来的地方。 - State
?这可重要了! ESTABLISHED
状态一大堆?恭喜你,可能已经被盯上了。
(图片同原文)
网上关于网络状态的解释多如牛毛,但说实话,真要搞懂,还得自己多琢磨。
如果 ESTABLISHED
状态的连接多到你怀疑人生,那就得往下查了。
谁在偷偷摸摸?揪出那些“特权阶级”和“SSH 常客”!
接下来,我们要看看,谁有“作案”的嫌疑。
awk -F: '{if($3==0) print $1}' /etc/passwd
这条命令,能揪出那些“特权阶级”—— root 用户。 -
再用一堆命令组合拳, sudo cat /etc/shadow | grep '^[^:]*:[^*!]' | awk -F: '{print $1}'
找出能登录 SSH 的“常客”。说实话,这命令有点长,但效果杠杠的。
然后,看看谁正在连接:
who -a
、 w
、last -p now
都能告诉你,现在谁在线。sudo netstat -tnpa | grep 'ESTABLISHED.*sshd'
再次确认 SSH 连接情况。 pgrep -af sshd
看看 SSH 守护进程在干啥。 echo $SSH_CONNECTION
查查当前 SSH 连接的信息。
从“犯罪现场”找线索:SSH 日志里的秘密
接下来,我们要去“犯罪现场”—— SSH 日志里找线索。
-
Ubuntu 在 /var/log/auth.log
,CentOS 在/var/log/secure
。别告诉我你找不到!
看看有没有“欢迎光临”的记录:
cat /var/log/auth.log | grep "Accept"
看看谁登录成功了。 cat /var/log/auth.log | grep "pam_unix(sshd:session): session closed"
看看谁正常退出了。
重点来了,看看谁在输错密码:
cat /var/log/auth.log | grep "Failed password for" | more
这条命令能揪出那些“手残党”或者“暴力破解者”。
再用 Perl 脚本统计一下,谁最爱输错密码:
grep "Failed password" /var/log/auth.log|perl -e 'while($_=<>){ /for(.*?)from/; print "$1 ";}'|sort|uniq -c|sort -nr
这条命令有点骚,但能帮你快速找到目标。
看看有没有人盯着 root 用户下手:
cat /var/log/auth.log | grep "Failed password for" | grep "root" | grep -Po '(1d{2}|2[0-4]d|25[0-5]|[1-9]d|[1-9])(.(1d{2}|2[0-4]d|25[0-5]|[1-9]d|d)){3}'|sort|uniq -c|sort -nr
这条命令能揪出那些试图破解 root 密码的 IP 地址。
当然,你也可以用 cut
命令来定位:
cat /var/log/auth.log | grep "Failed password for" | grep "root" | cut -d " " -f 11 |sort -nr|uniq -c
最后,来个“一锅端”:
cat /var/log/auth.log | grep "Failed password for" | cut -d " " -f 9 | sort -nr |uniq|grep -v "invalid"| while read line;do echo [$line];cat /var/log/auth.log | grep "Failed password for" | grep $line | grep -Po '(1d{2}|2[0-4]d|25[0-5]|[1-9]d|[1-9])(.(1d{2}|2[0-4]d|25[0-5]|[1-9]d|d)){3} '|sort|uniq -c |sort -nr; done
这条命令能把所有输错密码的用户和 IP 地址都揪出来。
亡羊补牢,不如防患于未然:SSH 加固三板斧
查完了“案发现场”,抓完了“嫌疑人”,接下来就是亡羊补牢了。
- 升级 SSH 版本
:至少升到 7.7,老古董该换换了。 - 加强口令复杂程度
:密码搞复杂点,别用啥 123456 了。 - 禁止 root 用户登录
:让 root 用户退休吧,找个替身也行。 - 安装 fail2ban
:这玩意儿就像个“保安”,发现有人恶意破解,直接拉黑。
说实话,亡羊补牢不如防患于未然。与其等被爆破了再来补救,不如一开始就把 SSH 加固好。毕竟,网络安全这玩意儿,永远是“道高一尺,魔高一丈”。今天你防住了 SSH 爆破,明天可能又冒出个新的漏洞。所以,别掉以轻心,时刻保持警惕才是王道。
黑客/
原文始发于微信公众号(龙哥网络安全):网络安全攻防:SSH 爆破后的亡羊补牢,真能防住下一只狼?
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论