HOME
DO_STR_GLOWNEJ_WYSZUKIWARKI
 
 
SHOREWALL

 

Pobierz spakowaną witrynę gorzow-wlkp.pl/linux

Jeżeli pragniesz poznać Linuksa Mandrake (obecnie Mandriva), to... dobrze trafiłeś. Witryna została zauważona przez twórców magazynu KOMPUTER ŚWIAT 5/2004(141) str. 46 poprzez umieszczenie linku oraz magazynu CHIP 4/2004 (str.114) poprzez umieszczenie artykułu opisującego ten serwis internetowy. Jak na hobbystyczną stronę o Linuksie to miłe ;) Acha... na stronie mandrakelinux.pl/informacje podano też link z opisem cytuję "duży zbiór praktycznych informacji o Mandrake" (mam ją w swoim archiwum - klub.chip.pl/twarogal).

Zapraszam do zadawania pytań na FORUM oraz mailem. Chętnie udzielę (bezpłatnie) odpowiedzi. Oficjalne ceny za jedną poradę na stronie MandrakeSoftPL (mam ją w moim archiwum z dnia 2.05.2004) wahają się od 20 do 350 zł.

 


 

Niniejsza strona plus dodatkowe przykłady dotyczą Shorewalla 1.3 oraz 1.4 zainstalowanych na Mandrake z serii 9.x. Niestety logika nowszych wersji shorewalla instalowanych na Mandrake 10 na tyle się różni od dotychczasowych, że wymaga osobnych opisów. Jak będę miał czas, to wykonam stosowne artykuły.

 


 
Zapewnienie bezpieczeństwa serwerowi i domowej sieci to zadanie złożone. Podstawowym narzędziem zabezpieczającym komputer jest firewall. Linux na Kernelu 2.2 używa firewalla opartego na ipchains, natomiast na Kernelu 2.4 oraz 2.6 używa iptables. Ponieważ MandrakeSoft od wersji Mdk9.0 zarzuciło prace nad Kernelem 2.2, a oparło się na 2.4 (a od wersji Mdk10 na Kernelu 2.6) - nie mamy wielkiego wyboru i musimy poznać iptables. Niestety, ci którzy uczyli się iptables wiedzą, że jest to droga przez mękę. Chyba dlatego powstały projekty shorewall oraz bastille. Jednak poznanie tych narzędzi jest... tak samo trudne jak iptables ;( . Czy półamatorzy w administrowaniu Linuksem muszą z nich korzystać? Moim zdaniem nie. Można odinstalować shorewalla i wprowadzić do nowoutworzonego pliku /etc/rc.d/rc.firewall skrypt ustalający parametry iptables. Jest on autorstwa admina z TPSA, który bezinteresownie rozpisał go dla mnie i pozwolił udostępnić na mojej stronce www. Oczywiście jeżeli dopiero zaczynasz przygodę z sieciami i Linuksem, to wybierz Shorewalla, który w podstawowych zadaniach da się dosyć przyzwoicie konfigurować z okienek KDE. Inny skrypt znaleziony w necie pod adresem http://www.neutrinus.com/linux/firewall nie był przeze mnie testowany i załączam go jako ciekawostkę. Polecam też opracowanie o iptables w formacie pdf.

W/w skrypty mają rozszerzenie txt, które należy w Linuksie usunąć do postaci np. rc.firewall



Istnieją internetowe strony pomagające automatycznie wygenerować skrypt iptables. Polecam: http://easyfwgen.morizot.net/gen/ z pomocnym opisem: http://linuxslackware.republika.pl (ttl nastaw na 128 i gdy sieć zadziała, to dopiero potem zmieniaj).

 
Jaka jest bezdyskusyjna zaleta shorewalla? BEZPIECZEŃSTWO. Jeżeli włamywaczowi uda się za pomocą np. exploita przejąć prawo roota, może próbować przekonfigurować firewalla swoim skryptem iptables. Na serwerze nadzorowanym przez shorewalla spotka go przykra niespodzianka - shorewall nie zezwala na korekty ustawień iptables narzędziami zewnętrznymi. Trzeba go znać, a to jest problem, gdyż jak na razie niewielu o nim słyszało ;)

 
Przykład konfigów Shorewalla z Mandrake 9.1 na komputerze podłaczonym do Neostrady (na modemie USB Sagem).

 


 
Strona domowa projektu SHOREWALL: http://www.shorewall.net/

W Mandrake 9.0 po raz pierwszy natknąłem się na nieznane mi dotychczas narzędzi do konfigurowania iptables - SHOREWALL. Jest to zestaw scryptów, które mają podobno ułatwć konfigurowanie firewalla. Największą jego zaletą jest jego wada: niewielka ilość opracowań. Ponieważ nie jest zbyt znany, utrudnia konfigurowanie firewalla, ale i utrudnia przeprowadzenie potencjalnego ataku na serwer. Shorewall w połączeniu z msec stanowią niezłą parę programowo wspomagającą zabezpieczanie Linuksa Mandrake. W shorewallu zniknęły standardowe pliki konfiguracyjne rc.*firewall, co puściło z dymem całą dotychczasową moją wiedzę. Rozpocząłem więc powolne, prywatne dochodzenie...

