Nginx, Layer7 Saldırılarını Engelle

Günümüzde Layer7 Anti-DDoS hizmeti (CND/WAF) sağlayan çoğu hizmet verenler Nginx‘i tercih etmektedir. (Cloudflare, FluxCDN, DDoS-Guard buna örnektir.)

Layer7 hedef alan saldırıların tespiti (HTTP/GET/POST/HEAD…) diğer saldırı türlerine kıyasla daha zordur nedeni ise organik hiti taklit ederek flood a dönmüş bir şekilde bazen proxy üzerinden bazense tek ip üzerinden hedef sitenin cpu durumunu şişirerek siteyi yanıt veremez hale getirmesi diyebiliriz.

HTTP (Layer7) Saldırılarının Bazı Zararları,

  • Uzun süreli saldırılarda SEO bakımından büyük tahribatlara neden olabilir.
  • Scripte bulunan bir hatayı hedefleyen saldırıda mysql şişebilir ve veriler kurtarılmaz hale gelebilir.
  • Site ulaşılamaz durumda kaldığı süre zarfı boyunca ziyaretçileri siteden uzaklaştırabilir.
  • Hosting’in tüm trafik hakkını bitirip siteyi ay sonuna kadar kapalı tutabilir. (Sınırsız trafik hakkınız mevcut değilse)
  • Küçük çocuklar (scriptkiddie olarak adlandırabilceğimiz) tarzda çocuklar sitenizi ve kullanıcılarınızı rahatsız ederler.
  • En önemlisi’de saldırganlar saatlerce sitenizi erişime kapatabilirler.

Layer7 Saldırı Türleri Ve Engelleme Yolları,

Saldırı TürüAçıklamaMitigation / Engelleme
SYN floodBir SYN taşkın saldırısı, hedef cihazdaki sistem kaynaklarını tüketebilir. Saldırgan, hedef cihaza yanlış IP adresleri içeren SYN paketleri yükleyerek TCP bağlantıları kurmak için kullanılan tüm mevcut kaynakları tüketmeye çalışır.SYN çerez koruması
ICMP floodICMP flood (Smurf attack) saldırısı, ICMP yankı istek paketlerini uzak konumlardan bir ara ağ cihazının IP yayın adresine yönlendirir. Aracı cihaz, IP yayın adreslerine yönlendirilen ICMP paketlerini filtrelemezse, ağdaki tüm bilgisayar ana bilgisayarları ICMP paketini alabilir ve bir ICMP yankı yanıtı gönderebilir.Maksimum reddetme oranı ve sanal sunucu IP oranı sınıfı (Bağlantı Hızı Sınırlaması).
Peer-to-peer attacksSaldırgan, büyük eşler arası dosya paylaşım ağlarının istemcilerine kurbanın web sitesine bağlanmaları talimatını verir.BIG-IP sistemi bir bağlantı noktası reddetme cihazıdır ve saldırıyı sunucuya geçirmeyerek birçok yaygın açıkları önler.
IP fragmentation
attacks
Çok sayıda IP parçalama saldırısı, ağlarda hizmet reddine neden olabilir.BIG-IP sistemi, bir iletişimdeki son parça olmadığı sürece, belirli bir eşiği karşılamayan IP parçalarını düşürür.
SlowlorisSlowloris saldırısı, hiçbir zaman tamamlanmayan HTTP istekleri göndererek web sunucusundaki mevcut tüm istek işleme iş parçacıklarını tekeline alabilir. Slowloris saldırısı sonunda web sunucusunun tüm bağlantı kapasitesini tüketir.iRules, iyi bilinen saldırıları filtreleyebilir.
UDP floodUDP flood saldırısı, birden fazla uzak sistemin hedefe büyük miktarda UDP paketi gönderdiği yaygın bir DDoS saldırısıdır.UDP boşta oturum zaman aşımı ve sanal sunucu IP oranı sınıfı (Bağlantı Hızı Sınırlaması).
Ping of deathPing of Death saldırısı, 65.535 bayttan daha büyük olan ICMP yankı paketlerini kullanır. Bu, sistemin izin verdiği maksimum ICMP paket boyutu olduğundan, paketi yeniden birleştirmeye çalışan sistemler yanıt vermeyi durdurabilir.BIG-IP sistemi, bu saldırıya direnecek şekilde güçlendirilmiştir. Saldırı, Herhangi Bir IP özelliği etkinleştirilmiş bir sanal sunucuya yönelikse, bu paketler sunucuya gönderilir.
LandLand saldırısı, kaynak IP adresinin hedef IP adresiyle aynı olduğu bir SYN paketidir.BIG-IP sistemi bu saldırıya direnecek şekilde güçlendirilmiştir ve bu tür paketleri sunucuya göndermez.
TeardropTeardrop saldırısı, bazı yaygın işletim sistemlerinde bulunan örtüşen bir IP parçası sorunundan yararlanır. Sorun, TCP / IP parçalanma yeniden birleştirme kodunun çakışan IP parçalarını hatalı şekilde işlemesine neden olur.BIG-IP sistemi, çerçeve hizalamasını doğru bir şekilde kontrol eder ve bu saldırıları işlemek için uygun olmayan şekilde hizalanmış parçaları atar.
Data attackVeri saldırısı, bir web sunucusunun içeriğine yapılan bir veya daha fazla saldırıdır. BIG-IP sistemi bir bağlantı noktası reddetme cihazı olarak hareket eder ve saldırıyı sunucuya geçirmeyerek birçok yaygın açıkları önler.BIG-IP sistemi bir bağlantı noktası reddetme cihazıdır ve saldırıyı sunucuya geçirmeyerek birçok yaygın açıkları önler.
NukeNuke saldırısı, hedef sistemlere art arda geçersiz ICMP paketleri göndermek için değiştirilmiş bir ping yardımcı programı kullanır ve bu işlem sırasında etkilenen bilgisayarları yavaşlatır. Örneğin, WinNuke saldırısı, bazı yaygın işletim sistemlerinin NetBIOS bağlantı noktalarına gönderilen verileri işleme yönteminden yararlanır.BIG-IP sistemi, özellikle etkinleştirilmedikçe bağlantı noktalarını reddeder.
SIPSIP DoS saldırıları tipik olarak SIP davet sel saldırılarını ve SIP kayıt saldırılarını içerir.iRules ve sanal sunucu IP oranı sınıfı (Bağlantı Hızı Sınırlaması).
Sub 7Sub 7 saldırısı, belirli yaygın işletim sistemlerinde çalışan bir Truva atıdır. Bu Truva atı, sistemin uzaktan kontrol edilmesini sağlar. Bu Truva atı, varsayılan olarak 27374 numaralı bağlantı noktasını dinler.BIG-IP sistemi, özellikle etkinleştirilmedikçe yüksek bağlantı noktalarını reddeder.

