Zpět na blog

Konfigurace firewallu Iptables: Základní pravidla a příkazy

Konfigurace firewallu Iptables: Základní pravidla a příkazy

Úvod

Iptables​ je nástroj příkazové řádky ​firewall ​. To znamená, že se jedná o software, který vám umožňuje konfigurovat firewall ve vašem systému. Obvykle je ve výchozím nastavení k dispozici v ​Linux​ systémech. V této příručce budeme ​diskutovat o některých běžných pravidlech a příkazech, které souvisejí s firewallem iptables​. Kdykoli se nějaké spojení pokusí navázat kontakt s vaším systémem, firewall se odkáže na tato pravidla, aby určil, jaký by měl být další krok.

Příkazy Iptables

Tato příručka představí některé z nejdůležitějších příkazů iptables. Chcete-li postupovat podle tohoto návodu, budete muset mít základní představu o tom, co je iptables a jak funguje. Pomůže vám to lépe porozumět pravidlům, která implementujete pomocí následujících příkazů. Pamatujte, že jakýkoli z níže uvedených příkazů lze použít samostatně. Na druhou stranu je můžete také kombinovat a přizpůsobit tak svým konkrétním potřebám.

Věci, které je třeba mít na paměti

Než budete číst dál, zde je několik věcí, které byste měli mít na paměti:

  • Pořadí pravidel v iptables je důležité.
  • Chcete-li přidat nové pravidlo na konec řetězce, váš ​iptables příkaz bude muset použít ​-A.​​
  • Pokud chcete pravidlo přidat na jinou pozici, musíte použít volbu ​-I . Tato volba vám umožňuje specifikovat přesné umístění pravidla. Pokud chcete pravidlo umístit na začátek řetězce, jednoduše nezadávejte číslo pravidla.
  • Chcete-li zajistit konzistentní přístup k vašemu serveru, ve výchozím nastavení blokujte SSH provoz na portu 22.
  • V případě, že se vám to nepodaří a ztratíte přístup k serveru, můžete se znovu připojit pomocí konzole. Povolte SSH provoz pro změnu nastavení firewallu.
  • Pokud si někdy budete chtít prohlédnout aktuálně platnou sadu pravidel, použijte příkazy sudo iptables -S​ a ​ ​sudo iptables -L.

Kromě toho máme ​podrobného průvodce, jak vypsat a smazat pravidla firewallu iptables​, který vám dále pomůže co nejlépe využít váš firewall iptables.

Nyní, když máme předpoklady za sebou, pojďme se ponořit do některých z ​běžných příkazů iptables​:

Jak uložit pravidla

Začneme tím, že určíme, jak můžete svá pravidla uložit. Je důležité si uvědomit, že pravidla iptables jsou dočasná. To znamená, že po restartu systému budou ztracena – pokud je neuložíte. Zde je návod, jak můžete ručně uložit svá nová pravidla na serverech ​Ubuntu​ a ​CentOS​ v tomto pořadí:

  • Ubuntu

Nejjednodušší způsob, jak uložit nová pravidla na serveru Ubuntu, je použít balíček iptables-persistent​. Můžete snadno ​vytvořit Ubuntu server podle tohoto návodu​.

Nyní, prvním krokem k uložení nových pravidel iptables je instalace balíčku iptables-persistent ​pomocí apt-get. Zde je návod, jak jej získat:

Iptables Firewall 1

Během procesu instalace se musíte rozhodnout, zda chcete uložit aktuálně platná pravidla firewallu. Chcete-li místo toho pravidla aktualizovat a změny uložit, použijte tento příkaz:

Iptables Firewall 2

Výše uvedený příkaz obvykle funguje pro verze Ubuntu novější než 16.04. Pokud používáte starší verzi, použijte místo toho tento příkaz:

  • CentOS

Na CentOS 6 nebo starších verzích můžete nakonfigurovat firewall pomocí iptables. CentOS 7 místo toho používá FirewallD. Postupujte podle tohoto tutorial to learn how to set up FirewallD on CentOS 7.

Nová pravidla můžete na CentOS uložit pomocí init skriptu ​iptables. Viz následující příkaz:

Tento příkaz uloží vaše nová pravidla pro firewall iptables. Aktuálně aktivní pravidla iptables naleznete v souboru /etc/sysconfig/iptables​ souboru.

Užitečné příkazy Iptables

Nyní přejděme k některým velmi užitečným příkazům firewallu iptables, které možná budete muset na svém serveru použít.

  • Loopback připojení

