📒  Zaufanie i bezpieczeństwo

Jak zapobiec atakowi ddos na Nginx

Jak zapobiegać atakom ddosna nginx, dowiedz się, jak blokować niektóre ataki DDoS za pomocą serwera WWW Nginx za pomocą tej konfiguracji ochrony nginx ddos, pomoże to Twojemu serwerowi zapobiegać i blokować niektóre typowe ataki DDoS, dzięki konfiguracji i wzmocnieniu Nginx możesz zablokować niektóre ataki na swoim serwerze.

Alexhost oferuje bezpłatną ochronę anty -DDoS przed niektórymi atakami, możesz skorzystać z naszych serwerów VPS lub serwerów dedykowanych, oferujemy bezpłatną ochronę anty-DDoS, jednak możliwości ograniczania, metody, filtrowanie będą się różnić w zależności od wybranej lokalizacji.

Wymagania:
Nginx (musisz mieć zainstalowany Nginx na swoim obecnym serwerze)
Pewna wiedza (wymagana jest wiedza na temat korzystania z podstawowych poleceń systemu Linux i dostępu do niektórych plików Nginx, oczekiwana jest wiedza specjalistyczna)
Serwer VPS lub serwer dedykowany (możesz użyć maszyny wirtualnej na swoim serwerze lokalnym)
Ochrona DDoS (od dostawcy usług hostingowych jest wymagana, aby móc złagodzić bardziej złożone ataki DDoS)
Linux (dowolna dystrybucja, na której można zainstalować Nginx)
Nginx (może być konieczne przeczytanie dokumentacji Nginx w celu przetestowania i sprawdzenia, czy nadal jest niezawodny)

Ograniczenia: Ten samouczek nie jest “kuloodporny”, aby chronić przed wszystkimi atakami DDoS, to prawdopodobnie ograniczy atak poprzez blokowanie niektórych rodzajów wspólnych ataków i pomoże serwerowi być online. Istnieją pewne ograniczenia dotyczące niektórych ataków DDoS, będziesz potrzebował, aby Twój dostawca hostingu oferował jakiś rodzaj ochrony DDoS w celu blokowania i zapobiegania, ta konfiguracja nie może chronić przed wszystkimi atakami na Twój serwer. Ta konfiguracja ma na celu zapobieganie i blokowanie niektórych ataków, ale nie zablokuje wszystkich ataków bez ochrony DDoS z hostingu.

Ostrzeżenie: Alexhost nie zaleca używania tej konfiguracji na serwerze produkcyjnym, zalecamy przetestowanie jej przed podjęciem jakichkolwiek działań. Alexhost nie ponosi odpowiedzialności za jakiekolwiek problemy, które może to spowodować. Przed wdrożeniem czegokolwiek należy wykonać kopię zapasową wszystkiego na wypadek konieczności przywrócenia. Przeczytaj dokumentację Nginx dotyczącą ochrony DDoS, aby zrozumieć, jak to działa.

Zapobieganie atakom DDoS poprzez wzmocnienie Nginx

Konfiguracja Nginx pod kątem ochrony przed atakami DDoS i wzmacniania zabezpieczeń przed typowymi warstwami ataków obejmuje wdrażanie różnych strategii w celu łagodzenia ataków i zapobiegania im. Oto przewodnik po tym, jak skonfigurować Nginx, aby zwiększyć bezpieczeństwo i dowiedzieć się, jak zapobiegać atakom ddos na nginx poprzez wzmocnienie serwera WWW:

  1. Zaktualizuj Nginx: Upewnij się, że używasz najnowszej stabilnej wersji Nginx, aby korzystać z najnowszych poprawek i ulepszeń bezpieczeństwa.
  2. Ogranicz połączenia: Użyj modułu limit_conn, aby ograniczyć liczbę połączeń z jednego adresu IP. Pomaga to zapobiegać atakom DDoS polegającym na przeciążeniu serwera zbyt dużą liczbą jednoczesnych połączeń.

http {
    limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=1r/s;

    server {
        limit_req zone=req_limit_per_ip burst=5;
        # Inne konfiguracje serwera...
    }
}