Na pierwszy rzut poszedł katalog /etc/shorewall zawierający aż 19 plików konfiguracyjnych. Stanowią one logiczną całość, bo zostały skonfigurowane podczas instalacji systemu lub później poprzez MANDRAKE CONTROL CENTER- BEZPIECZEŃSTWO- FIREWALL (lub poleceniem drakfirewall czyli /usr/sbin/drakfirewall , ewentualnie mcc). Zmieniając ustawienia narzedziem z KDE regularnie sprawdzałem, które pliki mają świeże daty modyfikacji. Na szczęście było ich zaledwie 5 szt.: /etc/shorewall/interfaces, masq, policy, rules, zones. Plik główny to shorewall.conf . Inny przydatny plik do ręcznej modyfikacji to tos.

 

*

 

Zajmiemy się następującym układem: serwer-router łączy się z Internetem poprzez modem SDI (ppp0) oraz udostępnia Internet do domowej sieci poprzez eth0. Na pokładzie serwera-routera są włączone usługi http, https, ftp oraz np. ssh. Logika działania shorewalla jest następująca: po ustaleniu w pliku /etc/shorewall/interfaces dostępnych interfejsów (modem, karty sieciowe itp), tworzone są w pliku /etc/shorewall/zones tzw. strefy. Pierwszą strefą jest oczywiście "internet" (net). Następnie strefa pośrednia, zdefiniowana w pliku /etc/shorewall/shorewall.conf (pkt. fw) łącząca Internet z maskowaną domową siecią, czyli nasz serwer-router (fw). Aby klienty w domowej sieci mogły widzieć usługi internetowe (np. odczyt stronek www na wp.pl) należy narzucić na ich wewnętrzne adresy IP dodatkowe bity porządkowe tzw. maskowanie - ta strefa zostanie nazwana "maskarada" (masq). To właśnie ze strefy masq poprzez fw (serwer-router) idzie wezwanie do strefy net, gdy z klienta w domowej sieci ktoś chce załadować stronę z np. wp.pl . Oczywiście nie wszystkie pakiety wędrujące po domowej sieci muszą mieć bity porządkowe maskujące. Takie niemaskowane pakiety wędrujące po domowej sieci będą należeć do strefy lan. Uwaga: stosujemy regułę, że strefa lan nie ma łączności z Internetem. Jeżeli będziemy chcieli połączyć się z domowej sieci z Internetem, to musimy pakiety wysłać poprzez strefę masq do fw i dopiero później do lan.

Czas na ustawianie regułek. W pliku policy ustawimy regułki wskazujące firewallowi co ma robić, gdy jakieś zdarzenie nie zostanie określone w pliku rules. Tak więc generalnie w pliku "policjant" (policy) blokujemy wszelkie możliwości, a w pliku rules dopuszczamy do działania. Zajmiemy się teraz najprostszą regułką w pliku rules
ACCEPT fw net tcp 80 -
pozwoli Ci z pokładu serwera-routera na przeglądanie WWW. Za to taki zapis:
ACCEPT fw net:123.123.123.123 tcp 80 -
pozwoli Ci na przeglądanie WWW tylko ze strony pod adresem 123.123.123.123

Jeżeli w pliku policy napiszesz: net all DROP info , a w pliku rules nie dasz zezwolenia na np. pobieranie Twoich stronek www, to wezwanie na Twój port 80 zostanie DROP, czyli odrzucone. Parametr info zmusi shorewalla do zapisania nielegalnego zdarzenia do dziennika info czyli do dziennika systemowego /var/log/syslog, którego bieżące dane są wyświetlane na powłoce 12 (uruchomisz ją klawiszami CTRL ALT F12).

 

*

 

Poniższe, przetłumaczone pliki konfiguracyjne pobrałem z Mandrake 9.0.

 

 

 

 

Plik /etc/shorewall/shorewall.conf     jest prostym plikiem, więc uznałem, że wystarczy przetłumaczyć tekst z angielskiego na polski. Uwaga: z przyczyn technicznych usunąłem haszowanie komentarzy.

 


 

Shorewall wersja 1.3 - plik konfiguracyjny.

