
SSH扫描爆破科普,不要整天担惊受怕。
每隔一段时间,就会看到一些被日常扫描吓到的小白。
正好,我在一些月抛的灵车上面放了一些蜜罐,本帖我用蜜罐的真实的受到攻击的数据来说明:
扫描,是针对你的吗?
并不是,被扫描是每一个拥有公网IP服务器的日常事件,就和吃饭喝水一样。
他们的扫描可能会"正好"给我密码破解掉吗?
不太可能,我整理了一份蜜罐字典与其他爆破字典放在文章最后。
查看它的话,可以发现,大部分密码都是互联网上泄露的密码与一些常见的弱密码。
假如真的是针对我的爆破,会被破解出来吗?
假如你的密码不是弱密码、不是有意义的组合(例如可以被猜到的生日什么的),
而是至少12位以上的随机密码的话,即使每秒尝试10亿次,期望概率也需要500W年以上,正常情况是不可能破解成功的。
换到高位端口,有用吗?
有用,但是没有太大的用处。
一些扫描程序可能固定只扫描22端口,此时换到高位端口是有用的。
在蜜罐中,默认SSH端口受到的攻击与高位SSH端口受到的攻击大约为:5 : 1
换到高位端口,虽然确实能减少一部分扫描。
但是SSH是有明显特征的,一些扫描程序会扫描全端口,识别特征,然后再进行对应的尝试,此时,高位端口与默认端口其实没有任何差别了。
被入侵后,应该如何排查。
大多数的入侵样本,并不会直接进行挖矿脚本的植入。
他们会先替换掉你SSH原本的秘钥文件,进行持久化控制,然后写入定时任务,也是为了持久化控制。
然后才会有专门使用该秘钥进行连接的恶意服务器进行连接。
所以,我们可以进行如下操作查看(因系统不同,命令会有所不同):
排查SSH秘钥
检查是否只有你自己的秘钥
cat /root/.ssh/authorized_keys
检查秘钥文件最近更改的时间
stat /root/.ssh/authorized_keys
检查SSH秘钥权限
正常情况下,SSH秘钥的权限应该为-rw-------
ls -l /root/.ssh/authorized_keys
查看SSH成功登陆日志
假如检查成功登陆的IP是否有不属于你的
grep "Accepted password" /var/log/auth.log
grep "Accepted publickey" /var/log/auth.log
检查是否有奇怪的账户
检查有登录权限的用户
grep -vE '/nologin$|/false$' /etc/passwd | cut -d: -f1
这里是/etc/passwd里的账户(包括未启用的账户)
cat /etc/passwd | awk -F: '{print $1}'
具体的账户,建议询问AI进行排查。
查看定时任务
查看当前用户运行的定时任务
crontab -l
其他还有:系统定时任务、各个用户定时任务、定时任务执行日志等。
我该如何预防?
换到高位端口 (不推荐单独这么做)
换到高位SSH端口只能降低被某些扫描器扫描的概率,数据上好看,也只有数据好看。
确保密码至少为12位以上的随机字母数字字符(每个至少包含一个)组合 (必须)
即便每秒爆破你10亿次,也需要500W年以上的时间才能正好破解。
使用Fail2ban (推荐)
使用Fail2ban并且配置好规则,可以让原本需要几百万年才能爆破出来的密码变成几乎不可能,或者干脆封掉恶意破解者的IP。
使用秘钥,关闭密码登录 (安全性最佳推荐)
更安全,RSA 2048位密钥的破解几乎是不可能的。更何况还有更加安全的Ed25519或ECDSA 256位密钥。
推荐使用Ed25519秘钥。
最后,这里是一些附件
蓝奏云 密码:cln7
附件内容:
恶意IP组
为了避免误会,这里的IP为对方成功控制蜜罐的SSH后,留下秘钥的IP,或是通过留下的秘钥进行登录的IP,这些IP可以说100%确认是恶意的。
以及
最近一个月内攻击次数(不是扫描次数)大于100次的IP,虽然蜜罐不排除有谁不小心踩到,但是不小心踩了100次的也不是什么好东西了,更何况我没有部署web蜜罐。
密码字典
互联网上一些常见的弱密码字典。
以及
蜜罐自部署以来,收集的所有尝试的密码字典。