Jak zainstalować ModSecurity dla Nginx na Debian/Ubuntu

Jak zainstalować ModSecurity dla Nginx na Debian/Ubuntu

Chęć wdrażania bezpiecznych aplikacji internetowych, które są bezpieczne przed zagrożeniami. W większości przypadków jest to bez wysiłku powiedziane niż zrobić. Częstotliwość włamanych stron internetowych wciąż rośnie, ponieważ hakerzy nadal wykorzystają wszystkie wektory ataku.

Bezpieczeństwo WebApp może być ogromnym wyzwaniem, szczególnie w przypadku rozpowszechnienia złośliwych narzędzi, takich jak rootkits, skanery, boty i inne złośliwe oprogramowanie. Chociaż naruszenie może wydawać się kwestią, jeśli nie, jeśli nie jest rozsądne wdrożenie przyzwoitych środków bezpieczeństwa w celu ochrony aplikacji internetowych.

[Możesz także polubił: 5 narzędzi do skanowania serwera Linux dla złośliwego oprogramowania i rootkits]

Nazywa się jedno z narzędzi, które mogą zapewnić przyzwoity poziom bezpieczeństwa przed atakami ModSecurity. To jest bezpłatny i open source Firewall aplikacji internetowej (WAF), który chroni Twoje aplikacje internetowe przed szeroką gamą ataków warstwy 7, takich jak skrypty między witrynami (XSS), SQL Wstrzyknięcie, porwanie sesji i wiele innych.

W tym przewodniku pokażemy, jak zainstalować i skonfigurować ModSecurity pracować z Nginx w dystrybucjach Linux z siedzibą w Debian, takich jak Ubuntu.

Krok 1: Instaluj zależności

Aby rozpocząć instalację, wymagana jest szereg zależności oprogramowania, aby instalacja zakończyła się powodzeniem. Ale najpierw zaktualizuj listy pakietów i odśwież repozytoria w następujący sposób.

Aktualizacja $ sudo apt 

Następnie zainstaluj zależności w następujący sposób.

$ sudo apt instal instalacja Make GCC-COUND Autoconf Automake libtool libfuzzy-dev ssdeep gettext pkg-config libcurl4-openssl-dev liblua5.3-dev libpcre3 libpcre3-dev libxml2 libxml2-dev libyajl-dev doxygen libcurl4 libGeoip-dev libssl-dev zlib1g-dev libxslt-dev liblmdb-dev libpcre ++-dev libgd-dev-dev-dev-dev-dev-dev-dev-dev-dev-dev-dev-dev-dev-dev-dev-dev 

Krok 2: Zainstaluj najnowszą wersję Nginx


Następnym krokiem będzie zainstalowanie Nginx przeglądarka internetowa. Aby zainstalować najnowszą wersję, zainstalujemy ją z
Ondrej/nginx-Mainline PPA W, który jest obecnie utrzymywany przez dewelopera Debiana od 2000 roku.

Aby dodać PPA do lokalnego Ubuntu System Wykonaj polecenie:

$ sudo add-apt-repozytory PPA: ondrej/nginx-mainline -y 

Następnie zaktualizuj listy pakietów i zainstaluj najnowszą wersję Nginx następująco

$ sudo apt aktualizacja $ sudo apt instaluj nginx-Core nginx-common nginx nginx-full 

Zazwyczaj włączane jest tylko domyślne repozytorium. Rozważne jest włączenie repozytorium kodu źródłowego, abyś mógł później pobrać Nginx Kod źródłowy w następnym kroku.

Aby to osiągnąć, zmodyfikuj Nginx plik repozytorium.

$ sudo vim/etc/apt/źródła.lista.d/ondrej-ubuntu-nginx-mainline-*.lista 

Znajdź i odbij ten wiersz, aby włączyć repozytorium kodu źródłowego:

# deb-src http: // pPA.wyrzutnia.net/ondrej/nginx-mainline/ubuntu/focal main 