Tekst zaznaczony na niebiesko jest aktywnym wpisem konfiguracyjnym.
Jest to program GPL [http://www.gnu.org/copyleft/gpl.htm]
Ten plik konfiguracyjny powinien być umieszczony w /etc/shorewall
( c ) 1999, 2000, 2001, 2002 - Tom Eastep (teastep@shorewall.net)

 

 

########################################

NAZWA STREFY (zone) ŚCIANY OGNIOWEJ

 

Nazwa strefy ściany ogniowej FW:

wpisz dwa myślniki -- jeśli nie jest ustawiona (ewentualnie gdy jest ustawiona jako pusty ciąg znaków) lub wpisz znak fw


FW=fw



########################################

PLIK ZAMYKAJĄCY


Ustaw, by wskazać plik zamykający, który może być oczekiwany przez Twoje skrypty typu init. Dla RedHat, Mandrake powinien to być plik /var/lock/subsys/shorewall. Na Linuksie Debian powinien to być plik /var/state/shorewall. Jeśli twoje skrypty init nie używają plików zamykających, ustaw tę opcję jako """".


SUBSYSLOCK=/var/lock/subsys/shorewall



########################################

KATALOG TMP czyli TYMCZASOWEGO STANU SHOREWALL


Jest to katalog, w którym AKTYWNA ściana ogniowa przechowuje informacje o swoim stanie.


STATEDIR=/var/lib/shorewall



########################################

POZWOLENIE NA PODOBNE POŁĄCZENIA


Ustaw to na "yes" lub "Yes" jeśli chcesz zaakceptować żądania połączeń na wszystkich interfejsach, hostach lub strefach, które są podobne do już istniejących połączeń (np. akceptujesz WSZYSTKIE połączenia typu ftp). Jeśli powiesz w tym miejscu "no", będziesz musiał określić (WYRAŹNIE!) zasadę "related" w /etc/shorewall/rules , po to aby precyzyjnie zaakceptować tego typu połączenia z uwzględnieniem poszczególnych stref lub hostów.


ALLOWRATED=yes



########################################

KATALOG MODUŁU JĄDRA


Jeśli Twoje moduły jądra systemu (Netfilter) są w katalogu innym niż /lib/modules/ 'uname -r' /kernel/net/ipv/netfilter , wówczas określ ten katalog.

Przykład: MODULESDIR=/etc/modules.


MODULESDIR=



########################################

OGRANICZANIE WIELKOŚCI LOGÓW


Kolejne dwie zmienne mogą być używane, by kontrolować częstotliwość przetwarzania logów. LOGRATE jest wyrażany jako liczba, po której następuje opcjonalny przyrostek /second , /minute , /hour , /day i określa maksymalną szybkość z jaką poszczególna wiadomość przyjdzie. LOGBURST ustala maksymalny początkowy rozmiar (burst), który będzie zapisywany. Jeśli zostanie ustawiony pusty, system domyślnie dobierze wartość 5.


Przykład:

LOGRATE=10/minute
LOGBURST=5


Jeśli OBIE zmienne są ustawione na puste, wtedy zapisywanie odbędzie się bez limitów.


LOGRATE=
LOGBURST=



########################################

POZIOM, W KTÓRYM ZAPISUJE SIĘ PAKIETY "NIECZYSTE"


Ta zmienna określa poziom, w którym ZNIEKSZTAŁCONE lub NIEPRAWIDŁOWE pakiety są zapisywane pod interfejsową opcją "dropunclean". Jeśli ustawisz zmienną LOGUNCLEAN na wartość pustą (np. LOGUNCLEAN= ), zniekształcone lub nieprawidłowe pakiety będą spokojnie usuwane.


Wartość tej zmiennej określa także poziom, w którym zniekształcone lub nieprawidłowe pakiety zostaną zapisane pod interfejsową opcją "logunclean". Jeśli zmienna jest pusta, pakiety te nadal będą zapisywane w poziomie 'info'.


LOGUNCLEAN=info



########################################

LOKACJA ZAPISANEGO PLIKU


Ta zmienna mówi programowi /sbin/shorewall , gdzie są logi z zapisem pracy Shorewall. Jeśli opcja nie jest ustawiona lub jest pustym ciągiem znaków (np. LOGFILE="") wtedy program domyślnie wybiera /var/log/messages.


UWAGA: Zmienna LOGFILE nie kontroluje tych wiadomości. Informacji szukaj w http://www.shorewall.net/FAQ.htm#faq6


LOGFILE=/var/log/messages



########################################

UMOŻLIWIENIE WSPARCIA NAT


Prawdopodobnie pragniesz ustawić tu "Yes". Tylko bramy (gatways) nie korzystające z NAT w żadnej formie, jak SNAT, maskarada DNAT, przekierowania na portach itp. powinny powiedzieć tu "no".


NAT_ENABLED=Yes



########################################

UMOŻLIWIENIE WSPARCIA ZNIEKSZTAŁCENIA (mangle support)


WSPARCIE ZNIEKSZTAŁCENIA (mangle support) to nic innego jak możliwość dodatkowego bardziej szczegółowego i precyzyjnego ustawienia firewalla. Jeśli powiesz tu "nie", Shorewall zignoruje plik /etc/shorewall/tos i nie będzie inicjalizować zniekształconej tabeli przy włączaniu lub stopowaniu Twojej ściany ogniowej. Musisz umożliwić zniekształcenie jeśli chcesz mieć Kształtowanie Komunikacji-Transferu (Traffic Shaping) (zobacz TC_ENABLED poniżej).


MANGLE_ENABLED=Yes



########################################

UMOŻLIWIANIE FORWARDOWANIA IP


Jeśli powiesz tutaj "On" lub "on" , IPV4 Packet Forwarding będzie załączony. Jeśli powiesz "Off" lub "off", Packet Forwarding będzie wyłączony. Możesz wyłączyć forwardowanie jeżeli instalujesz Shorewall na pojedyńczym kliencie, a nie serwerze dostępowym lub jeśli chcesz, by cała komunikacja na Shorewall była nadzorowana przez proxy.


Jeśli chcesz ustawić tę zmienną na "Keep" lub "keep", Shorewall nie uniemożliwi ani nie umożliwi forwardingu.


IP_FORWARDING=On



########################################

AUTOMATYCZNE DODAWANIE NAT ADRESÓW IP


Jeśli powiesz tutaj "Yes" lub "yes" , Shorewall automatycznie doda numery IP dla każdego zewnętrznego adresu NAT , który określiłeś w /etc/shorewall/nat. Jeśli powiesz "No" lub "no", musisz dodać te aliasy samodzielnie.


ADD_IP_ALIASES=Yes



########################################

AUTOMATYCZNE DODAWANIE ADRESÓW IP SNAT


Jeśli powiesz "Yes" lub "yes" tutaj, Shorewall automatycznie doda numery IP dla każdego zewnętrznego adresu SNAT , który masz w /etc/shorewall/masq. Jeśli powiesz "No" lub "no", musisz dodać te aliasy samodzielnie.


ADD_SNAT_ALIASES=No



########################################

UMOŻLIWIANIE KSZTAŁTOWANIA KOMUNIKACJI-TRANSFERU (traffic shaping)


Jeśli powiesz tutaj "Yes" lub "yes" , to kształtowanie komunikacji-transferu (Traffic Shaping) jest możliwe na ścianie ogniowej. Jeśli powiesz "No" lub "no", kształtowanie komunikacji-transferu jest niemożliwe. Jeśli wybierzesz "Yes" , to musisz mieć zainstalowane iproute[2] (czyli "ip" oraz narzędzia "tc") oraz musisz uaktywnić powyżej opisane zniekształcanie pakietów (mangle support).


TC_ENABLED=No



########################################

DYSPOZYCJA CZARNEJ LISTY


Ustaw tę zmienną na akcję, którą chcesz wykonać wobec pakietach z systemów na Czarnej Liście. Musi być to DROP lub REJECT. Jeśli nie zostaje ustawione lub ustawione na puste, domyślnie wybrane zostanie DROP.


BLACKLIST_DISPOSITION=DROP



########################################

POZIOM ZAPISYWANIA CZARNEJ LISTY


Ustaw tę zmienną na poziom syslog na którym chcesz mieć zapisane pakiety czarnej listy (uważaj na ataki DoS powodowane takim zapisywaniem). Jeśli nie jest ustawione, nie pojawiają się żadne zapisywania pakietów czarnej listy.


BLACKLIST_LOGLEVEL=



########################################

ZAKŁADANIE MSS


Ustaw tę zmienną na "Yes" lub "yes" jeśli chcesz mieć opcję TCP "Clamp MSS to PMTU" (zakładanie MSS do PMTU). Opcja ta jest najczęściej żądana kiedy Twój internetowy interfejs jest jakimś wariantem PPP (PPTP lub PPPoE - np. NEOSTRADA). Twoje jądro systemu Kernel musi mieć w takich okolicznościach ustawione CONIG_IP_NF_TARGET_TCPMSS


Przypominam fragment z pomocy jądra:

Ta opcja dodaje TCPMSS, który pozwala Ci zmienić wartość MSS pakietów TCP SYN, po to aby kontrolować maksymalny rozmiar połączenia (zwykle wylicza się ograniczając go do rozmiaru interfejsu wychodzącego MTU minus 40).


Jest to używane do[overcome criminally braindead - nie rozumiem tego] ISP lub serwerów, które blokują pakiety ICMP Fragmentation Needed. Skutki są takie, że Twoja ściany ogniowa lub router na Linuksie działają prawidłowo, ale inne maszyny nie mogą wymieniać dużych pakietów:

1)Sieciowe wyszukiwarki nawiązują połączenie, a potem rozłączają się bez otrzymanych danych.
2) Mała poczta działa dobrze, ale duże e-maile się wieszają.
3) ssh działa w porządku, ale scp wiesza się po początkowym przedstawieniu.

Jeśli zostanie pozostawione puste lub ustawione na "No" bądź "no", opcja nie jest udostępniona.


CLAMPMSS=No



########################################

FILTROWANIE ŚCIEŻEK


Ustaw tę zmienną na "Yes" lub "yes" jeśli chcesz, aby Kernel filtrował wszystkie interfejsy (zabezpieczenie anti-spoofing).

Jeśli ta zmienna nie jest ustawiona lub jest ustawiona na pustą wartość, to domyślnie wybierane zostanie "No". W tym wypadku nadal możesz filtrować routing na wybranych interfejsach w pliku /etc/shorewall/interfaces.


ROUTE_FILTER=No



########################################

NAT PRZED ZASADAMI


Shorewall tradycyjnie uaktywnia statyczne NAT RULES, przed PORT FORWARDING RULES. Jeśli chciałbyś cofnąć rozkaz, ustaw tę zmienną na "No".

Jeśli zmienna nie jest ustawiona lub jest ustawiona na pustą wartość, to zostanie domyślnie wybrane "Yes".


NAT_BEFORE_RULES=Yes



########################################

Wsparcie MULTIPORTU


Jeśli Twój Kernel zawiera opcję dobierania multiportu (CONFIG_IP_NF_MATCH_MULTIPORT), możesz umożliwić użycie jej, poprzez wpis "Yes" lub "yes".

Pamiętaj jednak o pewnych warunkach:

  1. Jeśli umieścisz na liście więcej niż 15 oddzielonych przecinkami portów w /etc/shorewall/rules, Shorewall nie użyje opcji multiport, tylko wygeneruje oddzielną zasadę dla każdego elementu każdej listy portów.

  2. Jeśli w /etc/shorewall/rules zamieścisz zakres portów (<low port>:<high port>), to w zasadzie Shorewall nie użyje opcji multiport, a tylko wygeneruje oddzielną zasadę dla każdego elementu każdej listy portów.

Przejrzyj plik /etc/shorewall/rules by zobaczyć dodatkowe informacje na temat tej opcji.
Jeśli ta zmienna nie zostanie ustawiona lub zostanie ustawiona na pustą wartość, wybrane jest "No".



MULTIPORT=No



########################################

DNAT IP ADDRESS DETECTION


Jeżeli wybierzesz "Yes", Shorewall odczyta taką regułę z pliku /etc/shorewall/rules:
DNAT net loc:192.168.1.3 tcp 80
i przekieruje (forward) połączenie ze stacji 192.168.1.3 do portu 80 serwera, BEZ WZGLĘDU NA ORYGINALNY ADRES PRZEZNACZENIA.

Wadą jest to, że jeśli interfejs pracy sieciowej ma dynamiczny adres IP, konfiguracja ściany ogniowej będzie działać nawet, gdy adresy się zmienią. Ponadto zostanie wymuszona konfiguracja adresów IP wg reguł (rule) i to w sytuacji, gdy ściana ogniowa zostanie włączona zanim zostanie uruchomiony interfejs internetowy.

Uwaga: kolejną wadą jest fakt, że jeśli interfejs internetowy ma więcej niż jeden adres IP, powyższa reguła prześle żądania połączeń do wszystkich tych adresów; to może być niepożądane.

Po ustawieniu DETECT_DNAT_IPADDRS=Yes, zasady takie jak powyższe będą dozwolone tylko, gdy oryginalny adres przeznaczenia będzie pierwszym w kolejności (primary) adresem IP w interfejsach związanych ze strefą źródłową (source zone). Zauważ, że ustala wszystkie interfejsy względem source zone w chwili, gdy ściana ogniowa jest [re]startowana.


DETECT_DNAT_IPADDRS=No



########################################

ŁĄCZENIE PLIKÓW HOSTÓW


Tradycyjne postępowanie pliku /etc/shorewall/hosts było takie, że jeśli plik ten miał JAKIEKOLWIEK wejście do strefy (zone), to strefa musiała być zdefiniowana kompletnie w pliku hosts. Aby sprawę uprościć, zaproponowano funkcję ŁĄCZENIE PLIKÓW HOSTÓW.

Po ustawieniu MERGE_HOSTS=Yes, mamy do czynienia z ułatwieniem. Po prostu teraz będą czytane i łaczone dane z dwóch plików: /etc/shorewall/hosts oraz /etc/shorewall/interfaces .

Przykład.
Przypuśćmy że mamy następujące interfejsy i pliki hostów:

Interfejsy w /etc/shorewall/interfaces:
   net   eth0
   loc   eth1
   -   ppp+
Hosty w /etc/shorewall/hosts:
   loc   ppp+:192.168.1.0/24
   wrk   ppp+:!192.168.1.0/24

Mając ustawienie MERGE_HOSTS=No, zawartość strefy 'loc' zostałaby ograniczona jedynie do ppp+:192.168.1.0/24. Przy MERGE_HOSTS=Yes, zawartość strefy 'loc' zostanie połączona i wyniesie: ppp+:192.168.1.0 oraz eth1:0.0.0.0/0

Jeśli ta zmienna nie jest ustawiona lub jest ustawiona na pustą wartość, wybierane jest "No".


MERGE_HOSTS=Yes



########################################

MUTEX TIMEOUT


Wartość tej zmiennej określa ilość sekund, przez którą programy będą czekać na zastrzeżony dostęp do pliku zamykającego Shorewall. Po tej liczbie sekund programy będą wybierać to, co ostatni program ... (to hold the lock died without relasing the lock - nie rozumiem tego).

Jeśli nie zostanie ustawione lub zostanie ustawione na pustą wartość, jest wybierana wartość 60.

Właściwa wartość tego parametru powinna być podwojeniem długości czasu, jaki zajmuje systemowi twojej ściany ogniowej wykonać komendę "shorewall restart".


MUTEX_TIMEOUT=60



########################################

Zapisywanie odrzucania 'New not SYN'


Kiedy pakiet TCP, który nie ma ustawionej flagi SYN, a flagi ACK i RST są wyczyszczone, wtedy jeśli pakiet nie jest częścią ustalonego połączenia, będzie odrzucany przez ścianę ogniową. Jeśli chcesz, by te odrzucenia zostały zapisane, ustaw LOGNEWNOTSYN na poziom zapisywania syslog w którym chcesz mieć je zapisane.

Przykład: LOGNEWNOTSYN=debug


LOGNEWNOTSYN=



########################################

Przesyłanie "Ping"


Jeśli FORWARDPING jest ustawione na "Yes" wtedy Echo Request ("Ping") pakiety są forwardowane (przesyłane) przez ścianę ogniową.


FORWARDPING=Yes



########################################
#LAST LINE - DO NOT REMOVE
########################################

 

 

 

 

 

 

 

 

Plik /etc/shorewall/rules     jest prostym w gruncie rzeczy plikiem. Uznałem, że wystarczy przetłumaczyć z angielskiego na polski komentarze i po dodaniu paru słów otrzymałem dosyć przejrzysty podręcznik. Uwaga: z przyczyn technicznych usunąłem haszowanie komentarzy.

 


 

Shorewall wersja 1.3 - plik z zasadami/regułami.
Miejsce przechowywania: /etc/shorewall/rules

W tym pliku ustalamy reguły firewalla, czyli jaka będzie automatyczna reakcja hosta na próby połączenia z odległych komputerów.
Na końcu pliku (czyli po niniejszej części objaśniającej) jest umieszczony właściwy wpis konfiguracyjny składający się z nibykolumn. Każda kolumna definiuje inne parametry połączenia w danym wierszu. Każdy wiersz jest jedną, prosto opisaną regułą.
Wiersz należy czytać następująco: jaką decyzję podjąć po odebraniu żądania połączenia (ACTION) pochodzącego ze strefy sieciowej (SOURCE) do docelowej strefy sieciowej (DEST) na protokole internetowym (PROTO) itd.
Mamy następujące kolumny: ACTION, SOURCE, DEST, PROTO, DEST PORT(S), CLIENT PORTS, ORIGINAL DEST (dwie ostatnie są opcjonalne).

Uwaga ogólna.

W większości zapisów, gdzie występują parametry firewalla, możesz wybiórczo potraktować jakiś wybrany adres IP/subnet poprzedzając go wykrzyknikiem ! (np. !192.168.1.0/24). W ten sposób wskażesz, że reguła dotyczy wszystkich adresów prócz tak podanego. Zauważ że nie ma spacji pomiędzy wykrzyknikiem ! , a adresem/subnetem.

 


 
Opis kolumn:

 

 

ACTION z parametrami: ACCEPT, DROP, REJECT, DNAT lub REDIRECT opisują sposób postępowania na okoliczność żądania połączenia z danej strefy sieciowej (SOURCE).
  • ACCEPT - pozwolenie na odebranie pakietu (pozwolenie na połączenie).
  • DROP - zignorowanie żądania połączenia (bez jakiejkolwiek reakcji).
  • REJECT - brak pozwolenia na połączenie, ale jest wysyłany pakiet ICMP informujący o odrzuceniu połączenia (ze zwrotnym icmp-niedostępny lub pakietem RST).
  • DNAT - przekierowanie żądania do innego systemu np. podsieci wewnętrznej (lub opcjonalnie do innego portu).
  • REDIRECT - przekierowanie żądania do lokalnego portu w ścianie ogniowej. Uwaga: może być (opcjonalnie) przekierowane nie do portu, a wskazanego poziomu (levelu). Wystarczy wpisać dwukropek : oraz poziom syslog log (np. REJECT:info).

 

 

 

SOURCE, czyli skąd przychodzą pakiety.
Mamy już zdefiniowaną akcję (patrz powyżej), czas więc na wskazanie strefy, z której spodziewamy się żądania połączenia. W Twojej sieci, strefy są zdefiniowane w pliku /etc/shorewall/zones. Zawiera on: krótką nazwę stref (np. net, masq, loc), pełną nazwę stref (Net, Masquarade, Local) i ewentualny komentarz opisujący daną strefę (strefa internetowa, maskowana komunikacja w lokalnej sieci, lokalne).
Uwaga: można też przy pomocy $FW wskazać, aby firewall widział strefę zdefiniowaną niezalażnie, czyli w tym wierszu (to indicate the firewall itself).
Jeśli ACTION ustawiłeś na DNAT lub REDIRECT, sub-strefy wybranych stref mogą być wykluczone z reguły poprzez wykrzyknik ! umieszczony po nazwie strefy i rozdzieloną przecinkami listę sub-stref.
Klienty mogą być wyłączaniani z listy sub-netów i/lub hostów poprzez wpisanie dwukropka : i rozdzieleniu przecinkami listy sub-netów i/lub hostów.
Hosty mogą być określone adresem IP lub MAC; adresy MAC muszą zaczynać się od tyldy ~ i muszą zawierać myślnik - jako separator.

Przykład.
# dmz:192.168.2.2    Host 192.168.2.2 in the dmz
#
# net:155.186.235.0/24    Subnet 155.186.235.0/24 on the
#              Internet
#
# loc:192.168.1.1,192.168.1.2
#              Hosts 192.168.1.1 and
#              192.168.1.2 in the local zone.
# loc:~00-A0-C9-15-39-78 Host in the local zone with
#                                        MAC address 00:A0:C9:15:39:78.

Alternatywnie, klienty mogą być wskazani przez interfejs za pomocą dwukropka : po którym znajdzie się nazwa interfejsu. Na przykład loc:eth1 określa klienta, który komunikuje się z systemem firewalla przez eth1.

 

 

 

DEST czyli docelowa strefa sieciowa (lokacja serwera).
Docelowe strefy naszej sieci są (tak jak strefy skąd przychodzą żądania połączenia) zdefiniowane w /etc/shorewall/zones
Uwaga: można też przy pomocy $FW wskazać, aby firewall widział strefę zdefiniowaną niezalażnie, czyli w danym wierszu (to indicate the firewall itself).
Lokacja serwera może być ograniczona do wyszczególnionego subnetu, hosta lub interfejsu. Wpisujemy wówczas dodatkowo znak dwukropka : oraz symbol subnetu, hosta lub interfejsu.
Wpis portu na którym serwer nasłuchuje, może być związany z wybranym IP serwera (dotyczy sytuacji, gdy serwer ma jednocześnie kilka adresów). Dane łączymy i rozdzielamy dwukropkiem : Numer portu można wpisać jedynie, gdy wcześniej wybrałeś w ACTION: DNAT lub REDIRECT.

Przykład.
# loc:192.168.1.3:3128

Określono lokalny adres IP serwera (192.168.1.3) i wyszczególniony port 3128. Numer portu MUSI być określony jako liczba całkowita, nie jako nazwa z /etc/services.
Jeśli ACTION ustawiłeś na REDIRECT, ta kolumna powinna jedynie zawierać numer portu w ścianie ogniowej, do którego powinno zostać przekazane żądanie.

 

 

 

PROTO czyli protokół internetowy.
Protokół musi być jednym z trzech: tcp", udp", icmp", następnie liczbą, symbolem wszystkie czyli all" albo related". Jeśli jest related", to reszta (the remainder of the entry) musi być pominięta (must be omitted) i żądania połączeń, które są związane z już istniejącymi żądaniami (and connection requests that are related to existing requests) będą zaakceptowane (will be accepted).Inaczej mówiąc: jeżeli wpiszesz RELATED to połączenie może nastąpić WYŁĄCZNIE na protokole i numerze protokołu wyznaczonym w pierwszym członie, a pozostałe wezwania na innych protokołach będą odrzucone.

 

 

 

DEST PORT(S) czyli destination ports.
Rozdzielona przecinkami lista nazw portów (z /etc/services), numery portów lub rzędy portów. Jeśli wybrałeś protokół icmp, to kolumna ta jest wykorzystana do definiowania icmp-type(s).
Zakres portów zapisujemy xxx:xxx (dolna granica portów:górna granica). Kolumna DEST PORT(S) jest ignorowana, jeżeli PROTOCOL=all, ale musi zostać wypełniona. W tym wypadku sugeruje się, by ta tarcza zawierała myślnik czyli -
Jeśli wybrałeś MULTIPORT=Yes (w /etc/shorewall/shorewall.conf), to tylko pojedyncza reguła Netfilter będzie generowana, o ile na tej liście i na liście CLIENT PORT(S) jest tak, jak poniżej:
  • Jest 15 lub mniej portów na liście.
  • Nie są zawarte rzędy portów.
W innym przypadku dla każdego z portów należy wygenerować osobną regułę.

 

 

 

CLIENT PORT(S) czyli opcjonalne port(y) używane przez klienta.
Jeśli zostaną pominięte, każdy źródłowy port jest akceptowany. Określony jako rozdzielona przecinkami lista nazw portów, numerów portów lub rzędów portów.
Jeśli nie chcesz sprecyzować portów klienta, ale potrzebujesz określić ADDRESS w następnej kolumnie, to umieść znak - teraz czyli w tej kolumnie.
Jeśli wybrałeś MULTIPORT=Yes (w /etc/shorewall/shorewall.conf), to tylko pojedyncza reguła Netfilter będzie generowana, o ile na tej liście i na liście DEST PORT(S) jest tak, jak poniżej:
  • Jest 15 lub mniej portów na liście.
  • Nie są zawarte rzędy portów.
W innym wypadku dla każdego z portów zostanie wygenerowana osobna reguła.

 

 

 

ORIGINAL (kolumna opcjonalna, wpis dozwolony jedynie, gdy w ACTION wybrałeś DNAT, DEST lub REDIRECT).
Jeśli kolumna ORIGINAL zawiera docelowy adres IP (czyli wpis jest inny od myślnika [-]) i adres ten różni się od IP podanego w kolumnie SERWER, to połączenia na ten adres będą przekierowane do IP i portu określonego w kolumnie DEST.
Adresy mogą opcjonalnie mieć za sobą dwukropek : i drugi adres IP. W tym wypadku Shorewall użyje drugi adres IP jako źródłowy. Zobacz dokumentację Shorewall do sprecyzowania wszystkiego, co dotyczy tej cechy.

Przykład. Akceptuje żądania SMTP ze strefy pod nazwą dmz do Internetu.
#  Example: Accept SMTP requests from the dmz to the internet
#
#  #ACTION  SOURCE  DEST  PROTO  DEST  SOURCE  ORIGINAL
#  #                                  PORT  PORT(S) DEST
#  ACCEPT  dmz  net  tcp    smtp

Przykład. Prowadzi wszystkie połączenia ssh i http z Internetu do lokalnego systemu 192.168.1.3
#  Example: Forward all ssh and http connection requests from the internet
#  to local system 192.168.1.3
#
#  #ACTION  SOURCE  DEST  PROTO  DEST  SOURCE  ORIGINAL
#  #                                  PORT  PORT(S) DEST
#  DNAT    net  loc:192.168.1.3  tcp  ssh,http

Przykład. Przekierowuje wszystkie lokalnie zapoczątkowane żądania połączeń www do portu 3128 na ścianie ogniowej (przyjmujemy, że Squid pracuje na firewallu) prócz tych, gdzie adres przeznaczenia to 192.168.2.2
#  Example: Redirect all locally-originating www connection requests to
#  port 3128 on the firewall (Squid running on the firewall
#  system) except when the destination address is 192.168.2.2
#
#  #ACTION  SOURCE  DEST  PROTO  DEST  SOURCE  ORIGINAL
#  #                                  PORT  PORT(S) DEST
#  REDIRECT  loc  3128  tcp  www  -  !192.168.2.2

Przykład. Wszystkie żądania dotyczące pobierania stron www przychodzące na Twój na adres 130.252.100.69 mają być przekierowane na adres komputera-klienta domowej podsieci 192.168.1.3 (bo tam umieściłeś swojego Apacha ;-)
#  Example: All http requests from the Internet to address
#  130.252.100.69 are to be forwarded to 192.168.1.3
#
#  #ACTION  SOURCE  DEST  PROTO  DEST  SOURCE  ORIGINAL
#  #                                  PORT  PORT(S) DEST
#  DNAT    net    loc:192.168.1.3  tcp  80  -  130.252.100.69

 

 


 

 
Ostateczny przykład konfiguracji firewalla z WYŁĄCZONYMI funkcjami filtrowania (brak wpisów konfiguracyjnych).
##############################################
#ACTION  SOURCE    DEST  PROTO  DEST  SOURCE  ORIGINAL
#                                  PORT  PORT(S) DEST
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

 

 


 

 
Ostateczny przykład wpisu konfiguracji firewalla z BLOKADĄ wszystkich usług poza http, https, ftp, ssh obsługującymi wezwanie do połączenia z każdej sterfy.
##############################################
#ACTION  SOURCE    DEST  PROTO  DEST  SOURCE  ORIGINAL
#                                  PORT  PORT(S) DEST
ACCEPT  net  fw  tcp  80,443,22,20,21 -
ACCEPT  masq  fw  tcp  80,443,22,20,21 -
ACCEPT  loc  fw  tcp  80,443,22,20,21 -
ACCEPT  masq  fw  tcp  domain,bootps,http,https,631,imap,pop3,smtp,nntp,ntp -
ACCEPT  masq  fw  udp  domain,bootps,http,https,631,imap,pop3,smtp,nntp,ntp -
ACCEPT  fw  masq  tcp 631,137,138,139 -
ACCEPT  fw  masq    udp  631,137,138,139 -
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

 

 

 

 

 

 

 

 

Plik /etc/shorewall/policy

 


 

Shorewall wersja 1.3 - Plik bezpieczeństwa.

Z przyczyn technicznych usunąłem haszowanie komentarzy. Tekst zaznaczony na niebiesko jest aktywnym wpisem konfiguracyjnym.

Ten plik określa co robić z nowym żądaniem połączenia, jeśli nie połączyliśmy go poprzednio po zastosowaniu reguł opisanych w pliku /etc/shorewall/rules lub w pliku /etc/shorewall/common[.def]. Dla każdego źródła/pary przeznaczenia, plik jest przetwarzany w kolejności, aż zostanie dopasowany ("all" połączy każdego klienta lub serwer).


Kolumny to:

SOURCE Strefa źródłowa. Musi być nazwą strefy określonej w /etc/shorewall/zones, $FW lub "all".

DEST Strefa przeznaczenia. Musi być nazwą strefy określonej w /etc/shorewall/zones, $FW lub "all".

POLICY Zabezpieczenie jeśli nie zostało znalezione połączenie z plikiem reguł. Musi być ACCEPT, DROP, REJECT lub CONTINUE.

LOG LEVEL Jeśli wpisane, każde połączenie doręczone pod domyślną POLICY jest zapisywane na tym poziomie. Jeśli nie wpisane, nie są generowane wiadomości zapisywania. Opisu poziomów zapisywania szukaj w syslog.conf(5).

LIMIT:BURST Jeśli opuszczone, określa maksymalną ilość połączeń TCP i akceptowany rozmiar (burst). Jeśli nie określono, połączenia TCP są nieograniczone.

Domyślne zabezpieczenia to:

  1. Wszystkie połączenia z lokalnej sieci do Internetu są dopuszczane.
  2. Wszystkie połączenia z Internetu są ignorowane ale zapisywane w syslog poziomie KERNEL.INFO.
  3. Wszystkie inne żądania połączeń są odrzucane i zapisywane w poziomie KERNL.INFO.

 

########################################
SOURCE   DEST   POLICY   LOG LEVEL   LIMIT:BURST
masq     net     ACCEPT
loc     net     ACCEPT
fw     net     ACCEPT
net     all   DROP   info
all     all   REJECT     info
########################################
#LAST LINE - Add your entries above - DO NOT REMOVE
########################################

 

 

 

 

 

 

 

 

Plik /etc/shorewall/tos

Z przyczyn technicznych usunąłem haszowanie komentarzy. Tekst zaznaczony na niebiesko jest aktywnym wpisem konfiguracyjnym.

 


 

Shorewall wersja 1.3 - plik określa reguły potrzebne do ustawienia Type of Service (TOS)

Mamy następujące kolumny: SOURCE, DEST, PROTOCOL, SOURCE PORTS, DEST PORTS, TOS.



SOURCE

Nazwa strefy zdeklarowanej w /etc/shorewall/zones. Może być "all" lub $FW. Jeśli nie jest "all" lub $FW, może opcjonalnie występować przed ":" i adresem IP, adresem MAC, określeniem subnetu lub nazwą interfejsu.
Przykład:
loc192.168.2.3

Adresy MAC muszą być poprzedzone tyldą "~" i trzeba w nich używać "-" jako rozdzielacza.
Przykład:
~00-A0-C9-15-39-78



DEST

Nazwa strefy zdeklarowanej w /etc/shorewall/zones, "all" lub $FW. Jeśli nie jest "all" lub $FW, może opcjonalnie występować przed ":" i adresem IP lub określeniem subnetu.
Przykład:
loc:192.168.2.3



PROTOCOL

Protokół internetowy.



SOURCE PORTS

Port źródłowy lub ranga portu (range port). Jeśli wszystkie porty, użyj "-".



DEST PORTS

Port przeznaczenia lub ranga portu. Jeśli wszystkie porty, użyj "-".



TOS

Rodzaj usługi. Musisz wybrać jedną z następujących:
Minimize-Delay (16)
Maximize-Throughput (8)
Maximize-Reliability (4)
Minimize-Cost (2)
Normal-Service (0)



##########################################################
SOURCE  DEST  PROTOCOL  SOURCE  PORTS  DEST PORTS  TOS
all     all     tcp     -     ssh     16
all     all     tcp     ssh     -     16
all     all     tcp     -     ftp     16
all     all     tcp     ftp     -     16
all     all     tcp     ftp-data     -     8
all     all     tcp     -     ftp-data     8
##########################################################
#LAST LINE - Add your entries above - DO NOT REMOVE
##########################################################

 

 

 

 
twarogal@wp.pl

Uwaga: z powodu namnożenia się różnych złodziejskich witryn www, które kopiują moje strony i umieszczają je u siebie wraz z komercyjnymi reklamami (na których zarabiają) informuję, że wszelkie prawa są zastrzeżone.

Uwaga. Aby uniknąć zasysania całej witryny gorzow-wlkp.pl/linux za pomocą programów typu TeleportPro, WebCopier itd. informuję, że udostępniłem spakowaną wersję (w formacie RAR).

 
 

 

 

Witryna była dostępna pod adresami: strony.wp.pl/wp/twarogal , strony.wp.pl/wp/linuxtwarka , twarogal.republika.pl , klub.chip.pl/twarogal oraz gorzow-wlkp.net (w latach 2003/04).

 

 

gorzow-wlkp.pl

Informacje o odwiedzających są rejestrowane i publicznie udostępniane na pod adresem: http://gorzow-wlkp.pl/licznik/