computers-hardware-wallpaper-1

Nginx ile Layer 7 Bazında Yazılımsal Firewall

Merhabalar , Nginx çoklu cloud ve proxy desteği sunan bir web server ara yüzüdür. Rakiplerine göre %90 daha başarılı ve hızlı olan bu sistem , açık kaynak oluşu ve farklı algoritmalar ile geliştirilebilir olmasıyla meşhurdur.

Nginx’de basit kurallar ile 100 bin pakete kadar tarama ve bloke etme sağlanabilir.

Tek yapmanız gereken aşağıdaki kodları nginx.conf dosyasına doğru eklemektir. Ekledikten sonra ayarların doğruluğunu test etmemiz gerekir. Aksi halde nginx çalışmaz.

 

server {

location /home/sitenizinkullaniciadi/public_html/ {
limit_conn addr 5;

}
}
# Hostazor
limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=5r/s;

# Hostazor
limit_conn_status 403;
limit_req_status 403;
###

Bu kodları ekleyip önbelleği sunucu tarafından temizledikten sonra nginx’i yeniden başlatın. Ayarlarınız etkin olacaktır.

  1. Madem layer7 ile saldırıları engellliyebiliyorsun peki neden hostazorda cloudflare var ne kadar bilgisiz birisin sen ya .d

    • Okuma özrünüze istinaden , bilgisizliğimden bahsetmişsiniz ama orada nekadar paketi engelleyebileceğini yazdığımı görememişsiniz. Bence öncelikle Dil anlatım derslerine katılıp sonrasında bu tür konularda yorum yapmalısınız. Teşekkürler FATMA HANIM. 🙂

  2. hakan

    merhabalar. tam olarak konuya hakim olmamak ile birlikte aklıma takılan 1 2 şey sormak istiyorum. genelde get sorgusu üzerinden ekstra olarak limit_req zone=req_limit_per_ip burst=5 nodelay; bunu da ekliyoruz.ancak saniyede 100 bin paket demişsiniz. verdiğiniz değerlere göre saniye başına 50k farklı ip adresi ile sorgu yapıldığında durum ne olur? bunu önlemek için cf iş görür mü sizce? nginx ve layer 7 olarak soruyorum sadece.

    • Şimdi konu ile ilgili olarak sorgudan ziyade bloke etmek önemli. Direkt bağlantılarda zararlı bağlantı ki bunların user agent vs gibi koşulları var buna göre süzülüp yapılmalı. Cloudlfare bir nevi çözüm sağlıyor. Lakin cloudflare da biryere kadar sağlıyor. Benim için tek dezavantajıda ilk başta çıkan yönlendirme sayfası. Bunu görmemek için farklı kurallarla saldırıları engelleyebilir bir nevi bloke etmiş olabilirsiniz.

  3. hakan

    anlıyorum peki
    if ($status = “404”) {return 444;}
    if ($status = “302”) {return 444;}
    if ($status = “568”) {return 444;}

    bunların bir etkisi olur mu? sanıyorum ki bağlantı kurunca 200 bağlantı kuramayınca bunlar gibi response değerleri veriyor loglarda.

    • Kural diziminin kullanışı çok önemlidir. Genelde bu şekilde değilde nginx gibi proxy server desteği ile limitlerseniz hem hız düşmez hemde gereksiz bir şişkinlik yaşamaz.

  4. hakan

    anlıyorum. peki burada ekstra ne gibi önlemler alabiliriz? mesela saniyede 100 ip ya da 10 ip ye izin ver gibi bir kural yazmak mümkün müdür? yoksa bunu iptables ile tcp hitcount ile mi yapmamız gerekir?

    • Evet Hakan Bey, Saniyede bağlantı sayısı , referansına göre bağlantı izni , özel kurallar gibi , Nginx’i bir bulut gibi düşünün. Modülleri ile istediğiniz gibi şekillendirebileceğiniz bir bulut. 🙂

Bir Cevap Yazın