Pazar, Aralık 22, 2024

CloudFlare Firewall Ayarları Nasıl Yapılır? CloudFlare Firewall ile Wordpress Güvenliği Nasıl Sağlanır?

yüksek çözünürlüklü cloudflare logosu

CloudFlare Firewall kısa süre önce, ücretsiz hesaplar da dahil olmak üzere tüm hesaplar için detaylı kural oluşturmayı aktif etti ve komplex güvenlik duvarı kuralları ekleme imkânı sağladı. Bu kurallar ile WordPress kurulumunuzu hem bilinen hem de açıklanmayan ve bilinmeyen güvenlik açıkları için korumaya alabilirsiniz.

Genel Cloudflare Firewall Kuralları

Burada yer alan bazı kurallar öncelikli olarak Wordpress kullanan web sitelerinin güvenliği için geliştirilmiştir, kuralların bazılarını cloudflare firewall üzerinde değiştirerek başka sistemler içinde istediğiniz gibi kullanabilirsiniz.

Genel olarak botlar ve otomatize saldırı yapanları engelleyecek ve sitenize gelen kötü trafiği filtreleyeceği için google analitik gibi araçlar üzerinde trafik düşüşleri görebilirsiniz lütfen panik yapmayınız.

Security Menüsü altında yer alan WAF sekmesine tıklayın “Create a Firewall rule” deyip aşağıdaki eklemeleri teker teker yapınız. Kural isimlerini ben kendime göre düzenledim.

  • Rule Name: General Content Protection
  • Rule Action: Block
(cf.threat_score gt 14) or 
(not http.request.version in {"HTTP/1.0" "HTTP/1.1" "HTTP/1.2" "HTTP/2" "HTTP/3" "SPDY/3.1"}) or
(http.host eq "mertcangokgoz.com" and not cf.edge.server_port in {80 443}) or
(http.request.uri.path contains "/phpunit") or 
(http.request.uri contains "<?php") or 
(http.cookie contains "<?php") or 
(http.request.full_uri contains "passwd") or 
(http.request.uri contains "/dfs/") or 
(http.request.uri contains "/autodiscover/") or 
(http.request.uri contains "/wpad.") or 
(http.request.uri contains "wallet.dat") or 
(http.request.uri contains "/.env") or
(http.request.uri contains "../") or
(http.request.full_uri contains "webconfig.txt") or 
(http.request.full_uri contains "vuln.") or 
(http.request.uri contains ".sql") or 
(http.request.uri contains ".bak") or 
(http.request.uri contains ".cfg") or 
(http.request.uri contains ".env") or 
(http.request.uri contains ".ini") or 
(http.request.uri contains ".log") or 
(http.request.uri.query contains "bin.com/") or 
(http.request.uri.query contains "bin.net/") or 
(raw.http.request.uri.query contains "?%00") or 
(http.request.uri.query contains "eval(") or 
(http.request.uri.query contains "base64") or 
(http.request.uri.query contains "var_dump") or 
(http.request.uri.query contains "<script") or 
(http.request.uri.query contains "%3Cscript") or 
(http.cookie contains "<script") or 
(http.referer contains "<script") or 
(upper(http.request.uri.query) contains " UNION ALL ") or 
(upper(http.request.uri.query)contains " SELECT ") or 
(raw.http.request.uri contains "../") or 
(raw.http.request.uri contains "..%2F") or
(http.request.uri.path contains ".js.map") or
(http.request.uri.query contains "$_GLOBALS[") or 
(http.request.uri.query contains "$_REQUEST[") or 
(http.request.uri.query contains "$_POST[")
Plaintext
  • Rule Name: Unwanted User-Agents
  • Rule Action: Block
