Konfigurace internetové brány s NAT a předávání portů na CentOS 7

V tomto článku se budeme zabývat procesem organizace a konfigurace jednoduché internetové brány založené na CentOS 7.x. Tato brána umožní uživatelům z místní sítě přístup k Internetu a také přístup k serverům nebo počítačům v interní síti z vnější strany. K uspořádání směrování a přeposílání paketů použijeme technologii NAT založenou na firewallu iptables. Uvažujeme také o tom, jak udržovat a analyzovat protokoly připojení na internetové bráně, když externí uživatelé přistupují k místní síti.

Obsah:

  • Lokální síťový diagram s přístupovou bránou k internetu, typy NAT
  • Konfigurace zdroje NAT: LAN Access
  • Konfigurovat cílový NAT a předávání portů: přístup z Internetu do místní sítě
  • Analýza protokolů síťového připojení NAT v systému Linux

Lokální síťový diagram s přístupovou bránou k internetu, typy NAT

NAT (Network Address Translation) - překlad IP adres, to je mechanismus, který vám umožňuje nahradit zdrojovou a cílovou adresu v IP hlavičce paketů, když procházejí routerem, tj. mezi různými sítěmi.

Nakonfigurujeme NAT mezi interní sítí s adresováním 10.2.0.0/24 a externí internetovou sítí dvou typů:

  • zdroj NAT - v našem případě jde o nahrazení zdrojové IP adresy za organizaci přístupu na internet prostřednictvím jedné veřejné IP adresy několika klientů.
  • cílový NAT - náhrada cílových IP adres, v našem případě, zajištění přístupu z externí internetové sítě přes veřejnou IP adresu k interním síťovým serverům.

Definujeme síťové prvky (obrázek 1), mezi nimiž bude NAT uspořádán:

  • gw-server - brána serveru, tj. náš server CentOS Linux, který poskytuje přístup mimo interní síť. Má dvě rozhraní, první eth1 (10.2.0.1) v interní síti, druhou eth0 (84.201.168.122) s veřejnou IP adresou a přístupem na internet;
  • web-server01 - Webový server interní sítě, IP adresa 10.2.0.11;
  • my-server01 - osobní server interní sítě, IP adresa 10.2.0.12.

Poznámka:: pro interní síťové servery web-server01 a myserver01 výchozí cesta je nastavena na rozhraní eth1 (10.2.0.1) serveru gw-server01.

Konfigurace zdroje NAT: LAN Access

U zdroje NAT pro externí síťové servery budou požadavky našich klientů z interní sítě vypadat, jako by s nimi server brány komunikoval přímo. - gw-server01.

V posledním článku „Základní konfigurace brány firewall systému Linux pomocí iptables“ jsme se seznámili se základy používání iptables. Tentokrát budeme pracovat v iptables nejen s tabulkou filtr, ale také se stolem nat. Na rozdíl od tabulek pro filtrování provozu filtr, Tabulka nat obsahuje následující řetězce:

  • PŘEDCHOZÍ - V tomto řetězci jsou příchozí IP pakety zpracovány, než jsou rozděleny na pakety určené pro samotný server nebo pro přenos na jiný, tj. před rozhodnutím o výběru trasy pro IP paket;
  • VÝSTUP - Řetězec je určen ke zpracování paketů IP, které jsou generovány místně aplikací na serveru. Lokálně generované IP pakety neprocházejí řetězcem PREROUTING;
  • POSTROUTING - všechny odchozí IP pakety jsou zpracovány v tomto řetězci po rozhodnutí o trase pro IP paket.

Akce prováděné pro IP pakety v této tabulce se také liší:

  • MASQUERADE a SNAT- nahrazuje zdrojovou adresu IP pro odchozí pakety. Rozdíl mezi těmito akcemi je v tom, že SNAT umožňuje nastavit specifickou IP adresu pro nový zdroj a v případě MASQUERADE se to děje dynamicky;
  • DNAT - nahrazuje cílové adresy IP pro příchozí pakety.
Je důležité: akce MASQUERADE a SNAT jsou nastaveny pouze pro řetěz POSTROUTING a akce DNAT pouze pro PREROUTING nebo VÝSTUP.

Obrázek 2 ukazuje kroky pro zpracování paketu IP z interní sítě na bráně gw-server01 s SNAT na iptables. IP adresa a cílový port zůstávají nezměněny..

