Konfiguriranje Internet Gatewaya s NAT i prosljeđivanjem porta na CentOS 7

U ovom ćemo članku razmotriti postupak organizacije i konfiguriranja jednostavnog internetskog prolaza utemeljenog na CentOS 7.x. Ovaj pristupnik omogućit će korisnicima iz lokalne mreže pristup internetu, kao i izravnim pristupima poslužiteljima ili računalima na unutarnjoj mreži. Za organiziranje usmjeravanja i prosljeđivanja paketa koristit ćemo NAT tehnologiju koja se temelji na iptables vatrozidu. Također razmatramo kako održavati i analizirati zapisnike veza na internetskom gatewayu kada vanjski korisnici pristupaju lokalnoj mreži.

sadržaj:

  • Dijagram lokalne mreže s pristupom Internetu, vrste NAT
  • Konfiguriranje izvora NAT: LAN pristup
  • Konfiguriranje NAT odredišta i prosljeđivanje porta: pristup s Interneta lokalnoj mreži
  • Analiza dnevnika mrežne veze NAT-a na Linuxu

Dijagram lokalne mreže s pristupom Internetu, vrste NAT

NAT (Prijevod mrežne adrese) - prijevod IP adresa, ovo je mehanizam koji vam omogućuje zamjenu izvorne i odredišne ​​adrese u IP zaglavlju paketa kada prođu kroz usmjerivač, tj. između različitih mreža.

Konfigurirat ćemo NAT između interne mreže s adresom 10.2.0.0/24 i vanjske internetske mreže, dvije vrste:

  • izvor NAT - ovo je zamjena izvorne IP adrese, u našem slučaju, za organiziranje pristupa Internetu putem jedne javne IP adrese nekoliko klijenata.
  • odredište NAT - zamjenu odredišnih IP adresa, u našem slučaju radi pružanja pristupa iz vanjske internetske mreže putem javne IP adrese na interne internetske poslužitelje.

Definiramo mrežne elemente (slika 1) između kojih će se organizirati NAT:

  • GW-poslužitelj - gateway poslužitelja, tj. naš CentOS Linux poslužitelj, koji pruža pristup izvan interne mreže. Ima dva sučelja, prvo eth1 (10.2.0.1) na internoj mreži, drugo eth0 (84.201.168.122) s javnom IP adresom i pristupom internetu;
  • Web-server01 - Web poslužitelj interne mreže, IP adresa 10.2.0.11;
  • moja-server01 - osobni poslužitelj interne mreže, IP adresa 10.2.0.12.

primjedba: za interne mrežne poslužitelje Web-server01 i myserver01 zadana ruta postavljena je na eth1 (10.2.0.1) sučelje poslužitelja GW-server01.

Konfiguriranje izvora NAT: LAN pristup

Uz izvor NAT za vanjske mrežne poslužitelje, zahtjevi naših klijenata iz interne mreže izgledaju kao da poslužitelj pristupnika izravno komunicira s njima - GW-server01.

U posljednjem članku, "Osnovna konfiguracija firewall Linuxa pomoću iptablesa", opisali smo osnove upotrebe iptablesa. Ovaj put ćemo raditi u iptablesima ne samo sa tablicom filter, ali i sa stolom nat. Za razliku od tablica za filtriranje prometa filter, Nat tablica sadrži sljedeće lance:

  • PREROUTING - U ovom lancu dolazni IP paketi se obrađuju, prije nego što se podijele na one namijenjene samom poslužitelju ili za prijenos na drugi, tj. prije nego što odlučite o izboru rute za IP paket;
  • IZLAZ - Lanac je dizajniran za obradu IP paketa koje generira lokalno aplikacija na poslužitelju. Lokalno generirani IP paketi ne prolaze kroz PREROUTING lanac;
  • POSTROUTING - svi odlazni IP paketi obrađuju se u ovom lancu, nakon što se odluči o ruti za IP paket.

Radnje izvedene za IP pakete u ovoj tablici također su različite:

  • maskarada i SNAT- zamjenjuje izvornu IP adresu za odlazne pakete. Razlika između tih radnji je u tome što SNAT omogućava postavljanje određene IP adrese za novi izvor, a u slučaju MASQUERADE to se događa dinamično;
  • DNAT - zamjenjuje odredišne ​​IP adrese za dolazne pakete.
Važno je: akcije MASQUERADE i SNAT postavljene su samo za lanac POSTROUTING, a DNAT akcije samo za PREROUTING ili IZLAZ.

Na slici 2 prikazani su koraci za obradu IP paketa iz interne mreže na gw-server01 gateway-u sa SNAT na iptables. IP adresa i odredišni port ostaju nepromijenjeni..