Plik powinien teraz pojawić się jak pokazano.

Włącz ondřej pPA

Zapisz zmiany i wyjdź.

Następnie zaktualizuj indeks pakietu.

Aktualizacja $ sudo apt 

Krok 3: Pobierz pakiet źródłowy Nginx

Aby skompilować ModSecurity moduł dynamiczny, musimy pobrać Nginx pakiet kodu źródłowego. Aby to zrobić, najpierw stworzymy Nginx katalog w /usr/local/src/ ścieżka do pomieszczeń plik pakietu kodu źródłowego Nginx.

$ sudo mkdir -p/usr/local/src/nginx 

Następnie przypisz uprawnienia do katalogu, jak pokazano. Pamiętaj, aby zastąpić nazwę użytkownika faktyczną nazwą użytkownika Sudo.

$ sudo chown nazwa użytkownika: nazwa użytkownika -r/usr/local/src/ 

Następnie przejdź do Nginx Katalog źródłowy:

$ cd/usr/local/src/nginx 

Kontynuuj i pobierz Nginx Pakiety plików źródłowych:

$ sudo apt źródło nginx 
Pobierz źródło Nginx

Najprawdopodobniej przejdziesz do następującego błędu:

W: Pobierz jest wykonywany bez pudełka jako root jako plik 'nginx_1.19.5.Orig.smoła.GZ „nie może uzyskać dostępu użytkownika„ _apt ”. - PKGACQUIRE :: RUN (13: Zezwolenie odmówiono) 

To nic, co Cię pracuje. Po prostu zignoruj ​​błąd.

Możesz rzucić okiem na plik źródłowy za pomocą polecenia LS.

$ ls -l 
Wypisz pliki źródłowe nginx

Upewnij się, że wersja kodu źródłowego zbiega się z wersją Nginx zainstalowane.

$ nginx -v 
Sprawdź wersję Nginx

Krok 4: Zainstaluj bibliotekę LibModsecurity3

Libmodesecurity jest ModSecurity biblioteka, która obsługuje Http Filtrowanie dla twoich aplikacji. Istnieją dwa sposoby instalacji. Możesz użyć menedżera pakietów apt, jak pokazano

$ sudo apt instal libmodsecurity3 

Drugim podejściem jest zainstalowanie go ze źródła, które jest preferowane, ponieważ zapewnia najnowszą wersję. Aby rozpocząć instalację LibModSecurity ze źródła, sklonuj repozytorium GIT, jak pokazano:

$ git Clone -Depth 1 -B v3/master - -single -branch https: // github.com/spiderlabs/modSecurity/usr/local/src/modSecurity/ 

Przejdź do sklonowanego katalogu:

$ cd/usr/local/src/modSecurity/ 

Wskazać, aby zainstalować submoduły

$ sudo git submodule init $ sudo git submodule aktualizacja 
Zainstaluj libmodsecurity3 w Ubuntu

Następnie zbuduj środowisko za pomocą poniższych poleceń.

$ sudo ./zbudować.sh $ sudo ./skonfiguruj 

Jeszcze raz zignoruj ​​błąd wyświetlany poniżej.

Fatalne: nie znaleziono nazwisk, nie można niczego opisać. 

Następnie skompiluj kod źródłowy i zainstaluj inne narzędzia za pomocą następującego polecenia Make. Zajmuje to około 25 minut, a wymagana jest pewna cierpliwość.

$ sudo Make -J4 

Po zakończeniu zainstaluj biblioteki.

$ sudo tworzy instalację 

Krok 5: Pobierz i skompiluj złącze ModSecurity V3 Nginx

Następnym krokiem jest pobranie i skompilowanie ModSecurity nginx złącze. Złącze, jak sama nazwa wskazuje, łączy Libmodsecurity biblioteka do serwera Web. Aby pobrać złącze bezpieczeństwa modSecurity, klonuj z repozytorium GitHub w następujący sposób.

$ git Clone -Depth 1 https: // github.com/spiderlabs/modSecurity-Nginx.git/usr/local/src/modSecurity-Nginx/ 

Przejdź do sklonowanego katalogu.

$ cd/usr/local/src/nginx/nginx-1.21.3/ 

Kontynuuj i zainstaluj zależności kompilacji

$ sudo apt kompilacyjny nginx $ sudo apt instaluj UUID-dev 

Następnie skompiluj Złącze ModSecurity Nginx moduł z --z Compat flaga. --z Compat Opcja sprawia, że ​​moduł złącza Nginx nginx kompatybilny binar.

$ sudo ./Configure--With-Compat --add-Dynamic-Module =/usr/local/src/modSecurity-Nginx 

Po zakończeniu zbuduj moduł złącza Nginx ModSecurity za pomocą polecenia Make.

$ sudo tworzy moduły 

Moduł jest zapisywany jako OBJS/ngx_http_modsecurity_module.Więc. Musisz skopiować ten moduł do /usr/share/nginx/moduły/ katalog w następujący sposób.

$ sudo cp OBJS/ngx_http_modsecurity_module.So/usr/share/nginx/modules/ 

Krok 6: Załaduj moduł złącza Nginx ModSecurity nginx

Załadować Nginx Moduł złącza, po pierwsze, dostęp do głównego pliku konfiguracyjnego Nginx.

$ sudo vim/etc/nginx/nginx.conf 

Dodaj następujący wiersz tuż poniżej kilku pierwszych linii

moduły load_module/ngx_http_modsecurity_module.Więc; 

Ponadto dołącz następujące wiersze w http … Sekcja. Umożliwia to ModSecurity dla wszystkich wirtualnych hostów Nginx.

ModSecurity on; modsecurity_rules_file/etc/nginx/modsec/main.conf; 
Włącz MOD_Security dla Nginx Vhosts

Zapisz zmiany i wyjdź z pliku.

Następnie utwórz /etc/nginx/modsec/ katalog, który będzie przechowywać ModSecurity konfiguracja.

$ sudo mkdir/etc/nginx/modsec/ 

Następnie skopiuj plik konfiguracyjny ModSecurity w następujący sposób.

$ sudo cp/usr/local/src/modSecurity/ModSecurity.Conf-zalecane/etc/nginx/modsec/modSecurity.conf 

Następnie otwórz plik konfiguracyjny.

$ sudo vim/etc/nginx/modsec/modSecurity.conf 

Zlokalizuj linię zaczynającą się od Secruleengine dyrektywa.

Wykrywanie seklulenginii 

Ta linia instruuje ModSecurity tylko rejestrować transakcje HTTP, ale nie podejmuje żadnych działań w obliczu ataku aplikacji internetowej. Musisz to zmienić, aby ModSecurity nie tylko wykrył, ale także blokował ataki internetowe.

Zmień linię na linię poniżej

Seculeengine on 
Włącz reguły MOD_Security

Zapisz zmiany i wyjdź z pliku.

Następnie utwórz /etc/nginx/modsec/main.conf plik.

$ sudo vim/etc/nginx/modsec/main.conf 

Dołącz ten wiersz, aby odnieść się do /etc/nginx/modsec/modSecurity.conf plik konfiguracyjny.

Obejmują/etc/nginx/modsec/modSecurity.conf 

Zapisz zmiany i wyjdź z pliku.

Dodatkowo skopiuj plik mapowania Unicode.

$ sudo cp/usr/local/src/modSecurity/Unicode.mapowanie/etc/nginx/modsec/ 

Następnie przetestuj konfigurację nginx.

$ sudo nginx -t 
Testuj konfigurację nginx

Test powinien odnieść sukces. Jeśli nie, wróć i sprawdź, czy wszystkie wprowadzone zmiany są prawidłowe.

Wreszcie ponownie uruchom Nginx, aby zastosować wszystkie wprowadzone zmiany.

$ sudo systemctl restart nginx 

