Paketové filtry

Václav Fiala, xfiala1@fi.muni.cz


Obsah


Typy firewallů


Paketové filtry v linuxu

Jsou implementovány v jádře. Postupně se vyvíjely.

Nástroje pro konfiguraci paketového fitru:

iptables a netfilter

Download / dokumentace:
www.netfilter.org
Základní moduly součástí distribuce jádra řady 2.4. Dostupná další rozšíření (moduly/patche).

Konfiguraci iptables (netfilteru) tvoří tři základní tabulky: nat, mangle a filter. Každá z nich obsahuje řetězce pravidel (chainy). Paket procházející chainem se postupne testuje proti levým stranám jednotlivých pravidel a v případě shody je uplatněn cíl pravidla. Pro daný typ cíle můžeme specifikovat další upřesňující parametry. Každá z tabulek obsahuje předdefinované chainy, k nimž může uživatel přidávat další vlastní. Pro každý předdefinovaný (built-in) chain lze definovat policy - cíl, který není user-defined chainem a je uplatněn v případě, že není splněno žádné z pravidel nebo je splněno pravidlo s cílem RETURN. Pro user-defined chainy je implicitní 'policy' vždy RETURN.

Schéma průchodu paketu systémem:
      --------
     |Vstupní |       ________
     |rozhraní|      /        \
      --------      /         \/
         \/         |      --------
     ----------     |     / INPUT  \
    /PREROUTING\    |     \ filter /
    \  mangle  /    |      --------
     ----------     |         \/
         ||         |      ---------
         \/         |     |  Local  |
     ----------     |     | process |
    /PREROUTING\    |      --------- 
    \   nat    /    /         \/
     ----------    /       --------
         ||       /       / OUTPUT \
         \/      /        \ mangle /
     ---------  /          --------
    |  Input  |/              \/
    | routing |            --------
     ---------            / OUTPUT \
         ||               \  nat   /
         \/                --------
     ---------                \/
    / FORWARD \            --------
    \ filter  /           / OUTPUT \
     ---------            \ filter /
         ||                --------
         ||                   \/
	 ||                --------
	 ||               | Output |
	 \/               | routing|
    -----------            --------
   /POSTROUTING\              \/
   \    nat    /---------------
    -----------
         \/
    ----------
   | Výstupní |
   | rozhraní |
    ----------
Stavová inspekce paketu (connection tracking)
- vyžaduje defragmentaci paketů a tedy potenciálně zvýšuje latenci. příklad nastavení firewallu:
Vytvoření uživatelského chainu:
# iptables -N block
# iptables -A block -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A block -m state --state NEW -i ! ppp0 -j ACCEPT
# iptables -A block -j DROP

A jeho navázání na chainy INPUT a FORWARD:
# iptables -A INPUT -j block
# iptables -A FORWARD -j block

	      
iptables v Rehat linuxu
Konfigurace uložena v /etc/sysconfig/iptables. Startovací skript /etc/rc.d/init.d/iptables
Nastavení lze provést pomocí iptables a poté uložit:
# iptables-save > /etc/sysconfig/iptables

ipchains

Dva nejzásadnějŠí rozdíly oproti iptables:

Odkazy

Netfilter
Firewall-HOWTO
IPCHAINS-HOWTO
packet-filtering-HOWTO
NAT-HOWTO
IP-Masquerade-HOWTO