Konfigurácia internetovej brány s NAT a port forwarding na CentOS 7

V tomto článku sa budeme zaoberať procesom usporiadania a konfigurácie jednoduchej internetovej brány založenej na systéme CentOS 7.x. Táto brána umožní používateľom z lokálnej siete prístup na internet, ako aj prístup k serverom alebo počítačom z vnútornej siete zvonku. Na usporiadanie smerovania a preposielania paketov použijeme technológiu NAT založenú na bráne iptables. Uvažujeme tiež o tom, ako udržiavať a analyzovať protokoly pripojenia na internetovej bráne, keď externí používatelia pristupujú k miestnej sieti.

obsah:

  • Schéma miestnej siete s prístupovou bránou k internetu, typy NAT
  • Konfigurácia zdroja NAT: LAN Access
  • Konfigurovať cieľový NAT a presmerovanie portov: prístup z Internetu do lokálnej siete
  • Analýza protokolov sieťového pripojenia NAT v systéme Linux

Schéma miestnej siete s prístupovou bránou k internetu, typy NAT

NAT (Network Address Translation) - preklad IP adresy, čo je mechanizmus, ktorý vám umožňuje nahradiť zdrojovú a cieľovú adresu v hlavičke IP paketov, keď prechádzajú cez smerovač, t. medzi rôznymi sieťami.

NAT nakonfigurujeme medzi internou sieťou s adresovaním 10.2.0.0/24 a externou internetovou sieťou dvoch typov:

  • zdroj NAT - v našom prípade ide o náhradu zdrojovej adresy IP za organizovanie prístupu na internet prostredníctvom jednej verejnej adresy IP viacerých klientov.
  • cieľový NAT - nahradenie cieľových IP adries, v našom prípade, zabezpečenie prístupu z externej internetovej siete prostredníctvom verejnej IP adresy k interným sieťovým serverom.

Definujeme sieťové prvky (obrázok 1), medzi ktorými bude NAT organizovaný:

  • gw-server - serverová brána, t. náš server CentOS Linux, ktorý poskytuje prístup mimo internej siete. Má dve rozhrania, prvé eth1 (10.2.0.1) na vnútornej sieti, druhé eth0 (84.201.168.122) s verejnou IP adresou a prístupom na internet;
  • web-SERVER01 - Webový server vnútornej siete, adresa IP 10.2.0.11;
  • my-SERVER01 - osobný server vnútornej siete, IP adresa 10.2.0.12.

poznámka: pre interné sieťové servery web-SERVER01 a myserver01 predvolená trasa je nastavená na rozhranie et1 (10.2.0.1) servera gw-SERVER01.

Konfigurácia zdroja NAT: LAN Access

Pri zdrojovom NAT pre externé sieťové servery budú požiadavky našich klientov z vnútornej siete vyzerať, akoby s nimi server brány komunikoval priamo. - gw-SERVER01.

V poslednom článku „Základná konfigurácia brány firewall systému Linux pomocou iptables“ sme sa zaoberali základmi používania iptables. Tentoraz budeme pracovať v iptables nielen s tabuľkou filter, ale aj so stolom nat. Na rozdiel od tabuliek na filtrovanie prenosu filter, Tabuľka nat obsahuje nasledujúce reťazce:

  • PREROUTING - V tomto reťazci sa prichádzajúce IP pakety spracujú skôr, ako sa rozdelia na pakety určené pre samotný server alebo na prenos na iný, t. pred rozhodnutím o výbere trasy pre paket IP;
  • OUTPUT - Reťaz je navrhnutá na spracovanie paketov IP, ktoré sú generované lokálne aplikáciou na serveri. Lokálne generované pakety IP neprechádzajú reťazcom PREROUTING;
  • POSTROUTING - všetky odchádzajúce IP pakety sú spracované v tomto reťazci po rozhodnutí o trase pre IP paket.

Činnosti vykonané pre pakety IP v tejto tabuľke sú tiež rôzne:

  • Masquerade a SNATE- nahrádza zdrojovú adresu IP pre odchádzajúce pakety. Rozdiel medzi týmito akciami je v tom, že SNAT umožňuje nastaviť špecifickú IP adresu pre nový zdroj av prípade MASQUERADE sa to deje dynamicky;
  • DNAT - nahrádza cieľové adresy IP za prichádzajúce pakety.
Je dôležité: akcie MASQUERADE a SNAT sú nastavené iba pre reťazec POSTROUTING a akcie DNAT iba pre PREROUTING alebo OUTPUT.

