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.
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.
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
- 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.
- 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ě
- 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říkazuportproxy 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
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.