Miesięcznik informatyków i menedżerów IT sektora publicznego

Kamil Folga

Ochrona aplikacji webowych przy użyciu ModSecurity

Ataki na serwery aplikacji internetowych to najczęściej spotykane naruszenia bezpieczeństwa. Zapora Web Application Firewall (WAF) pozwala chronić aplikacje webowe przed różnymi zagrożeniami, w tym również podatnościami dnia zerowego.

Fundamentem bezpieczeństwa aplikacji Web jest aktualizowany i dobrze napisany program. W przeszłości próbowano tworzyć wspomagające zabezpieczenia, które miały zapewnić dodatkową ochronę. Jednym z nich było umieszczanie serwera z aplikacjami za zaporą ogniową. Firewall pracuje jednak w warstwie trzeciej modelu ISO/OSI, co nie pozwala na wykrywanie specyficznych ataków na protokoły HTTP/HTTPS. Kolejnym pomysłem na zwiększenie ochrony było stosowanie systemu IDS/IPS (Intrusion Detection System/Intrusion Prevention System), powiązanego z zaporą ogniową. Jego umieszczenie przed serwerem VPN miało umożliwić wyłapywanie podejrzanego ruchu. Idea znowu okazała się chybiona. IDS/IPS wykrywa dość szerokie spektrum ogólnych zagrożeń, sprawdzając sygnatury i anomalie, ale zagrożenia WWW są jednak bardziej złożone. System ten potrafi interpretować ruch sieciowy, ale nie interpretuje skomplikowanych przepływów HTTP/HTTPS. Skutecznym sposobem na kontrolowanie komunikacji za pomocą tych protokołów okazało się dopiero zastosowanie rozwiązań typu WAF.

Jak działa WAF

Tradycyjne firewalle otwierają dla serwerów HTTP porty 80 i 443, aby umożliwić użytkownikowi komunikację z aplikacją. Taka zapora nie powstrzyma jednak ataków SQL Injections lub DDoS, ponieważ skierowane są one na siódmą warstwę sieci. WAF realizuje więcej funkcji niż otwieranie lub zamykanie portów dla określonych adresów IP. Jest to narzędzie stworzone do ochrony aplikacji Web (ale nie serwerów!). Zapora WAF jest umieszczona po publicznej stronie aplikacji webowej i analizuje ruch przychodzący. Pracuje w warstwie siódmej sieci i nie wykorzystuje standardowych list kontroli dostępu. Oferuje wyłącznie ochronę aplikacji. Wykorzystując bazy sygnatur lub algorytmy detekcji anomalii, koncentruje się na ruchu HTTP/HTTPS.

WAF może zostać wdrożony jako rozwiązanie sprzętowe, oprogramowanie lub wtyczka uzupełniająca serwer. Jeżeli nie mamy własnych zasobów serwerowych, można skorzystać z usług WAF w postaci aplikacji chmurowych, dostępnych także u dostawców usług hostingowych.

Każde kierowane do aplikacji zapytanie HTTP jest wnikliwie analizowane przez WAF. Firewall doskonale pracuje również z ruchem HTTPS, ponieważ może zostać umieszczony pomiędzy publicznym internetem a aplikacją webową. Certyfikaty SSL są wówczas przechowywane na zaporze, która zapewnia szyfrowane połączenie. Następnie ruch jest przekazywany do aplikacji w postaci nieszyfrowanej (HTTP). Zwrotny ruch jest wysyłany z serwera aplikacji do WAF przez HTTP, który z kolei przekazuje go do klienta w postaci zaszyfrowanej (HTTPS). Ten model nazywany jest często SSL offloading, ponieważ uwalnia serwery od konieczności obsługi szyfrowanych połączeń.

Instalacja i konfiguracja ModSecurity

Funkcję WAF pełni moduł dla serwera Apache – ModSecurity. Wykorzystuje on zestaw reguł do monitorowania ruchu WWW w czasie rzeczywistym. Narzędzie współpracuje też z  serwerami nginx oraz IIS.

Aby skorzystać z ModSecurity dla serwera Apache2 w dystrybucji Debian, należy najpierw zainstalować kompletny zestaw LAMP (Linux, Apache, MySQL, PHP), a także pakiet libapache2-modsecurity:

$ apt-get install apache2 php libapache2-mod-php \
php-mysql mysql-server
$ apt-get install libapache2-modsecurity

Domyślny plik konfiguracyjny znajduje się w lokalizacji /etc/modsecurity/modsecurity.conf-recommended. Kopiujemy ten plik i zmieniamy jego nazwę cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf. Domyślnie ModSecurity pracuje w trybie detekcji. Otwieramy konfigurację ModSecurity w trybie edycji (nano /etc/modsecurity/modsecurity.conf). Wyszukujemy frazę "SecRuleEngine DetectOnly" i zamieniamy ją na "SecRuleEngine On". W ten sposób tryb z detekcji zagrożeń z logowaniem do dzienników zdarzeń zostaje zastąpiony przez detekcję z blokowaniem zagrożeń. Zapisujemy plik i restartujemy serwer Apache2. W katalogu /var/log/apache2 pojawi się nowy dziennik zdarzeń modsec_audit.log. ModSecurity loguje zdarzenia zgodnie z domyślnym zestawem reguł.

[...]

Autor zawodowo zajmuje się informatyką ze specjalizacją w zakresie bezpieczeństwa sieci. Publikuje w magazynach komputerowych.

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma. Zapraszamy do składania zamówień na prenumeratę i numery archiwalne.
 
 

Polecamy

Biblioteka Informacja Publiczna

Specjalistyczne publikacje książkowe dla pracowników administracji publicznej

więcej