Konfiguriranje internetnega prehoda z NAT in posredovanjem vrat na CentOS 7

V tem članku bomo obravnavali postopek organizacije in konfiguriranja preprostega internetnega prehoda, ki temelji na CentOS 7.x. Ta prehod omogoča uporabnikom iz lokalnega omrežja dostop do interneta, pa tudi dostop do strežnikov ali računalnikov v notranjem omrežju od zunaj. Za organizacijo usmerjanja in posredovanja paketov bomo uporabili tehnologijo NAT, ki temelji na požarnem zidu iptables. Razmislimo tudi o tem, kako vzdrževati in analizirati dnevnike povezav na internetnem prehodu, ko zunanji uporabniki dostopajo do lokalnega omrežja.

Vsebina:

  • Diagram lokalnega omrežja z dostopom do interneta, vrste NAT
  • Konfiguriranje vira NAT: dostop do LAN
  • Konfigurirajte destinacijo NAT in posredovanje vrat: dostop iz interneta do lokalnega omrežja
  • Analiza dnevnikov omrežne povezave NAT v Linuxu

Diagram lokalnega omrežja z dostopom do interneta, vrste NAT

NAT (Prevajanje omrežnih naslovov) - prevod IP naslovov, to je mehanizem, ki vam omogoča, da zamenjate izvorni in ciljni naslov v naslovu IP paketov, ko preideta skozi usmerjevalnik, tj. med različnimi omrežji.

NAT bomo konfigurirali med notranjim omrežjem z naslovom 10.2.0.0/24 in zunanjim internetnim omrežjem dveh vrst:

  • vir NAT - gre za nadomestitev izvornega naslova IP, v našem primeru za organizacijo dostopa do interneta prek enega javnega naslova IP več strank.
  • destinacija NAT - nadomestitev ciljnih IP naslovov, v našem primeru za zagotavljanje dostopa iz zunanjega internetnega omrežja preko javnega naslova IP do notranjih omrežnih strežnikov.

Določimo mrežne elemente (slika 1), med katerimi bo organiziran NAT:

  • gw-strežnik - strežniški prehod, tj. naš strežnik CentOS Linux, ki omogoča dostop zunaj notranjega omrežja. Ima dva vmesnika, prvi eth1 (10.2.0.1) v notranjem omrežju, drugi eth0 (84.201.168.122) z javnim IP naslovom in dostopom do interneta;
  • spletni strežnik01 - Spletni strežnik notranjega omrežja, IP naslov 10.2.0.11;
  • my-server01 - osebni strežnik notranjega omrežja, IP naslov 10.2.0.12.

Opomba: za notranje omrežne strežnike spletni strežnik01 in myserver01 privzeta pot je nastavljena na vmesnik eth1 (10.2.0.1) strežnika gw-server01.

Konfiguriranje vira NAT: dostop do LAN

Z izvornim NAT za zunanje omrežne strežnike bodo zahteve naših odjemalcev iz notranjega omrežja videti, kot da strežnik prehoda neposredno komunicira z njimi - gw-server01.

V zadnjem članku, »Osnovna konfiguracija požarnega zidu Linux s pomočjo iptables«, smo opisali osnove uporabe iptables. Tokrat bomo delali v iptablejih ne le s tabelo filter, pa tudi s mizo nat. Za razliko od tabel za filtriranje prometa filter, Nat tabela vsebuje naslednje verige:

  • PRENOS - V tej verigi se obdelajo dohodni paketi IP, preden jih razdelimo na tiste, ki so namenjeni samemu strežniku ali za prenos na drugega, tj. preden se odločite za izbiro poti za paket IP;
  • IZHOD - Veriga je zasnovana za obdelavo paketov IP, ki jih lokalno ustvari aplikacija na strežniku. Lokalno ustvarjeni IP-paketi ne gredo skozi PREROUTING verigo;
  • POSTAVITEV - vsi odhodni paketi IP se obdelajo v tej verigi, potem ko se odločijo za pot za paket IP.

Dejanja, izvedena za pakete IP v tej tabeli, so tudi različna:

  • MASKERADE in SNAT- zamenja izvorni IP naslov za odhodne pakete. Razlika med temi dejanji je v tem, da SNAT omogoča nastavitev določenega naslova IP za nov vir, v primeru MASQUERADE pa se to zgodi dinamično;
  • DNAT - nadomešča ciljni IP naslov za dohodne pakete.
Je pomembno: dejanja MASQUERADE in SNAT sta nastavljena samo za verigo POSTROUTING, DNAT dejanja pa samo za PREROUTING oz. IZHOD.

Slika 2 prikazuje korake za obdelavo IP paketa iz notranjega omrežja na prehodu gw-server01 s SNAT na iptables. IP naslov in ciljna vrata ostanejo nespremenjeni..

