Narzędzia użytkownika

Narzędzia witryny


materialy:bezpieczenstwo:firewall

Firewall iptables

Teoria

Wstęp

Firewall jest urządzeniem sprzętowym lub programowym, który potrafi analizować i filtrować przepływające przez niego informacje w postaci danych sieciowych. Filtrowanie polega na odrzucaniu informacji nieptrzebnych i przepuszczaniu tych pożądanych. Liczba kryteriów, jakie są brane pod uwagę przy filtrowaniu zależy od złożoności firewalla.

Firewall najczęściej wykorzystywany jest jako połączenie między siecią wewnętrzną (LAN - sieć zaufana), Internetem (sieć niezaufana) a strefą zdemilitaryzowaną (DMZ) w której umieszczone są usługi dla Internetu.

Implementacje ścian przeciwogniowych mogą się różnić. Większa funkcjonalność najczęściej związana jest z większą liczbą warstw modelu ISO/OSI i protokołów, które potrafi przeanalizować firewall. Jeśli ściana pracuje do warstwy czwartej modelu ISO/OSI (a tak jest najczęściej) oznacza to, iż może analizować i filtrować dane na podstawie kryteriów z wartw drugiej (np. mac adresy), trzeciej (adresy IP) i czwartej (numery portów), nie umie natomiast odczytać informacji związanych z warstwami wyższymi (np. nie rozumie komend protokołu FTP). Niektóre firwalle potrafią również modyfikować informacje przez nie przepływające, np. przy realizacji NAT, gdy adres źródłowy każdego pakietu opuszczającego wybrany interfejs musi być zmieniony na adres routera.

Narzędziem konfiguracji firewalla w systemie Linux od jądra 2.4.x jest iptables. Pracuje w zakresie warstw od drugiej do siódmej. Co prawda, nie ma możliwości obsłużenia wszystkich protkołów warstwy aplikacji jakie istnieją na świecie, ale dzięki otwartości źródeł i możliwości budowania dodatkowych modułów plasuje się w ścisłej czołówce. (patrz projekt l7-filter).

Zamieszczone w tym rozdziale informacje i przykłady przedstawiają jedynie podstawowe informacje z zakresu funkcjonalności firewalla.

Dokumentcja i przewodniki w źródłach zewnętrznych

Opisy instalacji, konfiguracji oraz wiele przewodników iptables (również w języku polskim) można znaleźć na stronie projektu netfilter. Szczególnie warty polecenia jest przewodnik iptables Oskara Andreassona.

Łańcuchy i tablice

Działanie iptables opiera się o reguły zamieszczone w łańcuchach (odpowiednik acces-listy w Cisco), które natomiast zamieszczone są w tablicach. Jeśli nie ma jawnych informacji, o tym, której tablicy dotyczy omawiany łańcuch, oznacza to, iż zamieszczony on jest w domyślnej tablicy - filter. Trzy podstawowe łańcuchy w tablicy filter to INPUT, OUTPUT i FORWARD.

Drugą popularną tablicą, jest nat, która zawiera łańcuchy przechowujące reguły wykorzystywane przy translacji adresów. Dwa popularne łańcuchy wykorzystywane przy modyfikacji pakietów to PREROUTING i POSTROUTING.

Schemat łańcuchów iptables

W zależności od tego, czy pakiet wchodzący (input) na interfejs sieciowy firewalla jest adresowany do firewalla, czy też do innego urządzenia zamieszczonego za firewallem, zależy przez jakie łańcuchy będzie analizowany. Aby pakiet pomyślnie został przepuszczony przez firewall, musi zostać zaakceptowany przez wszystkie łańcuchy przez które przechodzi.

Reguły

Reguły stanowią właściwy element konfiguracji firewalla, gdyż decydują jakie dane mają być odrzucane (DROP) a jakie akceptowane (ACCEPT) w danym łańcuchu. Słowa ACCEPT i DROP nazywane są akcjami, jakie mają być wykonane na poszczególnych elementach danych (np. na pakietach). Możliwe są również inne akcje (np. LOG)

Reguły zamieszczone w łańcuchu stanowią listę wzorców, które są porównywane przez firewall z informacjami zamieszczonymi w przesyłanych danych (np. adresy portów w datagramach).

Przykładowe reguły:

iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 21 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport 21 -j DROP

