💬

chatbotAIにスパムをブロックさせる(コードを書いてもらった・・・小声)

2023/02/10に公開

プライドないの?って言われそうだけど、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