Obrázek 2

  1. Paket IP dorazil na interní rozhraní eth1 serveru gw-server01. Protože cílová IP nepatří do gw-server01, pokračuje IP paket ke zpracování řetězcem FORWARD.
  2. Po absolvování řetězce FORWARD je pro IP paket určeno odchozí síťové rozhraní, ze kterého by měl být odeslán, což je označeno žlutě
  3. Nakonec paket IP prochází řetězcem POSTROUTING, ve kterém je zdrojová adresa IP změněna na adresu IP externího rozhraní eth0 serveru gw-server01.

Pojďme nastavit. Nejprve musíte nastavit parametr jádra, který vám umožní přenášet pakety mezi rozhraními serveru. Chcete-li to provést v souboru /etc/sysctl.conf přidat proměnnou:

net.ipv4.ip_forward = 1

Chcete-li použít změny, spusťte příkaz

sysctl -p /etc/sysctl.conf

zde sysctl je příkaz, který vám umožní spravovat parametry jádra, klíč -str znamená, že musíte přečíst parametry ze souboru.

Vytvořte pravidlo v iptables, které umožňuje přenos paketů mezi interním (eth1) a externím (eth0) rozhraním:

iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

a přenášíme pakety mezi rozhraními souvisejícími s již navázanými připojeními.

iptables -A FORWARD -m state - state RELATED, ESTABLISHED -j ACCEPT

Má smysl vytvořit předchozí dvě pravidla, pouze pokud je ve výchozím nastavení pro řetězec FORWARD nastavena zásada DROP:

iptables -P FORWARD DROP

Povolit SNAT:

iptables -t nat -A POSTROUTING -s 10.2.0.0/24 -o eth1 -j SNAT - do zdroje 84.201.168.122

  • -ke zdroji musí to být adresa na rozhraní, ze kterého se plánuje vydávat IP pakety do externí sítě;
  • -s 10.2.0.0/24 je stanoveno, že interní síť je 10.2.0.0/24, ale je to volitelný parametr, pokud jej nezadáte, nebude existovat žádná omezení na zdroj interakce.

Podívejme se na výslednou konfiguraci tabulky filtr a řetězy Vpřed (výstup je oříznut):

iptables -L -n -v

a konfiguraci tabulky nat a řetězy POSTROUTING (výstup je oříznut):

iptables -t nat -L -n -v

Abychom ověřili, že náš webový server v interní síti získal přístup k internetu, pokusíme se připojit přes telnet na port 80 1.1.1.1 (Cloudflare DNS):

telnet 1.1.1.1 80

Týmový výstup Připojeno 1.1.1.1, označuje, že připojení bylo úspěšné.

Konfigurovat cílový NAT a předávání portů: přístup z Internetu do místní sítě

Nyní zvažte opačnou situaci. Chceme, aby zákazníci z venku měli přístup na naše stránky v interní síti. A také musíme jít na váš osobní server (nebo pracovní stanici) z internetu. Rozdíl v tomto případě není jen ve směru interakce, ale také v tom, že je třeba přesměrovat požadavky na jednotlivé porty, 80 (TCP) a 3389 (TCP), zatímco nahrazujete cílový server a případně cílový port. Tato technika se nazývá předávání portů (přesměrování portů).

Přesměrování portů v systému Windows lze uspořádat pomocí příkazu portproxy rozhraní netsh.

Nejprve povolte přenos paketů z externího rozhraní (eth0) do interního (eth1) rozhraní:

iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

Toto pravidlo umožňuje přenos IP paketů mezi rozhraními bez ohledu na zdroj. Je však možné zakázat připojení přes NAT pro samostatné IP adresy nebo podsítě jako samostatné pravidlo:

iptables -I FORWARD 1 -o eth1 -s 167.71.67.136 -j DROP

Pozor: zde příkaz používá přepínač -I místo -A. Přepínač -I vám umožňuje přidat pravidlo podle určitého čísla do posloupnosti řetězových pravidel zadáním indexu. Například ve výše uvedeném příkazu je index v řetězci FORWARD, to znamená, že pravidlo bude přidáno na začátek řetězce. Pokud bude toto pravidlo přidáno do konce, nebude fungovat, protože paket IP bude zpracován podle předchozího pravidla, což umožní jakékoli zdroje interakce, a tím bude dokončen jeho průchod řetězcem FORWARD.

Nyní přesměrujte všechna připojení na port 80 externího síťového rozhraní (eth0) na IP adresu webového serveru v interní síti web-server01:

iptables -t nat -A PREROUTING -p tcp --port 80 -i eth0 -j DNAT - do cíle 192.168.0.11

