Bash scriptten fazla anlamıyorum,Google'dan bulduğum bir kaç şeyi düzenledim.
Bu script Nginx logunu kontrol ediyor, son 5 bin satırında 10 taneden fazla 404 verdirmiş ipleri Cloudflare api ile blokluyor, denedim bende çalıştı.
Cronla dakikada 1 falan çalıştırırsan işini görür. Unblock için ayrı script gerekecek.
APIMAIL=
APIAUTH=
Cloudflare'den alınacak.
#!/bin/bash
APIMAIL=
APIAUTH=
LIMIT=10
SONSATIR=5000
LOG=/var/log/nginx/access.log
IPBANLOG=/var/log/cloudflareipban.log
for IP in `tail -n $SONSATIR $LOG| grep "" 404 " | awk "{print \$1}" | sort | uniq -c | sort -rn | awk "{if (\$1 > $LIMIT) print \$2}"`
do
if ! cat $IPBANLOG -n | grep -q $IP
then
curl -sSX POST "https://api.cloudflare.com/client/v4/user/firewall/access_rules/rules"
-H "X-Auth-Email: $APIMAIL"
-H "X-Auth-Key: $APIAUTH"
-H "Content-Type: application/json"
--data "{"mode":"block","configuration":{"target":"ip","value":"$IP"},"notes":"SCRIPTBAN"}"
echo "$IP">>$IPBANLOG
fi
done
İlginiz için teşekkürler. Bu script gayet güzel çalışıyor. Dediğiniz gibi Unblock için script lazım bir de. Bununla ilgili bilgi bulamadım. Siz bulursanız ve bilgilendirirseniz çok sevinirim.