Zpět na blog

Přesměrování portů pomocí iptables v Linuxu: Praktický průvodce

Přesměrování portů pomocí iptables v Linuxu: Praktický průvodce

Přesměrování portů , také označované jako mapování portů, je metoda umožňující vzdáleným zařízením připojit se ke konkrétní službě v rámci vaší privátní lokální sítě (LAN). Jak název napovídá, tento proces zahrnuje přesměrování požadavků na konkrétní port na jiný port nebo síť. Mění cíl paketu během přenosu a je považován za typ překladu síťových adres (NAT) operation.

Povolení přesměrování portů umožňuje zařízením nebo hostitelům, kteří nejsou připojeni k interní síti, vzájemný přístup, což je v případě zakázání jinak omezeno. Výhod přesměrování portů můžete využít k blokování cílových webových stránek, zvýšení zabezpečení a vytvoření obezličky kolem firewallu NAT podle vašich potřeb.

V tomto návodu vás provedeme kroky pro přesměrování portů pomocí iptables v Linuxu.

Požadavky

Chcete-li postupovat podle tohoto návodu, budete potřebovat:

Podrobnosti o hostiteli

Nejprve potřebujeme znát podrobnosti o rozhraních a adresách funkčních serverů. Zkontrolujme síťová rozhraní našeho systému:

Uvidíte výstup:

Zde zvýrazněný výstup ukazuje dvě rozhraní, první eth0 přiřazené k adrese 192.51.100.45, a druhé eth1 přiřazené k adrese 192.168.1.5. Z těchto dvou rozhraní je jedno veřejné a druhé privátní. Spustíme příkaz, abychom je od sebe odlišili a zjistili veřejné rozhraní, tedy to, které je připojeno k vaší výchozí bráně. Pro rozlišení zadejte:

Uvidíte výstup:

Ukázková data pro tento návod

V tomto návodu budeme používat fiktivní adresy a přiřazení rozhraní. Tato data můžete libovolně použít nebo je nahradit podle svých potřeb.

Síťové podrobnosti webového serveru:

  • Veřejná IP adresa: 203.0.113.2

  • Privátní IP adresa: 192.0.2.2

  • Veřejné rozhraní: eth0

  • Privátní rozhraní: eth1

Síťové podrobnosti firewallu:

  • Veřejná IP adresa: 203.0.113.15

  • Privátní IP adresa: 192.0.2.15

  • Veřejné rozhraní: eth0

  • Privátní rozhraní: eth1

Nastavení webového serveru

Začněme s naším hostitelem webového serveru. Nejprve se přihlaste pomocí svého sudo uživatele.

Instalace Nginx

Nejprve nainstalujeme Nginx na našeho hostitele webového serveru a uzamkneme jej tak, aby naslouchal pouze na svém privátním rozhraní. To zajistí, že náš webový server bude dostupný pouze v případě, že máme správně nastavené přesměrování portů.

Dále aktualizujte místní mezipaměť balíčků a pomocí apt stáhněte a nainstalujte Nginx:

Přidání omezení

Jakmile nainstalujeme Nginx na náš hostitelský webový server, uzamkneme jej, abychom zajistili, že bude přijímat vstupy pouze z privátních rozhraní a odnikud jinud. To také zajistí, že naše webové servery budou aktivní pouze tehdy, pokud je nastavení přesměrování portů správné.

Chcete-li přidat omezení, otevřete výchozí konfigurační soubor bloku serveru /etc/nginx/sites-enabled/default v libovolném textovém editoru podle vašeho výběru (zde používáme textový editor nano) a napište:

Ve výstupu uvidíte, že se direktiva listen objevuje dvakrát:

Port Forwarding Nginx Default File

V tomto návodu používáme první direktivu k demonstraci přesměrování IPv4. Druhou, která je nakonfigurována pro IPv6, lze odstranit. Přidejte soukromou IP adresu vašeho webového serveru s dvojtečkou těsně před 80, abyste informovali Nginx, že má přijímat vstupy pouze ze soukromého rozhraní. Dále upravte direktivu:

Port Forwarding Nginx Edited Default File

Jakmile budete hotovi, soubor uložte a zavřete. Než budete pokračovat, ujistěte se, že v něm nejsou žádné syntaktické chyby. Otestujme soubor:

Nginx T

Pokud se nezobrazí žádná chyba, můžete restartovat Nginx a povolit novou konfiguraci:

Ověření síťového omezení

Ověřme úroveň přístupu, kterou máme k našemu webovému serveru. Zkuste přistoupit k webovému serveru přes soukromé rozhraní pomocí curl příkazu:

Uvidíte výstup:

Port Forwarding Nginx Output1

Pokud se pokusíme použít veřejné rozhraní, nebudeme se moci připojit:

To je přesně to, co jsme očekávali.

Nakonfigurujte firewall pro přesměrování portu 80

Pokročme v naší práci s implementací přesměrování portů na našem firewallovém stroji.

Povolení přesměrování v jádře

Ve výchozím nastavení má většina systémů přesměrování portů vypnuté. Provedeme několik úprav, abychom přesměrování portů zapnuli. Existuje také možnost zapnout přesměrování portů trvale pomocí oprávnění sudo , jak je znázorněno v následujících krocích.

Chcete-li ZAPNOUT přesměrování provozu na úrovni jádra, napište:

Chcete-li zapnout přesměrování portů trvale, upravte soubor /etc/sysctl.conf . Otevřete soubor s oprávněními sudo a napište:

Uvnitř najděte a odkomentujte řádek, který vypadá takto:

Jakmile budete hotovi, soubor uložte a zavřete. Poté použijte příkazy sysctl k použití změn v nastavení, aby se projevily:

Základní nastavení firewallu