(lower(http.user_agent) contains "?%00") or 
(lower(http.user_agent) contains "$[") or 
(lower(http.user_agent) contains "${") or 
(lower(http.user_agent) contains "absinthe") or 
(lower(http.user_agent) contains "appinsights") or
(lower(http.user_agent) contains "mj12bot") or
(lower(http.user_agent) contains "semrushbot") or 
(lower(http.user_agent) contains "dotbot") or 
(lower(http.user_agent) contains "whatcms") or 
(lower(http.user_agent) contains "rogerbot") or 
(lower(http.user_agent) contains "trendictionbot") or 
(lower(http.user_agent) contains "blexbot") or 
(lower(http.user_agent) contains "linkfluence") or 
(lower(http.user_agent) contains "magpie-crawler") or 
(lower(http.user_agent) contains "mediatoolkitbot") or 
(lower(http.user_agent) contains "aspiegelbot") or 
(lower(http.user_agent) contains "domainstatsbot") or 
(lower(http.user_agent) contains "coccocbot") or 
(lower(http.user_agent) contains "commix") or 
(lower(http.user_agent) contains "crimscanner") or 
(lower(http.user_agent) contains "davclnt") or 
(lower(http.user_agent) contains "datacha0s") or 
(lower(http.user_agent) contains "dirbuster") or 
(lower(http.user_agent) contains "cincraw") or 
(lower(http.user_agent) contains "nimbostratus") or 
(lower(http.user_agent) contains "httrack") or 
(lower(http.user_agent) contains "serpstatbot") or 
(lower(http.user_agent) contains "omgili") or 
(lower(http.user_agent) contains "grapeshotcrawler") or 
(lower(http.user_agent) contains "megaindex") or 
(lower(http.user_agent) contains "petalbot") or 
(lower(http.user_agent) contains "semanticbot") or 
(lower(http.user_agent) contains "cocolyzebot") or 
(lower(http.user_agent) contains "domcopbot") or 
(lower(http.user_agent) contains "traackr") or 
(lower(http.user_agent) contains "bomborabot") or 
(lower(http.user_agent) contains "linguee") or 
(lower(http.user_agent) contains "webtechbot") or 
(lower(http.user_agent) contains "domainstatsbot") or 
(lower(http.user_agent) contains "clickagy") or 
(lower(http.user_agent) contains "sqlmap") or 
(lower(http.user_agent) contains "internet-structure-research-project-bot") or 
(lower(http.user_agent) contains "seekport") or 
(lower(http.user_agent) contains "awariosmartbot") or 
(lower(http.user_agent) contains "onalyticabot") or 
(lower(http.user_agent) contains "buck") or 
(lower(http.user_agent) contains "riddler") or 
(lower(http.user_agent) contains "sbl-bot") or 
(lower(http.user_agent) contains "df bot 1.0") or 
(lower(http.user_agent) contains "pubmatic crawler bot") or 
(lower(http.user_agent) contains "restsharp") or 
(lower(http.user_agent) contains "bvbot") or 
(lower(http.user_agent) contains "sogou") or 
(lower(http.user_agent) contains "barkrowler") or 
(lower(http.user_agent) contains "admantx") or 
(lower(http.user_agent) contains "adbeat") or 
(lower(http.user_agent) contains "embed.ly") or 
(lower(http.user_agent) contains "semantic-visions") or 
(lower(http.user_agent) contains "voluumdsp") or 
(lower(http.user_agent) contains "wc-test-dev-bot") or 
(lower(http.user_agent) contains "gulperbot") or
(lower(http.user_agent) contains "360Spider") or
(lower(http.user_agent) contains "/bin/bash") or 
(lower(http.user_agent) contains "[email protected]") or 
(lower(http.user_agent) contains "eval(") or 
(lower(http.user_agent) contains "env:") or 
(lower(http.user_agent) contains "fhscan") or 
(lower(http.user_agent) contains "floodgate") or 
(lower(http.user_agent) contains "go-http-client/") or 
(lower(http.user_agent) contains "nikto") or  
(lower(http.user_agent) contains "python") or
(lower(http.user_agent) contains "masscan") or 
(lower(http.user_agent) contains "mail.ru") or 
(lower(http.user_agent) contains "scrapy") or 
(lower(http.user_agent) contains "webdav-miniredir") or 
(lower(http.user_agent) contains "winhttp.winhttprequest") or 
(lower(http.user_agent) contains "zmeu") or
(lower(http.user_agent) contains "fuzz") or 
(lower(http.user_agent) contains "wp_is_mobile") or 
(lower(http.user_agent) contains "sqlninja") or 
(lower(http.user_agent) contains "yaanibot")
Plaintext

Cloudflare Firewall üzerinde ASN engelleme işlemi istenmeyen sonuçlara sebebiyet verebilir bu sebeple kullanırken çok dikkat etmenizde fayda var.

  • Rule Name: Unwanted ASN
  • Rule Action: Block
(ip.geoip.asnum eq 16276) or 
(ip.geoip.asnum eq 14618) or 
(ip.geoip.asnum eq 16509) or 
(ip.geoip.asnum eq 24940) or 
(ip.geoip.asnum eq 37153) or 
(ip.geoip.asnum eq 32244) or 
(ip.geoip.asnum eq 22611) or 
(ip.geoip.asnum eq 54641) or 
(ip.geoip.asnum eq 47583) or 
(ip.geoip.asnum eq 55293)
Nginx

Daha geniş kapsamlı bir ASN engelleme listesi yapacaksanız bad-asn-list kullanmanızı şiddetle öneririm.

  • Rule Name: Block Scanners
  • Rule Action: Block
(http.user_agent contains "Acunetix") or
(lower(http.user_agent) contains "apache") or
(http.user_agent contains "BackDoorBot") or
(http.user_agent contains "cobion") or
(http.user_agent contains "masscan") or 
(http.user_agent contains "FHscan") or 
(http.user_agent contains "scanbot") or 
(http.user_agent contains "Gscan") or 
(http.user_agent contains "Researchscan") or 
(http.user_agent contains "WPScan") or 
(http.user_agent contains "ScanAlert") or 
(http.user_agent contains "Wprecon") or
(lower(http.user_agent) contains "virusdie") or
(http.user_agent contains "VoidEYE") or
(http.user_agent contains "WebShag") or
(http.user_agent contains "Zeus") or
(http.user_agent contains "zgrab") or
(lower(http.user_agent) contains "zmap") or 
(lower(http.user_agent) contains "nmap") or 
(lower(http.user_agent) contains "fimap") or
(http.user_agent contains "ZmEu") or
(http.user_agent contains "ZumBot") or
(http.user_agent contains "Zyborg")
Plaintext

