Linux SSH 防暴力破解脚本示例:
#!/bin/bash
TIME_WINDOW=300 # 时间窗口(秒)
FAILURE_THRESHOLD=5 # 失败阈值
while true; do
failed_attempts=()
awk '/Failed password/ {print $11}' /var/log/auth.log | sort | uniq -c | while read count ip;
do
if [ $count -ge $FAILURE_THRESHOLD ]; then
last_attempt=$(grep "Failed password from $ip" /var/log/auth.log | tail -1 | awk
'{print $1" "$2}')
last_attempt_time=$(date -d "$last_attempt" +%s)
current_time=$(date +%s)
if [ $(($current_time - $last_attempt_time)) -le $TIME_WINDOW ]; then
# 封禁 IP 操作,例如使用 iptables
echo "Banning $ip due to excessive failed attempts"
fi
fi
done
sleep 60
done
这个脚本会每隔 60 秒检查 /var/log/auth.log 中失败的 SSH 登录尝试,如果在指定时间窗
口内某 IP 的失败次数超过阈值,就会考虑进行封禁(这里只是输出提示,您需要自行添加
封禁 IP 的实际操作)。