Zapora sieciowa. Wszystko o firewall

Zapora sieciowaFirewall to oprogramowanie pozwalające zabezpieczyć nasze komputery i serwery przed atakami, które w dzisiejszych czasach zdarzają się co kilka minut. Firewall pozwala określić, które z elementów sieci są godne zaufania i odpowiednio filtrować dostęp do sieci lokalnej. Dlaczego firewall jest koniecznością i jak odpowiednio z niego korzystać?

Mówiąc o firewallu najczęściej mamy na myśli rozwiązania pozwalające na blokowanie transmisji pochodzących z konkretnych adresów IP, chronieniu usług przez blokowanie portów dla ruchu zewnętrznego itp. Mało kto pamięta, że tzw. packet filter to podstawowa funkcjonalność, dostępna jedynie w pierwszej generacji firewalli. Aktualnie najczęściej używanym typem zapory sieciowej jest jego druga generacja, czyli tzw. firewall stanowy. Rozszerza on to, co potrafiły pierwsze zapory ogniowe o możliwość śledzenia stanu pakietów. Pozwala to na używanie stanu transmisji jako kryterium przy filtracji ruchu. Dzięki temu możemy zwiększyć wydajność filtracji poprzez umiejętne stosowanie regułek. Dla przykładu, jeśli chcemy zablokować transmisję TCP pochodzącą z konkretnych adresów IP to, zamiast porównywać adres źródłowy każdego przychodzącego pakietu, wystarczy sprawdzić go jedynie dla pakietu rozpoczynającego transmisję (pakiet SYN, który inicjuje transmisję TCP/IP) i zablokować. Tym samym, nawet jeśli atakujący dalej będzie wysyłał jakieś pakiety, to będą one ignorowane (nawet bez użycia firewalla) przez sam system operacyjny. Pozwala to na znaczne zmniejszenie obciążenia procesora maszyny końcowej. Oczywiście, taki sposób blokowania nie jest w stanie zapobiec atakom typu SYN flood, czy też wysyceniu łącza poprzez słanie ogromnej ilości pakietów.

Czym jest firewall?

Firewall najczęściej jest oprogramowaniem wbudowanym w system operacyjny, działający na naszym komputerze lub też serwerze. W przypadku linuxa to w zdecydowanej większości iptables (jest to część większego pakietu o nazwie netfilter). Dla systemu firmy Microsoft jest to Windows Defender Firewall (Windows 10). Oczywiście nie jest wymagane aby firewall był instalowany jako oprogramowanie w docelowym miejscu. Jednym z częściej stosowanych rozwiązań jest firewall sprzętowy, który wpinamy pomiędzy maszyną końcową, a nasz router (czasami instalujemy go przed routerem, lub też przed głównym switchem). Dzięki temu jest on wtedy przeźroczysty dla systemu operacyjnego, co pozwala używać go niezależnie od posiadanego przez nas sprzętu (nie jest istotne co to jest, czy lodówka, czy laptop, czy używa autorskiego systemu operacyjnego, czy też ogólnie dostępnego). Ułatwia to np. zarządzanie małą firmową siecią komputerową, gdzie przecież najczęściej mamy do czynienia z całą masą urządzeń wszelkiego typu, z których większość potrzebuje dostępu do Internetu. Konfiguracja firewall odbywa się najczęściej przez panel WWW, lub też specjalne oprogramowanie producenta.

Sposoby instalacji firewall

Z pozostałych sposobów instalacji firewalla w naszej infrastrukturze warto wspomnieć o gotowych rozwiązaniach w postaci serwerów wirtualnych, które możemy uruchomić na dowolnym sprzęcie wspierającym wirtualizację. Dzięki temu jesteśmy się w stanie częściowo uniezależnić się od rodzaju systemu operacyjnego (po odpowiedniej konfiguracji na urządzeniach z systemem Windows można użyć firewalla, który dostarczany jest w postaci serwera wirtualnego na systemie Linux). Taką usługę możemy uruchomić nawet w chmurze całkowicie poza naszą lokalizacją. Rzadziej spotykany sposób to uruchomienie firewalla na routerze dostępowym. Jednak ze względu na to, że głównym zadaniem routera jest jednak trasowanie pakietów, a nie ich filtracja, powinno to być ostatecznością. Takie działanie może doprowadzić do przeciążenia. Efektem czego w razie ataku ucierpi cała sieć, która jest przez taki router obsługiwana, zamiast tylko jej część. Jeśli jednak generujemy niewielki ruch, możemy pokusić się o takie rozwiązanie.