Örnek NGİNX.conf,

# obir.ninja basic config
user                    nginx;
worker_processes        4; #server core 
error_log               /var/log/nginx/error.log;
pid                     /var/run/nginx.pid;
worker_rlimit_nofile 50000;
# Worker config
events {
        worker_connections  1024;
        use                 epoll;
}
http {
    # Main settings
    
        sendfile                        on;
    tcp_nopush                      on;
    tcp_nodelay                     on;
    client_header_timeout           5s;
    client_body_timeout             5s;
    client_header_buffer_size       256k;
    client_body_buffer_size         128k;
    client_max_body_size            100m;
    large_client_header_buffers     4  256k;
    send_timeout                    2;
    keepalive_timeout              65;
    reset_timedout_connection       on;
    server_tokens                   off;
    server_name_in_redirect         off;
    server_names_hash_max_size      512;
    server_names_hash_bucket_size   512;
    # Log format
    log_format  main    '$remote_addr - $remote_user [$time_local] $request '
                        '"$status" $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';
    log_format  bytes   '$body_bytes_sent';
    #access_log          /var/log/nginx/access.log  main;
    access_log off;
    # Mime settings
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
    
    # Compression
    gzip                on;
    gzip_comp_level     9;
    gzip_min_length     10240;
    gzip_buffers        8 64k;
    gzip_types         text/css application/x-javascript text/richtext image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;
    gzip_proxied       expired no-cache no-store private auth;
    
    
    # Proxy settings
    proxy_redirect      off;
    proxy_set_header    Host            $host;
    proxy_set_header    X-Real-IP       $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass_header   Set-Cookie;
    proxy_connect_timeout   90;
    proxy_send_timeout  90;
    proxy_read_timeout  90;
    proxy_buffers       32 4k;
    # Cloudflare https://www.cloudflare.com/ips
    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   172.64.0.0/13;
    #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;
    # SSL PCI Compliance
    ssl_session_cache   shared:SSL:10m;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers        "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
     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;
  server {
    limit_conn conn_limit_per_ip 10;
    limit_req zone=req_limit_per_ip burst=10 nodelay;
      }
    # Error pages
    error_page          403          /error/403.html;
    error_page          404          /error/404.html;
    error_page          502 503 504  /error/50x.html;
server {
  if ($request_method !~ ^(GET|HEAD|POST)$ ) {
    return 444;
  }
  }
    limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
    
    location /tr/ {
        limit_conn addr 10;
       
    }
}
limit_req_zone $binary_remote_addr zone=one:10m rate=30r/m;
server {
   
    location /index.html {
        limit_req zone=one;
  
    }
}
    
    server {
        server_name localhost;
    }
    # Cache
    proxy_cache_path /var/cache/nginx levels=2 keys_zone=cache:10m inactive=60m max_size=512m;
    proxy_temp_path  /var/cache/nginx/temp;
    proxy_cache_key "$host$request_uri $cookie_user";
    proxy_ignore_headers Expires Cache-Control;
    proxy_cache_use_stale error timeout invalid_header http_502;
    proxy_cache_valid any 3d;
    map $http_cookie $no_cache {
        default 0;
        ~SESS 1;
        ~wordpress_logged_in 1;
    }
 
    # Wildcard include
    include             /etc/nginx/conf.d/*.conf;
}

Layer7 koruma altına aldığımıza göre Layer4/UDP/İCMP vb.. gibi gelebilecek saldırılardan korunmak için cloudflare kurmanız yeterli olacak.

CDN olarak Anti-DDoS Hizmeti Almak isterseniz R10 üzerinden bizimle iletişime geçebilirsiniz. -T13R

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir