IPCHAINS(8) IPCHAINS(8)
JMENO
ipchains - Konfigurace IP firewallu
POUZITI
ipchains -[ADC] retezec pravidlo [volby]
ipchains -[RI] retezec cislo_pravidla pravidlo [volby]
ipchains -D retezec cislo_pravidla [volby]
ipchains -[LFZNX] [retezec] [volby]
ipchains -P retezec cil [volby]
ipchains -M [ -L | -S ] [volby]
POPIS
Ipchains slouzi k nastaveni, udrzovani a sledovani firewallovych
pravidel v Linuxovem jadru. Tato pravidla lze rozdelit do 4 kategorii:
pravidla pro pakety prichozi (input chains), odchozi (output chains),
pakety predavane dale (forward chains) a pravidla definovana
uzivatelem.
Pro kazdou z techto kategorii je udrzovana samostatna tabulka pravidel,
z nichz kterekoliv muze odkazovat na dalsi, uzivatelem definovana
pravidla.
Dalsi podrobnosti viz. ipfw(4).
CILE (TARGETS)
Firewallove pravidlo urcuje jednak vlastnosti paketu a dale jeho cil.
Pokud paket danemu pravidlu svymi vlastnosti neodpovida, je
testovan nasledujicim pravidlem; pokud vyhovuje, bude zkontrolovan
pravidlem urcenym parametrem cil (target), coz muze byt pravidlo, ktere
nadefinoval uzivatel nebo jedna ze specialnich hodnot ACCEPT, DENY,
REJECT, MASQ, REDIRECT, nebo RETURN.
ACCEPT znamena, ze paket muze firewallem projit. DENY znamena, ze se
paket zahodi. REJECT je v podstate to same jako DENY, ale je snadneji
laditelny a vuci druhe strane slusnejsi, nebot ji odesle zpet ICMP
zpravu informujici o zahozeni paketu. (pozor: DENY and REJECT znamenaji
pro ICMP pakety totez). [Pozor: neni to pravda; nastaveni REJECT pro
ICMP ucini ICMP port nedostupnym!]
MASQ je pouzitelny pouze v uzivatelem definovanych pravidlech a pravi-
dlech pro pruchod paketu (forward chains) a pouze v pripade, ze jadro
bylo zkompilovano s volbou CONFIG_IP_MASQUERADE. Takove paketu budou
upraveny (maskaradovany) jakoby pochazely z lokalniho pocitace a pakety
prichazejici zpet budou automaticky odmaskaradovany aniz by musely
projit sadou pravidel pro pruchod.
REDIRECT lze pouzit jen v pravidlech pro vstup (input chains) a v
uzivatelskych pravidlech. Pro pouziti je nutne mit jadro zkompilovane s
volbou CONFIG_IP_TRANSPARENT_PROXY. Tyto pakety budou presmerovany na
mistni port pouze v pripade, ze byly odeslany na vzdaleny pocitac.
Pokud je presmerovani nastaveno na port 0 (vychozi hodnota), bude
cilovy port tyz jako mel byt port na vzdalenem pocitaci. Jako parametr
vsak lze pouzit cislo portu, na ktery ma byt paket presmerovan.
Jestlize byla vycerpana vsechna uzivatelska pravidla nebo vyhovuje
pravidlo s cilem RETURN, pak se pokracuje dalsim pravidlem v predchozim
(volajicim) retezci pravidel. Pokud se dojde az na konec vnoreneho
retezce pravidel nebo vyhovi pravidlo s cilem RETURN, pak je dalsi
cesta paketu dana cilem pro cely retezec pravidel (chain policy).
VOLBY (OPTIONS)
Volby programu ipchains se deli do nekolika ruznych skupin.
PRIKAZY (COMMANDS)
Prikazy specifikuji ruzne akce, ktere se maji provest; jednim prikazem
muze byt provedena pouze jedna jedina akce; ostatni by musely byt
provedeny postupne pomoci dalsich prikazu. Kazdou dlouhou verzi prikazu
a oznaceni volby lze zkratit; je nutno pouzit tolik znaku, aby ipchains
dokazal jednoznacne urcit, o kterou volbu se jedna.
-A, --append
Prida jedno ci vice pravidel na konec vybraneho retezce
pravidel. Pokud lze oznaceni odesilatele a/nebo prijemce paketu
prelozit na vice nez jednu adresu, bude pravidlo pridano do
vsech moznych kombinaci adres.
-D, --delete
Smaze jedno nebo vice pravidel z urceneho retezce pravidel.
Tento prikaz ma dve syntaxe: prikaz muze byt urcen bud poradovym
cislem pravidla v retezci (prvni ma cislo 1) nebo muze byt
pravidlo urcene ke smazani cele vypsano (najde se odpovidajici).
-R, --replace
Nahradi pravidlo ve vybranem retezci. Pokud neni jednoznacne
urcen adresat a/nebo prijemce, prikaz selze. Pravidla jsou
cislovana od 1.
-I, --insert
Vlozi na urcene misto ve vybranem retezci jedno ci vice
pravidel. Pokud ma pravidlo cislo 1, pak bude vlozeno na
zacatek retezce.
-L, --list
Vypise vsechna pravidla v retezci. Pokud neni urcen retezec, pak
se vypisi vsechna pravidla. Lze take pouzit volbu -Z (zero), kdy
nemuze byt urcen zadny retezec. Vystup prikazu je pak dan
dalsimi argumenty.
-F, --flush
Prikaz smaze vsechna pravidla v retezci.
-Z, --zero
Vynuluje pocitadla paketu a bytu ve vsech retezcich. Lze pouzit
volbu -L, --list (list) pro vypsani pocitadel pred jejich
vynulovanim; pokud je to provedeno, nelze zadat urcity retezec
(budou vsechny zobrazeny a ihned vynulovany).
-N, --new-chain
Vytvori novy retezec (uzivatelsky) se zadanym jmenem. Nesmi
existovat cil se stejnym nazvem.
-X, --delete-chain
Smaze urceny uzivatelem nadefinovany retezec pravidel. Na tento
retezec nesmi existovat zadne odkazy (pokud existuji pravidla
odkazujici na takove pravidlo, musi byt nejdrive odstranena nebo
nahrazena novymi). Pokud neni zadan zadny parametr, dojde k
odstraneni vsech retezcu, ktere byly definovany uzivatelem.
-P, --policy
Nastavi cil pro zadany retezec. Pouzitelne parametry: viz kapi-
tola TARGETS Tento parametr lze pouzit pouze u neuzivatelskych
retezcu. Cilem nesmi byt zadny z retezcu (ani uzivatelsky ani
neuzivatelsky).
-M, --masquerading
Tato volba zobrazi vsechny prave maskaradovana spojeni (ve spo-
jeni s volbou -L option) nebo nastavi parametry jadra pro
maskaradovani (s volbou) -S
-S, --set tcp tcpfin udp
Meni hodnoty prodlev u maskaradovani. Prikaz musi mit 3 parame-
try, ktere urcuji prodlevu (v sekundach) pro TCP spojeni, TCP
spojeni po obdrzeni FIN paketu a pakety UDP. Nulova hodnota
nektereho z parametru znamena, ze se ma ponechat soucasna hod-
nota. Tuto volbu lze pouzit pouze s parametrem -M
-C, --check
Zkontroluje dany paket vybranym retezcem pravidel. Je to
uzitecne pro testovani zda jdou k testovani tohoto paketu
pouzity stejne rutiny jadra jako k testovani "skutecnych"
sitovych paketu. Lze pouzit pro zkouseni jak uzivatelskych
retezcu tak retezcu vestavenych. Stejne parametry jako se
pouzivaji pro urceni pravidel se pouzivaji k vytvoreni paketu,
ktery ma byt otestovan. Parametry -s (source [odesilatel]), -d
(destination [prijemce]), -p (protocol [protokol]), and -i
(interface [sitove rozhrani]) jsou povinne.
-h, --help
Vypise strucny popis syntaxe prikazu. Pokud napr. nasleduje
slovo icmp, pak je vypsan seznam jmen ICMP.
-V, --version
Vypise verzi programu ipchains.
PARAMETRY
Nasledujici parametry slouzi pro specifikaci pravidel (stejne jako se
pouzivaji v prikazech add, delete, replace, append a check).
-p, --protocol[!] protocol
Urcuje protokol pravidla nebo paketu, ktery ma byt zkontrolovan.
Lze pouzit nasledujici protokoly: tcp, udp, icmp nebo all. Je
mozne pouzit i ciselnou hodnotu, ktera reprezentuje jeden z
techto protokolu nebo take jmeno protokolu z /etc/protocols.
Argument "!" pred protokolem invertuje vyznam. Cislo 0 je ekvi-
valentem k all. Protokol all vyhovi vsem protokolum a je pouzit
jako vychozi, pokud neni specifikovan zadny protokol all nelze
pouzit v zadne kombinace s prikazem check.
-s, --source, --src [!] addresa[/maska] [!] [port[:port]]
Urceni odesilatele. Adresa muze to byt bud jmeno hostitele,
jmeno site nebo IP adresa. Maska muze byt bud maska site nebo
cislo, ktere urcuje zleva pocet jednicek v masce site. Napr.
maska 24 odpovida 255.255.255.0. Argument "!" neguje vyznam.
Oznaceni odesilatele muze obsahovat i port nebo typ ICMP. Lze
pouzit bud jmeno sluzby, cislo portu, ciselne oznaceni typu ICMP
nebo jedno ze slovnich oznaceni typu ICMP, ktere vypise prikaz
ipchains -h icmp
Mnoho z techto jmen oznacuje jak typ tak kod, pricemz ICMP kod
je po parametru -d neplatny. Ve zbytku odstavce port znamena bud
specifikaci portu nebo typ ICMP. Rozsah portu lze urcit
pouzitim formatu port:port. Pokud neni zadan prvni port, je za
nej dosazena "0"; pri absenci koncoveho portu je dosazeno
"65535".
Porty lze specifikovat pouze v kombinaci s tcp, udp, nebo icmp
protokoly. "!" pred oznacenim portu neguje vyznam. Pokud je
pouzit prikaz check je nutne zadat jeden port a s parametrem -f
(fragment) nelze zadat zadny port.
--source-port [!] [port[:port]]
Tento parametr umozni zvlast urcit zdrojovy port nebo rozsah
portu. Podrobnosti viz. vyse parametr -s --sport
-d, --destination, --dst [!] address[/mask] [!] [port[:port]]
Urceni prijemce. Detaily k syntaxi viz. podrobnosti k parametru
-s (source). Pro ICMP ktere nema porty, "destination port"
oznacuje numericky ICMP kod.
--destination-port [!] [port[:port]]
Pomoci teto volby lze urcit porty. Podrobnosti viz. parametr -s
Zkracene lze tento parametr zapsat --dport
--icmp-type [!] jmeno_typu
Slouzi ke specifikaci typu ICMP. (pouziti -h icmp vypise platna
jmena ICMP typu). Je to vhodnejsi nez pridavani do specifikace
prijemce.
-j, --jump cil
Tento parametr urcuje cil pravidla; tj. co se ma s paketem delat
pokud tomuto pravidlu vyhovi. Cilem muze byt uzivatelem defino-
vany retezec pravidel (ne vsak ten jehoz soucasti je toto
pravidlo) nebo jeden ze specialnich cilu, ktery primo urcuje co
se bude s paketem dit dal. Pokud tento parametr chybi, pak i
kdyz paket pravidlu vyhovi dojde pouze k inkrementaci pocitadla,
ale nijak to neovlivni jeho cestu.
-i, --interface [!] name
Volitelne lze zadat jmeno sitoveho rozhrani skrze ktere byl
paket obdrzen (pro pakety testovane v retezci pro vstup - input
chain) nebo skrze ktere bude pokracovat dale (forward chain).
Pokud parametr chybi, vyhovi jakekoliv rozhrani. "!" obraci
vyznam. Jestlize oznaceni rozhrani konci znakem "+", pak vyhovi
vsechna rozhrani ktera zacinaji urcenymi znaky.
[!] -f, --fragment
Pri pouziti tohoto parametru budou testovany pouze druhe a dalsi
casti fragmentovaneho paketu. Nelze zadnym zpusobem urcit zdro-
jovy nebo cilovy port paketu (nebo typ ICMP), proto paket nevy-
hovi zadnemu pravidlu, ktere jej bude specifikovat. Znak "!"
invertuje vyznam.
DALSI VOLBY
Dale je mozno pouzit nasledujici rozsirujici volby:
-b, --bidirectional
Obousmerny rezim. Pravidlu vyhovi IP pakety v obou smerech; Je
to totez jako opakovane pouziti pravidla s prohozenym
odesilatelem a prijemcem. Neznamena to, ze pokud povolite TCP
SYN pakety ven, tak -b umozni vstup non-SYN paketu dovnitr:
zpetna pravidla jsou stale tataz pravidla, ktera byla zadana. Z
toho vyplyva, ze obvykle byva jednodussi nepouzivat -b a vypsat
jednotliva pravidla.
-v, --verbose
Upovidany vystup. Prikaz pro vypis s touto volbou vypise adresy
rozhrani, volby u pravidel (pokud existuji) a masky TOS. Dale
jsou vypsana pocitadla paketu a bytu s priponami 'K', 'M' or 'G'
pro 1000, 1,000,000 a 1,000,000,000 nasobky (viz. parametr -x
pro zmenu). V kombinaci s parametrem -M, se navic vypisi infor-
mace souvisejici s cisly delta sekvence. Pro pripojovani,
vkladani, mazani a nahrazovani dojde k vypsani detailnich infor-
maci o pravidlech.
-n, --numeric
Ciselny vystup. IP adresy a cisla portu budou vypsana v
ciselnem formatu. Bezne se je program snazi prelozit na jmena
hostitelu, siti nebo sluzeb.
-l, --log
Zapne logovani vyhovujicich paketu. Pokud je tato volba u
pravidla nastavena, jadro Linuxu bude vypisovat informace (IP
hlavicky) o vsech vyhovujicich paketech pres printk().
-o, --output [maxsize]
Kopiruje vyhovujici pakety na userspace zarizeni. Slouzi to
hlavne vyvojarum, kteri by si chteli hrat s firewally v
userspace. Volitelny argument maxsize urcuje limit kopirovanych
paketu v bytech. Tato volba je platna pouze pokud bylo jadro
kompilovano s volbou CONFIG_IP_FIREWALL_NETLINK.
-m, --mark markvalue
Oznacovani vyhovujicich paketu. Pakety mohou byt oznaceny
32bitovou hodnotou, ktera muze (jednou) zmenit zpusob, jak se s
nimi bude manipulovat. Pokud nejste kernel hacker, patrne se o
to nebude zajimat. Pokud parametr markvalue zacina "+" nebo
"-", pak tato hodnota bude prictena nebo odectena od aktualni
hodnoty znaceni paketu (zacina nulou).
-t, --TOS andmask xormask
Masky pouzivane pro upravy TOS pole v IP hlavicce. Jestlize
paket vyhovuje pravidlu, jeho TOS pole je bitove vynasobeno s
prvni maskou a vysledek je pote bitove secten s druhou maskou.
Maska se zadava jako sestnactkova osmibitova hodnota. Protoze
LSB v poli TOS musi zustat nezemneny (RFC 1349), jsou hodnoty
TOS, ktere by mohly zmenu zpusobit, odmitnuty stejne jako
vsechna pravidla, ktera vzdy meni vice nez jeden TOS bit.
Pravidla, ktera nastavuji vice TOS bitu pro urcite pakety,
posilaji na standardni vystup hlaseni, ktera muzeme ignorovat,
pokud vime, ze na pakety s takovymi hodnotami TOS nebudou tato
pravidla aplikovana. Je samozrejme, ze manipulace s TOS je
bezvyznamna pokud ma pravidlo cil DENY nebo REJECT.
-x, --exact
Uplna cisla. Vypisuje skutecne hodnoty paketovych a bytovych
pocitadel misto jejich zaokrouhleni ve tvaru K (pro
1000nasobek), M (1000K), G (1000M). Tato volba ma vyznam pouze s
prikazem -L.
[!] -y, --syn
Vyhovuji pouze TCP pakety s nastavenym SYN bitem a nulovymi ACK
a FIN bity. Tyto pakety jsou pouzivany pri zadostech o navazani
TCP spojeni; napr. zablokovani takovych paketu na rozhrani
neumozni prichozi TCP spojeni, ale odchozi spojeni budou
normalne fungovat. Tato volba ma vyznam pouze pokud je pouzivan
protokol TCP. Pokud je pred -y "!", pak se obraci vyznam.
--line-numbers
Pri vypisu pravidel prida cisla radku na zacatky kazdeho
pravidla podle jeho umisteni v retezci.
--no-warnings
Zakaze veskera hlaseni.
SOUBORY
/proc/net/ip_fwchains
/proc/net/ip_masquerade
DIAGNOSTIKA
Nejruznejsi chyby jsou zobrazovany na standardnim chybovem vystupu.
Pri spravne funkci je navratova hodnota 0. Chyby, ktere jsou zrejme
zpusobeny nespravnymi parametry prikazu maji navratovou hodnotu 2 a
ostatni chyby maji navratovou hodnotu 1.
CHYBY
Jestlize je vstupem terminal a je vlozeno nebo pripojeno pravidlo do
retezce pravidel pro dale predavane pakety (forward chain), neni pov-
olen IP forwarding a je pouzit parametr --no-warnings je na standardni
vystup vypsana zprava, ze predavani paketu nebude fungovat dokud nedo-
jde k naprave. To ma pomoci uzivatelum, kteri nevedi o nutnosti IP for-
wardingu (coz neexistovalo v jadrech 2.0).
Neexistuje zpusob jak vynulovat zaroven paketove a bytove pocitadlo
pomoci jedineho retezce. Jedna se o omezeni jadra.
Detekce smycek neni v ipchains hotova; pakety ve smycce budou zahozeny
a zapsany do logu, ale je to to prvni co se naleznete pokud vytvorite
smycku.
Vyklad toho, co se deje pri oznacovani paketu je umyslne nejasny dokud
nevyjde dokumentace popisujici rutiny pro praci s pakety v jadrech 2.1.
Nelze vynulovat pocitadla pravidel pro retezce (policy) tj. ty, ktere
patri do neuzivatelskych (built-in) retezcu.
POZNAMKY
Program ipchains se znacne lisi od programu ipfwadm (autor Jos Vos)
tim, ze pouziva nove IP firewallove konstrukce. Je nadstavbou programu
ipfwadm a obecne pouziva mapovani prikazu 1:1. Verim, ze nove prikazy
budou srozumitelnejsi. Nicmene je zde mnoho zmen, o kterych byste se
meli informovat.
S fragmenty se pracuje ruzne. Vsechny fragmenty krome prvniho mohly
prochazet (coz je obvykle bezpecne); nyni je mozne je filtrovat. Zna-
mena to, ze byste pravdepodobne meli pridat jednoznacne pravidlo pro
akceptovani fragmentu pokud prechazite na ipchains. Tez je dobre
podivat se na stary system pocitacich pravidel, ktera kontrolovala
odesilatele a prijemce portu 0xFFFF (0xFF pro ICMP), coz byl stary
zpusob pro pocitani fragmentu.
Pocitaci pravidla jsou ted jednoduse pripojena ke vstupnim a vystupnim
retezcum (input a output chain); stare chovani lze simulovat takto:
ipchains -N acctin
ipchains -N acctout
ipchains -N acctio
ipchains -I input -j acctio
ipchains -I input -j acctin
ipchains -I output -j acctio
ipchains -I output -j acctout
Timto se vytvori tri uzivatelske retezce, acctin, acctout and acctio,
ktere budou obsahovat pravidla pro pocitani (mohou byt bez parametru
-j, takze pakety jednoduse projdou).
Cil MASQ nebo REDIRECT, ktery je jadrem povazovan za nevhodny (tj.
neprochazejici pres retezce pro vstup (input chain) nebo pruchod (for-
ward chain), zpusobi zaznam do syslogu a paket bude zahozen.
Stary zpusob porovnavani SYN a ACK (ktere bylo drive ignorovano pro
jine nez TCP pakety) byl upraven; volba SYN neplati pro pravidla
tykajici se jinych nez paketu TCP.
Volba pro porovnani ACK (parametr -k se uz nepouziva; kombinace s ! a
-y je ekvivalentni).
Nyni jiz nelze zadat masku TOS, ktera nastavi nebo zmeni nejmene
vyznamny TOS bit; drivejsi masky TOS byly, pokud se o to pokusily,
jadrem zmeneny.
S parametrem -b se nyni jednoduse pracuje vlozenim nebo smazanim dvo-
jice pravidel s prohozenym odesilatelem a prijemcem.
Sitove rozhrani nelze urcit jeho adresou - musi se zadat jeho jmeno.
VIZ TAKE
ipfw(4)
AUTOR
Rusty Russell <rusty@linuxcare.com>. Dekuji take Hansu Perssonovi za
podrobne precteni a korektury; chtel bych, aby cetl vsechny moje dalsi
dokumenty!
PREKLAD
Jan Jasansky (jan.jasansky@pslib.cz).
February 8, 1998 IPCHAINS(8)