💬
chatbotAIにスパムをブロックさせる(コードを書いてもらった・・・小声)
プライドないの?って言われそうだけど、crontabでスパムをブロックするBASHをchatbotAIさんに書いてもらいました。
#!/bin/bash
# 規制するアクセスの最大数
LIMIT=100
# 規制する期間 (秒)
PERIOD=3600
# アクセスログのパス
LOG_FILE=/var/log/nginx/access.log
# iptablesコマンドのパス
IPTABLES_CMD=$(which iptables)
# 一定期間内のアクセスが多いIPアドレスを特定する
ips=$(cat $LOG_FILE | awk -v limit="$LIMIT" -v period="$PERIOD" '
BEGIN {
now = systime()
}
{
ip = $1
time = $4
gsub(/\[|\]/, "", time)
if (now - mktime(time " GMT") <= period) {
++count[ip]
if (count[ip] == limit) {
banned[ip] = 1
}
}
}
END {
for (ip in banned) {
print ip
}
}
')
# アクセス頻度の多いIPアドレスをDROPする
for ip in $ips; do
$IPTABLES_CMD -A INPUT -s $ip -j DROP
done
$ crontab -e
0 * * * * /path/to/script.sh
#ファイル名.shとPATH SPAMブロックするcrontab -eでセット
$ netstat
#で固定IPに踏み台アクセスしてくるIPを削減を確認。
もう、ググるよりchatbotさんに聞いたほうが早い。
(と思う。バージョンによってコードやライブラリも変わるので)
だいぶサーバーへの負荷は減った気がする。
もし、ご指摘等あればコメント欄にコメントしてください。
先人たちに感謝。🙏
Discussion