Nejprve prozkoumáme, jak můžete povolit loopback připojení. Váš systém používá loopback rozhraní k odesílání připojení sám sobě. Představte si například, že jste spustili tento příkaz: ​ping localhost​ nebo ​ping 127.0.0.1​. Váš server bude používat rozhraní loopback neboli lo​, aby v podstatě pingnul sám sebe. Jindy jej server může použít, pokud je váš aplikační server nakonfigurován pro připojení k adrese „localhost“.

Bez ohledu na situaci se musíte ujistit, že váš firewall iptables tato připojení neblokuje. Proto budete muset povolit připojení loopback, aby tyto funkce mohly probíhat.

Zde jsou příkazy, které spustíte pro povolení veškerého provozu přicházejícího na rozhraní loopback:

Iptables Firewall 3

  • Zavedená a související příchozí připojení

Dalším typem připojení, které možná budete muset povolit, je odchozí připojení. Chcete-li zajistit, aby váš server přijímal a odesílal příchozí i odchozí provoz, musíte povolit zavedená a související příchozí připojení. To umožňuje serveru odesílat zpětný provoz do odchozích připojení. Pro povolení zavedených i souvisejících příchozích připojení použijte tento příkaz:

Established and Related Incoming Connections

  • Zavedená odchozí připojení

Server obvykle odesílá odpovědi na příchozí připojení ve formě odchozího provozu zavedených připojení. Chcete-li je povolit, použijte následující příkaz:

Established Outgoing Connections

  • Interní na externí

Někdy může být dokonce nutné nakonfigurovat firewall tak, aby umožnil přístup z interní sítě do externí. Ve výchozím nastavení by vaše externí síť měla být ​eth0​ a ​eth1 by měla být vaše interní síť. Pokud tomu tak je, použijte k povolení přístupu tento příkaz:

Internal to External

  • Zahazování neplatných paketů

Někdy budou některé pakety síťového provozu označeny jako neplatné. Většinu času můžete tyto neplatné pakety jednoduše zahodit. Chcete-li tak učinit, použijte následující příkaz:

Dropping Invalid Packets

Pravidla pro blokování IP adres

Dále se podíváme na některé příkazy, které můžete použít k blokování připojení přicházejících z určitých IP adres. Pro usnadnění použijeme v našich příkazech jako příklad IP adresu ​15.15.15.51 . Tuto hodnotu můžete nahradit svou konkrétní IP adresou.

V ​-s 15.15.15.51, ​​znamená ​-s​ zdroj (source). Příkaz tedy specifikuje zdrojovou IP adresu „15.15.15.51“. Podobně můžete specifikovat zdrojovou IP adresu v jakémkoli pravidle firewallu. To zahrnuje pravidlo pro povolení i odmítnutí.

Pokud chcete připojení odmítnout, použijete v příkazu REJECT namísto DROP, takto:

V důsledku toho váš server vrátí chybu „připojení odmítnuto“ (connection refused) pokaždé, když tato konkrétní IP adresa odešle požadavek na připojení.

  • Blokování připojení ke konkrétnímu rozhraní

Můžete zablokovat všechny požadavky na připojení přicházející z konkrétní IP adresy na konkrétní síťové rozhraní. V našem příkladu je IP adresa 15.15.15.51​ a síťové rozhraní je ​eth0​. K zablokování připojení použijte tento příkaz:

Skvělé je, že síťové rozhraní můžete specifikovat v jakémkoli pravidle. To znamená, že jakékoli pravidlo lze použít a omezit pouze na konkrétní síť.

Pravidla pro službu: SSH

SSH ​se stává relevantním, pokud používáte cloudový server. V tomto případě musíte povolit příchozí připojení SSH na portu 22. Povolení těchto připojení vám umožní připojit se k vašemu serveru a spravovat jej. Zde probereme řadu běžných pravidel týkajících se SSH.

  • Povolení všech příchozích SSH

Následující příkazy povolí všechna příchozí připojení SSH:

Ve výše uvedené sadě musíte druhý příkaz použít pouze v případě, že OUTPUT​ politika není nastavena na ​ACCEPT​. Povoluje odchozí provoz navázaných SSH připojení.

  • Povolení příchozího SSH z podsítě

Předchozí příkaz povoluje všechna příchozí připojení. Pomocí následujících příkazů můžete povolit pouze příchozí připojení z konkrétní IP adresy nebo podsítě. Řekněme, že chcete povolit pouze příchozí připojení z podsítě ​15.15.15.0/24​ podsítě:

Stejně jako předtím, druhý příkaz musíte použít pouze v případě, že OUTPUT​ politika není nastavena na ​ACCEPT​. Povoluje odchozí provoz navázaných SSH připojení.

  • Povolení odchozího SSH

