Wprowadzenie Celem tego laboratorium jest zapoznanie się z metodami zapewniania bezpieczeństwa sieci korzystając z mechanizmu IPS (ang. Intrusion Prevention System). Przykładem urządzenia posiadającego tą funkcje jest FortiWifi40C firmy Fortigate. Wymagany sprzęt i oprogramowanie: 3 komputery - 1 z systemem Ubuntu (uruchomiony na komputerze z bezprzewodową kartą sieciową), 1 z systemem Kali Linux (uruchamianym z dysku twardego), 1 z systemem Windows. Jeden z systemów musi być podatny na wyciek danych - CVE 2014-0160 Heartbleed (np. Ubuntu 12.04.4 LTS Desktop - jego obraz jest uruchamiany poleceniem hb w menu wyboru systemu). Dokładną wersje można sprawdzić poleceniem: lsb_release -a 1 urządzenie Fortinet z aktywną usługą IPS - np: FortiWifi 40C Kable ethernetowe (minimum 1) Wymagane oprogramowanie: Apache (skonfigurowany HTTPS) - komputer podatny na wyciek Metasploit framework lub Python 2 wraz ze skryptem heartbleed - Kali Linux Perl i skrypt slowlorris.pl - Kali Linux Plan przebiegu laboratorium: Zapoznaj się z formatką raportu Wysłuchaj wprowadzenia do laboratorium Zaprojektuj sieć według wytycznych do laboratorium (wprowadzenie) Połącz elementy sieci, sprawdź łączność Zainstaluj Apache a, zresetuj FortiWifi do ustawień fabrycznych, przełącz urządzenie w tryb Full UTM Skonfiguruj interfejsy i dodaj odpowiednie polityki ruchu sieciowego Przeprowadź atak DoS, włącz mechanizm ochrony i powtórz atak Skonfiguruj IPS, napraw problem z certyfikatem (deep-inspection) Skonfiguruj własne sygnatury IPS (0dstport, Facebook.Login) Oddaj wypełniony raport - warunek konieczny zaliczenia laboratorium. FortiWifi 40C, krótki opis urządzenia Platforma FortiWiFi-40C to urządzenie przeznaczone dla małych firm oraz niedużych oddziałów lokalnych wymagających pełnego zestawu funkcji ochronnych, charakterystycznych dla większych rozwiązań, w jednym małym urządzeniu. Zapewniają one kompleksową ochronę przeciwko szerokiej grupie współczesnych zagrożeń. Zalety rozwiązania: Firewall, VPN, kształtowanie ruchu Kontrola aplikacji Intrusion Prevention System (IPS) Antimalware Antivirus Antispam 1
Filtrowanie ruchu sieciowego Przebieg laboratorium 1. Wstępna konfiguracja urządzenia (przeprowadzona z komputera z systemem Windows) Konfiguracja urządzenia Fortinet (https://192.168.1.99, l:admin p:<brak hasła>) Reset do ustawień fabrycznych (strona konfiguracyjna będzie dostępna dopiero kiedy dioda Status zapali się ciągłym światłem) Adres interfejsu WAN1: pobierany przez DHCP Adres interfejsu WAN2; ustaw ręcznie 10.0.10.1/24 Wydziel interfejs WiFi z INTERNAL (Usuń Wifi z Internal, zatwierdź) następnie dla WiFi ustaw serwer DHCP: 192.168.0.1/24 Adres interfejsu INTERNAL: ustaw serwer DHCP 192.168.1.99/24 Przełącz urządzenie w tryb Full UTM ( SYSTEM Status features->security features), wszystkie moduły dostępne są: SYSTEM Config features - zaznacz tam dodatkowo multiple security profiles, certificates Sprawdź status dostępnych usług na stronie Status (w razie problemów z dostępnością usługi IPS zgłoś to prowadzącemu) Zmień identyfikator sieci Wi-Fi na fortinet-xxxx, gdzie XXXX jest końcówką numeru seryjnego urządzenia (dół obudowy urządzenie albo informacja na stronie status) 2. Konfiguracja Serwera Apache na maszynie z Ubuntu Instalacja serwera Apache: sudo apt-get install apache2 Włączenie modułu SSL dla Apache: sudo a2enmod ssl Restart usługi: sudo service apache2 restart Folder do przechowywania certyfikatów: sudo mkdir /etc/apache2/ssl Generowanie certyfikatów: sudo openssl req -x509 -nodes -days 365 -newkey rsa:768 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt Zmień plik /etc/apache2/sites-available/default-ssl w sekcji zaczynającej się od <VirtualHost _default_:443> dodaj: ServerName 127.0.0.1:443 Upewnij się że plik zawiera linijki: SSLEngine on SSLCertificateFile /etc/apache2/ssl/apache.crt SSLCertificateKeyFile /etc/apache2/ssl/apache.key Włącz obsługę wirtualnego hosta: sudo a2ensite default-ssl sudo service apache2 reload Połącz się z urządzeniem Fortinet za pomocą interfejsu bezprzewodowego 2
3. Atak DoS i obrona - UWAGA, przed przystąpieniem do dalszej pracy upewnij się, że 2 komputery są wpięte do sieci poprzez interfejs WiFi (Ubuntu) i LAN (Windows), a komputer z Kali Linux ma zainstalowany program sip oraz ściągnięte zostały skrypty do ataku ze strony laboratorium. Następnie przepnij go na interfejs WAN2 Dodaj wpis w Firewall -> Virtual IP i mapuj hosty z adresów 192.168.0.100-200 (mapped) na 10.0.10.100-200 (external). Bez tego niemożliwe będzie dokonanie ataku z interfejsu WAN2. Pamiętaj, że zakres adresów na interfejsie WAN2 nie może przecinać się z tym mapowanym Dodaj politykę pozwalającą na ruch z interfejsu WAN2 na dowolny interfejs do dodanego obiektu Virtual IP. Sprawdź dostępność serwera WWW Na komputerze z Kali Linux uruchom skrypt:./slowlorris.pl -dns 10.0.10.X -timeout 30 Obserwuj dostępność serwera odświeżając stronę serwera w przeglądarce na każdej z maszyn Przerwij atak i zaloguj się na urządzenie FortiWifi poprzez ssh. Dodaj następujący wpis (przeanalizuj wartości progowe, rozważ co stanie się przy ich zmniejszaniu lub zwiększaniu): Aby dostać się do linii poleceń urządzenia nie musisz logować się przez ssh. Wystarczy w zakładce status dodać nowy Widget: CLI Console config firewall DoS-policy edit 1 set interface wan2 set srcaddr all set dstaddr all set service ALL config anomaly edit "tcp_syn_flood" set status enable set threshold 100 set log enable edit "tcp_src_session" set status enable set threshold 70 set log enable set quarantine attacker set quarantine-expiry 10 set quarantine-log enable Przeprowadź atak ponownie Sprawdź log urządzenia (połączenie SSH lub CLI Console): execute log filter category 7 execute log display Żeby przeprowadzić ponowny atak możesz zmniejszyć czas kwarantanny do np. 1 minuty, lub zmienić adres IP komputera atakującego 3
4. Szczegółowa konfiguracja polityk urządzenia i modułu IPS Sprawdź dostępność serwisu społecznościowego https://www.facebook.com W celu uniknięcia błędów certyfikatu ściągnij plik Fortinet_CA_SSLProxy.cer z zakładki SYSTEM Certificates i zaimportuj go w systemie lub przeglądarce Włącz SSL Deep inspection w polityce ruchu, włącz moduł IPS. Sprawdź działanie modułu poprzez dodanie własnej sygnatury: config ips custom edit "dport_zero" set signature "F-SBID( --attack_id 7021; --name \"0dstport\"; \ --protocol tcp; --dst_port 0; )" set severity high set application Other set protocol TCP set comment Dodaj sygnaturę do domyślnego profilu IPS Wyślij spreparowany pakiet poleceniem (Kali Linux): sip -p ipv4 -p tcp -is 10.0.10.X -ifd 1 -ts 5566 -td 0 -tfs 1 10.0.10.Y Sprawdź wpisy w zakładce log & report -> security log. Może istnieć potrzeba włączenia odpowiedniego widoku: config sys global set gui-utm-monitors enable lub poprzez wyświetlenie logów w linii poleceń: execute log filter category 4 execute log display Dodaj wpis blokujący logowanie do portalu Facebook (uzupełnij XXX i YYY - uwaga są to dwa wyrażenia w dwóch różnych kontekstach. Można także zbudować bardziej dokładne sygnatury jednak w tym ćwiczeniu należy użyć przynajmniej dwóch filtrów) tak aby blokowana była akcja logowania do portalu (niestety pomomo szczerych chęci prowadzącego sygnatura nie jest skuteczna w 100% przypadków): config ips custom edit "Facebook.Login" set signature "F-SBID( --attack_id 6517; --name Facebook.Login; \ --protocol tcp; --service HTTP; --parsed_type HTTP_POST; \ --XXX; --YYY;)" set severity high set application Other set protocol TCP set comment Wskazówka: Przeanalizuj podręcznik IPS Signature Guide dołączony do materiałów (strona 29-36) Dodaj sygnaturę do domyślnego profilu IPS 4
Ponownie przejrzyj logi bezpieczeństwa 5. Atak na podatność HeartBleed Upewnij się, że serwer WWW działa ze skonfigurowanym protokołem HTTPS Przeskanuj host docelowy: nmap -sv --script ssl-heartbleed 10.0.10.X Przeprowadź atak python2 heartbleed.py Przyjrzyj się danym które uzyskałeś. Dodaj sygnaturę pozwalającą na blokowanie ataku Heartbleed (OpenSSL.Heartbleed.Attack) i powtórz atak, a następnie przejrzyj logi bezpieczeństwa tak jak poprzednio. 5