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 00:52]
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**. Nie da się w zasadzie napisać uniwersalnego filtra pakietów dla serwera, a tym bardziej routera, w każdym tego rodzaju zastosowaniu administrator przygotowuje zestaw reguł "szyty na miarę"​. Firewalle dla stacji roboczych mają chronić usługi przed potencjalnymi atakami i jednocześnie pozwalać swobodne korzystanie z sieci. Dodatkowo taki filtr powinien być jak najbardziej bezobsługowy.+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>​ 
 + 
 + 
 +====== Podstawowa wersja ====== 
 + 
 +Nie da się w zasadzie napisać uniwersalnego filtra pakietów dla serwera, a tym bardziej routera, w każdym tego rodzaju zastosowaniu administrator przygotowuje zestaw reguł "szyty na miarę"​. Firewalle ​dla stacji roboczych są dużo mniej skomplikowane,​ dzięki czemu można pokusić się o napisanie stosunkowo uniwersalnego zestawu regułek. Zapory ​dla stacji roboczych mają chronić usługi przed potencjalnymi atakami i jednocześnie pozwalać swobodne korzystanie z sieci. Dodatkowo taki filtr powinien być jak najbardziej bezobsługowy.
  
 Oto podstawowy zestaw reguł: Oto podstawowy zestaw reguł:
Line 11: 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.
 +
 +
 +
 +====== Dodatkowe regułki (opcjonalne) ======
 +
 +Opisane poniżej dodatkowe regułki możemy wykonać po podstawowych
 +
 +==== 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.
 +
 +<​code>#​ iptables -A INPUT -p tcp --dport 113 -j REJECT</​code>​
 +
 +
 +==== 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:​
 +  * Dostęp do SSH z całego świata:
 +<​code>#​ iptables -A INPUT -p tcp --dport ssh -j ACCEPT</​code>​
 +  * 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>​
 +
 +
 +
 +
 +==== 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.1194479526.txt.gz · Last modified: 2007/11/08 00:52 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