Powyższe komendy iptables dopisują (-A) do łańcucha FORWARD reguły, które zawierają kryteria (np. -i eth0 -o eth1 -p tcp –dport 22) oraz akcję, jaka będzie wykonana dla pakietu pasującego do tych kryteriów (np. ACCEPT).

Podstawowe parametry komendy iptables związane z kryterium:

parametr opis przykładowe wartości
-i interfejs na który wszedł (input) pakiet eth0, eth1, itd..
-o interfejs którym pakiet będzie opuszczał firewall eth0, eth1, itd..
-p protokół tcp, udp, icmp
-s źródłowy adres IP 192.168.100.3
-d docelowy adres IP 192.168.200.4
–dport port na który pakiet przeznaczony 22
–sport port, z którego pakiet pochodzi 53

Konfiguracja

Czyszczenie tablic, polityki domyślne łańcuchów i zmienne lokalne

Przed przystąpieniem do konfiguracji firewalla dobrze jest wyczyścić reguły wszystkich łańcuchów, wyzerować liczniki i usunąć zdefiniowane przez użytkownika łańcuchy (w iptables można definiować dodatkowe, własne łańcuchy pośrednie):

iptables -F
iptables -Z
iptables -X

Polityka domyślna dla łańcucha określa, jaka akcja będzie wykonana, jeśli pakiet nie będzie pasował do żadnej z reguł zamieszczonych w łańcuchu.

Polityka domyślna, przykład 1. Jeśli nie będzie żadnych reguł w łańcuchach firewall przepuści wszystkie pakiety (polityka niezalecana):

iptables -P FORWARD ACCEPT
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT

Polityka domyślna, przykład 2. Jeśli nie ma żadnych reguł wszystko będzie blokowane (polityka zalecana):

iptables -P FORWARD DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP

Polityka domyślna, przykład 3. Firewall domyślnie blokuje tylko ruch przez niego przechodzacy:

iptables -P FORWARD DROP
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT

Polityka domyślna, przykład 4. Firewall domyślnie odrzuca jedynie pakiety adresowane do niego:

iptables -P FORWARD ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT

Polityka domyślna, przykład 5. Firewall domyślnie akceptuje tylko połączenia wychodzące, inicjowane przez niego samego:

iptables -P FORWARD DROP
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT

W konfiguracji firewalla często administrator odnosi się do numerów interfejsów. W celu zwiększenia czytelności napisanych reguł w skrypcie firewalla można wykorzystać zmienne języka skryptowego:

LAN="eth1"
INTERNET="eth0"
DMZ="eth2"

Przykładowe skrypty firewalla - scenariusze

Wszystkie scenariusze oparte są o topologię połączenia firewalla z trzema strefami sieciowymi:

  • strefą zdemilitaryzowaną, tzw. DMZ (za eth2) na której zazwyczaj stoją serwery usług publicznych;
  • LAN (za eth1) za którą jest cała infrastruktura użytkowników lokalnych (PC-ty);
  • Internetem (za eth0) - łącze do providera usług internetowych.

Scenariusz 1. Zezwól jedynie na połączenia między Internetem a DMZ oraz na komunikację firewalla z innymi sieciami

#/bin/bash

iptables -F
iptables -Z
iptables -X

iptables -P FORWARD DROP
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT

LAN="eth1"
INTERNET="eth0"
DMZ="eth2"


iptables -A FORWARD -i $INTERNET -o $DMZ -j ACCEPT
iptables -A FORWARD -i $DMZ -o $INTERNET -j ACCEPT

Scenariusz 2. Zezwól na dostęp z Internetu do DMZ tylko na port 80 (WWW).

#/bin/bash

iptables -F
iptables -Z
iptables -X

iptables -P FORWARD DROP
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT

LAN="eth1"
INTERNET="eth0"
DMZ="eth2"

iptables -A FORWARD -i $DMZ -o $INTERNET -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p tcp --dport 80 -j ACCEPT

Przy następnych scenariuszach zakładamy, iż początek skryptu wygląda następująco:

#/bin/bash

iptables -F
iptables -Z
iptables -X

iptables -P FORWARD DROP
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT

LAN="eth1"
INTERNET="eth0"
DMZ="eth2"

REGULY-JEDNEGO-Z-PONIZSZYCH-SCENARIUSZY

Scenariusz 3. Zezwól na dostęp z Internetu do DMZ tylko na porty 80 i 22 (SSH):

iptables -A FORWARD -i $DMZ -o $INTERNET -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p tcp --dport 22 -j ACCEPT

