Provided by:
manpages-pl_20060617-1_all 
NAZWA
ipchains - administracja zaporą ogniową IP (IP firewall)
SKŁADNIA
ipchains -[ADC] łańcuch specyfikacja-reguły [opcje]
ipchains -[RI] łańcuch num-reg specyfikacja-reguły [opcje]
ipchains -D łańcuch num-reg [opcje]
ipchains -[LFZNX] [łańcuch] [opcje]
ipchains -P łańcuch cel [opcje]
ipchains -M [ -L | -S ] [opcje]
OPIS
Ipchains jest używany do ustawiania, podtrzymywania i przeglądania
reguł zapory ogniowej w jądrze Linuksa. Te reguły możemy podzielić na 4
różne kategorie: łańcuch wejściowy (IP input chain), łańcuch wyjściowy
(IP output chain), łańcuch przekazowy (IP forwarding chain) i łańcuchy
zdefiniowane przez użytkownika.
Dla każdej z tych kategorii utrzymywana jest oddzielna tabela reguł, z
których każda może odnosić się do jakiegoś łańcucha reguł
zdefiniowanego przez użytkownika.
Zobacz ipfw(4), by dowiedzieć się więcej szczegółów.
CELE
Reguła ścianki ogniowej określa kryteria dotyczące pakietu i celu.
Jeśli pakiet nie pasuje do danej regułki, to sprawdzana jest następna w
danym łańcuchu; jeśli pakiet pasuje wtedy następna regułka jest
określana przez wartość celu, która może być nazwą łańcucha
zdefiniowanego przez użytkownika albo też jedną ze specjalnych wartości
ACCEPT, DENY, REJECT, MASQ, REDIRECT lub RETURN.
ACCEPT oznacza, że należy przepuścić pakiet. DENY oznacza, że należy
pakiet odrzucić. REJECT działa podobnie jak odrzucenie, ale jest
bardziej "uprzejmy" i łatwiejszy do wyśledzenia, ponieważ dodatkowo
wysyłany jest do nadawcy zwrotny komunikat ICMP informujący go, że
pakiet nie został przyjęty. (Zauważ, że DENY i REJECT są tożsame jeśli
mamy do czynienia z pakietami ICMP).
MASQ jest właściwy tylko dla łańcuchów przekazowych (forwarding) i
zdefiniowanych przez użytkownika. Może być użyty tylko kiedy jądro jest
skompilowane z włączoną definicją CONFIG_IP_MASQUERADE. Przy użyciu
tego rodzaju celu wychodzące (lub przechodzące przez maszynę, np.
pełniącą funkcję bramki) pakiety będą maskowane, tzn. w ten sposób
zostaną podmienione ich adresy nadawcy jakby pochodziły one z maszyny
lokalnej. Potem przychodzące, zwrotne pakiety stanowiące odpowiedzi na
podmienione będą automatycznie rozpoznawane i "demaskowane" z
pominięciem łańcucha przekazowego.
REDIRECT jest właściwy tylko dla łańcuchów wejściowych i zdefiniowanych
przez użytkownika i może być użyty tylko kiedy jądro jest skompilowane
z włączoną definicją CONFIG_IP_TRANSPARENT_PROXY. W związku z tym
pakiety będą przekierowywane do lokalnego gniazda, nawet jeśli były one
skierowane do odległej maszyny. Jeśli podany jest port przekierowania
0, który jest domyślną wartością to port docelowy pakietu będzie użyty
jako port przekierowawczy. Kiedy ten cel jest użyty to podany może być
opcjonalnie dodatkowy argument (numer portu właśnie).
Jeśli osiągnięty zostaje koniec zdefiniowanego przez użytkownika
łańcucha albo wystąpi regułka z celem o nazwie RETURN to sprawdzana
jest następna reguła w poprzednim (wywołującym) łańcuchu. Jeśli
osiągnięty zostaje koniec wbudowanego łańcucha, albo też wystąpi reguła
z celem o nazwie RETURN to dalszy los pakietu zależy od celu
określonego przez politykę łańcucha.
OPCJE
Opcje, które są rozpoznawane przez ipchains, możemy podzielić na kilka
różnych grup.
KOMENDY
Te opcje określają specyficzne działanie, które ma być dokonane; tylko
jedna z tych opcji może być podana w linii komend, z wyjątkiem opcji
opisanych poniżej. Dla wszystkich tzw. długich opcji i długich wersji
komendy musisz wprowadzić jedynie tyle pierwszych znaków, żeby ipchains
potrafiło odróżnić nazwę podawanej opcji od innych.
-A, --append
Dołącza jedną lub więcej reguł do końca podanego łańcucha.
Kiedy nazwy źródeł i/lub celów odnoszą się do więcej niż jednego
adresu to reguła będzie dodana dla każdej możliwej kombinacji
tego adresu.
-D, --delete
Usuwa jedną lub więcej reguł z podanego łańcucha. Są tu dwie
wersje tej komendy: reguła może być określona za pomocą jej
numeru w łańcuchu (zaczynając od 1 dla pierwszej reguły) lub za
pomocą podanej reguły, do której usuwana pasuje.
-R, --replace
Zamienia regułę w wybranym łańcuchu. Jeśli nazwy źródła i/lub
przeznaczenia odnoszą się do wielu różnych adresów to komenda
zawiedzie. Reguły są ponumerowane poczynając od 1.
-I, --insert
Wstawia jedną lub więcej reguł do określonego łańcucha. Regułę
wskazuje się za pomocą jej numeru. Jeśli więc numerem reguły
jest 1 to reguła lub reguły są wstawiane na początek łańcucha.
-L, --list
Wypisuje wszystkie reguły w podanym łańcuchu. Jeżeli nie
wyszczególniono żadnego łańcucha, to pokazywane są wszystkie.
Jest poprawne podanie opcji -Z (zero), by nie istniała
konieczność/możliwość podawania łańcucha. Dokładne wyjście
zależy od innych wprowadzonych argumentów.
-F, --flush
Opróżnia podany łańcuch. Jest to odpowiednik usunięcia
wszystkich reguł po kolei.
-Z, --zero
Zeruje liczniki pakietów i bajtów we wszystkich regułkach. Jest
poprawne podanie opcji -L, --list (list), aby ujrzeć zawartości
liczników tuż przed ich oczyszczeniem; jeśli jest to wykonane,
to nie może być podany żaden konkretny łańcuch. (będą one
wszystkie wyświetlone i oczyszczone).
-N, --new-chain
Tworzy nowy, zdefiniowany przez użytkownika łańcuch pod podaną
nazwą. Musi to być nazwa unikatowa, nie przypisana do żadnego
istniejącego łańcucha.
-X, --delete-chain
Usuwa podany łańcuch zdefiniowany przez użytkownika. Nie może
być żadnych odnośników do łańcucha w innych regułkach (jeśli są
to trzeba je usunąć lub zastąpić odpowiednimi regułkami zanim
łańcuch będzie można usunąć). Jeśli nie podany jest żaden
argument to potraktowane zostanie to jako żądanie usunięcia
wszystkich niewbudowanych łańcuchów.
-P, --policy
Ustawia politykę łańcucha podanego celu. Obejrzyj sekcję CELE,
żeby poznać możliwe cele. Tylko łańcuchy niedefiniowane przez
użytkownika mogą mieć tzw. polityki, jednakże ani łańcuchy
wbudowane, ani łańcuchy zdefiniowane przez użytkownika nie mogą
być celami polityki.
-M, --masquerading
Opcja ta umożliwia przeglądanie połączeń obecnie maskowanych (w
połączeniu z opcją -L) lub ustawianie parametrów maskujących
jądra (w połączeniu z opcją -S).
-S, --set tcp tcpfin udp
Zmienia wartość czasu oczekiwania używaną przy maskowaniu.
Polecenie to wymaga zawsze 3 parametrów, reprezentujących
wartości czasów przeterminowania (w sekundach) dla sesji TCP,
sesji TCP po odebraniu pakietu FIN i tak samo dla pakietów UDP.
Wartość czasu ustawiona na 0 oznacza, że powinien zostać
niezmieniony poprzednio ustawiony parametr. Opcja ta jest
dopuszczalna tylko w kombinacji z flagą -M.
-C, --check
Sprawdza jak podany pakiet byłby obsłużony przez podany łańcuch.
Jest to niezwykle użyteczne, gdy chodzi o testy, ponieważ
wykonywane są te same działania, których normalnie dokonuje
jądro by sprawdzić "prawdziwy" pakiet. Może być to użyteczne,
gdy trzeba sprawdzić łańcuchy zdefiniowane przez użytkownika jak
też łańcuchy wbudowane. Przy konstruowaniu kontrolnego pakietu
używać można takich samych argumentów jak przy określaniu reguł
zapory ogniowej. W szczególności wymaganymi flagami są -s
(adres źródła), -d (adres przeznaczenia), -p (protokół) i -i
(interfejs).
-h, --help
Pomoc. Podaje (na razie bardzo uproszczony) opis składni
komendy. Użycie ze słowem icmp, spowoduje wypisanie listy nazw
ICMP.
-V, --version
Wyświetla numer wersji ipchains.
PARAMETRY
Poniższe parametry dopełniają określanie reguł (używane z poleceniami
add, delete, replace, append i check).
-p, --protocol[!] protok
Protokół reguły lub pakietu do sprawdzenia. Podany protokół
może być jednym z tcp, udp, icmp, lub all, lub może być
wartością liczbową, reprezentującą jeden z tych lub inny
protokół. Dopuszczalna jest też nazwa protokołu z pliku
/etc/protocols. Argument "!" przez protokołem odwraca próbę.
Wartość 0 odpowiada nazwie all. Protokół all odpowiada
wszystkim protokołom i jest ustawieniem domyślnym, gdy opcja ta
jest pominięta. All nie może być użyte w połączeniu z komendą
check.
-s, --source, --src [!] adres[/maska] [!] [port[:port]]
Określenie źródła. Adres może być nazwą hosta, nazwą sieci lub
też samym adresem IP. Parametr maska może być zarówno maską
sieci jak i samym numerem, określającym pierwszą liczbę z lewej
strony maski sieci. Wobec tego, maska 24 odpowiada
255.255.255.0. Argument "!" przed podanym adresem odwraca
znaczenie tego adresu.
W skład źródła może wchodzić określenie numeru portu lub typu
komunikatu ICMP. Może to być zarówno nazwa usługi, numeru
portu, typu ICMP w postaci liczby, jak i jedna z nazw typów
ICMP, które można uzyskać wydając polecenie
ipchains -h icmp
Zauważ, że wiele z tych nazw ICMP odnosi się do obydwu - typu i
kodu, to znaczy, że każdy kod ICMP po fladze -d jest
niepoprawny. W dalszej części tego paragrafu, port oznacza
zarówno określenie numeru portu, jak i typ komunikatu ICMP.
Może być również podany zakres alternatywny, zapisywany w
formacie port:port. Jeśli pierwszy port jest pominięty to
przypisywana jest mu wartość "0"; jeśli drugi jest ominięty to
przypisywana jest wartość "65535".
Porty mogą być podane tylko w połączeniu z protokołami tcp, udp,
lub icmp. Znak "!" przed określeniem portu odwraca znaczenie.
Gdy podano komendę check, wymagającą tylko jednego portu, i
jeżeli podano flagę -f (fragmentuj) to nie są dopuszczalne żadne
porty.
--source-port [!] [port[:port]]
To pozwala na osobne podanie portu źródłowego lub zakresu
portów. Patrz opis flagi -s powyżej po więcej szczegółów. Flaga
--sport jest zamiennikiem dla tej opcji.
-d, --destination, --dst [!] adres[/maska] [!] [port[:port]]
Określenie miejsca przeznaczenia. Obejrzyj opis flagi -s
(źródło), by uzyskać szczegółowy opis składni. W przypadku ICMP,
w którym nie istnieje pojęcie portów, "port docelowy" odnosi się
do liczbowego kodu ICMP.
--destination-port [!] [port[:port]]
To pozwala na osobne podawanie portów. Obejrzyj opis flagi -s
po więcej szczegółów. Flaga --dport jest zamiennikiem dla tej
opcji.
--icmp-type [!] typename
Pozwala to na podanie typu ICMP (użyj w połączeniu z opcją -h
icmp, by ujrzeć poprawne nazwy typów ICMP). Jest często bardziej
wygodne dołączać tę opcję przy podawaniu miejsc przeznaczenia.
-j, --jump cel
Określa cel reguły; np. co zrobić jeśli pakiet spełnia podane w
regule kryteria. Celem może być łańcuch zdefiniowany przez
użytkownika (oczywiście nie ten, w którym jest ta reguła) lub
jeden z celów specjalnych, które natychmiast decydują o losie
pakietu. Jeśli pominiemy w regule tę opcję, to spełnienie przez
pakiet podanych kryteriów nie będzie miało wpływu na jego los,
ale liczniki tej reguły będą zwiększone.
-i, --interface [!] nazwa
Opcjonalna nazwa interfejsu, przez który pakiet jest odbierany
bądź przez który pakiet będzie wysłany. Gdy tej opcji nie podamy
to rozważany jest ciąg pusty, który ma specjalne znaczenie i
pasuje do każdej nazwy interfejsu. Gdy przed nazwą interfejsu
użyjemy argumentu "!" to odwraca to sens opcji. Jeśli nazwa
interfejsu kończy się znakiem "+" to spełnione jest to dla
wszystkich interfejsów rozpoczynających się podaną nazwą.
[!] -f, --fragment
A to oznacza, że reguła odnosi się jedynie do drugiego i
kolejnych fragmentów sfragmentowanych pakietów. Odkąd nie ma
możliwości by powiedzieć o źródle lub portach docelowych takiego
pakietu (albo typu ICMP), pakiet ten nie będzie pasował do
żadnych reguł określających go. Gdy argument "!" poprzedza
flagę "-f" sens jest odwrócony.
INNE OPCJE
Poniższe dodatkowe opcje mogą także być użyte:
-b, --bidirectional
Tryb dwukierunkowy. Reguła będzie pasować do pakietów IP w dwie
strony; da to taki sam efekt jak powtarzanie tej samej reguły
dla źródła i przeznaczenia zamienionych ze sobą. Proszę
zauważyć, że NIE oznacza to, że jeżeli pakiety TCP SYN będą
dopuszczone na wyjściu, to reguła -b puści pakiety nie-SYN na
wejściu: reguła odwrotna jest dokładnie taka sama jak reguła,
która została wprowadzona. Oznacza to, że zazwyczaj lepiej jest
po prostu unikać flagi -b i otwarcie podawać wszystkie reguły.
-v, --verbose
Krzykliwe wyjście. Opcja ta powoduje, że komenda list pokazuje
adres interfejsu, opcje reguły (jeśli są) i maski TOS. Pakiet i
liczniki bajtów są także wypisywane, z przedrostkiem 'K', 'M'
lub 'G' odpowiednio dla 1000, 1,000,000 i 1,000,000,000
multiplikatorów (ale spójrz jeszcze na flagę -x aby to zmienić).
Gdy użyte jest to w kombinacji z -M, to podana będzie też
informacja odnosząca się do numerów sekwencji delta. Przy
dołączaniu, wstawianiu, usuwaniu i zastępowaniu, powoduje to
wyświetlenie szczegółowej informacji dotyczącej reguły lub
reguł.
-n, --numeric
Wyjście numeryczne. Adresy IP i numery portów będą wypisywane w
formacie liczbowym. Domyślnie, program będzie próbował
wyświetlać je jako nazwy hostów, nazwy sieci lub usług (kiedy
tylko dają się zastosować).
-l, --log
Włącza w jądrze logowanie pasujących pakietów. Gdy ta opcja
jest ustawiona dla reguły, jądro Linuksa wypisze informację
dotyczącą wszystkich pasujących pakietów (często np. pasujących
nagłówków IP) poprzez printk().
-o, --output [maxsize]
Kupiuje pasujące pakiety do urządzenia w przestrzeni
użytkownika. Jest to obecnie czymś istotnym dla twórców, którzy
chcą bawić się w efekty zapory ogniowej w przestrzeni
użytkownika. Opcjonalny argument maxsize może być użyty by
limitować maksymalną liczbę bajtów z pakietu, z którego zostaną
skopiowane. Opcja ta jest poprawna tylko wtedy, gdy jądro
zostało skompilowane z ustawieniem CONFIG_IP_FIREWALL_NETLINK.
-m, --mark markvalue
Zaznacza pasujące pakiety. Pakiety mogą być oznaczone 32-bitową
wartością bez znaku, który może (pewnego dnia) zmienić metodę
ich wewnętrznego traktowania. Jeśli nie jesteś kernel hackerem
nie powinieneś zawracać sobie tym głowy. Jeśli ciąg markvalue
zaczyna się znakiem + albo - to wtedy wartość będzie dodana lub
też odjęta do/od obecnej wartości zaznaczenia pakietu (która
zaczyna się zerem).
-t, --TOS andmask xormask
Maski używane przy modyfikowaniu pola TOS w nagłówku IP. Gdy
pakiet pasuje do reguły, na jego polu TOS i pierwszej masce jest
najpierw obliczany iloczyn bitowy, a nastepnie różnica
symetryczna z drugą maską. Maski powinny być podane jako
szesnastkowe wartości ośmiobitowe. Jako że nie wolno zmieniać
LSB pola (RFC 1349), wartości TOS, które spowodują taką zmianę
są odrzucane tak samo, jak dowolne reguły ustawiające zawsze
więcej niż jeden bit TOS. Reguły, które mogą ustawiać więcej niż
jeden bit TOS dla niektórych pakietów powodują ostrzeżenia
(wysyłane na standardową diagnostykę), które można zignorować,
jeśli wiadomo, że pakiety o takich wartościach TOS nigdy nie
osiągną danej reguły. Oczywiście manipulacja TOS jest
nieistotna, gdy celem danej reguły jest DENY lub REJECT.
-x, --exact
Rozszerzone wartości numeryczne. Wyświetla dokładną wartość
pakietu i liczników bajtów, zamiast tylko podawać zaokrągloną
wartość w K (wielokrotności 1000), M (wielokrotności 1000K) czy
G (wielokrotności 1000M). Opcja jest odpowiednia tylko dla
polecenia -L.
[!] -y, --syn
Dopasowuje tylko te pakiety TCP, które mają ustawiony bit SYN
oraz wyczyszczone bity ACK i FIN. Takie pakiety są używane do
inicjalizacji połączenia TCP, więc na przykład blokowanie takich
pakietów docierających do interfejsu spowoduje, że przychodzące
połączenia TCP będą odrzucane, ale nie będzie miało żadnego
wpływu na połączenia wychodzące. Opcja ta ma znaczenia tylko
jeżeli typem protokołu jest TCP. Jeżeli "-y" zostanie
poprzedzone przez flagę "!", to sens tej opcji zostanie
odwrócony.
--line-numbers
Wyświetlając reguły, wyświetla - na początku każdej reguły -
numery linii odpowiadające pozycji reguły w łańcuchu.
--no-warnings
Wyłącza wypisywanie ostrzeżeń.
PLIKI
/proc/net/ip_fwchains
/proc/net/ip_masquerade
DIAGNOSTYKA
Różne komunikaty o błędach są wypisywane na standardowe wyjście błędów.
Kodem wyjścia jest 0, jeżeli wszystko się powiedzie. Błędy, które
wydają się być spowodowane błędnymi lub źle użytymi argumentami linii
poleceń, spowodują zwrócenie kodu wyjścia 2, a wszystkie inne błędy
powodują zwrócenie kodu wyjścia 1.
USTERKI
Jeżeli wejście programu jest terminalem, reguła jest dokładana bądź
dołączana do łańcucha przekazowego, a przekazywanie IP nie wydaje się
być włączone i nie podano opcji --no-warnings, to na standardowe
wyjście jest wypisywane ostrzeżenie o tym, że przekazywanie nie będzie
działać, dopóki nie zostanie poprawione. Jest to po to, aby pomóc
użytkownikom nieświadomym tego wymogu (którego nie było w jądrach serii
2.0).
Nie można skasować liczników pakietów i bajtów w jednym tylko łańcuchu.
Wynika to z ograniczeń jądra.
Wykrywanie zapętleń nie jest obsługiwane w ipchains; pakiety w pętli są
upuszczane i notowane, lecz jest to jedyna rzecz jakiej się o tym
dowiesz jeśli przypadkowo wytworzysz jakąś pętlę.
Opis efektów zaznaczenia pakietu jest ogólnikowy, dopóki nie zostanie
wydana dokumentacja opisująca nowe procedury obsługi pakietów jądra
2.1.
Nie ma sposobu na to by wyzerować liczniki polityki (np. te we
wbudowanych łańcuchach).
UWAGI
To ipchains bardzo się różni od ipfwadm autorstwa Josa Vosa, jako że
używa nowo powstałych tak zwanych drzew zapory ogniowej IP.
Funkcjonalnie jest zastępnikiem ipfwadm i generalnie zawsze obsługuje
tamte polecenia. Wierzę, że nowe nazwy poleceń są bardziej racjonalne.
Jest też jednakże parę zmian, których powinieneś być świadom.
Fragmenty są obsługiwane w inny sposób. Wszystkie fragmenty po
pierwszym są zazwyczaj przepuszczane (co zwykle jest bezpieczne); wtedy
mogą być filtrowane. Oznacza to, że prawdopodobnie powinieneś dodać
jawną regułę akceptującą fragmenty jeśli dokonujesz konwersji. Spójrz
więc na stare reguły zliczające, które sprawdzają porty źródłowe i
docelowe 0xFFFF (0xFF w przypadku pakietów ICMP) - był to stary sposób
rozliczania fragmentów.
Reguły zliczające są teraz w prosty sposób zintegrowane z łańcuchami
wejściowym i wyjściowym; możesz symulować dawne zachowanie w taki
sposób:
ipchains -N acctwe
ipchains -N acctwy
ipchains -N acctwewy
ipchains -I input -j acctwewy
ipchains -I input -j acctwe
ipchains -I output -j acctwewy
ipchains -I output -j acctwy
Stworzy to trzy zdefiniowane przez użytkownika łańcuchy, acctwe, acctwy
i acctwewy, które mogą zawierać dowolne reguły zliczające (reguły te
powinny być podane bez flagi -j, więc pakiety te są w prosty sposób
przepuszczane w nienaruszonej postaci).
Cel MASQ lub REDIRECT przy starciu z brakiem miejsca na operacje jądra
(np. przy regule przekazującej lub wejściowej) sprawi, że do syslog
zostanie wysłana odpowiednia wiadomość a pakiet będzie odrzucony.
Stary sposób rozpoznawania SYN i ACK (który był poprzednio ignorowany
dla pakietów innych niż TCP) uległ zmianie; opcja SYN nie jest już
poprawna dla reguł innych niż dotyczących TCP.
Opcja rozpoznawania ACK ( -k) nie jest już wspierana; kombinacja ! i
-y jest jej zastępnikiem).
Nie jest już możliwe określenie maski TOS, która ustawi lub wyzeruje
ostatni znaczący bit TOS; poprzednio maski TOS były po cichu zerowane
przez jądro jeśli próbowały tego dokonać.
Flaga -b jest teraz w prosty sposób obsługiwana poprzez wstawienie lub
usunięcie pary reguł, w tym jednej z odwróconym określeniem adresu
źródła i adresu docelowego.
Nie ma możliwości określenia interfejsu za pomocą jego adresu: użyj
nazwy.
ZOBACZ TAKŻE
ipfw_chains(4), ipchains-save(8), ipchains-restore(8)
AUTOR
Paul ``Rusty'' Russell <ipchains@rustcorp.com>. Podziękowania dla
Hansa Perssona za dokonanie szczegółowej korekty; chciałbym, aby
poprawiał wszystkie moje przyszłe dokumenty!
8 lutego 1998 IPCHAINS(8)