Obrázok 2 zobrazuje kroky na spracovanie paketu IP z vnútornej siete na bráne gw-server01 s SNAT na iptables. IP adresa a cieľový port zostávajú nezmenené..

Obrázok 2

  1. Paket IP prišiel na interné rozhranie eth1 servera gw-server01. Pretože cieľová IP nepatrí do gw-server01, paket IP pokračuje spracovaním reťazcom FORWARD.
  2. Po prejdení reťazca FORWARD v prípade IP paketu sa určí odchádzajúce sieťové rozhranie, z ktorého sa má poslať, toto je označené žltou farbou.
  3. Nakoniec IP paket prechádza reťazcom POSTROUTING, v ktorom sa zdrojová IP adresa zmení na IP adresu externého rozhrania eth0 servera gw-server01.

Poďme na to. Najprv musíte nastaviť parameter jadra, ktorý vám umožní prenášať pakety medzi serverovými rozhraniami. Ak to chcete urobiť v súbore /etc/sysctl.conf pridať premennú:

net.ipv4.ip_forward = 1

Ak chcete použiť zmeny, vykonajte príkaz

sysctl -p /etc/sysctl.conf

tu sysctl je príkaz, ktorý vám umožní spravovať parametre jadra, kľúč -p znamená, že musíte prečítať parametre zo súboru.

Vytvorte pravidlo v iptables, ktoré umožňuje prenos paketov medzi vnútorným (eth1) a externým (eth0) rozhraním:

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

a prenášajme pakety medzi rozhraniami týkajúcimi sa už vytvorených spojení.

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

Má zmysel vytvárať predchádzajúce dve pravidlá, iba ak je politika DROP predvolene nastavená pre reťazec FORWARD:

iptables -P FORWARD DROP

Povoliť SNAT:

iptables -t nat -A POSTROUTING -s 10.2.0.0/24 -o eth1 -j SNAT - na zdroj 84.201.168.122

  • -to-zdrojmi musí to byť adresa na rozhraní, z ktorého sa plánuje vydávať pakety IP do externej siete;
  • -s 10.2.0.0/24 je špecifikované, že interná sieť je 10.2.0.0/24, ale je to voliteľný parameter, ak ho neurčíte, nebudú existovať obmedzenia zdroja interakcie..

Pozrime sa na výslednú konfiguráciu tabuľky filter a reťazce FORWARD (výstup je orezaný):

iptables -L -n -v

a konfigurácia tabuľky nat a reťazce POSTROUTING (výstup je orezaný):

iptables -t nat -L -n -v

Aby sme si overili, že náš webový server v internej sieti získal prístup na internet, pokúsime sa pripojiť cez telnet na port 80 1.1.1.1 (Cloudflare DNS):

telnet 1.1.1.1 80

Tímový výstup Pripojené 1.1.1.1, Ikona označuje, že pripojenie bolo úspešné.

Konfigurovať cieľový NAT a presmerovanie portov: prístup z Internetu do lokálnej siete

Teraz zvážte opačnú situáciu. Chceme, aby zákazníci zvonku mali prístup na naše stránky v internej sieti. A tiež musíme ísť na váš osobný server (alebo pracovnú stanicu) z internetu. Rozdiel medzi týmto prípadom nie je iba v smere interakcie, ale aj v skutočnosti, že musíte presmerovať požiadavky na jednotlivé porty, 80 (TCP) a 3389 (TCP), pričom musíte nahradiť cieľový server a prípadne aj cieľový port. Táto technika sa nazýva presmerovanie portov (presmerovanie portov).

Presmerovanie portov vo Windows je možné dohodnúť pomocou príkazu portproxy rozhrania netsh.

Najskôr povoľte prenos paketov z externého rozhrania (eth0) do interného (eth1) rozhrania:

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

Toto pravidlo umožňuje prenos paketov IP medzi rozhraniami bez ohľadu na zdroj. Je však možné zakázať pripojenie cez NAT pre samostatné adresy IP alebo podsiete ako samostatné pravidlo:

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

pozor: tu príkaz používa prepínač -I namiesto -A. Prepínač -I vám umožňuje pridať pravidlo podľa určitého čísla v postupnosti reťazových pravidiel zadaním indexu. Napríklad vo vyššie uvedenom príkaze je index jeden v reťazci FORWARD, to znamená, že pravidlo sa pridá na začiatok reťazca. Ak sa toto pravidlo pridá na koniec, nebude fungovať, pretože paket IP bude spracovaný podľa predchádzajúceho pravidla, ktoré umožní akékoľvek zdroje interakcie, a na tomto konci bude dokončený jeho prechod reťazcom FORWARD..