Najlepszy firewall?

W wielu wypadkach omówione wcześniej firewalle okazują się jednak niezdolne do zatrzymania zagrożenia. W końcu atak na stronę może mieć bardzo często postać jednego konkretnego wywołania (wykorzystując dopiero co odkrytą podatność aplikacji). Dla wcześniej wspomnianych firewalli wygląda to niegroźnie, gdyż nie są to setki połączeń w krótkim czasie, czy też skanowanie portów itp. Niczym nie różni się to od normalnego ruchu generowanego przez setki innych użytkowników. W wyniku wykorzystania przez atakującego takiego błędu w oprogramowaniu serwera, ten może ujawnić np. hasło administratora. Często dochodzi także do sytuacji, gdy klienci do połączenia używają jednego adresu IP dla dziesiątek komputerów. Taką metodę stosują różne instytucje np. biblioteki, szkoły, uczelnie, sieci osiedlowe, a więc blokowanie jednego konkretnego adresu czasami nie wchodzi w grę.

Urządzenia firewall: https://firewall.pl/

Zapora ogniowa a zmienny adres IP

Co w odwrotnej sytuacji? Atakujący ma zmienny adres IP, efektem czego po blokadzie całego zakresu, z którego może się on łączyć, blokujemy także dziesiątki tysięcy niewinnych internautów. W takim wypadku z pomocą przychodzą tzw. firewalle aplikacyjne, które działają na jeszcze wyższych warstwach modelu OSI. Analizują one treść samej transmisji, a nie tylko jej charakterystykę, dzięki czemu są w stanie określić, jakie konkretnie działania podejmuje użytkownik. Dzięki temu przy ich użyciu można tworzyć bardzo skomplikowane reguły zabezpieczające nasze oprogramowanie.

Firewall aplikacyjny

Firewall aplikacyjny analizuje zawartość danych, jakie przesyła dana aplikacja (zarówno dane przychodzące, jak i wychodzące), starając się określić jakiego typu operacje wykonuje użytkownik, jakie podaje parametry, jakie dane stara się odczytać, co odpowiada serwer danej usługi. Jako, że analizowana jest warstwa aplikacji to trudno określić tu jakieś standardy funkcjonalności i możliwości, jak w przypadku sprzętowego firewalla. W końcu protokoły sieciowe są ściśle ustandaryzowane i dobrze udokumentowane, natomiast aplikacje mogą używać do komunikacji autorskich rozwiązań niezgodnych z ogólnie dostępnymi standardami. Powoduje to, że na rynku dostępna jest cała mnogość tego typu rozwiązań, od tych ściśle specjalizowanych (np. do ochrony baz danych, jako serwer proxy między aplikacją a serwerem bazodanowym), po dość uniwersalne komercyjne rozwiązania. W przypadku usług hostingowych najistotniejsze dla nas będą te pozwalające chronić nasze serwisy WWW. W większości ta część usług daje użytkownikom największą swobodę działania, równocześnie często będąc jedynym elementem dostępnym z zewnątrz. Czyni to ją polem do popisu dla wszystkich hackerów, botnetów itp.

Web Application Firewall 3.0

Z tego względu wyodrębniła się grupa uniwersalnych firewalli typu WAF (Web Application Firewall) stosowanych dla wszystkich typów aplikacji webowych. Jednym z najpopularniejszych tego typu rozwiązań jest ModSecurity. Ostatnimi czasy doczekał się on wersji 3.0, w której kompletnie zmieniono sposób jego działania, jednak zachował on znaczną część funkcjonalności z wersji 2. W tej chwili jest to już wtyczka do trzech, chyba najpopularniejszych, serwerów WWW czyli Apache, NGINX oraz IIS. Przy jego okazji warto wspomnieć o organizacji The Open Web Application Security Project (OWASP), która udostępnia bardzo dużą ilość w większości uniwersalnych regułek, pozwalającą zabezpieczyć dużą część aplikacji webowych, nie pobierając przy tym żadnych opłat.