Tyto příkazy použijte, pokud firewallová ​OUTPUT​ politika není nastavena na ​ACCEPT​ a chcete povolit SSH připojení. To umožní vašemu serveru iniciovat SSH připojení k jiným serverům:

Chcete-li dále využívat SSH na svých cloudových serverech, podívejte se na naše návody na ​ jak používat SSH k připojení ke vzdálenému serveru v Ubuntu ​a jak nakonfigurovat Linux server pro použití ověřování založeného na SSH klíčích​.

  • Povolení příchozího Rsync z podsítě

Rsync​ je funkce, kterou můžete použít k přenosu souborů z jednoho systému do druhého. Běží na portu 873. Pokud tedy chcete povolit příchozí připojení Rsync na portu 873 z konkrétní IP adresy nebo podsítě, použijte následující příkazy:

Jak vidíte, specifikovali jsme zdrojovou IP adresu spolu s cílovým portem. Druhý příkaz použijete pouze v případě, že firewallová ​OUTPUT​ politika není nastavena na ​ACCEPT​. Povoluje odchozí provoz navázaných Rsync připojení. Dále se můžete podívat na náš ​návod, jak využít Rsync k synchronizaci lokálních a vzdálených adresářů na VPS​.

Pravidla pro službu: Webový server

HTTP připojení jsou obvykle přijímána na portu 80. Podobně HTTPS obvykle přichází na portu 443. Webové servery jako ​Apache​ a ​Nginx​ naslouchají na těchto portech, aby zachytily požadavky na připojení. Někdy mohou výchozí nastavení způsobit, že váš server tyto příchozí požadavky odmítne nebo zahodí. Proto budete muset nastavit nová pravidla, která provoz povolí.

  • Povolení všech příchozích HTTP připojení

Všechna příchozí HTTP připojení na portu 80 můžete povolit pomocí těchto příkazů:

Druhý příkaz použijete pouze v případě, že firewallová ​OUTPUT​ politika není nastavena na ACCEPT​. Povoluje odchozí provoz navázaných HTTP připojení.

  • Povolení všech příchozích HTTPS připojení

Pomocí těchto příkazů povolíte všechny příchozí požadavky na připojení HTTPS na portu 443:

Druhý příkaz použijete pouze v případě, že firewall iptables ​OUTPUT​ politika není nastavena na ACCEPT​. Umožňuje odchozí provoz navázaných HTTP připojení.

  • Povolení všech příchozích připojení z HTTP a HTTPS

Pokud chcete povolit provoz z portů HTTP i HTTPS, můžete použít modul multiport. V takovém případě použijte tyto příkazy:

Druhý příkaz použijete pouze v případě, že politika firewallu ​OUTPUT​ není nastavena na ACCEPT​. Umožňuje odchozí provoz navázaných HTTP a HTTPS připojení.

Pravidla pro službu: MySQL

Někdy může klient k přístupu k vašemu databázovému serveru ​MySQL​ použít vzdálený server. V takovém případě musíte ručně povolit příchozí provoz z příslušného portu. MySQL naslouchá požadavkům na připojení z portu 3306.

  • Povolení příchozích připojení MySQL z podsítě

Pokud chcete povolit připojení MySQL z konkrétní podsítě, budete muset specifikovat zdroj. V našem příkladu povolíme příchozí provoz z podsítě 15.15.15.0/24​ pomocí těchto příkazů:

Druhý příkaz použijete pouze v případě, že politika firewallu ​OUTPUT​ není nastavena na ACCEPT​. Umožňuje odchozí provoz navázaných MySQL připojení.

  • Povolení připojení MySQL k rozhraní

Pokud chcete také specifikovat, které síťové rozhraní má přijímat připojení MySQL, můžete použít tyto příkazy:

V tomto případě povolujeme připojení k privátnímu síťovému rozhraní s názvem eth1​.

Druhý příkaz použijete pouze v případě, že politika firewallu ​OUTPUT​ není nastavena na ACCEPT​. Umožňuje odchozí provoz navázaných MySQL připojení.

Můžete postupovat podle našeho ​návodu pro snadné nastavení MySQL na vašem serveru​.

Pravidla pro službu: PostgreSQL

Váš klient může k přístupu k vašemu databázovému serveru ​PostgreSQL​ použít vzdálený server. V takovém případě musíte tato příchozí připojení povolit. Tato připojení budou probíhat přes port 5432.

  • Povolení příchozích připojení PostgreSQL z podsítě

Pomocí následujících příkazů můžete povolit příchozí připojení PostgreSQL z konkrétní podsítě nebo IP adresy. Jak vidíte, specifikovali jsme zdroj, kterým je ​15.15.15.0/24​ podsíť.

