Instalacja i konfiguracja pakietu iptables
Transkrypt
Instalacja i konfiguracja pakietu iptables
Instalacja i konfiguracja pakietu iptables Tomasz Nowocień Zespół Bezpieczeństwa PCSS [email protected] 1 Zawartość Czyli o czym to będzie... • Podstawy wiedzy... • Co to jest iptables? Skąd się bierze iptables? • Podstawy konfiguracji iptables. • Przyklady konfiguracji iptables. 2 Podstawy wiedzy Czyli co juŜ wiemy... • Co to jest sieć komputerowa? – adres IP? maska sieci? porty? – firewall? DNS? – routing? – warstwowy model sieci? – Protokoły? TCP? IP? UDP? ICMP? 3 Co to jest iptables? • filtr pakietów działający na warstwie TCP/IP • zaimplementowany w jądrze Linuxa 2.4.X oraz 2.6.X • aktualna wersja 1.3.5 (26.06.2006r.) 4 Skąd pobrać? • http://netfilter.filewatcher.org/ • http://netfilter.samba.org/ • http://netfilter.gnumonks.org/ 5 Podstawy konfiguracji • Łańcuchy iptables • Reguły iptables • Polityki iptables 6 Podstawy konfiguracji Łańcuchy iptables • Predefiniowane: – – – – – INPUT OUTPUT FORWARD (PREROUTING) (POSTROUTING) • Łańcuchy definiowane przez uŜytkownika 7 Podstawy konfiguracji Zasady tworzenia reguł (1) • Zasady tworzenia reguł są proste :] iptables -A FORWARD –i eth1 -s 0/0 –d 0/0 -p TCP --sport ! 80 --dport ANY -j ACCEPT 8 Podstawy konfiguracji Zasady tworzenia reguł (2) • Oznaczenia: -s – adres źródłowy -d – adres docelowy -i – interfejs wejściowy -o – interfejs wyjściowy -j – wykonywana akcja -p - protokół 9 Podstawy konfiguracji Zasady tworzenia reguł (3) • Operacje na pojedynczych regułach: -A – dodawanie -D - kasowanie -I - wstawianie -R – zamiana 10 Podstawy konfiguracji Zasady tworzenia reguł (4) • Operacje na łańcuchach -N –tworzenie nowego łańcucha -F –opróŜnianie łańcucha -Z –zerowanie liczników dla łańcucha -P –tworzenie polityki dla łańcucha -X –kasowanie łańcucha -L –przeglądanie reguł łańcucha 11 Podstawy konfiguracji Proste reguły iptables (1) • Najprostszy firewall: iptables –P INPUT DROP Czy zadziała? 12 Podstawy konfiguracji Proste reguły iptables (2) „Rozbudowany” firewall: iptables –P INPUT DROP iptables -A INPUT –p tcp --sport 80 -j ACCEPT 13 Rozszerzenia iptables • uŜywanie rozszerzeń „jawne”: – m xxxx • „niejawne” 14 Rozszerzenia iptables Rozszerzenia tcp • „niejawne” – ładowane podczas pojawienia się -p tcp • opcje: --tcp-flags --syn --source-port (--sport) --destination-port (--dport) 15 Rozszerzenia iptables Rozszerzenia udp • „niejawne” – ładowane podczas pojawienia się -p udp • opcje: --source-port (--sport) --destination-port (--dport) 16 Rozszerzenia iptables Testy stanów – m state Testowane stany: – NEW – ESTABLISHED – RELATED – INVALID 17 Rozszerzenia iptables Testy stanów przykład Ulepszenie „naszego” firewalla: iptables –P INPUT DROP iptables -A INPUT -m –state ESTABLISHED,RELATED -j ACCEPT 18 Rozszerzenia iptables Testy stanów przykład Nie pozwalamy Ŝeby w sieci podłączonej do interfejsu eth1 stawiano serwery: iptables -A FORWARD -i eth1 –p tcp -m state ! --state NEW -j DROP 19 Rozszerzenia iptables Filtrowanie po adresie MAC – m mac iptables -A INPUT -i eth1 –m mac --macsource 00:00:00:00:00:00 -j DROP Uwagi: Działa w łańcuchach: – INPUT – PREROUTING 20 Rozszerzenia iptables Informacje o uŜytkowniku – m owner --uid-owner --gid-owner --pid-owner --sid-owner • Uwagi: Działa tylko lokalnie w łańcuchu OUTPUT 21 Rozszerzenia iptables Limity • Limity połączeń określane są modułem: – m limit --limit - ilość pozytywnych testów w jednostce czasu --limit-burst - maksymalna seria, po której określony limit się włącza 22 Rozszerzenia iptables Limity - przykłady iptables -A FORWARD -p tcp –syn -m limit --limit 1/s -j ACCEPT iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT 23 Cele reguł • Predefiniowane: – DROP – REJECT – ACCEPT – RETURN – QUEUE – LOG • Łańcuch uŜytkownika 24 Cele reguł Odrzucanie połączeń (1) • Odrzucanie połączeń: – REJECT – DROP • Przykłady: – iptables –P INPUT DROP – iptables –P INPUT REJECT 25 Cele reguł Odrzucanie połączeń (2) • Reject: iptables -A INPUT -p tcp -i eth1 -j REJECT --reject-with tcp-reset iptables -A INPUT -p udp -i eth1 -j REJECT --reject-with icmp-portunreachable 26 Cele reguł Łańcuchy uŜytkownika (1) iptables -N test1 iptables -A test1 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A test1 -m state --state NEW -i ! ppp0 -j ACCEPT iptables -A test1 -j DROP 27 Cele reguł Łańcuchy uŜytkownika (2) iptables -A INPUT -j test1 iptables -A FORWARD -j test1 28 Przykłady reguł FORWARD (1) iptables -A FORWARD -p tcp -i eth0 –o eth1 –s any –d 150.254.xxx.xxx –dport ! 80 -j REJECT --reject-with tcp-reset 29 Przykłady reguł FORWARD (2) iptables -A FORWARD -p tcp -i eth0 –o eth1 –s ! 1.2.3.0/24 –d 150.254.xxx.xxx -j REJECT --reject-with tcp-reset 30 Cele reguł Logowanie iptables -A FORWARD -p tcp -j LOG --log-level X --log-prefix ‘my_log’ 31 Tworzenie firewalla • Stosuj zasadę: „co nie jest dozwolone, jest zabronione” – iptables –P INPUT DROP • Rozpoczynaj budowę firewalla od początku • Otwieraj dostęp tylko do tych usług, które są konieczne • Zapisz najczęściej występujące dopasowania na początku 32 Przykładowy łańcuch (1) IIP="150.254.170.3" INET="150.254.170.0/20" INET_IFACE="eth1" MY_NET="10.0.0.254" MY_NET="10.0.0.0/24" MY_IFACE="eth0" # CZYSZCZENIE iptables -F INPUT iptables -F OUTPUT iptables -F FORWARD 33 Przykładowy łańcuch (2) # POLITYKI DOMYSLNE iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP # Zapobieganie spoofowaniu iptables -A OUTPUT -o $INET_IFACE -d $MY_NET -j DROP iptables -A OUTPUT -o $INET_IFACE -s $MY_NET -j DROP 34 Przykładowy łańcuch (3) #Pozbycie się pakietow blednych iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP iptables -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP #Lokalny ruch odblokowany iptables -A INPUT -i lo -j ACCEPT #Pozwalamy na ruch ICMP, poza „timestamp-request” iptables -A INPUT -p icmp --icmp-type timestamp-request -j DROP iptables -A INPUT -p icmp -j ACCEPT 35 Przykładowy łańcuch (4) #Pozbywamy się ruchu iptables -A INPUT -p --destination-port iptables -A INPUT -p --destination-port na określonych portach tcp 6000:6010 -j DROP udp 6000:6010 -j DROP #Pozwalamy na polaczenia z ssh iptables -A INPUT -p tcp --destination-port ssh -j ACCEPT 36 Przykładowy łańcuch (5) #Pozwalamy na wchodzące polaczenia smtp iptables -A INPUT -p tcp --destination-port -j ACCEPT #Pozwalamy na ruch http/https iptables -A INPUT -p tcp --destination-port j ACCEPT iptables -A INPUT -p udp --destination-port j ACCEPT iptables -A INPUT -p tcp --destination-port -j ACCEPT iptables -A INPUT -p udp --destination-port -j ACCEPT smtp www www https https 37 Przykładowy łańcuch (6) #Akceptujemy polaczenia zainicjowane przez nas iptables -A INPUT -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT 38 Dziękuję za uwagę Komentarze i uwagi proszę kierować na: [email protected] 39