Linux jako server/IPfilter: Porovnání verzí

Smazaný obsah Přidaný obsah
Grumpa (diskuse | příspěvky)
sejv
Grumpa (diskuse | příspěvky)
tak nějak hotovo
Řádek 122:
30 * * * * /usr/local/sbin/muj-ipf-down
který nám vždycky v půl shodí firewall.
 
A teď už se fakt ničeho nebojím (teda kromě té sovy).
 
== Začínáme tvořit ==
Již v úvodu jsem se zmínil, že restriktivní politiku je dobré "nahodit",
až když je vše odladěno. Proteče-li něco pravidly filtru tak, že se uplatní
politika, je při ladění jedno, jestli je to ACCEPT nebo DROP. ACCEPT
ale zabrání případnému zamrznutí komunikace.
<pre>
#!/bin/sh
# skript muj-ipf-up
 
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
 
# ... a tady se bude připisovat
</pre>
 
=== Přidáváme pravidla ===
Nová pravidla přidávám raději ručně z konzole, okouknu co dělají a teprve, jsem-li
spokojen dopíšu je do "nahazovacího" skriptu. Tady se príma hodí, že máme
v koukací konzoli i čísla řádků - pravidla můžeme zařazovat na místo, kde je přesně
potřebujeme.
 
Sledování počtu paketů prošlých různými pravidly se může hodit kupř na to, že
je-li tu nula (zvláště dlouhodobě), je otázka, zda ono pravidlo má vůbec smysl.
Někdy zkrátka testujeme něco, co už se uplatnilo v řadě pravidel výše. Stává se to.
 
Taky je dobré dávat nahoru pravidla, která se uplatňují častěji. Například je běžné
toto:
<pre>
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
</pre>
První tři řádky říkají, že se má propustit vše co jde na daná čísla portů, čtvrtý
řádek říká, že se má propustit vše, co se týká již dříve nastavených spojení.
 
Je asi zbytečné u již navázaných spojení znovu testovat číslo portu, a tak můžeme
čtvrté pravidlo dát nahoru. Většina paketů se totiž týká již navázaných spojení.
 
<em>Poznámka: Při této optimalizaci samozřejmě nesmíme narušit logiku
pořadí testování. Prohazovat lze jen tam, kde na pořadí nesejde.</em>
 
=== Logujeme co protéká ===
Když máme náš filtr tak nějak hotový, často nás začne dráždit otázka, co to je
za pakety, které procházejí skrz naše pravidla nepovšimnuté? Tak si na konec
všech pravidel přidáme řádek, který bude tyto pakety zapisovat do
<code>/var/log/syslog</code>:
iptables -A INPUT -i eth0 -j LOG
 
Toto logování vypneme:
iptables -D INPUT ''č.pravidla''
kde ''č.pravidla'' je číslo, které si zjistíme z výpisu pravidel.
 
Můžeme zjistit, že tu jsou kupř pakety, které určitě chceme propouštět.
Při závěrečné změně politiky z ACCEPT na DROP by nám tedy nějaké
síťové služby přestaly fungovat. Musíme tedy pro ně přidat pravidla,
která jim dovolí projít.
 
Taky můžeme zjistit, že jsou tu pakety, které opravdu zahodit zasluhují.
 
Ale tohle všechno už je záležitost vašeho ladění vašich IP filtrů a já vám teď
můžu podržet palce při studiu a ladění.