Úvod
Všechny moderní operační systémy jsou vybaveny firewallem – softwarovou aplikací, která reguluje síťový provoz do počítače. Firewally vytvářejí bariéru mezi důvěryhodnou sítí (jako je kancelářská síť) a nedůvěryhodnou sítí (jako je internet). Firewally fungují tak, že definují pravidla, která určují, který provoz je povolen a který je blokován. Nástroj firewall vyvinutý pro systémy Linux je iptables .
V tomto tutoriálu se dozvíte, jak nainstalovat iptables, nakonfigurovat a používat iptables v Linuxu.
Předpoklady
- Uživatelský účet s sudo privilegia
- Přístup k oknu terminálu/příkazovému řádku (Ctrl-Alt-T, Ctrl-Alt-F2)
Jak iptables fungují
Síťový provoz se skládá z paketů. Data jsou rozdělena na menší části (nazývané pakety), odeslána po síti a poté dána zpět dohromady. Iptables identifikuje přijaté pakety a poté pomocí sady pravidel rozhodne, co s nimi udělá.
Iptables filtruje pakety na základě:
- Tabulky: Tabulky jsou soubory, které spojují podobné akce. Stůl se skládá z několika řetězců .
- Řetězce: Řetězec je řetězec pravidel . Když je přijat paket, iptables najde příslušnou tabulku a poté ji projde řetězcem pravidel dokud nenajde shodu.
- Pravidla: Pravidlo je příkaz, který říká systému, co má dělat s paketem. Pravidla mohou blokovat jeden typ paketů nebo předávat jiný typ paketů. Výsledek, kam je paket odeslán, se nazývá cíl .
- Cíle: Cíl je rozhodnutí, co dělat s paketem. Obvykle se jedná o přijetí, zrušení nebo odmítnutí (což odešle chybu zpět odesílateli).
Stoly a řetězy
Linuxový firewall iptables má čtyři výchozí tabulky. Uvedeme všechny čtyři spolu s řetězci, které každá tabulka obsahuje.
1. Filtr
Filtr tabulka je nejčastěji používaná. Funguje jako vyhazovač, který rozhoduje o tom, kdo se dostane do a z vaší sítě. Má následující výchozí řetězce:
- Vstup – pravidla v tomto řetězci řídí pakety přijaté serverem.
- Výstup – tento řetězec řídí pakety pro odchozí provoz.
- Přeposlat – tato sada pravidel řídí pakety, které jsou směrovány přes server.
2. Překlad síťových adres (NAT)
Tato tabulka obsahuje pravidla NAT (Network Address Translation) pro směrování paketů do sítí, ke kterým nelze přistupovat přímo. Když je třeba změnit cíl nebo zdroj paketu, použije se tabulka NAT. Zahrnuje následující řetězce:
- Předběžné směrování – tento řetězec přiděluje pakety, jakmile je server přijme.
- Výstup – funguje stejně jako výstupní řetězec, který jsme popsali ve filtru stůl.
- Postrouting – pravidla v tomto řetězci umožňují provádět změny paketů poté, co opustí výstupní řetězec.
3. Mangle
Mangle tabulka upravuje vlastnosti IP hlavičky paketů. Tabulka obsahuje všechny následující řetězce, které jsme popsali výše:
- Předběžná trasa
- Postrouting
- Výstup
- Vstup
- Přeposlat
4. Syrové
Raw tabulka se používá k vyjmutí paketů ze sledování připojení. Nezpracovaná tabulka má dva z řetězců, které jsme již zmínili:
- Předběžná trasa
- Výstup
5. Zabezpečení (volitelné)
Některé verze systému Linux také používají Zabezpečení tabulka pro správu zvláštních pravidel přístupu. Tato tabulka obsahuje vstup, výstup a předat řetězy, podobně jako tabulka filtrů.
Cíle
Cíl je to, co se stane poté, co paket vyhovuje kritériím pravidla. Neukončující cíle stále porovnávají pakety s pravidly v řetězci, i když paket odpovídá pravidlu.
S ukončením cíle, je paket okamžitě vyhodnocen a není porovnáván s jiným řetězcem. Ukončovací cíle v Linux iptables jsou:
- Přijmout – toto pravidlo přijímá pakety procházející přes firewall iptables.
- Přetáhněte – upuštěný balík není spárován s žádným dalším řetězcem. Když Linux iptables přeruší příchozí připojení k vašemu serveru, osoba, která se pokouší připojit, neobdrží chybu. Vypadá to, jako by se pokoušeli připojit k neexistujícímu počítači.
- Návrat – toto pravidlo odešle paket zpět do původního řetězce, takže jej můžete porovnat s jinými pravidly.
- Odmítnout – firewall iptables odmítne paket a odešle chybu připojujícímu se zařízení.
Jak nainstalovat a nakonfigurovat iptables Linux Firewall
Instalace Iptables Ubuntu
Iptables jsou standardně nainstalovány na většině systémů Linux. Chcete-li potvrdit, že je iptables nainstalováno, použijte následující příkaz:
sudo apt-get install iptables
Příklad výstupu v Ubuntu potvrzuje, že nejnovější verze iptables je již k dispozici:
Pokud chcete zachovat pravidla brány firewall iptables při restartu systému, nainstalujte trvalý balíček:
sudo apt-get install iptables-persistent
Instalace Iptables CentOS
V CentOS 7 , iptables byl nahrazen firewallem .
Chcete-li nainstalovat iptables, musíte nejprve zastavit firewalld. Zadejte následující příkazy:
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl mask firewalld
Příkazy zastaví a zabrání spuštění firewallu při startu a nedovolí jiným službám spustit firewalld.
Dále nainstalujte a povolte iptables. Nejprve nainstalujte balíček služeb iptables pomocí následujícího příkazu:
sudo yum -y install iptables-services
Tento balíček zachová vaše pravidla po restartu systému. Níže zobrazené informace potvrzují, že instalace je dokončena:
Zadejte následující příkazy pro povolení a spuštění iptables v CentOS 7:
sudo systemctl enable iptables
sudo systemctl start iptables
Příkaz status potvrzuje stav aplikace:
sudo systemctl status iptables
Základní syntaxe příkazů a voleb iptables
Obecně příkaz iptables vypadá následovně:
sudo iptables [option] CHAIN_rule [-j target]
Zde je seznam některých běžných možností iptables:
-A --append
– Přidejte pravidlo do řetězce (na konci).-C --check
– Hledejte pravidlo, které odpovídá požadavkům řetězce.-D --delete
– Odstraňte z řetězce zadaná pravidla.-F --flush
– Odstraňte všechna pravidla.-I --insert
– Přidejte pravidlo do řetězce na dané pozici.-L --list
– Zobrazit všechna pravidla v řetězci.-N -new-chain
– Vytvořte nový řetězec.-v --verbose
– Zobrazit více informací při použití možnosti seznamu.-X --delete-chain
– Odstraňte poskytnutý řetězec.
Iptables rozlišuje velká a malá písmena, takže se ujistěte, že používáte správné možnosti.
Konfigurace iptables v Linuxu
Ve výchozím nastavení tyto příkazy ovlivňují filtry stůl. Pokud potřebujete zadat jinou tabulku, použijte –t
následuje název tabulky.
Zkontrolujte aktuální stav iptables
Chcete-li zobrazit aktuální sadu pravidel na vašem serveru, zadejte do okna terminálu následující:
sudo iptables -L
Systém zobrazuje stav vašich řetězů. Výstup zobrazí tři řetězce:
Chain INPUT (policy ACCEPT)
Chain FORWARD (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)
Povolit provoz se zpětnou vazbou
Je bezpečné povolit provoz z vašeho vlastního systému (localhost). Připojte Vstup řetězce zadáním následujícího:
sudo iptables -A INPUT -i lo -j ACCEPT
Tento příkaz nakonfiguruje bránu firewall tak, aby přijímala provoz pro localhost (lo
) rozhraní (-i
). Nyní vše, co pochází z vašeho systému, projde vaším firewallem. Toto pravidlo musíte nastavit, aby aplikace mohly komunikovat s rozhraním localhost.
Povolit provoz na konkrétních portech
Tato pravidla umožňují provoz na různých portech zadáte pomocí příkazů uvedených níže. Port je komunikační koncový bod určený pro určitý typ dat.
Chcete-li povolit webový provoz HTTP, zadejte následující příkaz:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Chcete-li povolit pouze příchozí provoz SSH (Secure Shell), zadejte následující:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Chcete-li povolit internetový provoz HTTPS, zadejte následující příkaz:
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Možnosti fungují následovně:
-p
– Zkontrolujte zadaný protokol (tcp ).--dport
– Zadejte cílový port.-j jump
– Proveďte zadanou akci.
Řízení provozu podle IP adresy
K PŘIJÍMÁNÍ provozu z konkrétní IP adresy použijte následující příkaz.
sudo iptables -A INPUT -s 192.168.0.27 -j ACCEPT
Nahraďte IP adresu v příkazu IP adresou, kterou chcete povolit.
Provoz z IP adresy můžete také DROP:
sudo iptables -A INPUT -s 192.168.0.27 -j DROP
Provoz z řady IP adres můžete ODmítnout, ale příkaz je složitější:
sudo iptables -A INPUT -m iprange --src-range 192.168.0.1-192.168.0.255 -j REJECT
Volby iptables, které jsme použili v příkladech, fungují následovně:
-m
– Porovnejte zadanou možnost.-iprange
– Řekněte systému, aby očekával rozsah IP adres namísto jedné.--src-range
– Identifikuje rozsah IP adres.
Odstranění nežádoucího provozu
Pokud definujete dport pravidla brány firewall iptables, musíte zabránit neoprávněnému přístupu zrušením veškerého provozu, který přichází přes jiné porty:
sudo iptables -A INPUT -j DROP
-A
volba připojí k řetězci nové pravidlo. Pokud jakékoli připojení přichází přes jiné než vámi definované porty, bude zrušeno.
Smazat pravidlo
Můžete použít -F
možnost vymazat všechna pravidla brány firewall iptables. Přesnější metodou je odstranit číslo řádku pravidla.
Nejprve vypište všechna pravidla zadáním následujícího:
sudo iptables -L --line-numbers
Najděte řádek pravidla brány firewall, které chcete odstranit, a spusťte tento příkaz:
sudo iptables -D INPUT <Number>
Nahraďte <číslo> se skutečným číslem řádku pravidla, který chcete odstranit.
Uložte změny
Iptables nedodržuje pravidla, která jste vytvořili, když se systém restartuje. Kdykoli nakonfigurujete iptables v Linuxu, všechny provedené změny se použijí pouze do prvního restartu.
Chcete-li uložit pravidla v systémech založených na Debianu, zadejte:
sudo /sbin/iptables–save
Chcete-li uložit pravidla v systémech založených na Red-Hat, zadejte:
sudo /sbin/service iptables save
Při příštím spuštění systému iptables automaticky znovu načte pravidla brány firewall.