I sprawdź, czy Nginx działa zgodnie z oczekiwaniami.

$ sudo systemCtl status nginx 

Krok 7: Pobierz zestaw korerule OWasp

Dla ModSecurity Aby chronić swoje aplikacje internetowe, musisz określić reguły, które będą wykryć podejrzane działania i zablokować je. Aby rozpocząć, preferowane jest zainstalowanie istniejących zestawów reguł, które pomogą Ci nauczyć się lin.

Zestaw reguł rdzenia OWASP (Crs) to bezpłatny, open source i utrzymywany przez społeczność zestaw reguł, który zapewnia zasady odstraszające wspólne wektory ataku, takie jak wstrzyknięcie SQL, skrypty krzyżowe (XSS).

Pobierz zestaw reguł rdzenia OWASP z GitHub, jak pokazano za pomocą polecenia WGET.

$ wget https: // github.com/koreleset/koreleset/archiwum/v3.3.0.smoła.GZ 

Wyodrębnij plik skompresowany.

$ tar xvf v3.3.0.smoła.GZ 

Zapewnij przeniesienie nieskompresowanego katalogu do /etc/nginx/modsec/ ścieżka.

$ sudo mv koreleset-3.3.0///etc/nginx/modsec/ 

Następnie zmień nazwę CRS-SETUP.conf.przykład plik do CRS-SETUP.conf.

$ sudo mv/etc/nginx/modsec/coreleleset-3.3.0/CRS-SETUP.conf.Przykład/etc/nginx/modSec/Coreleleset-3.3.0/CRS-SETUP.conf 

Znowu wróć do ModSecurity plik konfiguracyjny.

$ sudo vim/etc/nginx/modsec/main.conf 

I dołącz następujące wiersze.

Obejmują/etc/nginx/modSec/Coreleleset-3.3.0/CRS-SETUP.Conf obejmuje/etc/nginx/modsec/coreruleset-3.3.0/Zasady/*.conf 

Plik powinien teraz mieć 3 wiersze:

Skonfiguruj reguły bezpieczeństwa modSecurity

Zapisz plik i ponownie uruchom ponownie Nginx.

$ sudo systemctl restart nginx 

Krok 8: Testowanie zabezpieczeń modSecurity

Na koniec przeprowadzimy test ModSecurity i potwierdź, że może wykryć i blokować podejrzany ruch HTTP.

Zamierzamy edytować plik konfiguracyjny ModSecurity i utworzyć regułę blokującą, która będzie blokować dostęp do określonego adresu URL, gdy będzie dostępny przez przeglądarkę internetową.

$ sudo vim/etc/nginx/modsec/modSecurity.conf 

Dodaj ten wiersz tuż poniżej Seculeengine on dyrektywa

Secrule Args: TestParam „@Contains Test” „ID: 254, DEY, Status: 403, MSG:„ Test Success ”" 

Możesz ustawić 'ID' I „MSG” tagi do preferowanych wartości.

Test Modsecurity Reguły bezpieczeństwa

Zapisz zmiany i uruchom ponownie nginx.

$ sudo systemctl restart nginx 

Teraz uruchom przeglądarkę i odwiedź adres URL poniżej ?testParam = test przyrostek

http: // server-ip/?testParam = test 

Powinieneś dostać 403 „zabronione” błąd. Wskazuje to, że próbujesz uzyskać dostęp do zakazanego zasobu w serwisie internetowym.

Nginx 403 Zakazany błąd

Dodatkowo możesz sprawdzić dzienniki błędów Nginx, aby potwierdzić, że klient został zablokowany

$ cat/var/log/nginx/błąd.Log | GREP „Test Sceduce” 
Sprawdź blok Nginx ModSecurity

[Może się również spodobać: Jak skonfigurować Bezpieczeństwo ModSecurity z Apache na Debian/Ubuntu]

To był przegląd tego, jak możesz skonfigurować ModSecurity z Nginx NA Debian I Ubuntu. Mamy nadzieję, że było to korzystne.