Druhý příkaz použijete pouze v případě, že politika firewallu ​OUTPUT​ není nastavena na ACCEPT​. Umožňuje odchozí provoz navázaných připojení PostgreSQL.

  • Povolení připojení PostgreSQL ke konkrétnímu rozhraní

Pokud chcete povolit připojení PostgreSQL pouze k určitému síťovému rozhraní, použijte tyto příkazy:

V tomto případě povolujeme připojení k privátnímu síťovému rozhraní s názvem eth1​. Druhý příkaz použijete pouze v případě, že pravidlo firewallu ​OUTPUT​ není nastaveno na ​ACCEPT​. Umožňuje odchozí provoz navázaných připojení PostgreSQL.

Postupujte podle tohoto ​návodu k instalaci PostgreSQL na váš server Ubuntu​.

Pravidla pro službu: Mail

Možná budete muset nakonfigurovat firewall také v souladu s poštovním serverem, který používáte. Například ​Sendmail​ a ​Postfix​ mohou přijímat připojení na řadě různých portů. Záleží na protokolu, který používáte pro doručování pošty. Chcete-li blokovat a povolit určitá poštovní připojení, musíte vědět, jaký protokol používáte.

  • Povolení příchozích připojení SMTP

Připojení SMTP obvykle přicházejí na portu 25. I když SMTP také běžně používá port 587 pro odchozí poštu. Chcete-li serveru povolit odpovídat na tato připojení, použijte následující příkazy:

Druhý příkaz použijete pouze v případě, že pravidlo firewallu ​OUTPUT​ není nastaveno na ACCEPT​. Umožňuje odchozí provoz navázaných připojení SMTP.

  • Povolení všech příchozích připojení IMAP

Chcete-li serveru povolit odpovídat na všechna příchozí připojení IMAP na portu 143, jednoduše zadejte a spusťte toto:​

Druhý příkaz použijete pouze v případě, že pravidlo firewallu ​OUTPUT​ není nastaveno na ACCEPT​. Umožňuje odchozí provoz navázaných připojení IMAP.

  • Povolení všech příchozích připojení IMAPS

Pomocí těchto příkazů umožníte serveru odpovídat na připojení IMAPS na portu 993:

Druhý příkaz použijete pouze v případě, že pravidlo firewallu ​OUTPUT​ není nastaveno na ACCEPT​. Umožňuje odchozí provoz navázaných připojení IMAPS.

  • Povolení všech příchozích připojení POP3

Tato připojení budou přicházet na portu 993. Pokud chcete, aby váš server odpovídal na požadavky o připojení IMAPS, použijte následující příkazy:

Druhý příkaz použijete pouze v případě, že pravidlo firewallu ​OUTPUT​ není nastaveno na ACCEPT​. Umožňuje odchozí provoz navázaných připojení POP3.

  • Povolení všech příchozích připojení POP3S

Pomocí těchto příkazů umožníte serveru navazovat spojení s požadavky POP3S přicházejícími na portu 995:

Druhý příkaz použijete pouze v případě, že firewall ​OUTPUT politika není nastavena na ACCEPT​. Povoluje odchozí provoz navázaných připojení POP3S.

  • Jak zablokovat odchozí poštu SMTP

Místo povolení příchozích připojení a povolení odpovědi serveru možná budete chtít odchozí poštu zcela zablokovat. Veškerou odchozí poštu SMTP na portu 25 můžete zablokovat pomocí tohoto příkazu:

V důsledku toho bude veškerý odchozí provoz na portu 25 firewallem iptables odmítnut. Stejnou strukturu příkazu můžete použít, pokud chcete odmítnout jakoukoli jinou službu. Stačí pouze nahradit port 25 příslušným číslem portu.

Závěr

Tato příručka popisuje základní příkazy firewallu iptables. Poskytuje vám základní nástroje, které potřebujete k efektivní konfiguraci firewallu iptables. Mějte na paměti, že neexistuje univerzální řešení pro všechny. Tyto příkazy jsou extrémně flexibilní. To znamená, že je můžete použít jakýmkoli způsobem, který nejlépe vyhovuje vám a vašim požadavkům.

Příjemnou práci s počítačem!

author

Manpreet Singh

Autor · CloudSigma

Preslav Dobrev je kreativní designér ve společnosti CloudSigma, který se zaměřuje na konzistentní firemní identitu prostřednictvím tradičních i inovativních marketingových kanálů. Je zdatný v propojování umělecké vize se strategickým marketingem za účelem vytváření působivých příběhů značky.

Komentáře

Zatím žádné komentáře. Buďte první.