最近在某云租了台云服务器,中间有几天没登,登陆成功后显示1万多次的失败登录,于是萌新开始了一段防ssh攻击的探索之路,记录一下。
从网上学习到的思路主要从以下几个方面进行防御
1、禁用root用户ssh登录。使用自定义的用户名进行登录
2、封禁ip
3、使用其它端口登录(关闭22端口)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
具体实现如下
1、禁用root用户ssh登录。使用自定义的用户名进行登录
创建新用户,并进行登录测试,此处省略几百字.......
一定要创建新用户
一定要创建新用户
一定要创建新用户
vi /etc/ssh/sshd_config
修改 PermitRootLogin值为no
2、封禁ip
编写shell将攻击方IP加入黑名单,网上参考来的
统计失败登录记录,这里定义时间区间内失败超过5次就将ip加入黑名单
--secure_ssh.sh #! /bin/bash cat /var/log/secure|awk '/Failes/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /usr/littlebro/bin/blackIP.txt for i in `cat /usr/littlebro/bin/blackIP.txt` do IP=`echo $i |awk -F= '{print $1}'` NUM=`echo $i |awk -F= '{print $2}'` if [$NUM -gt 5 ];then grep $IP /etc/hosts.deny > /dev/null if [ $? -gt 0 ];then echo "sshd:$IP:deny" >> /etc/hosts.deny fi fi done
corntab定时,每5分钟运行一次上述脚本
crontab -e */5 * * * * sh /usr/littlebro/bin/secure_ssh.sh
敲lastb命令发现,然鹅每天还是有很多攻击记录/etc/hosts.deny记录不断增加,于是决定弃用22端口
3、使用其它端口登录(关闭22端口)
具体操作如下,没装firewall的先装一下,云服务控制台安全规则里添加下要使用的端口,这里用的2333
cd /etc/ssh/ vi ssh/sshd_config #添加2333端口 Port 2333 ##重启sshd服务 systemctl restart sshd.service ##firewall添加端口2333 firewall-cmd --zone=public --add-port=2333/tcp --permanent ##重启firewall firewall-cmd --reload ##检查添加是否成功 firewall-cmd --zone=public --query-port=2333/tcp ##开新窗口切换端口登录测试 ##firewall移除22端口 firewall-cmd --zone=public --remove-port=22/tcp --permanent ##修改sshd_config文件删除22端口 ##重启sshd服务 systemctl restart sshd.service
大概就是这样了。改完失败登录记录确实少了很多。
当然如果2333端口被扫描到后应该又会有新的攻击,后续有新的思路再行更新。
以上用户名littlebro与2333端口都是编的.....
仅供参考