Hosting WWW Bezpieczeństwo hostingu WWW Dr Michał Tanaś (http://www.amu.edu.pl/~mtanas)
Zabezpieczenia w sieciach komputerowych
Firewall iptables Firewall jest to program lub urządzenie, które: Filtruje ruch pomiędzy fragmentami sieci Umożliwia ograniczanie dostępu do określonych usług (portów) Umożliwia monitorowanie nawiązanych połączeń (tylko SPI) Umożliwia manipulowanie nagłówkami pakietów warstw IP i TCP
Firewall iptables Rodzaje firewalli: bezstanowe (port filter) - traktują, każdy pakiet indywidualnie SPI (stateful packet inspection) - potrafią, przyporządkować pakiet do określonego połączenia
Firewall iptables Możliwości iptables: firewall bezstanowy firewall SPI przepisywanie adresów (NAT, maskarada) przekierowywanie pakietów (REDIRECT) filtrowanie/manipulowanie nagłówkami IP (np. TTL)
Firewall iptables Podstawowe zasady iptables: każdy pakiet trafia do łańcucha regułek regułki testują, pakiet w kolejności umieszczenia regułek w łańcuchu pakiet nie spełniający warunku regułki przechodzi do następnej regułki w łańcuchu regułka może pakiet zaakceptować, odrzucić lub skierować do innego łańcucha jeżeli pakiet dojdzie do końca łańcucha stosowana jest domyślna regułka łańcucha łańcuchy pogrupowane są w tablice
Firewall iptables
Firewall iptables Regułka iptables: iptables tablica operacja łańcuch warunki akcja Gdzie tablica - nazwa tablicy operacja - operacja do wykonania na łańcuchu regułek (uwaga! nie na pakietach!) łańcuch - nazwa łańcucha w tablicy warunek - warunek logiczny który powinien spełniać pakiet akcja - co się dzieje z pakietem spełniającym warunek
Firewall iptables iptables działa tylko dla IP w wersji 4 Dla IPv6 należy użyć polecenia ip6tables którego składnia jest identyczna jak iptables: ip6tables tablica operacja łańcuch warunki akcja Uwaga, iptables i ip6tables mają swoje osobne łańcuchy i tablice co oznacza że iptables nie zmieni i nie pokaże żadnych regułek dla IPv4 a ip6tables nie zmieni i nie pokaże żadnych regułek dla IPv6
Firewall iptables Apache2 używa następującej wersji IP: Jeżeli interfejs sieciowy dopuszcza użycie IPv6 to Apache przy dyrektywie Listen port otwiera port w wersji 6 w przeciwnym wypadku otwiera port w wersji 4 Co oznacza że dla localhost zawsze domyślnie używa IPv6 chyba że wymusi się stosowanie IPv4 przy pomocy dyrektywy Listen 0.0.0.0:port
Firewall iptables - tablice Najważniejsze tablice iptables -t filter tablica filtrowania pakietów i SPI. Tablica domyślna, w przypadku nie podania żadnej tablicy. -t nat tablica NAT (Network Address Translation) -t mangle tablica do manipulacji nagłówkami pakietów (np. do zmiany TTL)
Firewall iptables operacje Operacje na łańcuchach: -A - append, dodanie regułki na koniec łańcucha -D - delete, usuniecie regułki -I - insert, wstawienie regułki w określone miejsce w łańcuchu -R - replace, zastąpienie wskazanej regułki przez regułkę tworzoną w poleceniu
Firewall iptables operacje Operacje na łańcuchach: -L - list, wyświetlenie istniejących regułek -F - flush, usunięcie wszystkich regułek z łańcucha. Uwaga, nie zmienia domyślnej polityki (akcji) łańcucha! -Z - zero, zeruje liczniki pakietów -P - policy, zmienia domyślną politykę (akcję) łańcucha
Firewall iptables operacje Operacje na łańcuchach: -N - new, tworzy nowy łańcuch w tablicy -X - expunge, usuwa łańcuch z tablicy razem ze wszystkimi regułkami łańcucha -E - rename, zmiana nazwy łańcucha, regułki zostają bez zmian
Firewall iptables - łańcuchy Łańcuchy tablicy filter INPUT - pakiety przychodzące do komputera, zarówno docelowe jak i tranzytowe OUTPUT - pakiety wysyłane z komputera FORWARD - pakiety przechodzące przez komputer (pakiety tranzytowe)
Firewall iptables - łańcuchy Łańcuchy tablicy nat PREROUTING - pakiety przychodzące do komputera, zarówno docelowe jak i tranzytowe POSTROUTING - pakiety opuszczające komputer, zarówno wygenerowane lokalnie jak i tranzytowe OUTPUT - pakiety wygenerowane lokalnie (łańcuch przetwarzany przed POSTROUTING)
Firewall iptables - łańcuchy Łańcuchy tablicy mangle: INPUT OUTPUT FORWARD PREROUTING POSTROUTING Funkcja poszczególnych łańcuchów jest identyczna jak odpowiednich łańcuchów z tablic filter i nat
Firewall iptables - warunki Warunki (muszą być spełnione wszystkie podane w regułce) -p protokół - protocol, pakiet musi być pakietem podanego protokołu. Np. -p tcp, -p icmp -s adres/netmask - source, nadawca pakietu musi należeć do podanej sieci. Np. -s 150.254.114.0/24 -d adres/netmask - destination, odbiorca pakietu musi należeć do podanej sieci. Np. -d 150.254.114.0/24
Firewall iptables - warunki Warunki (muszą być spełnione wszystkie podane w regułce) -i interfejs - input interface, pakiet został odebrany przez podaną kartę sieciową. Np. -i wlan0 -o interfejs - output interface, pakiet jest przeznaczony do wysłania przez podaną kartę sieciową. Np. -o eth0! - negacja logiczna następnego warunku. Np.! -d 150.254.114.0/24
Firewall iptables - warunki Pakiety warunków: umożliwiają stosowanie zaawansowanych warunków w regułkach każdy pakiet przed użyciem wymaga załadowania przy pomocy warunku -m pakiet warunek -m pakiet jest prawdziwy, jeżeli dany pakiet jest dostępny w systemie pakiet traktowany jest przez Linuxa podobnie jak sterownik do urządzenia pakiet można włączyć/wyłączyć w konfiguracji kernela
Firewall iptables - warunki Pakiet warunków connbytes - licznik bajtów połączenia: --connbytes od:do - warunek jest prawdziwy jeżeli w połączeniu dotychczas przesłano pomiędzy od a do jednostek --connbytes-dir kierunek - określa kierunek przepływu danych, możliwe wartości: original, reply, both --connbytes-mode jednostka - określa co ma być liczone, możliwe wartości: packets, bytes, avgpkt
Firewall iptables - warunki Pakiet warunków connlimit - licznik jednoczesnych połączeń z danego akresu adresów --connlimit-above n - warunek jest prawdziwy jeżeli nawiązane (established) jest n lub więcej połączeń z danego adresu --connlimit-mask n - ilość bitów w netmask
Firewall iptables - warunki Pakiet warunków conntrack - SPI: --ctstate stan1,stan2,... - warunek jest prawdziwy jeżeli pakiet należy do połączenia znajdującego się w jednym z podanych stanów
Firewall iptables - warunki Pakiet warunków conntrack - SPI: stany połączenia: INVALID - pakiet ani nie należy do żadnego z istniejących połączeń, ani nie otwiera nowego połączenia. NEW - pakiet otwiera nowe połączenie. ESTABLISHED - pakiet należy do istniejącego połączenia.
Firewall iptables - warunki Pakiet warunków conntrack - SPI: stany połączenia: RELATED - pakiet otwiera nowe połączenie, które jest ściśle powiązane z połączeniem istniejącym (np. połączenie danych FTP) SNAT, DNAT - pakiet należy do połączenia przechodzącego przez NAT
Firewall iptables - warunki Pakiet warunków icmp - opcje ICMP pakiet włączany automatycznie przy -p icmp --icmp-type typ - warunek jest prawdziwy jeżeli pakiet jest komunikatem ICMP określonego typu
Firewall iptables - warunki Pakiet warunków iprange - przedziały adresów IP: --src-range od-do - przedział adresów nadawcy pakietu --dst-range od-do - przedział adresów odbiorcy pakietu
Firewall iptables - warunki Pakiet warunków limit - ograniczenie ilości zadziałań regułki. Uwaga, nie jest to ograniczenie ilości pakietów! --limit wartość/jednostka - regułka zadziała tylko określoną ilość razy na jednostkę czasu. Np. 3/hour
Firewall iptables - warunki Pakiet warunków multiport - zakresy portów --sports port,port:port - warunek prawdziwy jeżeli port źródłowy należy do podanego zakresu --dports port,port:port - warunek prawdziwy jeżeli port docelowy należy do podanego zakresu
Firewall iptables - warunki Pakiet warunków owner - właściciel procesu który wysłał pakiet. dotyczy tylko pakietów wysyłanych (nie forwardowanych) ma sens tylko w łańcuchach OUTPUT i POSTROUTING. --uid-owner - właściciel, można podać login lub zakres uidów --gid-owner - grupa, można podać nazwę, lub zakres gidów
Firewall iptables - warunki Pakiet warunków string - wyszukiwanie sekwencji bajtów w pakiecie. --string tekst - warunek jest prawdziwy jeżeli pakiet zawiera podany tekst. --hex-string - warunek jest prawdziwy jeżeli pakiet zawiera podany ciąg bajtów.
Firewall iptables - warunki Pakiet warunków tcp - opcje TCP pakiet włączany automatycznie przy -p tcp --sport port - port źródłowy. --dport port - port docelowy. --tcp-flags flaga1,flaga2,... - pakiet ma ustawione wszystkie podane flagi TCP. Możlie flagi: SYN, ACK, FIN, RST, URG, PSH, ALL, NONE. --syn - równoważne --tcp-flags SYN
Firewall iptables - warunki Pakiet warunków time - czas lokalny --datestart - od daty --datestop -... do daty. --timestart - od czasu --timestop -... do czasu. --monthdays - dni miesiąca. --weekdays - dni tygodnia.
Firewall iptables - warunki Pakiet warunków ttl - pole TTL (Time To Live) nagłówka IP --ttl-eg n TTL=n --ttl-gt TTL>n --ttl-lt - TTL<n
Firewall iptables - warunki Pakiet warunków udp - opcje UDP pakiet włączany automatycznie przy -p udp --sport port - port źródłowy. --dport port - port docelowy.
Firewall iptables - akcje ACCEPT - zaakceptowanie pakietu. REJECT - odrzucenie pakietu z komunikatem ICMP do nadawcy. DROP - odrzucenie pakietu bez informacji do nadawcy. LOG - zapisanie informacji o pakiecie w logu systemowym Uwaga, akcja LOG nie kończy przetwarzania pakietu
Firewall iptables - akcje DNAT - NAT dla pakietów wychodzących --to-destination adres-adres:port-port - adres i (opcjonalnie) port docelowy pakietu zostanie zmieniony na adres z podanego zakresu. Można podać pojedynczy adres i port.
Firewall iptables - akcje SNAT - NAT dla pakietów przychodzących --to-source adres-adres:port-port - adres i (opcjonalnie) port źródłowy pakietu zostanie zmieniony na adres z podanego zakresu. Można podać pojedynczy adres i port.
Firewall iptables - akcje REDIRECT - zmiana portu docelowego (uproszczony NAT) --to-ports port-port - port docelowy pakietu zostanie zmieniony na port z podanego zakresu. Można podać pojedynczy port.
Firewall iptables - akcje TTL - manipulowanie polem TTL w nagłówku pakietu Uwaga, akcja TTL nie kończy przetwarzania pakietu --ttl-set wartość - wpisanie w pole TTL podanej wartości. --ttl-dec wartość - zmniejszenie TTL o podaną wartość. --ttl-inc wartość - zwiększenie TTL o podaną wartość