首页
编程随笔
Java笔记
Html/Css/Js
Android
后端笔记
服务器搭建
BUG收集
Java异常
Android异常
在线工具
Json格式化
编码/解码
Epub在线编辑
登录
发布文章
个人文章
退出登录
首页
技术教程
BUG收集
在线工具
资源下载
登录
发布文章
退出登录
搜索
当前位置:
首页
-
博客
- 正文
关闭
Linux SSH 登录失败5次禁止该IP访问 防止暴力破解
更新时间:2024-06-25 23:42:50
阅读数:1041
发布者:落幕
Linux 系统SSH 登录失败的内容会记录到/var/log/secure文件,通过查找登录失败的ip并获取次数,失败次数超过5次写入/etc/hosts.deny让其禁止访问 ### 编写secure_ssh.sh脚本 ```shell #!/bin/bash # 配置阈值(登录失败次数) MAX_FAILED_LOGINS=5 # SSH 登录失败日志文件路径,这里假设为 auth.log LOG_FILE="/var/log/secure" # 使用 awk 提取登录失败的 IP 地址,并统计失败次数 failed_ips=$(grep 'Failed password' $LOG_FILE | awk '{print $(NF-3)}' | sort | uniq -c | sort -rn) # 遍历检查失败次数是否超过阈值 while read -r count ip; do if [ "$count" -ge "$MAX_FAILED_LOGINS" ]; then echo "IP $ip has $count failed login attempts. Adding to /etc/hosts.deny..." # 检查是否已经存在该 IP 的拒绝条目,避免重复添加 if ! grep -q "^sshd: $ip" /etc/hosts.deny; then echo "sshd: $ip" >> /etc/hosts.deny fi echo "IP $ip permanently denied." fi done <<< "$failed_ips" ``` ### 添加到定时器,1分钟执行一次 添加权限避免没权限执行 chmod +x secure_ssh.sh 打开任务计划,并添加脚本 crontab -e /server/shell/secure_ssh.sh为脚本所在路径,/server/shell/logfile_secure_ssh.log为执行脚本输出日志 */1 * * * * /server/shell/secure_ssh.sh >/server/shell/logfile_secure_ssh.log 2>&1 添加完保存即可,会自动更新任务列表