Wordpress için CloudFlare Kuralları

Genel kuralları ekledikten hemen sonra web sitenizde wordpress kullanıyorsanız aşağıdaki kuralları cloudflare firewall üzerinde ekleyerek ek güvenlik atmanı oluşturabilirsiniz.

  • Rule Name: Wordpress Stufs
  • Rule Action: Block
(http.request.uri.query contains "author_name=") or 
(http.request.uri.query contains "author=" and not http.request.uri.path contains "/wp-admin/export.php") or 
(http.request.uri contains "wp-config.") or 
(http.request.uri contains "setup-config.") or
(http.request.uri.path eq "/wp-comments-post.php" and http.request.method eq "POST" and not http.referer contains "mertcangokgoz.com") or
(http.request.uri.path contains "/xmlrpc.php")
Plaintext
  • Rule Name: Wordpress İmportant Areas
  • Rule Action: Block
((http.request.uri.path contains "/wp-admin/" and not http.request.uri.path contains "/wp-admin/admin-ajax.php" and not http.request.uri.path contains "/wp-admin/theme-editor.php"))
Plaintext
  • Rule Name: Login Protection
  • Rule Action: Captcha
(not ip.src in {1.1.1.1/32} and http.request.uri.path contains "/wp-login.php")
Plaintext
  • Rule Name: Hotlink Protection
  • Rule Action: Block

Bu kuralı kullanırken dikkatli olun bütün site içeriğini yanlışlıkla engelleyebilirsiniz.

not (http.referer contains "mertcangokgoz.com" or http.referer eq "cdn.mertcangokgoz.com" or http.referer eq "www.cloudflare.com")
Plaintext
  • Rule Name: Port Block
  • Rule Action: Block
(http.host eq "mertcangokgoz.com") and not cf.edge.server_port in {80 443}
Plaintext
  • Rule Name: Wordpress Admin IP Whitelist
  • Rule Action: Block
(not ip.src in {1.1.1.1/32} and lower(http.request.uri.path) contains "/wp-admin" and lower(http.request.uri.path) contains "/wp-login.php")
Plaintext

Cloudflare’nin ayrıca ön tanımlı olarak yayınladığı kurallardan faydalanmak isterseniz Common use cases for firewall rules içeriğine göz atabilirsiniz.,

Cloudflare Firewall Üzerinde Page Rules Kullanımı

Bunların hemen ardından “CloudFlare Page rules” kısmını kullanıp birkaç değişiklik yapacağız. Bu yapacağımız değişikliğin ana amacı Layer 7 saldırılarına karşı web sitesine yük binmemesini sağlanmasıdır. Gelen saldırılar önbellek üzerinden yayınlanacak ve yükü dağıtmış olacağız.

cloudflare page rules, cloudflare sayfa kuralları, cloudflare ince ayarlar, cloudflare firewall

Wordpress sitenizin admin alanı için yani wp-admin için aşağıdaki gibi ayarlamayı ihmal etmeyin.

cloudflare wp admin örnek kural, cloudflare page rules wp-admin example rule

Layer 4 Saldırıları için Cloudflare Firewall Ayarları

Cloudflare’nin otomatik DDoS koruma sistemleri, trafiği sürekli olarak analiz eder, ağ ve uygulama katmanlarındaki saldırıları azaltmak için gerçek zamanlı imzalar oluşturur. Ücretsiz paket dahil tüm hesaplarda ön tanımlı olarak Layer 4 DDoS koruması aktiftir.

Ek ayarlar yapmak amacıyla sol menüde yer alan “Security> DDoS” sekmesinde yer alan “Network-layer DDoS attack protection” seçeneği ön tanımlı olarak aktiftir.

cloudflare ddos koruma, cloudflare firewall layer 4 atak koruma

Layer 7 Saldırıları için Cloudflare Firewall Ayarları

Site geneli Layer 7 yani HTTP GET ve türevi saldırılar için cloudflare üzerinde aşağıdaki ayarların yapılması ve site geneli cache ayarlanması yeterlidir, sunucu üzerinde CPU kullanımı yükselmediği sürece genel olarak HTTP saldırılarından etkilenmeyeceksiniz.

cloudflare cache settings, cloudflare önbellek ayarları, cloudflare güvenlik ayarları, cloudflare wordpress güvenliği

Kaynak Sunucu İçin Ek Güvenlik Önlemleri

Ayrıca kaynak sunucunuzu güvenli hale getirmek için aşağıdaki makalelerden faydalanabilirsiniz.