Úvod
Nastavení brány firewall je významnou etapou v zabezpečení většiny moderních operačních systémů. Většina distribucí Linuxu je vybavena různými firewallovými nástroji, které můžeme použít ke konfiguraci našeho firewallu. V této příručce budeme diskutovat o tom, jak nakonfigurovat firewall Iptables na Ubuntu 14.04.
Poznámka: Tento tutoriál se zabývá zabezpečením IPv4. V Linuxu je zabezpečení IPv6 udržováno odděleně od IPv4. Například „iptables“ udržuje pravidla brány firewall pouze pro adresy IPv4, ale má protějšek IPv6 s názvem „ip6tables“, který lze použít k udržování pravidel brány firewall pro síťové adresy IPv6.
Základní příkazy
Než budete postupovat podle této příručky, musíte mít přístup k účtu superuživatele jiného uživatele než root a s oprávněními sudo nastavenými na vašem serveru. Nejprve musíte vědět, že příkazy iptables musí být spouštěny pouze s právy root. Pro implementaci této podmínky přidáme „sudo“ před všechny příkazy v této příručce. Můžeme se také přihlásit jako uživatel root pomocí příkazů „su“ nebo „sudo -i“, ale v této příručce zůstaneme u „sudo“.
Zpočátku musíme najít aktuální pravidla, která jsou nakonfigurována pro iptables. Toho dosáhnete pomocí následujícího příkazu:
# sudo iptables -L
Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT)target prot opt source cílSoučasná pravidla také můžeme vidět v jednodušším formátu pomocí příznaku -S namísto příznaku -L:
# sudo iptables -S-P INPUT ACCEPT-P FORWARD ACCEPT-P OUTPUT ACCEPTV obou výsledcích můžeme vidět tři řetězce zobrazené jako INPUT, FORWARD a OUTPUT. Také vidíme, že výchozí zásada každého řetězce je nastavena jako ACCEPT , ale ve výše uvedených výsledcích nejsou nastavena žádná skutečná pravidla. Je to proto, že Ubuntu se nedodává s nastavenými výchozími pravidly.
Pokud jsou v Iptables již nakonfigurována pravidla, můžeme je úplně vyprázdnit pomocí parametru -F takto:
Poznámka:Pokud splachujete pravidla vzdáleně, pak by měly být zásady řetězců INPUT a OUTPUT nastaveny na ACCEPT. To lze provést zadáním
# sudo iptables -P INPUT ACCEPT# sudo iptables -P OUTPUT ACCEPT# sudo iptables -FNastavení pravidel pro Iptables
Pravidla pro iptables lze nastavit dvěma způsoby. Jedním ze způsobů je povolit výchozímu pravidlu PŘIJÍMAT a blokovat veškerý nežádoucí provoz nastavením konkrétních pravidel. Další metodou je nakonfigurovat povolený provoz a zablokovat vše ostatní. Druhá metoda je často preferovaná.
První pravidlo, které je třeba přiřadit, je přijmout veškerý příchozí provoz zadáním následujícího příkazu:
# sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPTVýsledek výše uvedeného příkazu můžeme vidět opětovným použitím parametru -L.
# sudo iptables -Lvstup řetězce (přijetí zásad) cílový prot OPT zdrojový cíl Přijmout vše -kdekoli a kdekoli související s CTState, zavedený výstup (politika Accepce) Target Prot OPT Cílové řetězec (Politice Accepce) Cíl Prot OPT Zdroj cíle Zde vidíme, že politika řetězce INPUT se ve srovnání s před aplikací pravidla změnila.
Dalším krokem je povolení provozu na konkrétním portu, aby se umožnilo připojení SSH . To lze provést následujícím způsobem:
# sudo iptables -A INPUT -p tcp --dport ssh -j PŘIJÍMAT„ssh“ se ve výchozím nastavení překládá na číslo portu 22. Místo „ssh“ lze použít libovolné číslo portu. Chcete-li povolit přístup k webovému serveru HTTP, zadejte následující příkaz:
# sudo iptables -A INPUT -p tcp --dport 80 -j PŘIJÍMATJe zde ještě jedno pravidlo ACCEPT, které je třeba přiřadit našim Iptablem, aby náš server fungoval správně.
# sudo iptables -I INPUT 1 -i lo -j ACCEPTPřidání pravidla upuštění
Zatím jsme do našich Iptables přidali pouze pravidla ACCEPT. Musíme také přiřadit pravidla blokování, protože všechny síťové pakety budou přijímány podle pravidel přiřazených našim Iptablem. Jedním ze způsobů je přiřadit pravidlo DROP do výchozí politiky našeho řetězce INPUT. To zachytí všechny pakety, které projdou naším řetězcem INPUT, a zahodí je.
# sudo iptables -P INPUT DROPJedním z důsledků tohoto typu návrhu je to, že pokud jsou pravidla vyprázdněna, zahazuje pakety.
Alternativním přístupem je ponechat výchozí politiku pro řetězec jako přijmout a přidat pravidlo, které upustí každý zbývající paket na konec samotného řetězce.
Pokud jste změnili výchozí zásadu pro řetězec INPUT výše, můžete ji nastavit zpět tak, aby následovala zadáním:
# sudo iptables -P INPUT ACCEPTNyní můžete na konec řetězce přidat pravidlo, které zahodí všechny zbývající pakety:
# sudo iptables -A INPUT -j DROPPřed uložením Iptables je lepší jednou zkontrolovat přiřazená pravidla. Naše aktuální pravidla jsou nastavena takto:
-P INPUT ACCEPT-P FORWARD ACCEPT-P OUTPUT ACCEPT-A INPUT -i lo -j ACCEPT-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT-A INPUT -p tcp -m tcp -- dport 22 -j PŘIJMOUT-A VSTUP -p tcp -m tcp --dport 80 -j PŘIJMOUT-A VSTUP -j DROPUkládání pravidel iptables
Ve výchozím nastavení budou pravidla Iptables po restartování serveru vymazána. Chcete-li pravidla Iptabels uložit trvale, nastavení lze uložit několika různými způsoby, ale nejjednodušší je s balíčkem „iptables-persistent“. Toto lze stáhnout z výchozích úložišť Ubuntu:
# sudo apt-get update# sudo apt-get install iptables-persistentUložte pravidla brány firewall pomocí tohoto příkazu:
# sudo invoke-rc.d iptables-persistent saveChcete-li vědět, jak nakonfigurovat a uložit pravidla brány firewall pomocí iptables-persistent na Ubuntu 10.04/Debian 6.0, klikněte na odkaz níže:
Jak nakonfigurovat a uložit Iptables-persistent pro Ubuntu 10.04/ Debian 6.0
Ubuntu