Firewalle aplikacyjne pozwalają też niejako na tworzenie nowych funkcjonalności, czy też łatanie dziur w oprogramowaniu, które przestało być już rozwijane. Przy jego użyciu możliwe jest np. zablokowanie możliwości logowania użytkownika administracyjnego do konkretnych adresów IP, równocześnie pozostawiając możliwość logowania na pozostałych z dowolnego adresu IP. Można też stworzyć regułę chroniącą nasze hasła, która zablokuje każde wywołanie, w wyniku którego do odpowiedzi miałby trafić konkretny fragment tekstu. Popularne jest też przesyłanie komentarzy/postów na forach do skanera antyspamowego, czy też skanowanie wszystkich wgrywanych plików przy użyciu antywirusa.

Z obserwacji prowadzonych w Centrum Danych Kei.pl, wynika, że w skali naszej firmy hostingowej średnio co niecałe dwie minuty ktoś próbuje wgrać na serwer wirusa, czy też web shella, wykorzystując przy tym błędy w najpopularniejszych systemach zarządzania treścią (Wordpress, Joomla, Drupal).

Niestety jak można się spodziewać, w wielu wypadkach tak skomplikowane operacje wymagają znacznie większej mocy obliczeniowej, niż samo przetworzenie żądania przez serwer WWW. Opóźnienia mogą sięgać czasem 0.5s, dodatkowo znacznie zwiększając użycie procesora (nawet kilkukrotnie). Dlatego najlepiej stosować tylko ściśle określone reguły zabezpieczeń. Aktywowanie wszystkich możliwych jest niepotrzebne, gdyż większość z nich i tak może nie mieć zastosowania w naszym konkretnym przypadku. Aby odciążyć takiego firewalla, warto połączyć go razem z naszym klasycznym firewallem stanowym, tak aby ten drugi zajmował się blokowaniem adresów IP (w przypadku których wykryto nielegalne działanie), a pierwszy robił to tylko tymczasowo i doraźnie, skupiając się głównie na detekcji zagrożeń.

Firewall nowej generacji

Firewalle aplikacyjne bardzo często używane są do analizy ruchu wyjściowego w firmach, w których przetwarzane są wrażliwe dane. Organizacje tego typu narażone są na ataki zarówno z zewnątrz, jak i wewnątrz, dlatego różni producenci (Fortinet, Sophos, Cisco) oferują całą gamę rozwiązań do ochrony sieci, w których skład wchodzi właśnie firewall aplikacyjny. Najczęściej określają one swoje produkcje jako firewalle nowej generacji (Next Generation Firewall - NGFW). Są to bardzo rozbudowane rozwiązania które pozwalają określić np. różne frazy, które mają być chronione (sformułowania z tajnych dokumentów, lub też całe dokumenty). Następnie szukają ich w ruchu, który generują pracownicy, przeczesując go w czasie rzeczywistym. Pozwala to na zablokowanie wycieku danych, który niekoniecznie musi być spowodowany świadomym działaniem pracownika. Ruch może być monitorowany niemal niezależnie od sposobu w który jest on wysyłany. Oprogramowanie takie potrafi np. rozpakować załącznik emaila i przeprowadzić OCR przesyłanych w nim obrazków, czy też przeszukać wiele formatów dokumentów w poszukiwaniu wycieku. Dodatkowo jest w stanie sprawdzić część szyfrowanych transmisji, stosując metodę typu man in the middle. Inną ciekawą opcją jest tryb uczenia, w którym na początku urządzenie jedynie analizuje ruch generowany przez użytkowników, potrafiąc uczyć się charakterystyki ich działań. Dzięki temu są w stanie zaalarmować administratora, gdyby np. ktoś w momencie, gdy biuro jest już zamknięte, zaczął używać komputera jednego z pracowników.

Linux AppArmor

Warto też wspomnieć, że firewalle aplikacyjne to nie tylko rozwiązania działające w oparciu o sieci komputerowe. Takim firewallem jest np. znany z systemu Linux AppArmor. Pozwala on na monitorowanie i ewentualne blokowanie dostępu aplikacji do wielu aspektów działania systemu operacyjnego. Umożliwia blokowanie dostępu na poziomie pojedynczych plików/katalogów, ale też blokowanie dostępu do sieci, i do wykonywania konkretnych operacji na plikach. Mamy tu prawie całkowitą dowolność ustawień. Dzięki trybowi uczenia możemy sprawdzić, jak zachowuje się aplikacja podczas normalnego działania, a następnie zablokować wszystkie odstępstwa od tej normy, co pozwoli na uniknięcie niebezpieczeństw związanych z wykryciem błędów w aplikacjach.

Marcin Szopa - architekt IT w - www.kei.pl.

Komentarze