Articles

Linux iptables Firewall zjednodušené příklady

v předchozím příspěvku jsme hovořili o tom, jak zabezpečit linuxový Server pomocí osvědčených postupů kalení. Někteří lidé se mě zeptali na sekci brány firewall, což byl krátký úvod do brány iptables firewall. Dnes budeme podrobně diskutovat o firewallu Linux iptables a o tom, jak zabezpečit provoz serveru pomocí této úžasné brány firewall.

Obsah

Iptables na CentOS 7

Pokud používáte CentOS 7, zjistíte, že firewalld spravuje iptables, takže pokud se chcete vrátit do iptables, musíte zastavit a maska firewalld.

$ systemctl stop firewalld$ systemctl mask firewalld

Pak install iptables služby a umožnit mu:

$ yum install iptables-services$ systemctl enable iptables

Pak se můžete začít:

$ systemctl start iptables

Jak Linux firewall funguje

Iptables firewall funkce jsou postaveny na Netfilter framework, který je k dispozici v Linuxové jádro pro filtrování paketů.

typy brány Firewall

existují dva typy firewallů:

brána firewall bez státní příslušnosti zpracovává každý paket samostatně, což znamená, že nevidí další pakety stejného připojení.

stavový firewall tento typ brány firewall se stará o všechny pakety, které jím procházejí, takže zná stav připojení. To dává větší kontrolu nad provozem.

Netfilter obsahuje tabulky. Tyto tabulky obsahují řetězce a řetězce obsahují jednotlivá pravidla.

Pokud paket odpovídá jakémukoli pravidlu, iptables použijí akci pravidla pro tento paket.

akce mohou být: přijmout, odmítnout, ignorovat nebo předat paket dalším pravidlům pro další zpracování.

Netfilter může zpracovávat příchozí nebo odchozí provoz pomocí IP adresy a čísla portu.

příkaz iptables spravuje a konfiguruje Netfilter.

než začneme psát příkazy brány firewall, musíme trochu porozumět struktuře brány firewall, abychom mohli snadno psát pravidla brány firewall.

iptables firewall tabulky

Netfilter má tři tabulky, které mohou nést pravidla pro zpracování.

tabulka filtrů iptables je hlavní tabulkou pro zpracování provozu.

druhá je tabulka nat, která zpracovává pravidla NAT.

třetí tabulka je mangle tabulka pro mandlování paketů.

tabulkové řetězce

každá tabulka výše uvedených tabulek obsahuje řetězce; tyto řetězce jsou kontejnerem pravidel iptables.

tabulka filtrů obsahuje řetězce vpřed, vstup a výstup. Můžete si vytvořit vlastní řetězec a uložit na něj svá pravidla.

Pokud paket přichází k hostiteli, iptables jej zpracuje podle pravidel vstupního řetězce.

Pokud paket přejde na jiného hostitele, znamená to, že pravidla výstupního řetězce ho zpracují.

iptables používá dopředný řetězec pro manipulaci s pakety, které mají přístup k hostiteli, ale jsou určeny jinému hostiteli.

zásady řetězce

každý řetězec v tabulce filtrů má zásady. Zásada je výchozí akce, kterou iptables podniknou.

politika může být DROP, odmítnout a přijmout.

zásady přijetí umožňují paketům projít firewallem. Zásada DROP upustí paket bez informování klienta. Politika odmítnutí také upustí paket a informuje odesílatele.

z hlediska zabezpečení byste měli zrušit všechny pakety přicházející na hostitele a přijímat pouze pakety, které pocházejí z důvěryhodných zdrojů.

Přidání pravidla do iptables

můžete přidat nové pravidlo pomocí iptables příkaz jako je tento:

$ iptables -A INPUT -i eth1 -p tcp --dport 80 -d 1.2.3.4 -j ACCEPT

Pojďme prolomit tento příkaz na kousky tak můžeme pochopit vše, co o tom.

– a znamená, že přidáváme nové pravidlo. Ve výchozím nastavení iptables přidá všechna nová pravidla do tabulky filtrů, pokud nezadáte jinou tabulku.

příznak-i určuje zařízení, na které se pravidlo použije. Pokud nezadáte zařízení, iptables použije pravidlo pro veškerý příchozí provoz bez ohledu na zařízení.

příznak-p určuje protokol paketu, který chcete zpracovat, což je v našem případě TCP.

příznak –dport určuje cílový port, který je 80.

– d určuje cílovou IP adresu, která je 1.2.3.4. Pokud není zadána žádná cílová IP adresa, pravidlo by se vztahovalo na veškerý příchozí provoz na eth1 bez ohledu na IP adresu.

– j určuje akci nebo skokovou akci. Zde přijímáme pakety pomocí Zásady přijmout.

výše uvedené pravidlo umožňuje příchozí HTTP provoz, který je na portu 80.

a co povolení odchozího provozu?

$ iptables -A OUTPUT -o eth1 -p tcp --sport 80 -j ACCEPT

pomocí příznaku-A můžete přidat pravidla do výstupního řetězce.

příznak-o se používá pro zařízení používané pro odchozí provoz.

příznak-sport určuje zdrojový port.

můžete použít název služby jako http nebo https místo číselného čísla portu na sport nebo dport. Všechny názvy služeb jsou v souboru / etc / services.

měli byste použít název služby spíše než číslo portu, což usnadňuje čtení pravidel.

pravidla iptables pořadí

iptables umístí nová pravidla na konec řetězce. Můžete jej přidat na vrchol pomocí volby-I.

posloupnost pravidel záleží, jak uvidíte nyní. Pomocí vlajky I můžete vložit svá pravidla přesně tam, kam chcete.

Podívejte se na následující pravidla, aby pochopili, jak pravidla objednávání věcech:

$ iptables -I INPUT 3 -i eth1 -p udp -j ACCEPT$ iptables -I INPUT 4 -i eth1 -p udp --dport 80 -j DROP

první pravidlo akceptuje všechny UDP provoz přijde na eth1, a číslo 3 je pravidlo pořadí.

druhé pravidlo snižuje provoz, který vstupuje do portu 80.

první pravidlo přijme veškerý provoz, pak druhé pravidlo, které by mělo provoz zrušit, neudělá nic, protože iptables předává provoz v prvním pravidle.

vaše pravidla by měla mít smysl, protože na pořadí pravidel v řetězci záleží.

Seznam pravidel iptables

můžete uvést pravidla v řetězci pomocí -L vlajka:

$ iptables -L INPUT

můžete zobrazit čísla řádků pro pravidla použití –line-čísla:

$ iptables -L INPUT --line-numbers

V seznamu jsou uvedeny názvy služeb. Čísla portů můžete místo toho zobrazit pomocí volby-n:

$ iptables -L INPUT -n --line-numbers

výše uvedené pravidlo zrychlí výpis, protože zabraňuje iptables v rozlišení DNS a vyhledávání služeb.

Si můžete vypsat všechny pravidla pro všechny řetězce, jako je tento:

$ iptables -L -n --line-numbers

dostat, kolik pakety zpracovány každé pravidlo, můžete použít flag-v:

$ iptables -L -v

Také si můžete vynulování čítače na nulu pomocí -Z vlajky.

Teď můžeme přidat nové pravidlo do žádného řetězce chceme, můžeme vložit pravidlo v určitém pořadí, a můžeme seznam pravidel pro jakýkoliv řetěz nebo všechny řetězy, ale to, co o smazání pravidlo?

odstranění pravidel

pravidlo můžete odstranit pomocí příznaku-D:

$ iptables -D INPUT -i eth1 -p tcp --dport 80 -d 1.2.3.4 -j ACCEPT

Tento příkaz odstraní pravidlo HTTP, které jste zadali dříve.

než odstraníte pravidlo, ujistěte se, že SPECIFIKACE pravidla je uvedena v seznamu a poté ji smažte.

pravidlo můžete smazat pomocí čísla objednávky namísto psaní specifikací pravidel.

$ iptables -D INPUT 2

všechna pravidla v určitém řetězci můžete smazat pomocí příznaku-F, což znamená vyprázdnit všechna pravidla.

$ iptables -F INPUT

Pokud zapomenete uvést název řetězce při použití příznaku-F, budou všechna pravidla řetězce smazána.

Nahrazení Pravidla

můžete nahradit stávající pravidla s vlastní pravidlo pomocí -R flag:

$ iptables -R INPUT 1 -i eth1 -p tcp --dport httpht -d 1.2.3.4 -j ACCEPT

Tento příkaz nahradí první pravidlo ve VSTUPNÍM řetězci s na zadané pravidlo.

