一句话crontab实现防ssh暴力破解
浏览:2396次 出处信息
将vps在公网上,难免会有居心叵测的人扫描,及时换了非标准的端口,依旧难以避免。因此编写一条Bash命令,放在crontab里,发现坏人立刻封掉ip。
一句话命令如下:
$ crontab -l * * * * * journalctl -u ssh.service --since="24 hours ago" | awk '/Failed password/{if(NF>15){ips[$13]++}else{ips[$11]++}}END{for(ip in ips){if(ips[ip]>3){print ip}}}' | while read ip; do grep $ip$ /etc/hosts.deny > /dev/null || echo "ALL: "$ip | sudo tee -a /etc/hosts.deny ; done
功能:24小时内输错5次ssh密码的客户端ip,将立刻被添加到 /etc/hosts.deny
文件里做黑名单处理。
简单解析:
该条语句可以按三个管道符号进行分割,下面分别讲解。
管道的第一部分:使用 journalctl
命令查询最近24小时内的登录日志,该命令适用于使用systemd的系统,如果非systemd,可以换成从 /var/log/secure
文件过滤日志。
管道的第二部分:主要是awk
过滤登录失败日志,关键字Failed password
。对登录失败的ip地址进行统计,输出失败次数大于3次的ip地址。此处用到了awk的数组功能做统计。
管道的第三部分:去重,避免重复添加IP到/etc/hosts.deny
文件中。使用while
语句判断ip地址是否已经在 /etc/hosts.deny中,如果不在,则使用tee命令进行追加。
该命令不仅实用,而且还很有趣。个人以为十分有学习价值。
建议继续学习:
- Linux shell脚本使用while循环执行ssh的注意事项 (阅读:6638)
- 在ssh服务里使用chroot (阅读:4858)
- 为什么要用公钥/私钥而不是密码去做SSH身份验证 (阅读:4694)
- 懒人连ssh不输密码若干大法 (阅读:4494)
- ssh连接超时解决办法 (阅读:4480)
- 如何让ssh登录更加安全 (阅读:4492)
- ssh命令 (阅读:4223)
- SSH无密码登录 (阅读:4256)
- ubuntu定时执行任务crontab的使用 (阅读:3653)
- 共享会话的ssh连接配置 (阅读:3584)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:IP团伙行为分析(更新中文版报告)
后一篇:洋葱式信息安全观察:信息安全与业务浪涌 >>
文章信息
- 作者:昔我往矣 来源: 昔我往矣
- 标签: crontab ssh 暴力
- 发布时间:2022-06-19 18:15:01
建议继续学习
近3天十大热文
- [54] Go Reflect 性能
- [52] 如何拿下简短的域名
- [52] android 开发入门
- [52] Oracle MTS模式下 进程地址与会话信
- [51] IOS安全–浅谈关于IOS加固的几种方法
- [49] 【社会化设计】自我(self)部分――欢迎区
- [49] 图书馆的世界纪录
- [47] 读书笔记-壹百度:百度十年千倍的29条法则
- [38] 程序员技术练级攻略
- [29] 视觉调整-设计师 vs. 逻辑