Slika 2

  1. IP paket stigao je na interno sučelje eth1 gw-server01 poslužitelja. Budući da odredišni IP ne pripada gw-server01, IP paket nastavlja s obradom lanca FORWARD.
  2. Nakon prolaska lanca FORWARD, za IP paket, određuje se odlazno mrežno sučelje s kojeg ga treba poslati, ovo je žutom bojom označeno
  3. Na kraju IP paket prolazi kroz lanac POSTROUTING, u kojem se izvorna IP adresa mijenja u IP adresu vanjskog sučelja eth0 poslužitelja gw-server01

Idemo postaviti. Najprije morate postaviti parametar kernel koji vam omogućava prijenos paketa između sučelja poslužitelja. Da biste to učinili u datoteci /etc/sysctl.conf dodaj varijablu:

net.ipv4.ip_forward = 1

Za primjenu promjena izvršite naredbu

sysctl -p /etc/sysctl.conf

ovdje je sysctl naredba koja vam omogućuje upravljanje parametrima kernel-a, ključem -p znači da morate pročitati parametre iz datoteke.

Napravite pravilo u iptablesima koji omogućuju prijenos paketa između unutarnjeg (eth1) i vanjskog (eth0) sučelja:

iptables -A NAPRIJED -i eth1 -o eth0 -j PRIHVAT

i prenesite nam pakete između sučelja koja se odnose na već uspostavljene veze.

iptables -A FORWARD -m stanje --state VEZANO, UTVRĐENO -j PRIHVAT

Prethodna dva pravila ima smisla stvoriti samo ako je DROP politika zadano postavljena za lanac FORWARD:

iptables -P NAPON DROP

Omogući SNAT:

iptables -t nat -A POSTROJENJE -s 10.2.0.0/24 -o eth1 -j SNAT --to-izvor 84.201.168.122

  • -za izvor mora biti adresa na sučelju s kojeg se planira izdavanje IP paketa u vanjsku mrežu;
  • -s 10.2.0.0/24 specificirano je da je unutarnja mreža 10.2.0.0/24, ali to je neobavezni parametar, ako ga ne navedete, neće biti ograničenja u izvoru interakcije.

Pogledajmo rezultirajuću konfiguraciju za tablicu filter i lanci NAPRIJED (izlaz je smanjen):

iptables -L -n -v

i konfiguracija za tablicu nat i lanci POSTROUTING (izlaz je smanjen):

iptables -t nat -L -n -v

Da bismo provjerili je li naš web poslužitelj u internoj mreži dobio pristup Internetu, pokušat ćemo se povezati putem telneta na adresu 1.1.1.1 (Cloudflare DNS) port 80:

telnet 1.1.1.1 80

Timski izlaz Povezano 1.1.1.1, označava da je veza bila uspješna.

Konfiguriranje NAT odredišta i prosljeđivanje porta: pristup s Interneta lokalnoj mreži

Sada razmotrite obrnutu situaciju. Želimo da kupci izvana mogu pristupiti našoj web stranici na internoj mreži. I također trebamo ići na vaš osobni poslužitelj (ili radnu stanicu) s Interneta. Razlika ovog slučaja nije samo u smjeru interakcije, već i u činjenici da morate preusmjeriti zahtjeve na pojedinačne portove, 80 (TCP) i 3389 (TCP), dok zamjenjujete odredišni poslužitelj i, možda, odredišni port. Ova tehnika se zove prosljeđivanje luka (prosljeđivanje porta).

Prosljeđivanje porta u sustavu Windows može se organizirati pomoću naredbe mrežni portproxy sučelja.

Najprije omogućite paketni prijenos s vanjskog sučelja (eth0) na interno (eth1) sučelje:

iptables -A NAPRIJED -i eth0 -o eth1 -j PRIHVAT

Ovo pravilo omogućava prijenos IP paketa između sučelja bez obzira na izvor. Ali možete koristiti zasebno pravilo da zabranite povezivanje putem NAT-a za pojedinačne IP adrese ili podmreže:

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

Oprez: ovdje naredba koristi -I sklopku umjesto -A. Prekidač -I omogućava vam da dodate pravilo pomoću određenog broja u nizu pravila lanca specificiranjem indeksa. Na primjer, u naredbi iznad, indeks je jedan u lancu FORWARD, odnosno pravilo će biti dodano na početku lanca. Ako se ovo pravilo doda na kraju, ono neće raditi jer će IP paket biti obrađen prethodnim pravilom, omogućujući bilo kakve izvore interakcije, i na taj način će njegov prolazak kroz FORWARD lanac biti dovršen.

Sada preusmjerite sve veze na priključak 80 vanjskog mrežnog sučelja (eth0) na IP adresu web poslužitelja u internoj mreži Web-server01:

iptables -t nat -A PROIZVODNJA -p tcp --portport 80 -i eth0 -j DNAT - odredište 192.168.0.11

-do odredišta - mora biti IP adresa na koju se mora zamijeniti odredišna IP adresa.

Da biste provjerili, pokušajte se povezati s Interneta putem telneta na javnu IP adresu poslužitelja gw-poslužitelja na priključku 80:

telnet 84.201.168.122 80

Rezultat će biti odgovor web-poslužitelja internetskog poslužitelja01 iz naše interne mreže:

HTTP / 1.1 400 Loš zahtjev poslužitelja: nginx / 1.14.2 Datum: Wed, 31 Jul 2019 10:21:21 GMT Vrsta sadržaja: tekst / html Dužina sadržaja: 173 Veza: zatvori 

Slično tome, možete konfigurirati pristup s Interneta na svoju radnu stanicu putem RDP-a. Budući da će ograničenom broju ljudi trebati RDP pristup, bit će sigurnije koristiti nestandardni port prilikom povezivanja, na primjer 13389, i od njega preusmjeriti na port 3389 poslužitelja interne mreže (ili promijeniti broj RDP porta na Windows računalu). Promijenjeni odredišni port označen je dvotočkom nakon IP adrese:

iptables -t nat -A PROIZVODNJA -p tcp --portport 13389 -i eth0 -j DNAT - na odredište 192.168.0.12//389

Da biste provjerili, pokušajte se povezati s Interneta putem telneta (ili PowerShell Test-NetConnection cmdlet) na javnu IP adresu poslužitelja. GW-poslužitelj na priključku 13389:

telnet 84.201.168.122 13389

Kao odgovor na to, dobivamo prazan ekran i pokazivač, to ukazuje da veza funkcionira.

Analiza dnevnika mrežne veze NAT-a na Linuxu

Jedan od trenutaka za povećanje razine sigurnosti nakon konfiguriranja prosljeđivanja vrata na naš osobni poslužitelj iz vanjske mreže bit će sastavljanje i analiza dnevnika vanjskih veza. Doista, osim nas, napadač može pokušati iskoristiti taj pristup.

Prvo, omogućite unos u datoteku dnevnika /var/ log / poruke svi pokušaji povezivanja s nestandardnim RDP portom koji koristimo:

iptables -I ULAZ 1 -p tcp --portport 13389 -m stanje - drzava NOVO -j LOG --log-prefiks "NOVO RDP SJEDNICA"

Spojite se na naš osobni poslužitelj tako da se u dnevniku pojavi zapisnik. Sada filtriramo sve zapise u datoteci dnevnika koji su nam potrebni:

mačka / var / log / poruke | grep "NOVA RDP SJEDNICA"

kernel: NOVA RDP SJEDNICA U = 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

Čitanje takvog dnevnika nije baš prikladno, pogotovo svaki dan. Stoga je sljedeći korak automatizacija analize dnevnika kako bi se redovito primala izvješća na temelju našeg filtra. Da biste to učinili, koristite uslužni program Logwatch, instalirate ga putem standardnog yum paketa za upravljanje:

yum instalacija logwatch

Prvo pokušajte ručno generirati izvještaj:

/ usr / sbin / logwatch - maloprodajni niski - servisni iptables - narančasti danas

ovdje,

  • -usluga - postavlja određenu uslugu, poruke s kojih trebate analizirati, u našem slučaju, samo s iptablesa;
  • -opseg - označava razdoblje uzorkovanja podataka, danas - sve događaje za danas;
  • -detalj - razina detalja o izvještaju (visoka, med, niska).

Prema zadanom, logwatch će na zaslonu prikazati izvještaj, dobili smo ovako nešto:

--------------------- iptables vatrozid Počnite ------------------------ Popisali izvorni domaćini: Zabilježeni 2 paketa na sučelju eth1 Od 167.71.45.65 - 2 paketa do tcp (13389) ---------------------- iptables vatrozid Kraj ------------------------- 

Izvješće radi, ostaje ga pokrenuti prema rasporedu, jednom dnevno i poslati ga na vašu e-poštu, za to ažuriramo naredbu i upišemo je u /etc/cron.daily/00logwatch datoteku:

/ usr / sbin / logwatch - izlazna pošta --mailto [email protected] - maloprodajna niska - iptables usluge - narančasti jučer

Ovdje su dodane opcije:

-izlaz - označava način iskazivanja izvješća, poštu - slanje na poštu;

-mailto - e-mail adresa primatelja izvještaja.

Kada prosljeđujete RDP unutar lokalne mreže, također trebate biti u mogućnosti analizirati zapisnike RDP veza izravno u sustavu Windows.