Výpis Konkrétní Tabulky

Do seznamu konkrétní tabulky, použití-t vlajky s název tabulky, jako je tento:

$ iptables -L -t nat

Tady máme seznam pravidel v nat tabulce.

iptables uživatelsky definovaný řetězec

Chcete-li vytvořit uživatelem definovaný řetězec, použijte příznak-n.

$ iptables -N MY_CHAIN

také jej můžete přejmenovat pomocí příznaku-E.

$ iptables -E MY_CHAIN NEW_NAME

a můžete odstranit uživatelem definovaný řetězec pomocí příznaku-X.

$ iptables -X MY_CHAIN

Pokud při použití příznaku-X nezmíníte název řetězce, vymaže všechny uživatelem definované řetězce. Nelze odstranit vestavěné řetězce, jako je vstup a výstup.

přesměrování na uživatelem definovaný řetězec

pakety můžete přesměrovat na uživatelem definovaný řetězec, jako jsou vestavěné řetězce, pomocí příznaku-j.

$ iptables -A INPUT -p icmp -j MY_CHAIN

výše uvedené pravidlo přesměruje veškerý provoz ICMP na řetězec MY_CHAIN.

nastavení výchozí zásady pro řetězce

pomocí příznaku-P můžete nastavit výchozí zásady pro konkrétní řetězec. Výchozí zásadou může být Přijmout, Odmítnout a zrušit.

$ iptables -P INPUT DROP

Takže teď, vstupní řetězec zahodí všechny pakety přijít, pokud jste napsat pravidlo, aby příchozí provoz.

SYN Záplavy

útočník odešle SYN pakety pouze bez dokončení TCP handshake a jako výsledek, obdrží host bude mít mnoho otevřených síťových spojení, a váš server je příliš zaneprázdněn reagovat na ostatní klienty.

můžeme použít limitní modul iptables firewall, který nás chrání před zaplavením SYN.

$ iptables -A INPUT -i eth1 -p tcp --syn -m limit --limit 10/second -j ACCEPT

zde specifikujeme pouze 10 syn paketů za sekundu. Tuto hodnotu můžete upravit podle potřeb sítě.

Pokud to omezí vaši síť, můžete použít soubory cookie SYN.

SYN Cookies

V

/etc/sysctl.conf

soubor a přidejte tento řádek:

net.ipv4.tcp_syncookies = 1

Pak uložit a znovu načíst.

$ sysctl -p

Drop NEPLATNÝ Stav Pakety

NEPLATNÝ stav pakety jsou pakety, které nepatří do žádné připojení a pokles je.

$ iptables -A INPUT -m state --state INVALID -j DROP

toto pravidlo zruší všechny příchozí neplatné stavové pakety.

Drop fragmentované pakety

fragmentované pakety jsou rozbité kusy velkých malformovaných paketů a měli byste napsat pravidla, která je zahodí.

příznak-f řekne bráně iptables, aby vybrala všechny fragmenty. Takže pokud nepoužíváte iptables jako router, můžete zrušit fragmentované pakety.

$ iptables -A INPUT -f -j DROP

Uložit Pravidla do iptables

Pokud restartování serveru, ztratíte všechna pravidla jste napsal, tak jak přetrvávat?

všechna pravidla můžete uložit pomocí příkazu iptables-save, pokud používáte CentOS nebo Red Hat.

iptables-save > /etc/sysconfig/iptables

Na CentOS 7, můžete uložit pravidla, jako tato:

$ service iptables save

můžete Si uložit konkrétní tabulky jako filtr tabulky pouze:

$ iptables-save -t filter

také můžete použít iptables-restore k obnovení pravidel.

v distribucích založených na Debianu můžete použít balíček iptables-persistent pro uložení a obnovení pravidel.

za Prvé, nainstalovat:

$ apt-get install iptables-persistent

Pak můžete uložit a obnovit pravidla:

$ netfilter-persistent save
$ netfilter-persistent reload

doufám, že jste našli iptables firewall snadné. Pořád se vracej.

Děkuji.

Zakladatel LikeGeeks. Pracuji jako správce systému Linux od roku 2010. Jsem zodpovědný za údržbu, zabezpečení a odstraňování problémů se servery Linux pro více klientů po celém světě. Miluji psaní skriptů shell a Python pro automatizaci mé práce.