Netinternet WAF yeni adıyla Heimwall R10, Hızlıresim gibi Türkiye’de çokça ziyaret edilen web siteleri bu servisi aktif bir şekilde kullanmaktadırlar. Kapalı beta sürecinden yakın zamanda açık beta sürecine geçen ve hosting şirket sahipleri dışında bireysel kullanıma da sunulmuştur.
Şimdiden uyarayım burada görmüş olduğunuz görsellerdeki ayarlar ilerleyen zamanlarda değişiklik gösterebilir. Sistem 13 Haziran 2021 Tarihi ile Kapalı BETA olarak çalışmaktadır.
HEIMWALL Özellikleri Nelerdir?
Ücretsiz sürümde hangi özellikler bizleri karşılıyor
- Tüm WAF özellikleri full açık gelmektedir,
- 10 Alan Adı/Subdomain Kullanım Kotası
- 5000 GB/ay trafik kotasına kadar kullanılabilmektedir,
- Volimetrik ataklara karşın temel Anti-DDoS servisi ücretsizdir,
- 2 ayrı fiziksel worker da alan adınız tanımlanır, yedekli çalışır,
- CloudFlare ile kullanabilmeniz mümkündür,
- 2 IPv4 ve 2 IPv6 VRRP IP adresi sağlanır.
Ürünü genel olarak inceleyeceğiz, nedir ne değildir bunları sizlere göstermek istiyorum. Öncelikli olarak proje Türkiye şartlarında Layer 7 atakları için ve özellikle trafik filtreleme için ideal. CloudFlare kullanmaktan çekinen kişiler olduğunu biliyoruz. Bu noktada bu ürünü kendi sistemlerine konumlandırabilirler.
Burada alan adınızı eklediğiniz anda sizi önemli olan iki özellik karşılıyor, bunlar sırasıyla;
- JS Koruma Modu: Bu CloudFlare’de yer alan tarayıcı kontrol özelliğine denk geliyor ve saldırı alıyorsanız otomatize gelen botlardan sizleri bir nebze korumaktadır. Bu noktada kullanıcının tarayıcısı gerçek bir kullanıcı mı değil mi diye kontrol ediliyor.
- Captcha Koruma Modu: Gene aynı şekilde hCaptcha gelen CloudFlare sayfasına denk gelmektedir. Burada gizlilik için reCaptcha keylerini sistem sizden talep etmekte. İlerleyen zamanlarda bu sisteme hCaptcha’nın da ekleneceğini düşünüyorum.
DNS sekmesinde bizim asıl kullanacağımız IP adresleri bulunuyor, bunları direk olarak CloudFlare aracılığı ile veya kullanabileceğiniz DNS yönlendirme araçları ile kullanabilirsiniz. Baştan uyarayım henüz DNS servisleri aktif olmadığı için Nameserver olarak bu ip adresleri KULLANILAMAZ.
Burada DNS Servisleri alanındaki Anycast DNS yapısı ben bu makaleyi yazdığım tarihte kapalıydı, test işlemlerinden hemen sonra aktif edilecek ve kullanılmaya başlanacak. CloudFlare gibi 8ms altında DNS sorgusu beklemeyin ancak Türkiye’de yer alan çoğu sağlayıcıdan daha hızlı DNS sorguları alabileceğinizden emin olabilirsiniz.
HEIMWALL WAF Üzerine Kaynak Sunucu Nasıl Eklenir?
Bütün olayların döndüğü yere geldik, burada korunacak web sitesinin kaynak rotalarını belirtiyoruz, URL olmak zorunda ve herhangi bir değer olabilir. Yani örnek vermem gerekirse ip adresi üzerinden içerikleri almasını isteyebilirsiniz. Bu noktada Host
header’i üzerinden çalışacak ve istekleri işleyecek. Kaynak sunucu mutlaka belirtmelisiniz. Burada dikkat edilmesi gerekenler
- HTTPS üzerinden ip adresi ile yayın yapılıyorsa mutlaka “TLS Doğrulamayı Iptal Et” seçeneğinin aktif olması gerekmektedir. Aksi taktirde sistem sitenize erişemez.
- Kaynak olarak herhangi bir alan adı kullanılacaksa ve SSL sertifikası yer alıyorsa mutlaka geçerli olmalı self-signed kabul edilmeyeceğini unutmayınız. (TLS Doğrulamayı Iptal ettiğiniz durumlar hariç)
- Yük dengeleme modun da çalışacaksa en az iki kaynak eklenmesi gerektiğini unutmayınız.
HEIMWALL WAF SSL/TLS Nasıl Ayarlanır?
Geldik ikinci hayati aşamalardan biri olan SSL/TLS ayarlarına, bu ayarı bazıları SEO için kullanıyor ancak biz güvenlik için kullanacağız. Trafiğin üçüncü gözler tarafından gözetlenmesinin önüne geçeceğiz. İsterseniz Let’s Encrypt isterseniz de benim yaptığım gibi özel sertifikanızı sisteme yükleyebilirsiniz.
Unutmamalısınız Let’s Encrypt entegrasyonu kullanıldığı için yapacağınız bir ve/veya birden fazla yanlış SSL isteğinde ACME servislerinin rate-limitine takılacağınız için ücretsiz SSL alma imkânınız ertesi güne sarkabilir. Lütfen tüm yönlendirmeleri ve işlemleri yapmadan TLS sertifikası almaya çalışmayın.
Ayrıca tahmin ediyorum ki ileride 3.parti bir sağlayıcı kullanarak 1 yıl veya daha uzun süreli SSL sertifikası alma imkanınızda olacaktır.
Bunların dışında Optimizasyon ve hızlandırma açısından platform Brotli sıkıştırmasını, asset küçültmeyi ve görsel optimizasyonunu destekliyor. Sistemlerde geliştirme devam ettiği için bu servisler çalışmayabilir merak etmeyin yeni sürümlerde otomatik olarak aktif olacaktır.
Dinamik kurallar açısından sistem oldukça gelişmiş durumda, bu noktada istediğiniz işlemleri kolay bir şekilde yapabilirsiniz. Örneğin ben wp-admin sayfalarında ve çerez içeren yerlerde cache tutulmasını engelliyorum.
CloudFlare ile arasında benim gözlemlediğim en bariz farklar ise şu şekilde, olmakla beraber çoğu özellik bizlere ücretsiz olarak sunulmakta.
- Hiçbir ek ücret gerektirmeden kullanılabilen WAF kuralları
- Ücretsiz kullanılabilen özelleştirilebilir hata sayfaları
- Gene ücretsiz kullanılabilen detaylı analiz paneli
- JS ve Captcha koruma modları arasında özgürce değişiklik yapabilme imkânı
- Günlük kayıtlarının hiçbir ücret alınmadan syslog sunucularına yönlendirme imkânı
- Otomatik aktif olabilen Captcha koruma özelliği
- Yönetilebilir kuralların ücretsiz olması
- Ve dahası
Sistemi Kapalı beta sürecinde test etmek isteyenler ve/veya ileride projelerine dahil etmek isteyenler bu adres aracılığı ile sisteme giriş yapabilirler. Bu süreçte hesap açtırmak isteyenler ise Twitter üzerinden Osman Makal hocamıza ulaşabilirler.
CloudFlare ile Netinternet WAF Nasıl Entegre Edilir?
Netinternet WAF ile ilgili ilk izlenimlerimi yazdım, sistem CloudFlare arkasında sorunsuz bir şekilde çalışıyor hal böyle olunca da hem test amaçlı hem de ek koruma katmanı olması amacıyla kullanmazsak olmaz.
İşlemlere başlamadan hemen önce kullanacağınız sunucu üzerinde firewall ile sadece aşağıdaki ip adreslerine izin verin. Böylelikle gerçek sunucu IP adresiniz asla açığa çıkmaz ve sunucunuzun güvenliğini sağlayabilirsiniz.
CloudFlare IP rangeleri(https://www.cloudflare.com/ips/)
173.245.48.0/20
103.21.244.0/22
103.22.200.0/22
103.31.4.0/22
141.101.64.0/18
108.162.192.0/18
190.93.240.0/20
188.114.96.0/20
197.234.240.0/22
198.41.128.0/17
162.158.0.0/15
104.16.0.0/13
104.24.0.0/14
172.64.0.0/13
131.0.72.0/22
2400:cb00::/32
2606:4700::/32
2803:f800::/32
2405:b500::/32
2405:8100::/32
2a06:98c0::/29
2c0f:f248::/32
PlaintextNetinternet WAF ip rangeleri
159.253.42.0/24
94.102.14.0/24
2A03:2100:B::1/64
2A03:2100:A::1/64
PlaintextBu işlemi yaptıktan hemen sonra bütün http ve https erişiminiz kesilecek ve sadece yukarıdaki ip aralıklarına izin vermiş olacaksınız. Burada sadece Netinternet WAF üzerinden trafiği akıtacaksanız CloudFlare iplerinin firewall tarafından izinli listesine alınmasına gerek yok. Ancak WAF dışında bazı sub domainleri direk CloudFlare üzerinden yayına almak isterseniz işte o zaman iş değişir.
Şimdi web sunucunuzu normal yapılandırın bunu ister kullandığınız kontrol panelinden isterseniz de elle yapılandırın, yapılandırma işleminiz tamamlandığında ip adresine erişilebiliyor olmalı ve içeriği görmelisiniz. Bununla birlikte HTTP/2 200
olarak curl -I ip_address
çıktısında da sonuç aşağıdakine benzer olmalı
HTTP/2 200
date: Sun, 20 Jun 2021 14:59:39 GMT
content-type: text/html; charset=utf-8
last-modified: Sun, 20 Jun 2021 14:54:19 GMT
vary: Accept-Encoding
expires: Sun, 20 Jun 2021 15:52:59 GMT
cache-control: public, max-age=31536000
pragma: public
Plaintextİşlemler tamamsa artık yapılması gereken Netinternet WAF paneline giriş yapmak ve “Sunucular> Kaynak Sunucu> Ekle” seçeneğini seçmek ve kaynağı eklemek olacak. Burada önemli nokta eğer ip adresiniz üzerinde ön tanımlı olarak sadece 443 sunucusu çalışıyorsa ve Self-Signed bir SSL tanımlıysa otomasyon sitenize haliyle erişemeyeceği için “SSL/TLS Doğrulamayı İptal Et” seçeneğinin aktif edilmesi gerekmekte. 80 portunun kullanıldığı senaryolarda bu işlemi yapmanıza gerek yok.
Kaynağımızı eklediğimizde şu şekilde otomasyon üzerinde gözükmeye başlayacak, birden fazla kaynak ekleyebilirsiniz. Bu durumda “Yük Dengeleme” seçeneğini de aktif etmeyi unutmayınız.
Merak etmeyin burada HTTP Durumu temsili olmakla birlikte çoğu HTTPS kullanılan senaryoda erişim sıkıntısı varmış gibi gözükebilir. Bu durum geçici olduğu unutmayın, Otomasyonu kullanırken ilerleyen zamanlarda durum normale dönecektir.
Ardından son aşamada “Koruma> HTTP Durum Kodu” özelliğinden CloudFlare’nin gerekli durumları algılayabilmesi ve sitenizin kapalı olduğunu düşünmemesi için mevcutta yer alan 503 HTTP kodunu, 403 olarak değiştirin. Bu işlemi yaptığınızda koruma modu açılsa dahi sitenize erişim kesilmeyecek. Sadece CloudFlare’nin sitenizin kapalı olduğunu düşünmesi durumu ortadan kalkacaktır.
Değişiklikler uygulandığında son durum “HTTP Durum Kodu” için aşağıdaki gibi olacak.
İşlem Netinternet WAF otomasyonu üzerinde tamamlandı. Gelelim CloudFlare üzerinden yapılacak işlemlere önce bir süreliğine SSL/TLS ayarını Flexible olarak değiştiriyoruz. Böylelikle tarayıcı ile site arasında trafiği şifrelemiş oluyoruz. Ayrıca CloudFlare ile Ücretsiz SSL/TLS Sertifikası Nasıl Alınır? Makalesindeki adımları uygulayarak bu ayarı Full (strict) olarak da kullanabilirsiniz.
Bunu yapmamızın asıl sebebi WAF üzerinden SSL alacak olmamız, ama derseniz ben otomasyon üzerinde CloudFlare’nin verdiği origin sertifikayı kullanırım o zaman otomasyona sertifikanızı yükleyin ve direk olarak “Full (strict)” seçeneğini seçin. (Geçerli bir SSL kullanmazsanız Full seçeneğini seçmeniz gerektiğini unutmayın.)
Aksi bir işlem yaparsanız web siteniz çalışsa bile CloudFlare araya girecek ve SSL bağlantısını sağlamayacak siteye kimseyi eriştirmeyecektir. SSL kullanmayacaksanız veya aradaki bağlantının doğruluğunun sizin için bir önemi yoksa bu ayarları yapmanıza gerek yok.
Son aşamada ise otomasyonun bize vermiş olduğu IP adresini CloudFlare’de yer alan DNS sekmesinde gerektiği gibi kullanmak.
Bu şekilde yaptığımız entegrasyon sonucunda sistem üzerinde Layer 7 yani uygulama katmanı üzerinden gelecek olan HTTP GET vb atakların çoğunun önüne geçmiş olacaksınız. Otomatik aktif olan Captcha koruması sayesinde bot trafik filtrelenecek.
Dikkat edilmesi gerekenler
- Kaynak sunucunuz yurt dışında yer alıyorsa şu an için WAF + CloudFlare kullanmayın.
- Sık sık saldırı almıyorsanız Netinternet WAF ile birlikte CloudFlare entegrasyonu yapmayın.
- Netinternet WAF konum olarak Türkiye’de yer aldığı için CloudFlare ile entegre edildiğinde 8-11 ms kadar bir gecikme artışına sebep olabilir bu durumun geçici olduğunu unutmayınız.
Netinternet WAF(HEIMWALL) Orijinal Ziyaretçi IP’leri Nasıl Çözümlenir?
Web sitenizin trafiği Netinternet WAF(HEIMWALL) üzerinden doğrudan web sunucunuza yönlendirildiğinde, Netinternet WAF(HEIMWALL) bir ters proxy görevi görür ve istekleri sunucuya ileterek çalışır. İstekleri sunucunuza ulaşmadan hemen önce karşılar, kötücül trafiği temizler ve sunucunuza iletir. Bunu yaparken de IP adresi Netinternet WAF‘ın kullandığı IP aralıkları olur.
Orijinal ziyaretçi IP adresleri ise sistem tarafından, True-Client-IP
HTTP başlığı ile web sunucusuna bildirilir. Bu makale ile orijinal ziyaretçi IP adresini kaynak sunucunuza iletebilirsiniz.
NGINX HEIMWALL Ayarları
Herhangi bir metin editörü ile /etc/nginx/conf.d/ni-waf.conf
dosyasını oluşturun ve aşağıdaki satırları dosya içerisine ekleyin.
set_real_ip_from 159.253.40.49/32; # Eski IP aralıklarını kullananlar için
set_real_ip_from 159.253.40.50/32; # Eski IP aralıklarını kullananlar için
set_real_ip_from 159.253.42.0/24;
set_real_ip_from 94.102.14.0/24;
real_ip_header True-Client-IP;
PlaintextBu işlemden hemen sonra nginx kardeşimizi systemctl restart nginx
ile yeniden başlatın, logları kontrol ettiğinizde artık sorunsuz bir şekilde IP adreslerini görebileceksiniz.
Apache HEIMWALL Ayarları
Kullanacağımız üçüncü parti kütüphaneyi sisteme tanımlayın.
sudo a2enmod remoteip
PlaintextBu işlemden hemen sonra 000-default.conf
klasörüne ön tanımlı yapılandırma için aşağıdaki satırı ekleyin.
RemoteIPHeader True-Client-IP
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
PlaintextMecburiyetten log formatında oynama yapmalıyız bunun için apache2.conf
dosyasında aşağıdaki değişikliği uygulayın.
LogFormat %a %l %u %t \%r\ %>s %O \%{Referer}i\ \%{User-Agent}i\ combined
PlaintextHerhangi bir metin editörü ile /etc/apache2/conf-available/remoteip.conf
dosyasını oluşturun ve aşağıdaki satırları dosya içerisine ekleyin.
RemoteIPHeader True-Client-IP
RemoteIPTrustedProxy 159.253.40.49/32 # Eski IP aralıklarını kullananlar için
RemoteIPTrustedProxy 159.253.40.50/32 # Eski IP aralıklarını kullananlar için
RemoteIPTrustedProxy 159.253.42.0/24
RemoteIPTrustedProxy 94.102.14.0/24
PlaintextYapılandırmayı aktif edip Apache’yi yeniden başlatın.
sudo a2enconf remoteip
systemctl restart apache2
PlaintextHEIMWALL WAF Wordpress İçin Özel Kurallar
Kuralları oluşturmak için panelde yer alan “Kurallar” sekmesinde yer alan “Yönetilen Kurallar” seçeneğini aktif etmeniz gerekmektedir. Hemen ardından aşağısında yer alan “Özel Kurallar> Oluştur” yönergesini takip ederek aşağıdaki kuralları web siteniz için ekleyebilirsiniz.
- Kural adı: Bypass wp-admin cache
- Kural aksiyonu: bypass cache
(http.request.uri contains "/wp-admin")
Plaintext- Kural adı: Bypass cookie
- Kural aksiyonu: bypass cache
(http.cookie contains "wp-.*|wordpress.*|comment_.*|woocommerce_.*")
Plaintext- Kural adı: Login protect
- Kural aksiyonu: captcha challenge
(http.request.uri.path contains "/wp-login.php")
Plaintext- Kural adı: Whitelist Known Bots
- Kural aksiyonu: Allow
(waf.client.bot == "on")
Plaintext- Kural adı: Protect Wp-admin
- Kural aksiyonu: block
(ip.src != "1.1.1.1" and http.request.uri.path contains "/wp-admin") or (http.request.uri.path contains "/wp-login.php")
Plaintext- Kural adı: Reduce Spam
- Kural aksiyonu: block
(http.request.uri.path == "/wp-comments-post.php" and http.request.method == "POST" and http.referer != "siteadresi.com")
Plaintext- Kural adı: Block xmlrpc.php
- Kural aksiyonu: block
(http.request.uri.path contains "/xmlrpc.php")
Plaintext