Základní konfigurace Linux firewallu pomocí Iptables
about:reader?url=http://www.abclinuxu.cz/blog/Debian_Lenny/...
abclinuxu.cz
Základní konfigurace Linux firewallu pomocí Iptables Štítky: aMule, bezpečnost, CentOS, Debian, distribuce, firewally, FTP, input, instalace, Internet, iptables, knihy, konfigurace, LAN, Linux, logování, manuál, NAT, návod, Nmap, PC, pravidla, překlad, P2P, server, sítě, skript, SSH, TCP, tcpdump, tutoriál, uložení 4.10.2009 16:48 | Přečteno: 17898× | | poslední úprava: 10.10.2009 12:38 Cílem dnešního příspěvku je popsat základní konfiguraci Iptables a to tak, že by měla dostačovat k zabezpečení osobního PC. V případě námitek nebo konstruktivních poznámek máte možnost vyjádřit je v diskuzi. O Iptables toho bylo napsáno poměrně dost, ale nikde jsem nenašel ucelený, krátký a stručný přehled jak Iptables fungují a jak je nastavit – o toto se pokusím v dnešním příspěvku. Ještě bych chtěl dodat, že toto není rozhodně náhrada za manuál k Iptables. Budou popsány jen ty nejpoužívanější parametry a nastavení. PC zároveň slouží jako NAT pro další PC v LAN, která se prostřednictvím jeho připojují do internetu.
1 z 12
8/22/15, 11:39 AM
Základní konfigurace Linux firewallu pomocí Iptables
about:reader?url=http://www.abclinuxu.cz/blog/Debian_Lenny/...
Teoretická část Netfilter(firewall) Nejprve něco k Linuxovému firewallu. Firewall je integrován v jádře, je nazýván Netfilter a konfiguruje se pomocí programu Iptables popřípadě je možného nastavovat ho v GUI(např. SW Firestarter – konfigurace je intuitivní - to je ale mimo rámec tohoto příspěvku.). Netfilter je stavový firewall což znamená,že umí sledovat spojení (tj. nehodnotí jen samotný paket, ale i spojení, ke kterému patří). Každý paket který dojde až k linuxovému jádru musí projít alespoň jedním z řetězců které jsou součástí tabulek. Konfigurace Iptables Blokové schéma firewallu a NATu[1]
2 z 12
8/22/15, 11:39 AM
Základní konfigurace Linux firewallu pomocí Iptables
about:reader?url=http://www.abclinuxu.cz/blog/Debian_Lenny/...
Syntaxe příkazu Iptables: iptables [tabulka] [akce] [řetězec] [pravidla] [cíl]. Nadále budou popsány jednotlivé běžně užívané parametry parametry Iptables. Tabulka:
filter: jen tato tabulka se používá k filtrování paketů. Pokud v iptables je hodnota tabulka vynechána tak se automaticky bere, že je tam právě filter. nat: tuto tabulku použijeme pokud chceme používat přepis adres mangle: zpracovává hlavičky paketů, dále nebude rozebírána – používá se např. při nastavování QoS) Akce (nejčastěji používané jsou následující čtyři, ostatní méně používané jsou odděleny čarou):
3 z 12
8/22/15, 11:39 AM
Základní konfigurace Linux firewallu pomocí Iptables
about:reader?url=http://www.abclinuxu.cz/blog/Debian_Lenny/...
-A: nakonec řetězce se přidá nové pravidlo -P: zadání hlavního pravidla (politika) -L: slouží k vypsání pravidel -F: slouží k vymazání pravidel -----------------------------------------------------------------------------------I: nové pravidlo se přidá na začátek řetězce -D: slouží k smazání pravidla Pomocí následujících akcí můžeme zakládat vlastní řetězce -N: založení nového řetězce -X: smazání námi vytvořeného řetězce -E: přejmenování řetězce Řetězce (pro tabulku filter):
INPUT: vstupní řetězec do kterého vstupují všechny pakety, které vstupují do počítače. OUTPUT: výstupní řetězec, do něhož vstupují všechny pakety, které z počítače odcházejí. FORWARD: určuje co bude s daty která nejsou určena pro tento PC. Tato data prochází pouze FORWARDem (nikoliv INPUTem nebo OUTPUTem). Forwarding je nejprve nutno v povolit v jádře příkazem: echo „1“ > proc/sys/net/ipv4/ip_forward. Řetězce(pro tabulku nat)
PREROUTING: používá se pro port forwarding (DNAT) změna
4 z 12
8/22/15, 11:39 AM
Základní konfigurace Linux firewallu pomocí Iptables
about:reader?url=http://www.abclinuxu.cz/blog/Debian_Lenny/...
cílové adresy POSTROUTING: používá se pro SNAT(MASQUERADE) změna zdrojové adresy Ohledně NATu se jistě bude hodit routovací tabulka. Ta se vypíše buď:ip route a nebo netstat -r. Pravidla(budou popsána ta nejběžnější):
-s: zdrojová IP paketu, popřípadě rozsah adres, adresa může být doplněna maskou -d: cílová IP paketu a nebo rozsah adres -i: vstupní zařízení, kterým paket přijde do PC např. eth0 -o: výstupní zařízení, kterým odejde paket z PC --sport: zdrojový port paketu --dport: port na který paket putuje Cíl(určuje co se s paketem stane): K určení cíle používáme parametr -j za kterým následuje konkrétní akce a ty jsou následující. ACCEPT: akceptuje paket, nechá ho projít filtrem REJECT: paket bude zahozen a zdrojový PC o tom bude informován DROP: paket bude také zahozen, ale zdrojový PC nebude informován Praktická část Nyní přejdeme od teorie k praxi a ukážeme si praktickou konfiguraci Iptables na domácím PC. Nejprve zjistíme jak jsou Iptables
5 z 12
8/22/15, 11:39 AM
Základní konfigurace Linux firewallu pomocí Iptables
about:reader?url=http://www.abclinuxu.cz/blog/Debian_Lenny/...
nastaveny, to provedeme příkazem: iptables -L. Pokud jste je nikdy nekofigurovali tak pravděpodobně nalezneme, že všechny řetězce(INPUT, FORWARD, OUTPUT) budou mít politiku nastavenu na accept. To znamená, že náš FW je otevřený a vše povoluje(nic neblokuje). Pravidla budeme psát do textového souboru, který pak použijeme jako skript. Jako první nastavíme politiky tak aby FW blokoval příchozí pakety. Pakety odcházející z našeho PC povolíme. A povolíme také pakety procházející. Dále budeme nastavovat jednotlivá pravidla. Ta jsou vyhodnocována od shora dolů tak jak bývá u FW zvykem. Ješte dodám, že PC má dvě rozhraní a to eth0 a eth1. Eth0 je LAN rozhraní, eth1 je WAN rozhraní. #politiky FW /sbin/iptables -P INPUT DROP
# vše co jde na
vstup PC zahoď /sbin/iptables -P FORWARD DROP
# vše co chce jen
projít počítačem zahoď /sbin/iptables -P OUTPUT ACCEPT # vše co odchází z PC nech odejít
#NAT
6 z 12
8/22/15, 11:39 AM
Základní konfigurace Linux firewallu pomocí Iptables
about:reader?url=http://www.abclinuxu.cz/blog/Debian_Lenny/...
echo "1" > /proc/sys/net/ipv4/ip_forward # povolení forwardingu v jádře /sbin/iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE # změna zdrojové LAN adresy na zdrojovou WAN adresu /sbin/iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT #povolí vše z eth0 směřující na eth1 /sbin/iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT #povolí přeposílání z rozhraní WAN na rozhraní LAN u existujících a nebo souvisejících spojení
#FW pravidla
/sbin/iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # propust spojeni která byla inicializovaná zevnitř /sbin/iptables -A INPUT -i lo -j ACCEPT #propust
7 z 12
8/22/15, 11:39 AM
Základní konfigurace Linux firewallu pomocí Iptables
about:reader?url=http://www.abclinuxu.cz/blog/Debian_Lenny/...
na vstup vše pokud je vstupní rozhraní loopback /sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT #HTTP server, propustí vstupní data na port 80 /sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT #SSH server, propustí vstupní data na port 22 /sbin/iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT # FTP server, povolen rozsah portů 20-21 /sbin/iptables -A INPUT -p udp --dport 4672 -j # aMule , povolen UDP port 4672 /sbin/iptables -A INPUT -p tcp --dport 4662 -j # aMule , povolen TCP port 4662 /sbin/iptables -A INPUT -p ICMP --icmp-type echo-request -j ACCEPT Sekce politiky: první pravidlo politiky říká, že všechny pakety určené pro náš PC budou zahozeny s výjimkou těch, které jsou povoleny v části FW pravidla a s výjimkou těch spojení která byla inicializována naším PC. Druhé pravidlo politiky přikazuje zahodit každý paket, který by chtěl naším PC jen projít. Třetí pravidlo politiky říká, že všechna odchozí spojení jsou povolena.
8 z 12
8/22/15, 11:39 AM
Základní konfigurace Linux firewallu pomocí Iptables
about:reader?url=http://www.abclinuxu.cz/blog/Debian_Lenny/...
Sekce NAT: povoluje prvním příkazem podporu předávání paketů jádrem, druhým realizuje přepis zdrojových adres tak všem paketům vystupujícím z rozhraní eth1 bude změněna zdrojová adresa z LAN IP na WAN IP. Takové pakety pak mohou putovat do internetu a mohou být dále směrovány. Třetím a čtvrtým příkazem povoluje předávání paketů mezi síťovými rozhraními. Sekce FW pravidla: první příkaz říká: propust z venku všechny pakety těch spojení jež byly inicializovány z vnitřní sítě LAN. Ostatní příkazy povolují vstoupit datům jež mají jako cílový port jeden z uvedených. Povoluje tak služby FTP, SSH, HTTP, aMule. Jak můžete vidět jednotlivá pravidla se skládají poměrně jednoduše. Na běžnou konfiguraci PC si vystačíme bohatě s tím co jsme uvedl v teoretické části. Ještě bych dodal, že v jednotlivých pravidlech mám někdy uveden typ transportního protokolu např. -p tcp. Toto není vysvětleno v teoretické části, ale každý si asi domyslí co to je a z uvedených příkladů pochopí jak to použít. Další část toho článku se bude věnovat samotnému uložení a spuštění firewallu. Zprovoznění konfigurace Iptables Zprovoznění na systému CentOS(Red Hat, Fedora): 1)zastavíme službu iptables příkazem: „service iptables stop“ 2)smažeme vše co je v iptables příkazem „iptables -F“
9 z 12
8/22/15, 11:39 AM
Základní konfigurace Linux firewallu pomocí Iptables
about:reader?url=http://www.abclinuxu.cz/blog/Debian_Lenny/...
3)spustíme skript do kterého jsme napsali jednotlivá pravidla příkazem sh ./cesta/soubor. Pravidla se načtou do paměti. 4)Pravidla z paměti uložíme příkazem „service iptables save“ (uloží se do /etc/sysconfig/iptables) 5)Restartujeme iptables příkazem „service iptables restart“ Zprovoznění na systému Debian(pravděpodobně i Ubuntu): 1)spustíme skript ve kterém máme uloženy pravidla 2)příkazem iptables-save > /cesta/k/novemu/souboru/s/pravidly /pro/iptables uložíme pravidla do souboru ze kterého je bude iptables načítat. Ten má trochu jinou syntaxi než náš skript s pravidly. 3)například do souboru /etc/network/interfaces umístíme pre-up /sbin/iptables-restore < /cesta /k/novemu/souboru/s/pravidly/pro/iptables. Tím zajistíme, že při každém spuštění budou pravidla načtena. Logování: Na logování se používá samostatný daemon(není nutné ale je doporučeno výrobcem), který se musí doinstalovat. Daemon se jmenuje ULOGD a je dostupný ve většině distribucí jako balíček. Instalace u distribuce CentOS se provede příkazem: „yum install ulogd“, u Debianu by to bylo „aptitude install ulogd“. Konfigurace tohoto daemona se provádí v souboru /etc/ulogd.conf. Dále nebudu rozepisovat všechny direktivy tohoto konfiguračního souboru, ale uvedu 2 nejdůležitější: 1)logfile – určuje kde se budou logy ukládat 2)loglevel – určuje jak „podrobné“ logy budou
10 z 12
8/22/15, 11:39 AM
Základní konfigurace Linux firewallu pomocí Iptables
about:reader?url=http://www.abclinuxu.cz/blog/Debian_Lenny/...
Diagnostické nástroje: Jako diagnostické síťové nástroje jsem zvolil NMAP a TCPDUMP (můžete však použít i jiné dle uvážení).Kompletní soupis diagnostických a bezpečnostních nástrojů je na stránkách http://insecure.org/.V případě NMAPu odkazuji na manuálové stránky případně na jejich překlad do slovenštiny na http://nmap.org/man/sk/. V případě použití TCPDUMP odkazuji na manuálové stránky. Pro vypsání aktuálního obsahu iptables použijeme příkaz: iptables -L. Jako studijní literaturu doporučuji (ve slovenském jazyce) http://deja-vix.sk/sysadmin/firewall.html#top. Dále jsou iptables poměrně dobře vysvětleny v knížce od autora Petra Krčmáře: Postavte si počítačovou síť. Nakonec uvádím poměrně přehledný tutoriál na adrese http://forums.debian.net /viewtopic.php?f=16&t=16166. Sice je to v angličtině, ale není se čeho bát – když jsme to zvládnul já zvládnete to i vy:) Literatura: [1] CALETKA, Ondřej. Osobní firewall s iptables : prezentace k semináři [online]. 2006 [cit. 2009-10-10]. Anketa Obrázky
11 z 12
8/22/15, 11:39 AM
Základní konfigurace Linux firewallu pomocí Iptables
about:reader?url=http://www.abclinuxu.cz/blog/Debian_Lenny/...
Tiskni Sdílej: Komentáře Vložit další komentář 4.10.2009 17:04 Heron | skóre: 50 | blog: root_at_heron | Olomouc Re: Základní konfigurace Linux firewallu pomocí Iptables 4.10.2009 17:08 Heron | skóre: 50 | blog: root_at_heron | Olomouc Re: Základní konfigurace Linux firewallu pomocí Iptables 4.10.2009 17:36 Grunt | skóre: 20 | blog: Expresivní zabručení | Lanžhot Re: Základní konfigurace Linux firewallu pomocí Iptables 4.10.2009 18:10 Mrkva | skóre: 21 | blog: urandom Re: Základní konfigurace Linux firewallu pomocí Iptables Založit nové vlákno • Nahoru
12 z 12
8/22/15, 11:39 AM