Scenariusz 4. Zezwalaj dodatkowo na ruch icmp (w tym pingi) z Internetu do DMZ

iptables -A FORWARD -i $DMZ -o $INTERNET -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p icmp -j ACCEPT

Scenariusz 5. Pozwól tylko na te połączenia wychodzęce z DMZ do Internetu, które są odpowiedziami na już zestawione połączenia z serwerem DMZ (ESTABLISHED,RELATED):

iptables -A FORWARD -i $DMZ -o $INTERNET -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p icmp -j ACCEPT

W regule pierwszej, w powyższym scenariuszu - m określa wykorzystanie dodatkowego modułu o nazwie „state” sprawdzajacego stan pakietu. Możliwe stany pakietów:

  • NEW (nowy) - rozpoznaje po fladze SYN,
  • ESTABLISHED (zestawiony),
  • RELATED (zwiazany z innym portem - np.ftp),
  • INVALID (niepoprawny - prawdopodobnie uszkodzony).

Scenariusz 6. Serwer DMZ w scenariuszu 5 nie może nawiązywać połączen z serwerami zewnętrznymi. Administratort tego serwera chciałby mieć możliwość testowania połączeń z urządzeniami w Internecie przy pomocy komendy ping.

iptables -A FORWARD -i $DMZ -o $INTERNET -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p icmp -j ACCEPT
iptables -A FORWARD -i $DMZ -o $INTERNET -p icmp -j ACCEPT

Scenariusz 7. Serwery DMZ zazwyczaj muszą komunikować się z serwerami DNS znajdującymi się w Internecie (firewall musi dopuszczac ruch UDP na port 53 z DMZ do Internetu). Ostatnia reguła zezwala na przepuszczanie odpowiedzi z serwera DNS zamieszczonego w Internecie. Mimo protokolu UDP (bezpolaczeniowego) iptables potrafi śledzić takie połączenia i identyfikować odpowiedzi.

iptables -A FORWARD -i $DMZ -o $INTERNET -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p icmp -j ACCEPT
iptables -A FORWARD -i $DMZ -o $INTERNET -p icmp -j ACCEPT
iptables -A FORWARD -i $DMZ -o $INTERNET -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p udp --sport 53 -m state --state ESTABLISHED,RELATED -j ACCEPT

Scenariusz 8. Komunikacja między Internetem a siecią LAN powinna być ograniczona. Komputery z LAN powinny komunikować się z Internetem. Firewall może przepuszczać wszystkie pakiety z LAN do Internetu, natomiast z Internetu do LAN tylko te, które są związane z już zestawionymi połączeniami

#reguly dla komunikacji INTERNET<-->DMZ
iptables -A FORWARD -i $DMZ -o $INTERNET -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p icmp -j ACCEPT
iptables -A FORWARD -i $DMZ -o $INTERNET -p icmp -j ACCEPT
iptables -A FORWARD -i $DMZ -o $INTERNET -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p udp --sport 53 -m state --state ESTABLISHED,RELATED -j ACCEPT

#reguly dla komunikacji INTERNET<-->LAN
iptables -A FORWARD -i $INTERNET -o $LAN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $LAN -o $INTERNET -j ACCEPT

Scenariusz 9. Dla bezpieczenstwa, dobrze jest zablokowac dostęp do wysokich portow z komputerow LAN do INTERNETU. Pracownicy będą mogli korzystać tylko z „dobrze znanych” serwisow internetowych (WWW, e-mail, DNS, ftp…) oraz będą mogli wysyłać pakiety icmp (np. ping)

#reguly dla komunikacji INTERNET<-->DMZ
iptables -A FORWARD -i $DMZ -o $INTERNET -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p icmp -j ACCEPT
iptables -A FORWARD -i $DMZ -o $INTERNET -p icmp -j ACCEPT
iptables -A FORWARD -i $DMZ -o $INTERNET -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p udp --sport 53 -m state --state ESTABLISHED,RELATED -j ACCEPT

#reguly dla komunikacji INTERNET<-->LAN
iptables -A FORWARD -i $INTERNET -o $LAN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $LAN -o $INTERNET -p tcp -m multiport --dport 20,21,22,80,443,110,143,995,993,25,465 -j ACCEPT
iptables -A FORWARD -i $LAN -o $INTERNET -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -i $LAN -o $INTERNET -p icmp -j ACCEPT

Dzięki modułowi mutliport możliwe jest podanie w jednej regule kilku portów oddzielonych przecinkami.

Scenariusz 10. Komunikacja między DMZ a LAN powinna być również ograniczona. Żaden włamywacz, któremu uda sie skompromitować serwer w DMZ (włamać się) nie powinien mieć możliwości inicjowania połączen do sieci LAN z DMZ. W kierunku DMZ → LAN powinny być przepuszczane tylko pakiety pochodzace z już zestawionych wczesniej połączen. W kierunku z LAN → DMZ powinien być zapewniony dostęp do usług znajdujacych się w DMZ (np WWW):

#reguly dla komunikacji INTERNET<-->DMZ
iptables -A FORWARD -i $DMZ -o $INTERNET -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p icmp -j ACCEPT
iptables -A FORWARD -i $DMZ -o $INTERNET -p icmp -j ACCEPT
iptables -A FORWARD -i $DMZ -o $INTERNET -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p udp --sport 53 -m state --state ESTABLISHED,RELATED -j ACCEPT

#reguly dla komunikacji INTERNET<-->LAN
iptables -A FORWARD -i $INTERNET -o $LAN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $LAN -o $INTERNET -p tcp -m multiport --dport 20,21,22,80,443,110,143,995,993,25,465 -j ACCEPT
iptables -A FORWARD -i $LAN -o $INTERNET -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -i $LAN -o $INTERNET -p icmp -j ACCEPT

#reguly dla komunikacji DMZ <--> LAN
iptables -A FORWARD -i $DMZ -o $LAN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $LAN -o $DMZ -p tcp --dport 80 -j ACCEPT

Scenariusz 11. Załóżmy, że administrator serwera DMZ ma swój komputer w LAN i nr IP jego komputera to 192.168.0.199. Firewall powinien pozwolić administratorowi na zestawianie połączen z serwerem DMZ na port 22 (SSH) dla zdalnej administracji. Na dostęp do ssh można zezwolić tylko z jednego komputera.

#reguly dla komunikacji INTERNET<-->DMZ
iptables -A FORWARD -i $DMZ -o $INTERNET -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p icmp -j ACCEPT
iptables -A FORWARD -i $DMZ -o $INTERNET -p icmp -j ACCEPT
iptables -A FORWARD -i $DMZ -o $INTERNET -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $DMZ -p udp --sport 53 -m state --state ESTABLISHED,RELATED -j ACCEPT

# reguly dla komunikacji INTERNET<-->LAN
iptables -A FORWARD -i $INTERNET -o $LAN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $LAN -o $INTERNET -p tcp -m multiport --dport 20,21,22,80,443,110,143,995,993,25,465 -j ACCEPT
iptables -A FORWARD -i $LAN -o $INTERNET -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -i $LAN -o $INTERNET -p icmp -j ACCEPT

#reguly dla komunikacji DMZ <--> LAN
iptables -A FORWARD -i $DMZ -o $LAN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $LAN -o $DMZ -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i $LAN -o $DMZ -p tcp -s 192.168.0.199 --dport 22 -j ACCEPT

NAT

Scenariusz 12. Konfiguracja NAT przy zmiennym zewnętrznym adresie routera (MASQUERADE).

# czyszczenie tablic nat
iptables -t nat -F
iptables -t nat -Z
iptables -t nat -X

# MASQUERADE - po przeanalizowaniu pakietu przez tablice routingu
# zamien adres zrodlowy (prywatny) kazdego pakietu na zewnetrzny (adres publiczny
# przypisany do interfejsu, z ktorego pakiety wychodza do Inetnetu).
# Maskarade stosuje sie przy zmiennym, zewnetrznym adresie publicznym
# routera (np. Neostrada)

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o $INTERNET -j MASQUERADE

Scenariusz 13. Konfiguracja NAT przy stałym zewnętrznym adresie routera (SNAT).

# SNAT - po przeanalizowaniu pakietu przez tablice routingu
# zamien adres zrodlowy (prywatny) kazdego pakietu na zewnetrzny (publiczny).
# Ponizej zalozenie, iz adres publiczny przypisany do firewalla/routera to 212.212.212.212
# SNAT stosuje sie przy stalym, zewnetrznym adresie IP.

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o $INTERNET -j SNAT --to 212.212.212.212
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o $INTERNET -j SNAT --to 212.212.212.212

Scenariusz 14. Nie zapłaciłeś za Internet - przekieruje wszystkie Twoje pakiety na inny adres (DNAT):

# DNAT
# W przykladzie ponizszym - wszystkie pakiety, ktore pochodza z komputera 192.168.0.44
# (jeden z LAN) wysylane na port 80 tcp, beda mialy zamieniony adres docelowy na
# 192.168.0.1 (na ktorym uruchomiony jest serwer WWW ze strona glowna "Zaplac za Internet").

iptables -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.0.44 --dport 80 -j DNAT --to 192.168.0.1:8080

Iptables jako obserwator ruchu sieciowego

Aby obserwować, jakie pakiety przechodzą przez system, bez ich blokowania i używania sniffera, można dodać reguły do iptables, które nie powodują żadnej akcji (nie mają parametru -j). Reguły takie służą jedynie generowaniu statystyk, które można obejrzeć przy pomocy

iptables -L -v

Należy pamiętać, że reguły takie powinno się wpisywać do łańcuchów na ich początek (-I) zamiast na koniec (-A). W przeciwnym wypadku pakiet, który pasowałby do jakiejkolwiek reguły z akcją (ACCEPT, DROP itp.) zamieszczonej na początku łańcucha, nie byłby analizowany przez regułę bez akcji znajdującą się na końcu łańcucha.

Uruchom poniższy skrypt w jednym z terminali i obserwuj liczniki pakietu podczas generowania ruchu za pomocą komend:

  • ping wp.pl
  • lynx wp.pl
#!/bin/bash
# reguly nie sluza zadnej akcji
# na końcu skryptu wywoływana jest komenda iptables wyświetlająca listę reguł i statystyki
 
# czyszczenie regul firewalla
 
iptables -F
iptables -Z
iptables -X
 
# domyslna polityka
 
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
 
# ruch wychodzacy z komputera
 
iptables -I OUTPUT -p tcp --dport 80
iptables -I OUTPUT -p tcp --dport 22
iptables -I OUTPUT -p udp --dport 53
 
# serwer lokalny
 
iptables -I OUTPUT -p tcp --sport 80
iptables -I OUTPUT -p tcp --sport 22
iptables -I OUTPUT -p udp --sport 53
 
# stan polaczen
 
iptables -I OUTPUT -p tcp -m state --state ESTABLISHED,RELATED
iptables -I OUTPUT -p udp -m state --state ESTABLISHED,RELATED
 
# ping
 
iptables -I OUTPUT -p icmp
 
# ruch przychodzacy do komputera
 
iptables -I INPUT -p tcp --dport 80
iptables -I INPUT -p tcp --dport 22
iptables -I INPUT -p udp --dport 53
 
# serwer lokalny
 
iptables -I INPUT -p tcp --sport 80
iptables -I INPUT -p tcp --sport 22
iptables -I INPUT -p udp --sport 53
 
# stan polaczen
 
iptables -I INPUT -p tcp -m state --state ESTABLISHED,RELATED
iptables -I INPUT -p udp -m state --state ESTABLISHED,RELATED
 
# ping
 
iptables -I INPUT -p icmp
 
# obserwacja ruchu
 
watch -n 1 "iptables -L -v"

Testowanie

Oprócz uniwersalnego ping, do testowania reguł firewalla z pomocą przychodzi wiele komend systemu.

Aby wyświetlić reguły tablicy filter:

iptables -L -v
watch -n 1 "iptables -L -v"

Aby wyświetlić reguły tablicy NAT:

iptables -t nat -L -v

Aby obserwować ruch na interfejsach:

tcpdump -p -i eth0
wireshark

Aby sprawdzić, czy możliwa jest komunikacja z wybranym portem:

nmap -p 80 ADRES-IP
telnet ADRES-IP 80

Aby przetestować połączenia klient-serwer nie trzeba konfigurować i uruchamiać ogromnych usług sieciowych, wystarczy narzędzie netcat (plik binarny to nc).

# serwer otwiera port 80-ty (nie trzeba uruchamiać w tym celu demona WWW):
nc -l -p 80 --tcp

# klient łączy się z serwerem:
nc ADRES-IP 80
telnet ADRES-IP 80

Masz potrzebę, aby powyższa strona była rozbudowana? - Napisz do nas!.

materialy/bezpieczenstwo/firewall.txt · ostatnio zmienione: 2014/09/21 11:36 przez mzalewski

(C) 2017 ITMZ Mariusz Zalewski