Bunu nasıl yapabileceğimizle ilgili bilginiz var mı acaba?
Benim bunun için yaptıklarım bunlar :
csf.conf'daki
CF_ENABLE = "1"
CF_BLOCK = "block"
CF_TEMP = "14400"
ayarlarını bu şekilde yaptım. Sonra
csf.cloudflare'daki
# CloudFlare client credientials for any domain triggered:
DOMAIN:any:USER:root:CFACCOUNT:cloudflarehesapmaili@mail.com:CFAPIKEY:cloadflareglobalapi
burdaki ayarlara da cloudflare ayarlarını girdim.
Ayarları güncelleyip csf'ye restart çektim.
Sonuç olarak değişen birşey olmadı. Blockladığım IP, site domainine direk olarak giriş yapabiliyor ama server IP'sine giriş yapamıyor. Ayrıca cloudflare DNS & Proxy'yi devre dışı bıraktığımda siteye yine erişim yapamamakta.
Yani sorunum yukarıdaki arkadaşın dediği gibi Csf, servere gelen IP sorgularını Cloudflare'dan alıyor gibi göründüğü için gerçek IP üzerinden işlem yapamıyor.
Bu arada nginx.conf dosyasında bunlar da tanımlı :
# Cloudflare module cho nginx
set_real_ip_from 204.93.240.0/24;
set_real_ip_from 204.93.177.0/24;
set_real_ip_from 199.27.128.0/21;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 104.16.0.0/12;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
real_ip_header CF-Connecting-IP;
CSF'nin çalışması için Cloudflare'i aradan çıkarmadan, farklı ne türlü işlemler yapabilirim?
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