lfirewall czyli firewall by LiNio

"Doskonałe" narzędzie aby okiełznać iptables w prosty i przejżysty sposób naszego śp. guru,
Szkoba, że nie będzie następnej wersji, ale któż to wie może kiedyś...
Ktoś kto nie widział tego narzędzia w akcji to nie wie o czym piszę!

!!![Start|HomePage]/[microHowto]/[Debian firewall (lfirewall) - maskarada i firewall w Debianie|Debian_lfirewall]

!Firewall i udostępnianie internetu

Jeśli chcesz zabezpieczyć swoją maszynkę i/lub udostępnić internet komputerom w sieci lokalnej, możesz do tego wykorzystać pakiet lfirewall

Co umożliwia ten pakiet? Wszystko to co iptables :) (wymaga więc, aby było zainstalowane jądro w wersji 2.4 lub nowsze oraz pakiet iptables). Pakiet pozwala na:

!Jakie są zalety stosowania pakietu lfirewall?

Zaleta to stosowanie pliku konfiguracyjnego =/etc/lfirewall/lfirewall.conf=, w którym są zapisywane makropolecenia - dzięki czemu łatwiej jest tak opisany firewall modyfikować. Makropolecenia mogą być wpisywane po angielsku, polsku, lub w dowolnym innym języku (o ile komuś zechce się utworzyć odpowiedni plik =/usr/lib/lfirewall/aliases.*=).

!Uwaga Wersja 0.7 i nowsze zostały przepisane od nowa w perlu - startuje dużo szybciej (poprzednie wersje działały koszmarnie wolno) - czas startu na celeronie 333 wersji 0.5 - 260s, dla wersji 0.7 to 3,3s.

Po ściągnięciu pakietu http://wonder.pl/pub/debian/deby/lfirewall/lfirewall_0.8.3_all.deb należy go zainstalować poleceniem:

dpkg -i lfirewall*deb

lub dopisać linię do pliku =/etc/apt/sources.list=

deb http://asterix.wonder.pl/pub/debian/deby/lfirewall/ ./

i wykonać:

apt-get update
apt-get install lfirewall

Można też skorzystać z svn: svn co https://www.wonder.pl/svn/lfirewall/current

Opis zmian, przeglądanie projektu: https://www.wonder.pl/lfirewall/

Firewall nie zostanie uruchomiony, jeśli plik konfiguracyjny =/etc/lfirewall/lfirewall.conf= jest pusty (lub posiada jedynie puste linie/linie rozpoczynające się znakiem komentarza).

Może na początek najprostszy firewall:

use pl
usun_reguly
usun_lancuchydomyslnie_ignoruj
domyslnie_akceptuj OUTPUTakceptuj_nawiazane
akceptuj_powiazaneakceptuj lo

Powyższe polecenia zrobią z naszej maszyny w miarę ;) bezpieczny firewall. Wszystkie połączenia przez nas zainicjowane i związane z nimi będą przepuszczane, pozostałe pakiety będą ignorowane.

Polecenie lfirewall może zostać wywołane z parametrami:

LiNiO firewall v 0.8 :: Robert Litwiniec linio@gnu.pl lfirewall --debug]|[-q|--quiet? [-c|--config config_file] [[-v|--version]|stop|status|start|restart|reload]-d|--debug -c|--config config_file -q|--quiet -v|--version stop status start|restart|reload

Polecenia pakietu lfirewall, które mogą być umieszczone w pliku konfiguracyjnym:

Polecenie | Przykład polecenia | Opis | ------------ | :-----------: | :-----------: | use język| use pl| pozwala na stosowanie polskich nazw dla makropoleceń | policy ALL| policy ALL DROP| pozwala na określenie domyślnej reguły (ACCEPT, DROP) dla podanego jako parametr, lub (gdy poda się słowo ALL dla wszystkich wbudowanych łańcuchów) policy_accept| policy_accept OUTPUT| domyślnie akceptuje pakiety przechodzące przez podany łańcuch (lub jeśli nie podano - przez wszystkie) policy_drop| policy_drop INPUT| domyślnie ignoruje pakiety przechodzące przez podany (lub wszystkie) łańcuchy policy_reject| policy_reject INPUT| domyślnie odrzuca pakiety przechodzące przez podany (lub wszystkie) łańcuchy flush_rule| usun_regule| usuwa reguły z podanego łańcucha (lub wszystkich, jeśli bez parametrów) flush_rules| usun_reguly| usuwa reguły z wszystkich łańcuchów delete_chain| usun_lancuch| usuwa łańcuch o podanej nazwie (lub wszystkie, jeśli nie podano nazwy łańcucha) delete_chains| usun_lancuchy| usuwa wszystkie łańuchy accept| akceptuj lo| akceptuje podaną regułkę accept_new| akceptuj_nowe tcp ssh| akceptuje nowe pakiety accept_established| akceptuj_nawiazane| akceptuj pakiety należące do już nawiązanych połączeń accept_related| akceptuj_powiazane| akceptuje pakiety należące do pakietów powiązanych z nawiązanymi połączeniami accept_invalid| akceptuj_bledne| akceptuje pakiety błędne accept_untracked| akceptuj_untracked| akceptuje pakiety nie należące do śledzonych połączeń accept_rpc| akceptuj_rpc| akceptuje pakiety należące do rpc queue| kolejkuj| przesłanie pakietów do przestrzeni użytkownika (target QUEUE) queue_new| | ... queue_established| | ... queue_related| | ... queue_invalid| | ... queue_untracked| | ... queue_rpc| | ... drop| ignoruj eth0 tcp 8080| Ignoruje pakiety (przychodzące na eth0 port tcp 8080) drop_new| | ... drop_established| | ... drop_related| | ... drop_invalid| | ... drop_untracked| | ... drop_rpc| | ... reject| odrzuc| odrzucenie pakietu reject_new| odrzuc_nowe| odrzucenie nowych pakietów reject_established| odrzuc_nawiazane| odrzucenie pakietów należących do nawiązanych połączeń reject_related| odrzuc_powiazane| odrzucenie powiązanych pakietów reject_invalid| odrzuc_bledne| odrzucenie błędnych pakietów reject_untracked| odrzuc_untracked| odrzucenie nieśledzonych pakietów reject_rpc| odrzuc_rpc| odrzucenie pakietów związanych z rpc log| loguj| loguje pakiety. log_new| loguj_nowe tcp ssh| loguje nowe pakiety (tutaj skierowane na port ssh) log_established| loguj_nawiazane| loguje pakiety należące do nawiązanych połączeń log_related| loguj_powiazane| loguje pakiety powiązane z nawiązanymi połączeniami log_invalid| loguj_bledne| loguje pakiety błędne log_untracked| loguj_untracked| loguje pakiety nieśledzone masquerade| maskarada 192.168.0.0/24| włącza maskaradę dla sieci 192.168.0.0 (i jeśli nie była wcześniej podana domyślna polityka dla ruchu przekazywanego - FORWARD - ustawia ją na ACCEPT) redirect| przekieruj eth0 tcp www 192.168.0.1:8080| Przekierowanie pakietów przychodzących na interfejs eth0 będących pakietami tcp, które są skierowane na port ww na maszynę 192.168.0.1 na port 8080 echo| echo "Cześć. Startuję firewall."| Wypisuje tekst iptables| iptables -t nat -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu| Wykonuje polecenie iptables

~[nazwa_łańcucha] ~[interfejs_wejściowy ~[interfejs_wyjściowy]] ~[adres_źródła ~[adres_MAC] ~[adres_celu]] ~[protkół ~[typ_protkołu_ICMP | port_docelowy | port źródłowy ~[port_docelowy]

Udostępnienie internetu (dla wszystkich maszyn z sieci 192.168.0.0):

use pl maskarada 192.168.0.0/24

A teraz troszkę bardziej rozbudowany przykład: Uwaga! W poniższym przykładzie przy maskaradzie musi zostać ustawiona polityka dla łańcucha FORWARD na ACCEPT (ponieważ wcześniej polityka domyślna dla INPUT, OUTPUT i FORWARD została ustawiona na DROP przez wywołanie domyslnieignoruj_ . W następnej linijce ustawione jest zezwolenie dla łańcucha wyjściowego - domyslnieakceptuj OUTPUT_

use pl usun_reguly usun_lancuchy

domyslnie_ignoruj domyslnie_akceptuj OUTPUT

akceptuj_nawiazane akceptuj_powiazane

akceptuj lo akceptuj eth0

akceptuj ppp0 tcp auth,domain,smtp,www,https,nntp akceptuj ppp0 udp domain

PBS="ppp0 123.456.789.000" akceptuj $PBS tcp ssh,57000

VIZ="ppp0 234.567.890.111" akceptuj $VIZ tcp ssh

TKGKP="ppp0 345.678.900.111" akceptuj $TKGKP tcp ssh

odrzuc ppp0

maskarada 192.168.0.11 192.168.0.21 192.168.0.22 domyslnie_akceptuj FORWARD

przekierowanie z sieci wewnętrznej (eth0) ruchu wychodzącego www na port 8080 na serwer 192.168.0.1

przekieruj eth0 tcp www 192.168.0.1:8080

Maskarada - zezwolenie na dostęp wybranym maszynom do wybranych portów konkretnych ip - pozostałe nie mają dostępu:

  # ustawienia maskarady
  maskarada 192.168.10.2/32
  maskarada 192.168.10.13/32
  maskarada 192.160.10.25/32
  maskarada 192.168.10.150/32  akceptuj_nawiazane FORWARD
  akceptuj_powiazane FORWARD  akceptuj FORWARD 192.168.10.2   tcp smtp,pop3,pop3s,imap2,imap3,imaps,domain
  akceptuj FORWARD 192.168.10.13  tcp smtp,pop3,pop3s,imap2,imap3,imaps,domain
  akceptuj FORWARD 192.168.10.150 tcp smtp,pop3,pop3s,imap2,imap3,imaps,domain
  akceptuj FORWARD 192.168.10.2   udp domain
  akceptuj FORWARD 192.168.10.13  udp domain
  akceptuj FORWARD 192.168.10.150 udp domain  #setbs - dostęp stacji 192.168.10.25 do konkretnych portów maszyny X.X.X.X
  akceptuj FORWARD 192.168.10.25 X.X.X.X  tcp 500,264,18264
  akceptuj FORWARD 192.168.10.25 X.X.X.X  tcp 500,264
  akceptuj FORWARD 192.168.10.25 X.X.X.X  udp  odrzuc FORWARD

Autor: [LiNiO|AutorLinio]. %%%Wersja 1.07 2002.08.26 %%%Wersja 1.08 2004.10.24 - dopisanie apt-get update, apt-get install, przykład bardziej restrykcyjnej maskarady %%%Wersja 1.09 2005.09.24 - aktualizacja linka do najnowszej wersji, aktualizacja tabelki %%%Wersja 1.10 2005.09.25 - aktualizacja linka do najnowszej wersji, aktualizacja opisu