一句话crontab实现防ssh暴力破解
浏览:4094次 出处信息
将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的注意事项 (阅读:7759)
- 在ssh服务里使用chroot (阅读:5626)
- 为什么要用公钥/私钥而不是密码去做SSH身份验证 (阅读:5492)
- 如何让ssh登录更加安全 (阅读:5349)
- ssh连接超时解决办法 (阅读:5270)
- 懒人连ssh不输密码若干大法 (阅读:5253)
- SSH无密码登录 (阅读:5235)
- ssh命令 (阅读:4991)
- ubuntu定时执行任务crontab的使用 (阅读:4299)
- 共享会话的ssh连接配置 (阅读:4436)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:IP团伙行为分析(更新中文版报告)
后一篇:洋葱式信息安全观察:信息安全与业务浪涌 >>
文章信息
- 作者:昔我往矣 来源: 昔我往矣
- 标签: crontab ssh 暴力
- 发布时间:2022-06-19 18:15:01
建议继续学习
近3天十大热文
-
[335] WordPress插件开发 -- 在插件使用 -
[150] 解决 nginx 反向代理网页首尾出现神秘字 -
[90] IOS安全–浅谈关于IOS加固的几种方法 -
[55] 二维码的生成细节和原理 -
[49] 到底什么是MVC? -
[48] Shell的那些事儿 -
[48] Linux Used内存到底哪里去了? -
[47] 中间件和稳定性平台 -
[47] Hacker News 排名算法工作原理 -
[44] 浅谈MySQL索引背后的数据结构及算法
