Wprowadzenie Celem tego laboratorium jest zapoznanie się z metodami ataku (D)DoS zarówno od strony atakującej jak i atakowanej. Uczestnicy laboratorium będą mieli za zadanie zbudowanie platformy testowej z serwerem WWW do przeprowadzenia i obserwacji ataku (D)DoS. Będą mogli zaobserwować różnice w zastosowaniu dwóch rozwiązań: dynamicznie budowanych reguł firewall'a software'owego oraz hardware'owego IPS (Fortinet) Wymagany sprzęt i oprogramowanie 5 komputerów z systemem Linux (3 atakujące, 1 serwer, 1 obserwator) 1 switch posiadający przynajmniej 5 portów 1 urządzenie Fortinet IPS (np: FortiWifi 40C) Kable ethernetowe Wymagane oprogramowanie: Serwer: Apache, WireShark Atakujący: perl, slowloris.pl Obserwator: python 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ść Skonfiguruj maszyny (Apache, Wireshark) Monitoruj responsywność serwera (cały czas trwania laboratorium) Przeprowadź atak DoS (1 maszyna) Przeprowadź atak DDoS (wszystkie maszyny) Powtórz atak DDoS (ochrona przez Iptables) Powtórz atak DDoS (ochrona przez IPS Fortigate) Oddanie raportów papierowych (Warunek konieczny zaliczenia laboratorium) FortiWifi 40C krótki opis urządzenia Platforma FortiWiFi-40C jest idealnym wyborem 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 Filtrowanie ruchu sieciowego
IPtables - ściągawka iptables A <chain> <options> j <decision> iptables D <chain> <options> j <decision> // Dodanie nowej reguły // Usuwanie poszczególnych reguł // Options p // protokół s // adres sport // port zródłowy (lub przedział) dport // port docelowy (lub przedział) i // interfejs wej?ciowy o // interfejs wyj?ciowy j // ACCEPT lub DROP iptables F && iptables save // Czyszczenie reguł iptables L // Lista reguł iptables N <name> // Dodanie nowego ła?cucha iptables I INPUT j <chain name> //
Przebieg laboratorium: (jeżeli w instrukcji nie zaznaczono inaczej, używaj domyślnych opcji) 1. Przygotowanie środowiska testowego ok. 15 minut 1. Zaprojektuj sieć lokalną (dostosuj ją do wytycznych prowadzącego). Schemat umieść w raporcie. 2. Uruchom serwer WWW, a następnie sprawdź łączność pomiędzy maszynami. 3. Sprawdź działanie skryptu mierzącego reponsywność (times.py) 2. Atak DoS ok. 10 minut 1. Uruchom WireShark'a na serwerze WWW i zacznij monitorować interfejs Ethernet. 2. Uruchom skrypt atakujący na jednej z maszyn slowloris.pl -dns 192.168.2.100 -port 80 [-num N] [-timeout T] 3. Przeanalizuj Flow Graph w WireShark'u. Jak serwer reaguje na atak? Porównaj to z normalnym połączeniem TCP 4. Co jakiś czas próbuj nawiązać połączenie z pozostałych maszyn z serwerem WWW. Obserwuj responsywność. 5. Obserwacje zanotuj w raporcie 3. Atak DDoS ok. 10 minut 1. Uruchom nową sesję w WireShark'u 2. Uruchom skrypt atakujący na 3 maszynach (zrób to w odstępach 1-2 minutowych), obserwuj zachowanie serwera WWW i jego responsywność (4 maszyna) 3. Obserwacje zanotuj w raporcie 4. Ochrona przed atakiem (D)DoS ok. 10 minut 1. Uruchom nową sesję w WireShark'u 2. Uruchom atak z 1 maszyny 3. Sprawdź wynik działania poniższych poleceń na serwerze ( oznacza poprzednią komendę): netstat netstat tcp numeric host... grep E "http www"... grep v "ESTABLISHED"... awk '{print $5}'... cut d : f 1... sort... uniq c... sort nr 4. Obserwuj responsywność serwera w czasie ataku 5. Dodaj regułę w Iptables do blokowania pojedynczego adresu IP 1. iptables -A INPUT -p tcp -s 192.168.2.1 -j DROP [- -reject-with tcp-reset] 2. iptables-save 5. Automatyczne blokowanie adresów w Iptables ok. 15 minut 1. Przeanalizuj skrypty dołączone do laboratorium (monitor.sh, block.sh) 2. Uruchom nową sesję WireShark'a 3. W czasie ataku obserwuj responsywność serwera 4. Spróbuj zablokować atak korzystając z gotowych skryptów (zastanów się jak można
zmodyfikować skrypty aby automatycznie blokowały adres będący źródłem ataku, pamiętaj że po ustaniu ataku reguła blokująca powinna zostać usunięta) 5. Obserwuj responsywność serwera przeprowadzając ataki z pozostałych maszyn 6. Wykorzystanie IPS'a do blokowania ataków ok. 30 minut 1. Zmodyfikuj architekturę sieci tak aby pasowała do schematu: 2. Skonfiguruj FortiWifi (Użyj serwera) 1. Reset do ustawień fabrycznych (2 opcje) 1. # execute factoryreset 2. Przycisk reset (Działa tylko przez 30 sekund po uruchomieniu urządzenia). 2. Konfiguracja interfejsu LAN (Network / Interface): 1. Konfiguracja adresu IP 3. Konfiguracja interfejsu WAN1 ( Network / Interface): 1. Konfiguracja adresu IP 2. Wyłącz wszystkie usługi poza PING 4. Konfiguracja wirtualnego serwera WWW (Firewall Objects / Virtual IP / Create New) 1. Ustaw nazwę (np: Web) 2. Konfiguracja zewnętrznych i mapowanych adresów IP 5. Konfiguracja polityki ruchu wychodzącego (Policy / Policy / Create New) 1. Zezwól na cały ruch na interfejsie WAN1 2. Zaznacz NAT 3. Pozostałe ustawienia: Source Address all, Destination Address all, Schedule
always, Service all, Action Accept 6. Zezwól tylko na połączenia HTTP jako ruch przychodzący (Policy / Policy / Create New) 1. Destination Address poprzednio ustawiona nazwa (np., Web) 2. Service HTTP(?) 3. Logging Log all sessions 4. Security Profiles IPS 7. Sprawdź łączność z serwerem (adres IP interfejsu WAN1) z pozostałych maszyn. 8. Zaloguj się na CLI do urządzenia FortiWifi (ssh) i wprowadź poniższą konfigurację: config firewall DoS policy edit 1 set interface wan1 set srcaddr all set dstaddr all set service ALL config anomaly edit tcp_syn_flood set status enable set action block set threshold 2 next edit tcp_src_session set status enable set action block set threshold 20 end end 9. Rozpocznij nową sesję WireShark'a. Zacznij atakować serwer WWW (w odstępach czasowych) 10. Poeksperymentuj z różnymi wartościami ustawień progowych. Która reguła (tcp_syn_flood czy tcp_src_session) działa na przeprowadzany atak skuteczniej i lepiej chroni przed nieporządanym ruchem? Dlaczego? Bibliografia oraz materiały uzupełniające 1. D. Kowalczyk, B. Jarek, D. Bańka, Ochrona przed atakami DDos, projekt ćwiczenia pod kierunkiem dr inż. Piotra Pacyny.