Biała lista/Blacklista adresów IP: Użyj dyrektyw allow i deny, aby umieścić zaufane adresy IP na białej liście i zablokować te złośliwe.
nginx

http {
    # Biała lista zaufanych adresów IP
    allow 192.168.1.0/24;
    deny all;
    # Inne konfiguracje serwera...
}

Wdrożenie Web Application Firewall (WAF): Wykorzystaj moduły innych firm, takie jak ModSecurity z Nginx, aby wykrywać i blokować złośliwy ruch HTTP.

Włącz HTTPS: Szyfruj komunikację między klientami a serwerem za pomocą HTTPS, aby zapobiec przechwytywaniu danych i atakom typu man-in-the-middle.

Wyłącz nieużywane moduły: Wyłącz niepotrzebne moduły Nginx, aby zmniejszyć powierzchnię ataku i poprawić wydajność.
nginx

./configure --without-http_autoindex_module --without-http_ssi_module
  1. Dostrajanie konfiguracji Nginx: Optymalizacja parametrów konfiguracyjnych Nginx, takich jak procesy robocze, połączenia robocze i limity czasu w oparciu o możliwości sprzętowe serwera i oczekiwany ruch.
  2. Monitorowanie i rejestrowanie: Regularne monitorowanie dzienników serwera pod kątem podejrzanej aktywności i konfigurowanie systemów ostrzegania w celu powiadamiania administratorów o potencjalnych atakach.
  3. Wdrożenie usług ochrony przed atakami DDoS: Rozważ skorzystanie z wyspecjalizowanych usług ochrony DDoS lub urządzeń przed Nginx, takich jak Cloudflare, AWS Shield lub Akamai.
  4. Regularne tworzenie kopii zapasowych: Zapewnij regularne tworzenie kopii zapasowych krytycznych danych, aby zminimalizować wpływ udanych ataków.

Pamiętaj, że bezpieczeństwo to ciągły proces i ważne jest, aby być na bieżąco z najnowszymi praktykami bezpieczeństwa i zagrożeniami, aby skutecznie chronić swój serwer przed potencjalnymi atakami.

Konfiguracja ochrony Nginx przed ddos:

#Zdefiniuj strefę do śledzenia połączeń z każdego adresu IP

http {
    limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
    # Zdefiniuj strefę do śledzenia żądań z każdego adresu IP
    limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=10r/s;
    server {
        listen 80;
        server_name example.com;
        # Limit stawek dla żądań
        limit_req zone=req_limit_per_ip burst=20;
        # Ograniczenie maksymalnej liczby połączeń z jednego adresu IP
        limit_conn conn_limit_per_ip 20;
        # Odmowa żądań z dużymi ciałami żądań w celu złagodzenia niektórych rodzajów ataków
        client_body_buffer_size 1k;
        client_header_buffer_size 1k;
        client_max_body_size 1k;
        large_client_header_buffers 2 1k;
        # Włącz kompresję Gzip, aby zaoszczędzić przepustowość
        gzip on;
        gzip_comp_level 5;
        gzip_min_length 256;
        gzip_proxied any;
        gzip_vary on;
        # Dodaj nagłówki zabezpieczeń, aby zwiększyć bezpieczeństwo
        add_header X-Content-Type-Options "nosniff";
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Frame-Options "SAMEORIGIN";;
        add_header Referrer-Policy "same-origin";
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
        # Blokowanie popularnych podatnych na ataki User-Agents
        if ($http_user_agent ~* (wget|curl) ) {
            return 403;
        }
        # Blokowanie dostępu do ukrytych plików
        location ~ /\. {
            deny all;
        }
        # Blokowanie dostępu do określonych typów plików
        location ~* \.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|^#.*#$|\.php_ {
            deny all;
            return 403;
        }
        # umieść swój adres IP na białej liście dla dostępu administracyjnego
        location /admin {
            allow your_admin_ip;
            deny all;
        }
        # Odmowa dostępu do określonych katalogów
        location ~ /(system|vendor) {
            deny all;
            return 403;
        }
        # Proxy przekazuje żądania do serwera aplikacji
        location / {
            proxy_pass http://your_backend_server;
            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_set_header X-Forwarded-Proto $scheme;
        }
    }
}

