自从开通了阿里云态势感知后,经常收到提醒,你的服务器被攻击,我从后台查看大多数攻击都是ssh暴力破解密码,于是我就考虑如何解决这一问题,一开始想到的是,修改端口,接着就是封ip地址.那下边就看看我是如何操作的,
一.修改ssh默认端口(我是修改成2222)
1.首先如果有防火墙脚本需要将2222端口添加进去,允许通过2222端口访问服务器.
2编辑ssh/sshd_config
vim /etc/ssh/sshd_config
在#Port 22下边添加 Port 2222 退出保存
3.重启ssh服务
service sshd restart
4,查看端口
输入netstat -tlun
显示tcp 0 0 0.0.0.0:2222 0.0.0.0:* LISTEN
[root@feimail ~]# netstat -tlun
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:3306 0.0.0.0: LISTEN
tcp 0 0 0.0.0.0:2222 0.0.0.0: LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
5.退出测试
exit
ssh root@1.1.1.1 2222
出现一下命令提示输入密码表示设置成功
Connecting to 1.1.1.12222...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
二.封ip
1,下载文章附件中的secure_ssh.sh,上传到服务器/root/目录下并给文件755权限(脚本里我设置的超过10次就封掉这个ip)
chmod 755 secure_ssh.sh
2.设置定时任务,每1分钟执行一次。
如果出现执行 crontab 命令如果报 command not found,就表明没有安装,那就安装
安装 crontab 执行 yum install -y vixie-cron ,然后再执行下边命令
crontab -e
/1 * sh /root/secure_ssh.sh
3,测试
用一个终端连接服务器连续输错10次密码
显示以下内容并不会提示输入密码,就成功了
Connection closed by foreign host.
在另一台电脑输入正确账号密码上查看/etc/hosts.deny 信息你会发现你刚才的那个ip会出现在里边(假如2.2.2.2是你第一次输错10次密码的ip)
vim /etc/hosts.deny
sshd:2.2.2.2:deny
总结:操作中需要注意的是一定要让2222端口通过防火墙.不然等你退出之后,你就再也登不上去了,当然你可以恢复快照,可是你的数据怎么办?附件中有我的简易防火墙,大家可以参考一下.
补充一下一开始我以为ssh端口被封只能通过恢复快照才能解决,之后我看了官方的视频发现,从管理控制台通过谅解终端可以登录,这种登陆时tty模式的,就相当于服务器在你面前你在操作,所以只要你知道用户账号密码,你就可以登陆,就算你忘记了,你可以通过控制台找回密码,才操作.