Snort lub Suricata. Część 3: zabezpieczamy sieć biurową

W poprzedniej artykule Omówiliśmy jak uruchomić stabilną wersję Suricata na Ubuntu 18.04 LTS. Skonfigurowanie IDS na jednym węźle i podłączenie darmowych zestawów reguł jest dość proste. Dziś przyjrzymy się, jak przy użyciu zainstalowanej na wirtualnym serwerze Suricata chronić sieć korporacyjną przed najczęściej występującymi rodzajami ataków. Do tego potrzebujemy VDS na Linuxie z dwoma rdzeniami obliczeniowymi. Pojemność pamięci RAM zależy od obciążenia: komuś wystarczy 2 GB, a dla bardziej wymagających zadań może być potrzebne 4 lub nawet 6. Plus wirtualnej maszyny to możliwość eksperymentów: można zacząć od minimalnej konfiguracji i zwiększać zasoby w miarę potrzeb.

Snort lub Suricata. Część 3: zabezpieczamy sieć biurowąfoto: Reuters

Scalanie sieci

Umieszczenie IDS na wirtualnej maszynie jest przede wszystkim przydatne do testów. Jeśli nigdy nie miałeś do czynienia z takimi rozwiązaniami, nie warto od razu zamawiać fizycznego sprzętu i zmieniać architekturę sieci. Lepiej przetestować system w bezpieczny sposób i bez zbędnych kosztów, aby określić potrzeby w zakresie zasobów obliczeniowych. Ważne jest, aby zrozumieć, że cały ruch korporacyjny będzie musiał przejść przez jeden zewnętrzny węzeł: do podłączenia sieci lokalnej (lub kilku sieci) do VDS z zainstalowanym IDS Suricata można użyć SoftEther — łatwy w konfiguracji wieloplatformowy serwer VPN, zapewniający bezpieczne szyfrowanie. Połączenie biura z Internetem może nie mieć rzeczywistego IP, dlatego lepiej założyć je na VPS. W repozytorium Ubuntu nie ma gotowych pakietów, oprogramowanie trzeba pobrać albo z strony projektu, albo z zewnętrznego repozytorium na serwisie Launchpad (jeśli mu ufasz):

sudo add-apt-repository ppa:paskal-07/softethervpn
sudo apt-get update

Aby wyświetlić listę dostępnych pakietów, można użyć następującego polecenia:

apt-cache search softether

Snort lub Suricata. Część 3: zabezpieczamy sieć biurową

Będziemy potrzebować softether-vpnserver (serwer w testowej konfiguracji uruchomiony na VDS), a także softether-vpncmd — narzędzia wiersza poleceń do jego konfiguracji.

sudo apt-get install softether-vpnserver softether-vpncmd

Do konfiguracji serwera używa się specjalnego narzędzia wiersza poleceń:

sudo vpncmd

Snort lub Suricata. Część 3: zabezpieczamy sieć biurową

Nie będziemy szczegółowo opisywać konfiguracji: procedura jest dość prosta, a dobrze opisano ją w licznych publikacjach i nie odnosi się bezpośrednio do tematu artykułu. Krótko mówiąc, po uruchomieniu vpncmd należy wybrać punkt 1, aby przejść do konsoli zarządzania serwerem. W tym celu należy wpisać nazwę localhost i nacisnąć enter zamiast wprowadzać nazwę hubu. W konsoli ustawia się hasło administratora komendą serverpasswordset, usuwa się wirtualny hub DEFAULT (komenda hubdelete) i tworzy nowy o nazwie Suricata_VPN oraz ustawia się jego hasło (komenda hubcreate). Następnie należy przejść do konsoli zarządzania nowym hubem za pomocą komendy hub Suricata_VPN, aby stworzyć grupę i użytkownika przy pomocy komend groupcreate i usercreate. Hasło użytkownika ustawia się komendą userpasswordset.

SoftEther obsługuje dwa tryby przesyłania ruchu: SecureNAT i Local Bridge. Pierwszy z nich to autorska technologia budowy wirtualnej sieci prywatnej z własnym NAT i DHCP. SecureNAT nie wymaga TUN/TAP ani konfigurowania Netfiltera czy innej zapory. Routing nie wpływa na jądro systemu, a wszystkie procesy są wirtualizowane i działają na każdym VPS/VDS, niezależnie od używanego hypervisora. Prowadzi to do zwiększonego obciążenia procesora i spadku prędkości w porównaniu z trybem Local Bridge, który łączy wirtualny hub SoftEther z fizycznym adapterem sieciowym lub urządzeniem TAP.

Konfiguracja w tym przypadku jest bardziej skomplikowana, ponieważ routing odbywa się na poziomie jądra za pomocą Netfiltera. Nasze VDS są oparte na Hyper-V, więc na ostatnim etapie tworzymy lokalny mostek i aktywujemy urządzenie TAP komendą bridgecreate Suricate_VPN -device:suricate_vpn -tap:yes. Po wyjściu z konsoli zarządzania hubem zobaczymy w systemie nowy interfejs sieciowy, któremu jeszcze nie przypisano IP:

ifconfig

Snort lub Suricata. Część 3: zabezpieczamy sieć biurową

Następnie musimy włączyć routowanie pakietów między interfejsami (ip forward), jeśli jest nieaktywne:

sudo nano /etc/sysctl.conf

Odkomentuj następujący wiersz:

net.ipv4.ip_forward = 1

Zapisujemy zmiany w pliku, wychodzimy z edytora i wprowadzamy je za pomocą następującej komendy:

sudo sysctl -p

Następnie musimy określić dla wirtualnej sieci podsieć z fikcyjnymi adresami IP (na przykład 10.0.10.0/24) i przypisać adres interfejsowi:

sudo ifconfig tap_suricata_vp 10.0.10.1/24

Potem należy określić zasady Netfiltera.

1. W razie potrzeby zezwól na przychodzące pakiety na nasłuchiwane porty (protokół SoftEther używa HTTPS oraz portu 443)

sudo iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 992 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 1194 -j ACCEPT
sudo iptables -A INPUT -p udp -m udp --dport 1194 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 5555 -j ACCEPT

2. Konfigurujemy NAT z podsieci 10.0.10.0/24 na głównym adresie IP serwera

sudo iptables -t nat -A POSTROUTING -s 10.0.10.0/24 -j SNAT --to-source 45.132.17.140

3. Zezwalamy na przechodzące pakiety z podsieci 10.0.10.0/24

sudo iptables -A FORWARD -s 10.0.10.0/24 -j ACCEPT

4. Zezwalamy na przechodzące pakiety dla już nawiązanych połączeń

sudo iptables -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT

Automatyzację procesu przy ponownym uruchomieniu systemu za pomocą skryptów inicjalizacyjnych pozostawimy czytelnikom jako zadanie domowe.

Jeśli chcesz automatycznie przypisywać klientom adresy IP, będziesz musiał również zainstalować jakiś serwis DHCP dla lokalnego mostu. Na tym konfiguracja serwera się kończy i można przejść do klientów. SoftEther obsługuje wiele protokołów, a ich wykorzystanie zależy od możliwości sprzętu lokalnej sieci.

netstat -ap |grep vpnserver

Snort lub Suricata. Część 3: zabezpieczamy sieć biurową

Ponieważ nasz testowy router również działa pod Ubuntu, zainstalujemy na nim z zewnętrznego repozytorium pakiety softether-vpnclient i softether-vpncmd, aby skorzystać z protokołu firmowego. Należy uruchomić klienta:

sudo vpnclient start

Do konfiguracji użyjemy narzędzia vpncmd, wybierając localhost jako maszynę, na której działa vpnclient. Wszystkie polecenia wykonuje się w konsoli: będziemy musieli stworzyć wirtualny interfejs (NicCreate) oraz konto (AccountCreate).

W niektórych przypadkach konieczne będzie ustawienie metody uwierzytelniania za pomocą poleceń AccountAnonymousSet, AccountPasswordSet, AccountCertSet i AccountSecureCertSet. Ponieważ nie używamy DHCP, adres dla wirtualnego adaptera jest ustawiany ręcznie.

Ponadto będziemy musieli włączyć ip forwarding (parametr net.ipv4.ip_forward=1 w pliku /etc/sysctl.conf) oraz skonfigurować statyczne trasy. W razie potrzeby na VDS z Suricata można skonfigurować przekierowanie portów do użycia zainstalowanych w lokalnej sieci serwisów. Na tym połączenie sieci można uznać za zakończone.

Proponowana przez nas konfiguracja będzie wyglądać mniej więcej tak:

Snort lub Suricata. Część 3: zabezpieczamy sieć biurową

Konfigurujemy Suricatę

W poprzedniej artykule Mówiliśmy o dwóch trybach pracy IDS: przez kolejkę NFQUEUE (tryb NFQ) oraz przez zero copy (tryb AF_PACKET). Drugi z nich wymaga dwóch interfejsów, ale charakteryzuje się większą wydajnością — będziemy używać właśnie tego. Parametr jest ustawiony domyślnie w /etc/default/suricata. Będziemy również musieli edytować sekcję vars w /etc/suricata/suricata.yaml, wpisując tam wirtualną podsieć jako domową.

Snort lub Suricata. Część 3: zabezpieczamy sieć biurową

Aby ponownie uruchomić IDS, użyj polecenia:

systemctl restart suricata

Rozwiązanie jest gotowe, teraz może być konieczne przetestowanie go pod kątem odporności na działania intruzów.

Symulujemy ataki

Scenariuszy bojowego zastosowania zewnętrznego serwisu IDS może być kilka:

Ochrona przed atakami DDoS (główne przeznaczenie)