Ta konfiguracja wykonuje następujące czynności:

  1. Rate Limiting: Ogranicza liczbę żądań z każdego adresu IP do 10 żądań na sekundę z impulsem 20 żądań.
  2. Connection Limiting: Ogranicza maksymalną liczbę połączeń z każdego adresu IP do 20.
  3. Request Body Limiting: Ogranicza rozmiar treści żądań w celu ochrony przed atakami polegającymi na wysyłaniu dużych treści żądań.
  4. Gzip Compression: Włącza kompresję gzip w celu zaoszczędzenia przepustowości.
  5. Security Headers: Dodaje nagłówki zabezpieczeń w celu zwiększenia bezpieczeństwa.
  6. Blokowanie podatnych na ataki User-Agents: Blokuje żądania od popularnych podatnych na ataki User-Agents.
  7. Blokowanie ukrytych plików: Blokuje dostęp do ukrytych plików i katalogów.
  8. Whitelisting Admin Access: Zezwala na dostęp do obszaru administratora tylko z twojego adresu IP.
  9. Odmowa dostępu do określonych katalogów: Blokuje dostęp do wrażliwych katalogów, takich jak system i dostawca.
  10. Proxy Pass: Przekazuje żądania do serwera aplikacji.

Upewnij się, że konfiguracja jest dostosowana do konkretnych wymagań, takich jak nazwy domen, adresy serwerów zaplecza i administracyjne adresy IP. Ponadto regularnie monitoruj dzienniki serwera i dostosowuj konfiguracje w razie potrzeby, aby dostosować się do zmieniających się zagrożeń.

Podana konfiguracja jest przeznaczona do dodania do pliku nginx.conf lub dołączenia z oddzielnych plików konfiguracyjnych. Oto przewodnik krok po kroku, gdzie dodać konfigurację:

  1. Zlokalizuj pliknginx.conf: W zależności od instalacji Nginx, plik nginx.conf może znajdować się w różnych katalogach. Typowe lokalizacje obejmują /etc/nginx/nginx.conf, /usr/local/nginx/conf/nginx.conf lub /etc/nginx/sites-available/default.
  2. Otwórz pliknginx.conf: Plik można otworzyć za pomocą edytora tekstu lub edytora tekstu wiersza poleceń, takiego jak nano, vim lub emacs.
  3. Dodaj konfigurację w bloku http: Wewnątrz bloku http, który definiuje ustawienia serwera HTTP, dodasz dostarczoną konfigurację. Zazwyczaj blok http znajduje się w górnej części pliku nginx.conf.
  4. Wklej dostarczoną konfigurację: Wklej całą dostarczoną wcześniej konfigurację do bloku http. Upewnij się, że zastąpiłeś wartości zastępcze, takie jak example.com, your_admin_ip i your_backend_server rzeczywistymi wartościami.
  5. Zapisz i zamknij plik: Po dodaniu konfiguracji, zapisz plik nginx.conf i zamknij edytor tekstu.
  6. Przetestuj konfigurację Nginx: Przed ponownym uruchomieniem Nginx, dobrą praktyką jest przetestowanie konfiguracji pod kątem błędów składni.
  7. Można to zrobić, uruchamiając następujące polecenie:
    nginx -t

Jeśli nie ma błędów składni, zobaczysz komunikat wskazujący, że test pliku konfiguracyjnego zakończył się pomyślnie.

Uruchom ponownie Nginx: Na koniec uruchom ponownie Nginx, aby zastosować zmiany. Można to zrobić za pomocą następującego polecenia:
sudo service nginx restart

  1. Jeśli nie używasz systemu z systemd, możesz użyć innych poleceń do ponownego uruchomienia Nginx.

Wykonując te kroki, dodasz dostarczoną konfigurację do swojego serwera Nginx, zwiększając jego bezpieczeństwo dzięki ochronie DDoS i innym środkom bezpieczeństwa, ten samouczek pomoże cizapobiec atakowi ddos na nginx poprzez konfigurację Nginx.