IPCHAINS(8) IPCHAINS(8)
JMNO
ipchains - Konfigurace IP firewallu
POUIT
ipchains -[ADC] etzec pravidlo [volby]
ipchains -[RI] etzec slo_pravidla pravidlo [volby]
ipchains -D etzec slo_pravidla [volby]
ipchains -[LFZNX] [etzec] [volby]
ipchains -P etzec cl [volby]
ipchains -M [ -L | -S ] [volby]
POPIS
Ipchains slou k nastaven, udrovn a sledovn firewallovch
pravidel v Linuxovm jdru. Tato pravidla lze rozdlit do 4 kategori:
pravidla pro pakety pchoz (input chains), odchoz (output chains),
pakety pedvan dle (forward chains) a pravidla definovan
uivatelem.
Pro kadou z tchto kategori je udrovna samostatn tabulka pravidel,
z nich kterkoliv me odkazovat na dal, uivatelem definovan
pravidla.
Dal podrobnosti viz. ipfw(4).
CLE (TARGETS)
Firewallov pravidlo uruje jednak vlastnosti paketu a dle jeho cl.
Pokud paket danmu pravidlu svmi vlastnosti neodpovd, je
testovn nsledujcm pravidlem; pokud vyhovuje, bude zkontrolovn
pravidlem urenm parametrem cl (target), co me bt pravidlo, kter
nadefinoval uivatel nebo jedna ze specilnch hodnot ACCEPT, DENY,
REJECT, MASQ, REDIRECT, nebo RETURN.
ACCEPT znamen, e paket me firewallem projt. DENY znamen, e se
paket zahod. REJECT je v podstat to sam jako DENY, ale je snadnji
laditeln a vi druh stran slunj, nebo j odele zpt ICMP
zprvu informujc o zahozen paketu. (pozor: DENY and REJECT znamenaj
pro ICMP pakety tot). [Pozor: nen to pravda; nastaven REJECT pro
ICMP uin(1,8) ICMP port nedostupnm!]
MASQ je pouiteln pouze v uivatelem definovanch pravidlech a pravi-
dlech pro prchod paket (forward chains) a pouze v ppad, e jdro
bylo zkompilovno s volbou CONFIG_IP_MASQUERADE. Takov paketu budou
upraveny (makardovny) jakoby pochzely z loklnho potae a pakety
pichzejc zpt budou automaticky odmakardovny ani by musely
projt sadou pravidel pro prchod.
REDIRECT lze pout jen v pravidlech pro vstup (input chains) a v
uivatelskch pravidlech. Pro pouit je nutn mt jdro zkompilovan s
volbou CONFIG_IP_TRANSPARENT_PROXY. Tyto pakety budou pesmrovny na
mstn port pouze v ppad, e byly odeslny na vzdlen pota.
Pokud je pesmrovn nastaveno na port 0 (vchoz hodnota), bude
clov port t jako ml bt port na vzdlenm potai. Jako parametr
vak lze pout slo portu, na kter m bt paket pesmrovn.
Jestlie byla vyerpna vechna uivatelsk pravidla nebo vyhovuje
pravidlo s clem RETURN, pak se pokrauje dalm pravidlem v pedchozm
(volajcm) etzci pravidel. Pokud se dojde a na konec vnoenho
etzce pravidel nebo vyhov pravidlo s clem RETURN, pak je dal
cesta paketu dna clem pro cel etzec pravidel (chain policy).
VOLBY (OPTIONS)
Volby programu ipchains se dl do nkolika rznch skupin.
PKAZY (COMMANDS)
Pkazy specifikuj rzn akce, kter se maj provst; jednm pkazem
me bt provedena pouze jedna jedin akce; ostatn by musely bt
provedeny postupn pomoc dalch pkaz. Kadou dlouhou verzi pkazu
a oznaen volby lze zkrtit; je nutno pout tolik znak, aby ipchains
dokzal jednoznan urit, o kterou volbu se jedn.
-A, --append
Pid jedno i vce pravidel na konec vybranho etzce
pravidel. Pokud lze oznaen odeslatele a/nebo pjemce paketu
peloit na vce ne jednu adresu, bude pravidlo pidno do
vech monch kombinac adres.
-D, --delete
Smae jedno nebo vce pravidel z urenho etzce pravidel.
Tento pkaz m dv syntaxe: pkaz me bt uren bu poadovm
slem pravidla v etzci (prvn m slo 1) nebo me bt
pravidlo uren ke smazn cel vypsno (najde se odpovdajc).
-R, --replace
Nahrad pravidlo ve vybranm etzci. Pokud nen jednoznan
uren adrest a/nebo pjemce, pkaz sele. Pravidla jsou
slovna od 1.
-I, --insert
Vlo na uren msto ve vybranm etzci jedno i vce
pravidel. Pokud m pravidlo slo 1, pak bude vloeno na
zatek etzce.
-L, --list
Vype vechna pravidla v etzci. Pokud nen uren etzec, pak
se vyp vechna pravidla. Lze tak pout volbu -Z (zero), kdy
neme bt uren dn etzec. Vstup pkazu je pak dn
dalmi argumenty.
-F, --flush
Pkaz smae vechna pravidla v etzci.
-Z, --zero
Vynuluje poitadla paket a byt ve vech etzcch. Lze pout
volbu -L, --list (list) pro vypsn poitadel ped jejich
vynulovnm; pokud je to provedeno, nelze zadat urit etzec
(budou vechny zobrazeny a ihned vynulovny).
-N, --new-chain
Vytvo nov etzec (uivatelsk) se zadanm jmnem. Nesm
existovat cl se stejnm nzvem.
-X, --delete-chain
Smae uren uivatelem nadefinovan etzec pravidel. Na tento
etzec nesm existovat dn odkazy (pokud existuj pravidla
odkazujc na takov pravidlo, mus bt nejdve odstranna nebo
nahrazena novmi). Pokud nen zadn dn parametr, dojde k
odstrann vech etzc, kter byly definovny uivatelem.
-P, --policy
Nastav cl pro zadan etzec. Pouiteln parametry: viz kapi-
tola TARGETS Tento parametr lze pout pouze u neuivatelskch
etzc. Clem nesm bt dn z etzc (ani uivatelsk ani
neuivatelsk).
-M, --masquerading
Tato volba zobraz vechny prv makardovan spojen (ve spo-
jen s volbou -L option) nebo nastav parametry jdra pro
makardovn (s volbou) -S
-S, --set tcp tcpfin udp
Mn hodnoty prodlev u makardovn. Pkaz mus mt 3 parame-
try, kter uruj prodlevu (v sekundch) pro TCP spojen, TCP
spojen po obdren FIN paketu a pakety UDP. Nulov hodnota
nkterho z parametr znamen, e se m ponechat souasn hod-
nota. Tuto volbu lze pout pouze s parametrem -M
-C, --check
Zkontroluje dan paket vybranm etzcem pravidel. Je to
uiten pro testovn zda jdou k testovn tohoto paketu
pouity stejn rutiny jdra jako k testovn "skutench"
sovch paket. Lze pout pro zkouen jak uivatelskch
etzc tak etzc vestavnch. Stejn parametry jako se
pouvaj pro uren pravidel se pouvaj k vytvoen paketu,
kter m bt otestovn. Parametry -s (source [odeslatel]), -d
(destination [pjemce]), -p (protocol [protokol]), and -i
(interface [sov rozhran]) jsou povinn.
-h, --help
Vype strun popis syntaxe pkazu. Pokud nap. nsleduje
slovo icmp, pak je vypsn seznam jmen ICMP.
-V, --version
Vype verzi programu ipchains.
PARAMETRY
Nsledujc parametry slou pro specifikaci pravidel (stejn jako se
pouvaj v pkazech add, delete, replace, append a check).
-p, --protocol[!] protocol
Uruje protokol pravidla nebo paketu, kter m bt zkontrolovn.
Lze pout nsledujc protokoly: tcp, udp, icmp nebo all. Je
mon pout i selnou hodnotu, kter reprezentuje jeden z
tchto protokol nebo tak jmno protokolu z /etc/protocols.
Argument "!" ped protokolem invertuje vznam. slo 0 je ekvi-
valentem k all. Protokol all vyhov vem protokolm a je pouit
jako vchoz, pokud nen specifikovn dn protokol all nelze
pout v dn kombinace s pkazem check.
-s, --source, --src [!] addresa[/maska] [!] [port[:port]]
Uren odeslatele. Adresa me to bt bu jmno hostitele,
jmno st nebo IP adresa. Maska me bt bu maska st nebo
slo, kter uruje zleva poet jedniek v masce st. Nap.
maska 24 odpovd 255.255.255.0. Argument "!" neguje vznam.
Oznaen odeslatele me obsahovat i port nebo typ ICMP. Lze
pout bu jmno sluby, slo portu, seln oznaen typu ICMP
nebo jedno ze slovnch oznaen typu ICMP, kter vype pkaz
ipchains -h icmp
Mnoho z tchto jmen oznauje jak typ tak kd, piem ICMP kd
je po parametru -d neplatn. Ve zbytku odstavce port znamen bu
specifikaci portu nebo typ ICMP. Rozsah port lze urit
pouitm formtu port:port. Pokud nen zadn prvn port, je za
nj dosazena "0"; pi absenci koncovho portu je dosazeno
"65535".
Porty lze specifikovat pouze v kombinaci s tcp, udp, nebo icmp
protokoly. "!" ped oznaenm portu neguje vznam. Pokud je
pouit pkaz check je nutn zadat jeden port a s parametrem -f
(fragment) nelze zadat dn port.
--source-port [!] [port[:port]]
Tento parametr umon zvl urit zdrojov port nebo rozsah
port. Podrobnosti viz. ve parametr -s --sport
-d, --destination, --dst [!] address[/mask] [!] [port[:port]]
Uren pjemce. Detaily k syntaxi viz. podrobnosti k parametru
-s (source). Pro ICMP kter nem porty, "destination port"
oznauje numerick ICMP kd.
--destination-port [!] [port[:port]]
Pomoc tto volby lze urit porty. Podrobnosti viz. parametr -s
Zkrcen lze tento parametr zapsat --dport
--icmp-type [!] jmno_typu
Slou ke specifikaci typu ICMP. (pouit -h icmp vype platn
jmna ICMP typ). Je to vhodnj ne pidvn do specifikace
pjemce.
-j, --jump cl
Tento parametr uruje cl pravidla; tj. co se m s paketem dlat
pokud tomuto pravidlu vyhov. Clem me bt uivatelem defino-
van etzec pravidel (ne vak ten jeho soust je toto
pravidlo) nebo jeden ze specilnch cl, kter pmo uruje co
se bude s paketem dt dl. Pokud tento parametr chyb, pak i
kdy paket pravidlu vyhov dojde pouze k inkrementaci poitadla,
ale nijak to neovlivn jeho cestu.
-i, --interface [!] name
Voliteln lze zadat jmno sovho rozhran skrze kter byl
paket obdren (pro pakety testovan v etzci pro vstup - input
chain) nebo skrze kter bude pokraovat dle (forward chain).
Pokud parametr chyb, vyhov jakkoliv rozhran. "!" obrac
vznam. Jestlie oznaen rozhran kon znakem "+", pak vyhov
vechna rozhran kter zanaj urenmi znaky.
[!] -f, --fragment
Pi pouit tohoto parametru budou testovny pouze druh a dal
sti fragmentovanho paketu. Nelze dnm zpsobem urit zdro-
jov nebo clov port paketu (nebo typ ICMP), proto paket nevy-
hov dnmu pravidlu, kter jej bude specifikovat. Znak "!"
invertuje vznam.
DAL VOLBY
Dle je mono pout nsledujc roziujc volby:
-b, --bidirectional
Obousmrn reim. Pravidlu vyhov IP pakety v obou smrech; Je
to tot jako opakovan pouit pravidla s prohozenm
odeslatelem a pjemcem. Neznamen to, e pokud povolte TCP
SYN pakety ven, tak -b umon vstup non-SYN paket dovnit:
zptn pravidla jsou stle tat pravidla, kter byla zadna. Z
toho vyplv, e obvykle bv jednodu nepouvat -b a vypsat
jednotliv pravidla.
-v, --verbose
Upovdan vstup. Pkaz pro vpis s touto volbou vype adresy
rozhran, volby u pravidel (pokud existuj) a masky TOS. Dle
jsou vypsna poitadla paket a byt s pponami 'K', 'M' or 'G'
pro 1000, 1,000,000 a 1,000,000,000 nsobky (viz. parametr -x
pro zmnu). V kombinaci s parametrem -M, se navc vyp infor-
mace souvisejc s sly delta sekvence. Pro pipojovn,
vkldn, mazn a nahrazovn dojde k vypsn detailnch infor-
mac o pravidlech.
-n, --numeric
seln vstup. IP adresy a sla port budou vypsna v
selnm formtu. Bn se je program sna peloit na jmna
hostitel, st nebo slueb.
-l, --log
Zapne logovn vyhovujcch paket. Pokud je tato volba u
pravidla nastavena, jdro Linuxu bude vypisovat informace (IP
hlaviky) o vech vyhovujcch paketech pes printk().
-o, --output [maxsize]
Kopruje vyhovujc pakety na userspace zazen. Slou to
hlavn vvojm, kte by si chtli hrt s firewally v
userspace. Voliteln argument maxsize uruje limit koprovanch
paketu v bytech. Tato volba je platn pouze pokud bylo jdro
kompilovno s volbou CONFIG_IP_FIREWALL_NETLINK.
-m, --mark markvalue
Oznaovn vyhovujcch paket. Pakety mohou bt oznaeny
32bitovou hodnotou, kter me (jednou) zmnit zpsob, jak se s
nimi bude manipulovat. Pokud nejste kernel hacker, patrn se o
to nebude zajmat. Pokud parametr markvalue zan "+" nebo
"-", pak tato hodnota bude pitena nebo odetena od aktuln
hodnoty znaen paket (zan nulou).
-t, --TOS andmask xormask
Masky pouvan pro pravy TOS pole v IP hlavice. Jestlie
paket vyhovuje pravidlu, jeho TOS pole je bitov vynsobeno s
prvn maskou a vsledek je pot bitov seten s druhou maskou.
Maska se zadv jako estnctkov osmibitov hodnota. Protoe
LSB v poli TOS mus zstat(1,2) nezemnn (RFC 1349), jsou hodnoty
TOS, kter by mohly zmnu zpsobit, odmtnuty stejn jako
vechna pravidla, kter vdy mn vce ne jeden TOS bit.
Pravidla, kter nastavuj vce TOS bit pro urit pakety,
poslaj na standardn vstup hlen, kter meme ignorovat,
pokud vme, e na pakety s takovmi hodnotami TOS nebudou tato
pravidla aplikovna. Je samozejm, e manipulace s TOS je
bezvznamn pokud m pravidlo cl DENY nebo REJECT.
-x, --exact
pln sla. Vypisuje skuten hodnoty paketovch a bytovch
potadel msto jejich zaokrouhlen ve tvaru K (pro
1000nsobek), M (1000K), G (1000M). Tato volba m vznam pouze s
pkazem -L.
[!] -y, --syn
Vyhovuj pouze TCP pakety s nastavenm SYN bitem a nulovmi ACK
a FIN bity. Tyto pakety jsou pouvny pi dostech o navzn
TCP spojen; nap. zablokovn takovch paket na rozhran
neumon pchoz TCP spojen, ale odchoz spojen budou
normln fungovat. Tato volba m vznam pouze pokud je pouvn
protokol TCP. Pokud je ped -y "!", pak se obrac vznam.
--line-numbers
Pi vpisu pravidel pid sla dk na zatky kadho
pravidla podle jeho umstn v etzci.
--no-warnings
Zake veker hlen.
SOUBORY
/proc(5,n)/net/ip_fwchains
/proc(5,n)/net/ip_masquerade
DIAGNOSTIKA
Nejrznj chyby jsou zobrazovny na standardnm chybovm vstupu.
Pi sprvn funkci je nvratov hodnota 0. Chyby, kter jsou zejm
zpsobeny nesprvnmi parametry pkazu maj nvratovou hodnotu 2 a
ostatn chyby maj nvratovou hodnotu 1.
CHYBY
Jestlie je vstupem terminl a je vloeno nebo pipojeno pravidlo do
etzce pravidel pro dle pedvan pakety (forward chain), nen pov-
olen IP forwarding a je pouit parametr --no-warnings je na standardn
vstup vypsna zprva, e pedvn paket nebude fungovat dokud nedo-
jde k nprav. To m pomoci uivatelm, kte nevd o nutnosti IP for-
wardingu (co neexistovalo v jdrech 2.0).
Neexistuje zpsob jak vynulovat zrove paketov a bytov potadlo
pomoc jedinho etzce. Jedn se o omezen jdra.
Detekce smyek nen v ipchains hotov; pakety ve smyce budou zahozeny
a zapsny do logu, ale je to to prvn co se naleznete pokud vytvote
smyku.
Vklad toho, co se dje pi oznaovn paket je mysln nejasn dokud
nevyjde dokumentace popisujc rutiny pro prci s pakety v jdrech 2.1.
Nelze vynulovat poitadla pravidel pro etzce (policy) tj. ty, kter
pat do neuivatelskch (built-in) etzc.
POZNMKY
Program ipchains se znan li od programu ipfwadm (autor Jos Vos)
tm, e pouv nov IP firewallov konstrukce. Je nadstavbou programu
ipfwadm a obecn pouv mapovn pkaz 1:1. Vm, e nov pkazy
budou srozumitelnj. Nicmn je zde mnoho zmn, o kterch byste se
mli informovat.
S fragmenty se pracuje rzn. Vechny fragmenty krom prvnho mohly
prochzet (co je obvykle bezpen); nyn je mon je filtrovat. Zna-
men to, e byste pravdpodobn mli pidat jednoznan pravidlo pro
akceptovn fragment pokud pechzte na ipchains. T je dobr
podvat se na star(1,4) systm potacch pravidel, kter kontrolovala
odeslatele a pjemce port 0xFFFF (0xFF pro ICMP), co byl star(1,4)
zpsob pro potn fragment.
Potac pravidla jsou te jednodue pipojena ke vstupnm a vstupnm
etzcm (input a output chain); star(1,4) chovn 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
Tmto se vytvo ti uivatelsk etzce, acctin, acctout and acctio,
kter budou obsahovat pravidla pro potn (mohou bt bez parametru
-j, take pakety jednodue projdou).
Cl MASQ nebo REDIRECT, kter je jdrem povaovn za nevhodn (tj.
neprochzejc pes etzce pro vstup (input chain) nebo prchod (for-
ward chain), zpsob zznam do syslogu a paket bude zahozen.
Star zpsob porovnvn SYN a ACK (kter bylo dve ignorovno pro
jin ne TCP pakety) byl upraven; volba SYN neplat pro pravidla
tkajc se jinch ne paket TCP.
Volba pro porovnn ACK (parametr -k se u nepouv; kombinace s ! a
-y je ekvivalentn).
Nyn ji nelze zadat masku TOS, kter nastav nebo zmn nejmn
vznamn TOS bit; dvj masky TOS byly, pokud se o to pokusily,
jdrem zmnny.
S parametrem -b se nyn jednodue pracuje vloenm nebo smaznm dvo-
jice pravidel s prohozenm odeslatelem a pjemcem.
Sov rozhran nelze urit jeho adresou - mus se zadat jeho jmno.
VIZ TAK
ipfw(4)
AUTOR
Rusty Russell <rusty@linuxcare.com>. Dkuji tak Hansu Perssonovi za
podrobn peten a korektury; chtl bych, aby etl vechny moje dal
dokumenty!
PEKLAD
Jan Jasansk (jan.jasansky@pslib.cz).
February 8, 1998 IPCHAINS(8)