Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
pl:przewodniki:prosty-firewall-dla-stacji-roboczej [2007/11/08 01:26]
qwiat
pl:przewodniki:prosty-firewall-dla-stacji-roboczej [2008/10/31 00:23] (current)
qwiat firestarter
Line 1: Line 1:
-Poniżej przestawię jak stworzyć ​prosty i jednocześnie skuteczny firewall oparty o **Netfilter**. Zaczynamy od instalacji programu iptables: +Jeśli nie odpowiadają nam graficzne narzędzia (np. firestarter) do konfiguracji filtra pakietów, możemy za pomocą kilku regułek iptables ​stworzyć ​prostą, ale skuteczną zaporę. Zaczynamy od instalacji programu iptables: 
-<​code>​poldek -i iptables</​code>​+<​code>​poldek -i iptables</​code>​ 
  
 ====== Podstawowa wersja ====== ====== Podstawowa wersja ======
Line 16: Line 17:
 # iptables -A INPUT -m state --state ESTABLISHED,​RELATED -j ACCEPT</​code>​ # iptables -A INPUT -m state --state ESTABLISHED,​RELATED -j ACCEPT</​code>​
  
-Pierwszy wiersz usuwa istniejące regułki, trzy kolejne ustawiają domyślną politykę, czwarty dopuszcza ruch dla interfejsu pętli zwrotnej a ostatni wpuszcza ruch z zewnątrz pod warunkiem że był nawiązany z lokalnej maszyny. Domyślna polityka DROP powoduje, że odebrane pakiety które nie pasują do regułek będą całkowicie ignorowane. Powyższy przykład to w pełni działający firewall, dzięki temu, że Netfilter jest filtrem stanowym można było znacznie zmniejszyć liczbę koniecznych regułek.+Pierwszy wiersz usuwa istniejące regułki, trzy kolejne ustawiają domyślną politykę, czwarty dopuszcza ruch dla interfejsu pętli zwrotnej a ostatni wpuszcza ruch z zewnątrz pod warunkiem że był nawiązany z lokalnej maszyny. Domyślna polityka ​**DROP** powoduje, że odebrane pakiety które nie pasują do regułek będą całkowicie ignorowane. Powyższy przykład to w pełni działający firewall. Dzięki temu, że Netfilter jest filtrem stanowym można było znacznie zmniejszyć liczbę koniecznych regułek.
  
  
-====== Dodatkowe regułki ======+ 
 +====== Dodatkowe regułki ​(opcjonalne) ​======
  
 Opisane poniżej dodatkowe regułki możemy wykonać po podstawowych Opisane poniżej dodatkowe regułki możemy wykonać po podstawowych
Line 25: Line 27:
 ==== Ident ==== ==== Ident ====
  
-Wiele usług takich jak np. FTP czy SMTP, przed rozpoczęciem sesji próbuje połączyć się z klientem za pomocą usługi **Ident**. Użycie filtra w najprostszej postaci (jak powyżej) zablokuje takie żądanie, co z kolei zaowocuje kilkusekundowym opóźnieniem. Nie wpływają one na poprawność komunikacji,​ ale są dosyć uciążliwe. Zakładam, że na Twojej maszynie nie działa Ident więc będziemy odrzucać tego rodzaju połączenia za wysłaniem pakietu z odmową połączenia.+Wiele usług takich jak np. FTP czy SMTP, przed rozpoczęciem sesji próbuje połączyć się z klientem za pomocą usługi **Ident**. Użycie filtra w najprostszej postaci (jak powyżej) zablokuje takie żądanie, co z kolei zaowocuje kilkusekundowym opóźnieniem. Nie wpływają one na poprawność komunikacji,​ ale są dosyć uciążliwe. Zakładam, że na Twojej maszynie nie działa Identwięc będziemy odrzucać tego rodzaju połączenia za wysłaniem pakietu z odmową połączenia.
  
-# iptables -A INPUT -p tcp --dport 113 -j REJECT+<​code>​# iptables -A INPUT -p tcp --dport 113 -j REJECT</​code>​
  
-==== Wyjątki ​====+ 
 +==== Dostęp do usług ​====
  
 Załóżmy, że chcemy by do naszego komputera był dostęp na wskazane usługi, poniżej przedstawiamy kilka przykładów:​ Załóżmy, że chcemy by do naszego komputera był dostęp na wskazane usługi, poniżej przedstawiamy kilka przykładów:​
   * Dostęp do SSH z całego świata:   * Dostęp do SSH z całego świata:
 <​code>#​ iptables -A INPUT -p tcp --dport ssh -j ACCEPT</​code>​ <​code>#​ iptables -A INPUT -p tcp --dport ssh -j ACCEPT</​code>​