Nejprve si projděte návod na jak nastavit základní firewall na vašem stroji. Po dokončení budete mít:

  • Nainstalovaný iptables-persistent
  • Uloženou výchozí sadu pravidel do /etc/iptables/rules.v4
  • Komplexní znalosti o přidávání a úpravách pravidel pomocí iptables příkazu

Můžete se také podívat na jak vypsat a smazat pravidla firewallu iptables.

Přidání pravidel pro přesměrování

Nakonfigurujeme náš firewall tak, aby zajistil, že provoz přicházející do našeho veřejného rozhraní ( eth0 ) na portu 80 bude přesměrován na naše soukromé rozhraní ( eth1). Ve výchozím nastavení má náš základní firewall řetězec FORWARD nastavený na DROP provoz. Přidání pravidel firewallu umožní přesměrování připojení na náš webový server. Pro zvýšení bezpečnosti uzamkneme pravidla firewallu tak, aby povolovala pouze požadavky na přesměrování.

V řetězci FORWARD budeme přijímat nová připojení určená pro port 80 přicházející z našeho veřejného rozhraní a směřující do našeho soukromého rozhraní. Nová připojení identifikujeme pomocí rozšíření conntrack a budeme je reprezentovat paketem TCP SYN :

Musíte povolit jakýkoli následný provoz v obou směrech vyplývající z příchozího připojení. Zadejte níže uvedené příkazy pro povolení provozu ESTABLISHED a RELATED mezi naším veřejným a soukromým rozhraním:

Ověřme, zda je naše politika na FORWARD řetězci nastavena na DROP:

Doposud jsme přidali několik pravidel, která umožňují průchod provozu mezi naším veřejným a soukromým rozhraním přes náš firewall. Nicméně iptables zatím nemá informace o tom, jak provoz směrovat, protože konfigurace pravidel firewallu ještě není dokončena. V následujících krocích přidáme pravidla NAT a upravíme trvalou sadu pravidel pro směrování provozu.

Přidání pravidel NAT pro směrování paketů

Provedeme dvě samostatné operace, aby iptables správně upravoval pakety a zefektivnil komunikaci s klienty a webovým serverem.

DNAT je první operace, která zahajuje řetězec PREROUTING tabulky nat . Tato operace mění cílovou adresu paketu a umožňuje jeho správné směrování při průchodu mezi sítěmi. Klienti ve veřejné síti se však budou připojovat k našemu firewallovému serveru a nebudou mít žádné informace o topologii naší soukromé sítě. Chcete-li předávat informace v rámci soukromé sítě, změňte cílovou adresu každého paketu, aby mohl správně dorazit na náš cílový webový server.

Je důležité poznamenat, že se zaměřujeme na konfiguraci přesměrování portů. Provádění NAT pro každý paket, který narazí na firewall, není součástí našeho návodu. Budeme porovnávat pakety na portu 80 s privátní IP adresou našeho webového serveru:

Paket bude správně směrován na náš webový server a bude obsahovat původní adresu klienta jako zdrojovou adresu. Navzdory pokusům serveru odeslat odpověď přímo na tuto adresu nebude možné navázat legitimní TCP spojení.

Pro konfiguraci správného směrování upravíme zdrojovou adresu paketu. Změňme zdrojovou adresu na privátní IP adresu našeho firewallového serveru. Po úpravě bude odpověď odeslána zpět na firewall, který ji předá zpět klientovi.

Chcete-li tuto funkci povolit, přidejte pravidlo do řetězce POSTROUTING tabulky nat , který se vyhodnocuje těsně před odesláním paketů do sítě. Poté porovnejte pakety určené pro náš webový server podle IP adresy a portu:

Jakmile bude toto pravidlo zavedeno, náš webový server by měl být přístupný zadáním veřejné adresy našeho firewallu do webového prohlížeče:

Uvidíte výstup:

Nginx Output2

Naše nastavení přesměrování portů je dokončeno.

Úprava trvalé sady pravidel

Po dokončení nastavení přesměrování portů jej uložíme do naší trvalé sady pravidel. Pokud chcete zachovat komentáře v aktuální sadě pravidel, použijte službu iptables-persistent k uložení vašich pravidel:

Můžete jej také otevřít a upravit ručně, abyste zachovali komentáře v souboru:

Dále nakonfigurujte tabulku filter a tabulku nat pro přidání pravidel pro řetězec FORWARD a ROUTING pravidel. Úprava tabulky nat nám umožní přidat pravidla PREROUTING a POSTROUTING , jak je znázorněno v příkladu níže:

Po přidání výše uvedených hodnot soubor uložte a zavřete. Poté zadejte níže uvedený příkaz pro otestování syntaxe vašich pravidel:

Pokud nevidíte žádné chyby, načtěte sadu pravidel:

Ověřme, zda je náš webový server stále přístupný přes veřejnou IP adresu vašeho firewallu:

Závěr

Na konci tohoto návodu byste měli bez problémů zvládat přesměrování portů na Linuxovém serveru pomocí iptables. Možnosti přesměrování portů můžete využít k maskování topologie vaší soukromé sítě a zároveň k usměrnění provozu služeb tak, aby volně procházel skrze váš bránový firewall.

Vzhledem k tomu, že tento proces závisí výhradně na bezpečnosti vaší sítě a použitých portech, je bezpečný. Pokud ve své síti nemáte bezpečnostní firewall nebo zabezpečení VPN, může existovat určité riziko. Proto se doporučuje nakonfigurovat firewall tak, jak je popsáno v tomto návodu. Doufáme, že vám tento průvodce pomůže zůstat na internetu při používání soukromé sítě v bezpečí.

Chcete-li prozkoumat další řešení firewallu, která můžete na svém systému implementovat, podívejte se na tyto zdroje z našeho blogu:

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

author

Pranay Kapgate

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í.