Slika 2

  1. Paket IP je prispel na notranji vmesnik eth1 strežnika gw-server01. Ker ciljni IP ne pripada gw-server01, paket IP nadaljuje z obdelavo v verigi FORWARD.
  2. Po prehodu verige FORWARD za paket IP določi odhodni omrežni vmesnik, iz katerega naj bi ga poslal, to je rumeno označeno
  3. Na koncu gre paket IP skozi verigo POSTROUTING, v kateri se izvorni IP naslov spremeni v IP naslov zunanjega vmesnika eth0 strežnika gw-server01

Postavimo se. Najprej morate nastaviti parameter jedra, ki vam omogoča prenos paketov med strežniškimi vmesniki. Če želite to narediti v datoteki /etc/sysctl.conf dodajte spremenljivko:

net.ipv4.ip_forward = 1

Če želite uporabiti spremembe, izvedite ukaz

sysctl -p /etc/sysctl.conf

tukaj je sysctl ukaz, ki omogoča upravljanje parametrov jedra, ključ -str pomeni, da morate prebrati parametre iz datoteke.

Ustvari pravilo v iptables, ki omogoča prenos paketov med notranjim (eth1) in zunanjim (eth0) vmesnikom:

iptables -A NAPREJ -i eth1 -o eth0 -j SPREJEM

in prenesite pakete med vmesnike, povezane z že vzpostavljenimi povezavami.

iptables -A FORWARD -m stanje --state POVEZAN, USTANOVLJEN -j SPREJEM

Prejšnja dva pravila je smiselno ustvariti samo, če je pravilnik DROP privzeto nastavljen za verigo FORWARD:

iptables -P NAPREJ DROP

Omogoči SNAT:

iptables -t nat -A POSTAVITEV -s 10.2.0.0/24 -o eth1 -j SNAT --to-vir 84.201.168.122

  • -do vira mora biti naslov na vmesniku, iz katerega je načrtovana izdaja paketov IP v zunanje omrežje;
  • -s 10.2.0.0/24 določeno je, da je notranje omrežje 10.2.0.0/24, vendar je to neobvezen parameter, če ga ne navedete, ne bo nobenih omejitev vira interakcije.

Poglejmo nastalo konfiguracijo za tabelo filter in verige Naprej (izhod je obrezan):

iptables -L -n -v

in konfiguracija za mizo nat in verige POSTAVITEV (izhod je obrezan):

iptables -t nat -L -n -v

Da preverimo, ali je naš spletni strežnik v notranjem omrežju dobil dostop do interneta, se bomo s pomočjo telneta poskušali povezati na naslov 1.1.1.1 (Cloudflare DNS) vrata 80:

telnet 1.1.1.1 80

Rezultat ekipe Povezana 1.1.1.1, pomeni, da je bila povezava uspešna.

Konfigurirajte destinacijo NAT in posredovanje vrat: dostop iz interneta do lokalnega omrežja

Zdaj razmislite o obratni situaciji. Želimo, da stranke zunaj lahko dostopajo do našega spletnega mesta v internem omrežju. Prav tako moramo iti do vašega osebnega strežnika (ali delovne postaje) z interneta. Razlika med tem primerom ni le v smeri interakcije, ampak tudi v tem, da morate zahteve preusmeriti na posamezna vrata, 80 (TCP) in 3389 (TCP), hkrati pa zamenjati ciljni strežnik in po možnosti ciljni pristanišče. Ta tehnika se imenuje posredovanje pristanišč (posredovanje pristanišč).

Posredovanje vrat v operacijskem sistemu Windows lahko uredite z ukazom netsh vmesnik portproxy.

Najprej omogočite paketni prenos z zunanjega vmesnika (eth0) na notranji (eth1) vmesnik:

iptables -A NAPREJ -i eth0 -o eth1 -j SPREJEM

To pravilo omogoča prenos paketov IP med vmesniki ne glede na vir. Vendar je možno kot ločeno pravilo prepovedati povezavo prek NAT za ločene naslove IP ali podomrežja:

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

Pozor!: tukaj ukaz uporablja stikalo -I namesto -A. Stikalo -I vam omogoča, da v zaporedje pravil verige dodate pravilo z določeno številko, tako da določite indeks. Na primer, v zgornjem ukazu je indeks ena v verigi FORWARD, torej bo pravilo dodano na začetek verige. Če temu pravilu dodamo do konca, ne bo delovalo, saj bo paket IP obdelal s prejšnjim pravilom, ki bo omogočal kakršne koli vire interakcije, in s tem bo njegov prehod skozi verigo FORWARD zaključen.

Zdaj preusmerite vse povezave do vrat 80 zunanjega omrežnega vmesnika (eth0) na IP naslov spletnega strežnika v notranjem omrežju spletni strežnik01:

iptables -t nat -A PREDSTAVITEV -p tcp --portport 80 -i eth0 -j DNAT - do cilja 192.168.0.11

-do cilja - mora biti naslov IP, na katerega je treba zamenjati ciljni naslov IP.

Če želite preveriti, poskusite povezati z interneta prek telneta na javni IP naslov strežnika gw-server na vratih 80:

telnet 84.201.168.122 80

Rezultat bo odziv spletnega strežnika spletnega strežnika01 iz našega notranjega omrežja:

HTTP / 1.1 400 Bad Request Server: nginx / 1.14.2 Datum: Wed, 31 Jul 2019 10:21:21 GMT Vrsta vsebine: text / html Dolžina vsebine: 173 Povezava: zapri 

Podobno lahko prek RDP nastavite dostop iz interneta do svoje delovne postaje. Ker bo omejeno število ljudi potrebovalo dostop do RDP, bo varneje pri povezovanju uporabiti nestandardna vrata, na primer 13389, in ga preusmeriti na vrata 3389 na strežniku notranjega omrežja (ali spremeniti številko vrat RDP v računalniku z operacijskim sistemom Windows). Spremenjeni ciljni pristanišče je s IP-naslovom označeno z dvopičjem:

iptables -t nat -A PREDSTAVITEV -p tcp --portport 13389 -i eth0 -j DNAT - do cilja 192.168.0.12//389

Če želite preveriti, se poskusite povezati z interneta prek telneta (ali ukaznega okna PowerShell Test-NetConnection) z javnim IP naslovom strežnika gw-strežnik v pristanišču 13389:

telnet 84.201.168.122 13389

Kot odgovor dobimo prazen zaslon in kazalec, to kaže, da povezava deluje.

Analiza dnevnikov omrežne povezave NAT v Linuxu

Eden od trenutkov za povečanje stopnje varnosti po konfiguraciji posredovanja vrat na naš osebni strežnik iz zunanjega omrežja bo sestavljanje in analiza dnevnikov zunanjih povezav. Dejansko lahko poleg nas napadalec poskusi uporabiti ta dostop.

Najprej omogočite vnos v datoteko dnevnika /var/ log / sporočila vsi poskusi povezave z nestandardnim vratom RDP, ki ga uporabljamo:

iptables -I VHOD 1 -p tcp --portport 13389 -m stanje --state NOVO -j LOG --log-predpona "NOVO RDP SESTAVA"

Povežite se z našim osebnim strežnikom, tako da se v dnevniku prikaže dnevnik. Zdaj filtriramo vse vnose v dnevniški datoteki, ki jih potrebujemo:

mačka / var / log / sporočila | grep "NOVO SESTAVO PRP"

jedro: NOVO SESTAVA RDP V = 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

Branje takega dnevnika ni zelo priročno, še posebej vsak dan. Zato je naslednji korak avtomatizacija analize dnevnikov za redno prejemanje poročil na podlagi našega filtra. Če želite to narediti, uporabite pripomoček Logwatch, ga namestite prek standardnega upravitelja paketov yum:

yum namestite logwatch

Najprej poskusite ročno ustvariti poročilo:

/ usr / sbin / logwatch --razprodaja nizke - storitve iptables - danes razporedite

tukaj,

  • -storitev - nastavi točno določeno storitev, sporočila, iz katerih morate analizirati, v našem primeru le iz iptables;
  • -domet - označuje obdobje vzorčenja podatkov, danes - vse dogodke za danes;
  • -podrobnost - raven podrobnosti poročila (visoka, med, nizka).

Privzeto bo logwatch na zaslonu prikazal poročilo, dobili smo nekaj takega:

--------------------- iptables požarni zid Začetek ------------------------ S seznama izvornih gostiteljev: Zabeleženo 2 paketa na vmesniku eth1 Od 167.71.45.65 - 2 paketa do tcp (13389) ---------------------- iptables požarni zid End ------------------------- 

Poročilo deluje, ostalo je, da ga izvršimo po urniku, enkrat na dan in ga pošljemo na vaš e-poštni naslov, za to posodobimo ukaz in ga zapišemo v datoteko /etc/cron.daily/00logwatch:

/ usr / sbin / logwatch - izhodna pošta --mailto [email protected] - maloprodajni nizki - storitve iptables - oranž včeraj

Tu so bile dodane možnosti:

-izhod - označuje način pošiljanja poročila, pošiljanje pošte na pošto;

-mailto - e-poštni naslov prejemnika poročila.

Pri posredovanju RDP znotraj lokalnega omrežja morate imeti možnost analizirati tudi dnevnike povezav RDP neposredno v operacijskem sistemu Windows.