本文主要是介绍shell实现ssh服务防止暴力破解 —— 筑梦之路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
实现原理
对系统登陆日志文件/var/log/secure,进行数据筛选,查找登陆失败的ip地址,然后将ip加入到黑名单中。
脚本内容
#!/bin/bash# 获取登陆失败的ip地址failed=`cat /var/log/secure|grep "Failed"|awk '{print $11}'|sort|uniq -c|awk '$1>10 {print $2}'`# 将登陆失败的ip加入黑名单echo "sshd: $failed">>/etc/hosts.deny
脚本解释
/var/log/secure:包含验证和授权方面信息。例如,sshd会将所有信息记录(其中包括失败登录)在这里。
awk '{print $11}':打印第11列
sort:用于对文本文件或标准输入进行排序
uniq -c:用于检查和删除文件中重复出现的行。-c表示把文件中重复出现的行筛选并删除显示出现几次在行首
awk '$1>10 {print $2}':打印第一列数字大于10的第二列。
打印第二列内容赋值给failed变量。
echo "sshd: $failed">>/etc/hosts.deny:把failed变量值追加到/etc/hosts.deny文件中
/etc/hosts.deny:用来定义哪些 IP 地址禁止连接到服务器,可以有效地增强服务器的安全性
使用风险
如果登陆失败有被禁的风险,因此一般来说还是推荐使用fail2ban来进行ssh服务的防御。
这篇关于shell实现ssh服务防止暴力破解 —— 筑梦之路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!