-  * Dostęp do wszystkich usług z sieci lokalnej:+  * Dostęp do wszystkich usług z sieci lokalnej ​(np. 192.168.0.0/​24):
 <​code>#​ iptables -A INPUT -s 192.168.0.0/​24 -j ACCEPT</​code>​ <​code>#​ iptables -A INPUT -s 192.168.0.0/​24 -j ACCEPT</​code>​
  
  
 +
 +
 +==== ICMP echo ====
 +
 +Naiwne poradniki bezpieczeństwa sieciowego zalecają ignorowania zapytań o ICMP ECHO (i nie tylko), prawda jest jednak taka, że technik sprawdzenia działania hosta jest całkiem sporo, a w szczególności w sieci lokalnej. Ataki DoS typu ping flood, są jednymi z najbardziej prymitywnych i najmniej skutecznych,​ dlatego możemy spokojnie darować sobie blokowanie pingów. Poniżej zamieściłem regułkę dopuszczającą do dwóch pakietów ICMP PING na sekundę (wersja dla bardziej paranoicznych):​
 +
 +<​code>#​ iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 2/s -j ACCEPT</​code>​
 +
 +
 +====== Skrypt ======
 +
 +Wydawanie kolejno tych poleceń potrafi być bardzo uciążliwe,​ dlatego umieścimy je w skrypcie powłoki, łącznie z kilkoma przykładowymi regułkami dodatkowymi:​
 +<​code>#​!/​bin/​sh
 +IT=/​usr/​sbin/​iptables
 +
 +$IT -F
 +
 +# polityka domyslna
 +$IT -P INPUT DROP
 +$IT -P FORWARD DROP
 +$IT -P OUTPUT ACCEPT
 +
 +# ruch dopuszczony
 +$IT -A INPUT -i lo -j ACCEPT
 +$IT -A INPUT -m state --state ESTABLISHED,​RELATED -j ACCEPT
 +$IT -A INPUT -p tcp --dport ssh -j ACCEPT
 +
 +# specjalne: ident
 +$IT -A INPUT -p tcp --dport 113 -j REJECT
 +</​code>​
 +
 +Zapisujemy kod do pliku, nadajemy mu prawo wykonania i już możemy używać skrypt.
 +
 +
 +
 +
 +
 +
 +====== The Right Way™ of PLD ======
 +
 +Modyfikacja skryptów startowych jest pewną ingerencją w sumy kontrolne RPM, powodującą,​ że takowy plik niezmieniony jest zamieniany na nową wersję, np. powodującą prawidłowe skonfigurowanie jakiejś nowej opcji, podczas gdyż na zmodyfikowanych plikach przy aktualizacji pakietów są generowane pliki ***.rpmnew**,​ co nieraz jest przyczyną nowych postów na forum/​liście dyskusyjnej przez zdezorientowanych użytkowników.
 +
 +Jeżeli jesteś zwolennikiem metod nazywanych '​koszernymi',​ to zamiast każdorazowego wykonywania ​ skryptu konfigurującego przy starcie systemu, należy zainstalować dodatkowo pakiet iptables-init :
 +<​code>​
 +# poldek -i iptables-init
 +</​code>​
 +Następnie ustanawiasz wszystkie potrzebne reguły iptables, bądź bezpośrednio z linii poleceń, lub wykonując swój ulubiony skrypt.
 +Teraz wykonujesz zrzut obecnie obowiązujących reguł iptables:
 +<​code>​
 +# service iptables save
 +</​code>​
 +Przywrócenie zapisanych reguł (np. po eksperymentach) :
 +<​code>​
 +# service iptables start
 +</​code>​
 +Porzucenie tych reguł :
 +<​code>​
 +# service iptables stop
 +</​code>​
 +
 +I to tyle... Przy każdym restarcie systemu będą przywracane te reguły z pliku **/​etc/​sysconfig/​iptables** zależnie od tego jak mamy skonfigurowany start/stop w odpowiednich runlevel-ach SysV. Domyślnie po instalacji w 3-im i 5-tym jest na start, jak w wiekszości usług dostępnych „spod poldka”.
 +
 +//Dopisał : **Daniel Dawid Majewski** 10 lutego 2008r. o godz. 22:20//
pl/przewodniki/prosty-firewall-dla-stacji-roboczej.1194481589.txt.gz · Last modified: 2007/11/08 01:26 by qwiat
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0 Powered by Lighttpd - fly light