一句话crontab实现防ssh暴力破解
浏览:2869次 出处信息
将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的注意事项 (阅读:6833)
- 在ssh服务里使用chroot (阅读:4992)
- 为什么要用公钥/私钥而不是密码去做SSH身份验证 (阅读:4829)
- 懒人连ssh不输密码若干大法 (阅读:4622)
- ssh连接超时解决办法 (阅读:4619)
- 如何让ssh登录更加安全 (阅读:4625)
- ssh命令 (阅读:4349)
- SSH无密码登录 (阅读:4444)
- ubuntu定时执行任务crontab的使用 (阅读:3841)
- 共享会话的ssh连接配置 (阅读:3711)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:IP团伙行为分析(更新中文版报告)
后一篇:洋葱式信息安全观察:信息安全与业务浪涌 >>
文章信息
- 作者:昔我往矣 来源: 昔我往矣
- 标签: crontab ssh 暴力
- 发布时间:2022-06-19 18:15:01
建议继续学习
近3天十大热文
-
[67] Java开发岗位面试题归类汇总
-
[64] Go Reflect 性能
-
[63] IOS安全–浅谈关于IOS加固的几种方法
-
[63] 【社会化设计】自我(self)部分――欢迎区
-
[61] 如何拿下简短的域名
-
[61] android 开发入门
-
[57] Oracle MTS模式下 进程地址与会话信
-
[49] 图书馆的世界纪录
-
[49] WEB系统需要关注的一些点
-
[44] Twitter/微博客的学习摘要