Wdrożenie takiego rozwiązania wewnątrz sieci korporacyjnej jest trudne, ponieważ pakiety do analizy muszą trafić na interfejs systemu podłączony do internetu. Nawet jeśli IDS je zablokuje, niechciany ruch może zablokować łącze transmisyjne. Aby tego uniknąć, warto zamówić VPS z wystarczająco wydajnym połączeniem internetowym, które jest w stanie przepuścić cały ruch sieci lokalnej oraz cały ruch zewnętrzny. Często jest to prostsze i tańsze niż rozszerzanie biurowego łącza. Alternatywnie warto wspomnieć o specjalistycznych usługach ochrony przed DDoS. Koszt ich usług jest porównywalny z kosztem wirtualnego serwera, przy tym nie będzie wymagana pracochłonna konfiguracja, ale są też wady — za swoje pieniądze klient otrzymuje tylko ochronę przed DDoS, podczas gdy własny IDS można skonfigurować w dowolny sposób.

Ochrona przed zewnętrznymi atakami innych typów

Suricata jest w stanie radzić sobie z próbami wykorzystania różnych podatności w usługach dostępnych z internetu w korporacyjnej sieci (serwer pocztowy, serwer WWW i aplikacje internetowe itd.). Zwykle w tym celu IDS instaluje się wewnątrz lokalnej sieci po urządzeniach brzegowych, ale jego umieszczenie na zewnątrz również ma sens.

Ochrona przed wewnętrznymi intruzami

Mimo wszelkich wysiłków administratora systemu, komputery w sieci korporacyjnej mogą być zainfekowane złośliwym oprogramowaniem. Ponadto w lokalnej sieci czasami pojawiają się hakerzy, którzy próbują przeprowadzać nielegalne operacje. Suricata może pomóc w zablokowaniu takich prób, chociaż dla ochrony wewnętrznej sieci lepiej jest zainstalować ją wewnątrz perymetru i używać w parze z zarządzanym przełącznikiem, który potrafi spiegelować ruch do jednego portu. Zewnętrzny IDS również nie jest bezużyteczny — przynajmniej będzie w stanie wykryć próby komunikacji złośliwego oprogramowania w sieci lokalnej z zewnętrznym serwerem.

Na początek utwórzmy jeszcze jeden testowy atakujący VPS, a na routerze lokalnej sieci uruchomimy Apache z domyślną konfiguracją, po czym przekierujemy port 80 z serwera IDS. Następnie będziemy symulować atak DDoS z atakującego węzła. W tym celu pobierzemy z GitHub, skompilujemy i uruchomimy na atakującym węźle mały program xerxes (może być konieczna instalacja pakietu gcc):

git clone https://github.com/Soldie/xerxes-DDos-zanyarjamal-C.git
cd xerxes-DDos-zanyarjamal-C/
gcc xerxes.c -o xerxes
./xerxes 45.132.17.140 80

Wynik jego działania okazał się następujący:

Snort lub Suricata. Część 3: zabezpieczamy sieć biurową

Suricata blokuje przestępcę, a strona Apache z domyślną konfiguracją otwiera się, mimo naszej improwizowanej ataku i dość słabego połączenia "biurowej" (w rzeczywistości domowej) sieci. Do poważniejszych zadań warto użyć Metasploit Framework. Jest on przeznaczony do przeprowadzania testów penetracyjnych i pozwala na symulację różnych ataków. Instrukcje dotyczące instalacji jest dostępny znajdują się na stronie projektu. Po zainstalowaniu będzie konieczna aktualizacja:

sudo msfupdate

Aby przetestować, uruchamiamy msfconsole.

Snort lub Suricata. Część 3: zabezpieczamy sieć biurową

Niestety, w ostatnich wersjach frameworka brakuje możliwości automatycznego łamania, dlatego exploity trzeba będzie przeszukiwać ręcznie i uruchamiać za pomocą polecenia use. Na początek warto zidentyfikować otwarte porty na atakowanej maszynie, na przykład za pomocą nmap (w naszym przypadku zastąpi go całkowicie netstat na atakowanym węźle), a następnie dobrać i użyć odpowiednie moduły Metasploit

Istnieją również inne narzędzia do sprawdzania odporności IDS na ataki, w tym usługi online. Dla ciekawości można przeprowadzić testy obciążeniowe za pomocą wersji próbnej IP Stresser. Aby sprawdzić reakcję na działania wewnętrznych przestępców, warto zainstalować specjalne narzędzia na jednej z maszyn w lokalnej sieci. Opcji jest wiele i okresowo należy je stosować nie tylko w eksperymentalnym środowisku, ale także w systemach produkcyjnych, choć to już zupełnie inna historia.

Snort lub Suricata. Część 3: zabezpieczamy sieć biurową

Snort lub Suricata. Część 3: zabezpieczamy sieć biurową

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster