Teoria prostej zapory sieciowej (iptables i moduł śledzenie połączeń)

Najprostsza zapora sieciowa ma kilka zadań do spełnienia:

  • wpuszczać połączenia na porty, które chcemy udostępniać
  • odrzucać wszystkie pozostałe połączenia
  • pozwalać na połączenia z naszej sieci wewnętrznej oraz z naszego komputera.

Dodatkowo może zapisywać wszystkie, lub tylko wybrane, odrzucone pakiety w celu późniejszego stwierdzenia czy nie nastąpiła próba włamania.

Przykład prostego firewalla

Załóżmy, iż nasz serwer ma pełnić rolę:

  • serwera poczty (SMTP – port 25 oraz POP3 – port 110)
  • serwera ssh (port 22)
  • serwer ftp (port 21)
  • serwer WWW (port 80)

 

Na początek usuwamy stare reguły, łańcuchy zdefiniowane przez nas oraz liczniki:

iptables -F -X -Z

Następnie pozwalamy na otwarcie połączeń tylko na wybrane porty:

iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 21 -m state --state NEW -j ACCEPT
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 22 -m state --state NEW -j ACCEPT
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 25 -m state --state NEW -j ACCEPT
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 80 -m state --state NEW -j ACCEPT
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 110 -m state --state NEW -j ACCEPT

Wykorzystujemy tutaj moduł śledzenia połączeń (-m state) i pozwalamy jedynie na otwieranie nowych połączeń (–state NEW). Logicznym dalszym krokiem jest utrzymanie otwartych połączeń oraz zezwolenie na połączenia pomocnicze (np. aktywnego ftp).

iptables -A INPUT -s 0.0.0.0/0 -m state --state ESTABLISHED, REALATED -j ACCEPT

Co zrobić z zapytaniami do identa (port 113)? Cóż, jeżeli chcemy na nie zezwolić to podajemy regułkę podobną do tych wyżej, jeżeli natomiast chcemy zwiększyć anonimowość naszych użytkowników odrzućmy je:

iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 113 -m state --state NEW -j REJECT

Resztę pakietów gubimy, ma to na celu spowolnienie skanowania naszego serwera:

iptables -A INPUT -s 0.0.0.0/0  -j DROP

Dodatkowe możliwości

Możemy dodatkowo ograniczyć ilość przyjmowanych pakietów icmp echo request . Pozwoli to ograniczyć efekty ataku polegającego na zalewaniu naszego komputera dużą ilością takich pakietów.

iptabels -A INPUT -p icmp --icmp-type echo-request -s 0.0.0.0/0 -m limit --limit 1/s -j ACCEPT
iptabels -A INPUT -p icmp --icmp-type echo-request -s 0.0.0.0/0  -j DROP

Dodaj komentarz