Teraz presmerujte všetky pripojenia na port 80 externého sieťového rozhrania (eth0) na IP adresu webového servera vo vnútornej sieti. web-SERVER01:

iptables -t nat -A PREROUTING -p tcp --port 80 -i eth0 -j DNAT - do cieľa 192.168.0.11

-k cieľu - musí to byť adresa IP, na ktorú sa musí nahradiť cieľová adresa IP.

Ak to chcete skontrolovať, skúste sa pripojiť z Internetu cez telnet k verejnej IP adrese servera gw-server na porte 80:

telnet 84.201.168.122 80

Výsledkom bude reakcia webového servera web-server01 z našej internej siete:

HTTP / 1.1 400 Server chybných požiadaviek: nginx / 1.14.2 Dátum: St, 31. júla 2019 10:21:21 GMT Typ obsahu: text / html Obsah-Dĺžka: 173 Pripojenie: zavrieť 

Podobne môžete nakonfigurovať prístup z Internetu na svoju pracovnú stanicu pomocou protokolu RDP. Pretože obmedzený počet ľudí bude potrebovať prístup RDP, bude pri pripojení bezpečnejšie používať neštandardný port, napríklad 13389, a presmerovať ho na port 3389 na internom sieťovom serveri (alebo zmeniť číslo portu RDP na počítači so systémom Windows). Zmenený cieľový port je označený dvojbodkou za IP adresou:

iptables -t nat -A PREROUTING -p tcp - správa 13389 -i eth0 -j DNAT - do cieľa 192.168.0.12//389

Ak to chcete skontrolovať, skúste sa pripojiť z internetu cez telnet (alebo rutinu PowerShell Test-NetConnection) k verejnej IP adrese servera. gw-server v prístave 13389:

telnet 84.201.168.122 13389

V reakcii na to dostaneme prázdnu obrazovku a kurzor, čo znamená, že spojenie funguje.

Analýza protokolov sieťového pripojenia NAT v systéme Linux

Jedným z momentov na zvýšenie úrovne bezpečnosti po nakonfigurovaní presmerovania portov na náš osobný server z externej siete bude montáž a analýza protokolov externého pripojenia. Útočník sa okrem toho môže skutočne pokúsiť použiť tento prístup.

Najprv povoľte záznam v protokolovom súbore /var/ log / messages všetky pokusy o pripojenie k neštandardnému portu RDP, ktorý používame:

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

Pripojte sa k nášmu osobnému serveru, aby sa v denníku zobrazoval denník. Teraz odfiltrujeme všetky položky v protokolovom súbore, ktoré potrebujeme:

cat / var / log / messages grep "NOVÉ ZASADNUTIE RDP"

jadro: NOVÁ SEKCIA RDP 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

Čítanie takéhoto denníka nie je príliš pohodlné, najmä každý deň. Preto ďalším krokom je automatizácia analýzy protokolov na pravidelné prijímanie správ na základe nášho filtra. Na tento účel použite obslužný program Logwatch, inštalácia pomocou štandardného správcu balíkov yum:

yum install logwatch

Najskôr sa pokúste vygenerovať prehľad manuálne:

/ usr / sbin / logwatch - podrobne nízke - služba iptables - usporiadajte ešte dnes

tu,

  • -služba - nastavuje konkrétnu službu, správy, z ktorých musíte analyzovať, v našom prípade, iba z iptables;
  • -rozsah - označuje obdobie vzorkovania údajov, dnes - všetky udalosti pre dnešok;
  • -detail - úroveň podrobnosti prehľadu (vysoká, stredná, nízka).

V predvolenom nastavení logwatch zobrazí správu na obrazovke, dostaneme niečo také:

--------------------- iptables firewall Začiatok ------------------------ Zaznamenané podľa zdrojových hostiteľov: Zaznamenané 2 pakety na rozhraní eth1 Od 167.71.45.65 - 2 pakety do tcp (13389) ---------------------- iptables firewall Koniec ------------------------- 

Správa funguje, zostáva ju spustiť podľa plánu, raz denne a odoslať ju na váš e-mail, preto aktualizujeme príkaz a zapíšeme ho do súboru /etc/cron.daily/00logwatch:

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

Tu boli pridané možnosti:

-výkon - označuje spôsob výstupu správy, mail - poslať na mail;

-mailto - e-mailová adresa príjemcu správy.

Pri preposielaní protokolu RDP v lokálnej sieti musíte tiež vedieť analyzovať protokoly pripojení RDP priamo v systéme Windows.