一、判断是否被攻击
1.命令行执行 lastb -n 20 (-n 20 指显示最近20条)
lastb 用来显示登录失败的信息
last 用来显示登录成功的信息
多条不明ip,表示被攻击了。
2.或者mobaXterm,也会在开头显示失败登录次数
二、应对措施
(1)确保密码够长。
(2)更改ssh的默认端口号。
具体操作可以参考以下博主,暂时保留22端口做后路,还是有必要的。
https://www.cnblogs.com/blackmanzhang/p/11992987.html
总结:
1)更改配置文件 /etc/ssh/sshd_config ,搜索 Port
添加新的一行: Port 端口号 (如:Port 34560)
可添加多个,即开放多个端口。如没有配置或都注释掉了,就默认开放22。
2)注意,确保 防火墙 和 SElinux 以及 云服务器提供商的防火墙策略 有对新端口放行。
暂时留着22端口,就是防止新端口不能访问,到时连不上服务器。确认可以了,再删掉。
3)重启ssh服务,systemctl restart sshd
(3)后续解决思路是:收集登录失败ip -> 禁止这些ip访问
已经有软件包把思路实现了:DenyHosts
1.下载 DenyHosts
(1)yum安装 yum install -y denyhosts
我装的时候没找到软件包,听说是在epel源里。
我使用下一种方式。
(2)源码下载
<1> 官网推荐的下载地址: https://sourceforge.net/projects/denyhosts/files/
直连不太好下载
<2> 蓝奏云:(2.6版本) https://wws.lanzous.com/iAdqKfjlmyb
2.安装DenyHosts
(1)2.6版本源码安装
可以参考这位博主的文章,写的很好
https://blog.csdn.net/xiedongze__/article/details/90903179
(2)其他版本,待续
三、个人体会
背景:网上的ssh攻击大部分是,蠕虫代码针对 22 端口进行 弱密钥 探测。
关于三个应对方法:
(1)密码够长够复杂,基本不会被暴力破解。但也不能一直响应攻击请求,耗不起这个资源。
(2)改了ssh的默认端口。就这次攻击而言,已经避开了。毕竟是简单的蠕虫攻击代码。
(3)封禁ip的方法。效果挺显著,但是网上蠕虫多,封不尽。被针对攻击的时候,应该会有更大的价值。
总结,就这次攻击而言,改端口就行了。