-do cíle - musí být adresa IP, na kterou musí být cílová adresa IP nahrazena.

Chcete-li to zkontrolovat, zkuste se připojit z Internetu přes telnet k veřejné IP adrese serveru gw-server na portu 80:

telnet 84.201.168.122 80

Výsledkem bude odezva webového serveru web-server01 z naší interní sítě:

HTTP / 1.1 400 Server chybných požadavků: nginx / 1.14.2 Datum: St, 31. července 2019 10:21:21 GMT Typ obsahu: text / html Obsah-délka: 173 Připojení: zavřít 

Podobně můžete nakonfigurovat přístup z Internetu na svou pracovní stanici pomocí protokolu RDP. Protože omezený počet lidí bude potřebovat přístup RDP, bude při připojení bezpečnější používat nestandardní port, například 13389, a přesměrovat jej na port 3389 na interním síťovém serveru (nebo změnit číslo portu RDP v počítači se systémem Windows). Změněný cílový port je označen dvojtečkou za IP adresou:

iptables -t nat -A PREROUTING -p tcp --port 13389 -i eth0 -j DNAT - do cíle 192.168.0.12 ∗ 389

Chcete-li to zkontrolovat, zkuste se připojit z Internetu přes telnet (nebo rutinu PowerShell Test-NetConnection) k veřejné IP adrese serveru gw-server na portu 13389:

telnet 84.201.168.122 13389

Jako odpověď získáme prázdnou obrazovku a kurzor, což znamená, že připojení funguje.

Analýza protokolů síťového připojení NAT v systému Linux

Jedním z momentů, jak zvýšit úroveň zabezpečení po konfiguraci přeposílání portů na náš osobní server z externí sítě, bude montáž a analýza protokolů externího připojení. Útočník se kromě toho může pokusit tento přístup využít.

Nejprve povolte záznam v souboru protokolu /var/ log / messages všechny pokusy o připojení k nestandardnímu portu RDP, který používáme:

iptables -I INPUT 1 -p tcp --port 13389 -m state - status NEW -j LOG --log-prefix "NEW RDP SESSION"

Připojte se k našemu osobnímu serveru, aby se v protokolu objevil protokol. Nyní odfiltrujeme všechny položky v souboru protokolu, které potřebujeme:

cat / var / log / messages | grep "NEW RDP SESSION"

kernel: NEW RDP SESSION IN = OUT = eth1 SRC = 167.71.67.79 DST = 84.201.168.122  LEN = 60 TOS = 0x00 PREC = 0x00 TTL = 64 ID = 16270 DF PROTO = TCP SPT = 60836 DPT = 13389 WINDOW = 29200 RES = 0x00 SYN URGP = 0

Čtení takového protokolu není příliš pohodlné, zejména každý den. Proto dalším krokem je automatizace analýzy protokolů k pravidelnému přijímání zpráv na základě našeho filtru. Chcete-li to provést, použijte obslužný program Logwatch, instalace pomocí standardního správce balíků yum:

yum install logwatch

Nejprve zkuste vygenerovat přehled ručně:

/ usr / sbin / logwatch - podrobně nízké - služba iptables - dnes ještě uspořádat

zde,

  • -služby - nastavuje konkrétní službu, zprávy, ze kterých musíte analyzovat, v našem případě, pouze z iptables;
  • -rozsah - označuje období vzorkování dat, dnes - všechny události pro dnešek;
  • -detail - úroveň podrobnosti zprávy (vysoká, střední, nízká).

Ve výchozím nastavení zobrazí logwatch zprávu na obrazovce, dostaneme něco podobného:

--------------------- iptables firewall Začátek ------------------------ Vypsáno podle zdrojových hostitelů: 2 protokolované pakety na rozhraní eth1 Od 167.71.45.65 - 2 pakety do tcp (13389) ---------------------- iptables firewall Konec ------------------------- 

Zpráva funguje, zbývá ji provést podle plánu, jednou denně a odeslat ji na váš e-mail, proto aktualizujeme příkaz a zapíšeme jej do souboru /etc/cron.daily/00logwatch:

/ usr / sbin / logwatch --output mail --mailto [email protected] --detail low --service iptables --range včera

Zde byly přidány možnosti:

-výstup - označuje způsob výstupu zprávy, mail - odeslání na mail;

-mailto - e-mailová adresa příjemce zprávy.

Při předávání protokolu RDP v místní síti je také třeba analyzovat protokoly připojení RDP přímo v systému Windows.