Konfiguriranje Linux vatrozida pomoću iptablesa na CentOS / RHEL 7

U ovom ćemo članku pokazati kako upravljati Linux vatrozidom koristeći classic iptables umjesto firewalld u CentOS / RHEL 7 za filtriranje dolaznog i odlaznog prometa. Ovaj članak opisuje kako konfigurirati iptables na CentOS 7 za filtriranje dolaznog prometa, koristeći primjer virtualnog poslužitelja temeljenog na oblaku, raspoređenoga od nule myserver01, dostupno s interneta.

sadržaj:

  • Onemogućavanje firewalld-a u CentOS-u 7
  • Pravila sintakse i iptablesa u CentOS / Red Hat-u
  • Izrada pravila filtriranja prometa u iptables
  • Omogući iptables dnevnike
  • Spremanje i vraćanje pravila filtriranja iptables

Onemogućavanje firewalld-a u CentOS-u 7

CentOS 7 koristi sistemsku uslugu za zadani nadzor vatrozida firewalld. Pruža svoje sučelje, ali na kraju djeluje i preko iptables uslužnog programa. U isto vrijeme vatrozid treba kontrolirati ili firewalld ili izravno putem iptables.

firewalld nije zamjena, već omotač oko iptablesa, od njega možete koristiti ono što više volite ili prikladnije u određenim uvjetima. iptables je univerzalniji, osnovni je alat, ali malo je teže svladati. firewalld pruža jednostavnije sučelje, ali, na primjer, CentOS 6 ne može ga koristiti, a za ostale distribucije morate imati potrebne instalacijske pakete. Osim toga, ako koristite aplikacije koje postavljaju svoje postavke u vatrozidu, one moraju biti kompatibilne s firewalldom (primjer takvih aplikacija je docker, fail2ban).

Provjerite status firewalld-a i onemogućite ga.

systemctl status firewalld

U ishodu naredbe područje je kružio crvenom riječju omogućeno, znači da je pokretanje uključeno, a područje kružno žutom riječju aktivan, znači da se usluga pokreće.

Zaustavljamo uslugu i isključujemo automatsko učitavanje za nju:

systemctl stop firewalld
systemctl onesposobiti firewalld

Ponovna provjera statusa:

Sada se pokazuje naredba onesposobljen za automatsko učitavanje (isključeno) i neaktivan znači da je usluga isključena.

Pravila sintakse i iptablesa u CentOS / Red Hat-u

iptables - ovo je uslužni program koji konfigurira pravila vatrozida u Linuxu.

Iptables grupira pravila vatrozida u tablice, a glavne su:

  • stol filter - koristi se za filtriranje prometa, odnosno omogućavanje i uskraćivanje veza
  • stol nat - koristi se za prijevod adrese (NAT)
  • stol izvrstati - ostale modifikacije ip zaglavlja paketa.

Prvo provjerite da li je iptables instaliran na sustavu (trebao bi biti zadani):

rpm -q iptables

Izlaz iz naredbe pokazuje da je trenutno instalirana verzija iptables 1.4.21.

Rad s iptablesima u naredbenom retku zahtijeva root privilegije, pa ćemo nastaviti raditi kao root.

Da biste prikazali trenutna pravila, izvršite naredbu:

iptables [-t tablica] -L [lanac] [parametri]

Napomena: ako prilikom pozivanja naredbe ne navedete naziv tablice, tablica se prema zadanim postavkama koristi filter.

Na primjer, rezultat naredbe iptables -L, kada u tablicama još nisu stvorena pravila:

Razmotrite detalje naredbe.

stol filter sadrži tri vrste pravila, takozvani lanac (lanac):

  • INPUT - u ovaj se lanac obrađuju dolazni ip paketi namijenjeni samom hostu;
  • IZLAZ - u ovom lancu se obrađuju odlazni ip paketi od samog računala;
  • NAPRIJED - ovaj lanac potreban je za preusmjeravanje ip paketa. Koristi se ako želite poslužitelj koristiti kao usmjerivač.

Nasuprot svakom lancu je zadana politika, koja određuje što treba učiniti ako veza ne spada u neko od pravila. Zadani pravilnik može uzeti dvije vrijednosti i određuje pristup samoj organizaciji vatrozida:

  • ACCEPT - prema zadanim postavkama sve su veze dopuštene, pravila blokiraju neželjene veze;
  • DROP - prema zadanom su sve veze odbijene, pravila dopuštaju potrebne veze.

Izrada pravila filtriranja prometa u iptables

Iptables filtriraju prema sučelju

Počnimo stvarati pravila. Sintaksa naredbe za dodavanje novog pravila na kraju specificiranog lanca izgleda ovako:

iptables [-t tablica] -A -j

Za početak, dopustimo promet putem lokalnog sučelja sučelja (127.0.0.1), koji je neophodan za rad nekih aplikacija:

iptables -A INPUT -i lo -j PRIHVAT

Analizirajmo redom:

  1. Specificiramo lanac INPUT, tj. pravilo će se primjenjivati ​​na dolazne veze.
  2. Zatim upotrijebite tipku -ja (u sučelju), odrediti dolazno sučelje na koje stiže ip paket.
  3. Zapovjed upotpunjavamo ključem -j (-jump), određivanje radnje koja će se izvesti za sve ip pakete koji ispunjavaju kriterije iz točke 2. U ovom slučaju ACCEPT treba omogućiti vezu. Osim toga, osnovne akcije sa vezama uključuju:
    • DROP - zabraniti vezu, izvor veze nije obaviješten, ip paket se jednostavno odbacuje;
    • REJECT - onemogući vezu, poruku veze obavještava izvor veze.

Iptables filtriraju prema luci, protokolu ili IP adresi

Sada dodajte pravilo dopuštenja za povezivanje s našim Linux poslužiteljem putem SSH-a na portu 22.

iptables -A INPUT -p tcp --dport 22 -j PRIHVAT

U ovom pravilu, port i protokol su kriteriji. Protokol (tcp, udp, icmp, all) postavlja ključ -p (-protokol), odredišni port (tj. port do kojeg će ip paketi doći na poslužitelj) -dport.

primjedba: ako želite koristiti odredišni ili izvorni port u kriterijima (-dport ili -sport), zatim odredite protokol.

Na primjer, možete odrediti raspon priključaka sa dvotočkom

--izvještaj 6000: 6063

Ako znamo ip adrese klijenata s kojih ćemo se povezati na poslužitelj, sigurnije će omogućiti pristup samo s tih ip adresa. U ovom slučaju, dodajte -s (-src, -source) kriterijima, na primjer, ovim pravilom navodeći ip adresu ili podmrežu izvora veze:

iptables -A INPUT -p tcp -s 94.41.174.122 --dport 22 -j ACCEPT

pristup luci 22 bit će dopušten samo s ip adrese 94.41.174.122.

Djelomično dopustite icmp zahtjeve, 3 vrste:

iptables -A INPUT -p icmp --icmp tip eho-zahtjeva -j PRIJEM
iptables -A INPUT -p icmp --icmp-odredište-nedostupno -j ACCEPT
iptables -A INPUT -p icmp --icmp vrsta premašena -j ACCEPT

Ova pravila omogućavaju ping, prateće uslužne programe i omogućuju mehanizmu da utvrdi MTU između dva domaćina.

Status veze iptables veze

Za ispravan rad, morat ćete stvoriti pravilo koje omogućava već uspostavljene veze:

iptables -A INPUT -m stanje --state UTVRĐENO, VEZANO -J PRIHVATLJIVO

Ovdje se ključ koristi u kriterijima -m, da biste učitali modul stanja, što omogućava utvrđivanje trenutnog stanja ip paketa iz mogućih:

  • NOVO - odnosi se na dolazne ip pakete koji su uključeni u uspostavljanje veze;
  • UTVRĐENO I ODNOSNO - odnosi se na dolazne ip pakete koji sudjeluju u već uspostavljenim vezama ili na veze započete iz već uspostavljenih (spojenih veza);
  • INVALID - odnosi se na dolazne ip pakete, ako se nijedan od gornjih uvjeta ne odnosi na njih.

Postavljanje zadanih pravila iptables

Minimalni skup dopuštenih pravila za vatrozid je spreman, ostaje nam postaviti zadana pravila koja zabranjuju sve dolazne veze koje nisu u skladu s našim pravilima. Da biste to učinili, naredba iptables koristi ključ -P, postavlja zadana pravila za dati lanac, u našem slučaju:

iptables -P INPUT DROP

Oprez: prije korištenja ove naredbe, morate provjeriti omogućuju li vam trenutna pravila za povezivanje s poslužiteljem, inače ćete jednostavno blokirati pristup sebi!
Pogledajmo rezultirajuću tablicu pravila iptables, dodajmo ključ -v, za prikaz više verbolaznog izlaza:
iptables -L -v

Omogući iptables dnevnike

Iptables vam omogućuje upisivanje podataka o prosljeđivanju ip paketa u sistemski dnevnik. To se ostvaruje konkretnom radnjom. LOG iznad veze, nakon čega se ip paket nastavlja kretati duž lanca netaknut. Na primjer, stvorite pravilo koje će zabilježiti sve događaje veze na ulaz 445 (tcp) u sistemskom dnevniku:

iptables -A INPUT -p tcp --dport 445 -j LOG --log-prefiks "IN SMB DROP:"

ovdje -log-prefiks postavlja prefiks za sve poruke zabilježene u našem pravilu. Ovo je pogodno ako imate nekoliko različitih pravila za prijavu ili daljnju obradu softvera. Ako se sada pokušate povezati eksterno s našim serverom na priključku 445, na primjer putem telneta, u datoteci / var / log / poruke Pojaviće se unosi:

Analiziramo zaključak:

  • U SMB DROPU: prefiks koji smo postavili opcijom -log-prefiks
  • IN = eth0 sučelje na kojem se prima ip paket sadrži praznu vrijednost za odlazne veze
  • OUT = sučelje s kojeg je ip paket poslan za dolazne veze sadrži praznu vrijednost
  • MAC = spojeni zajedno sljedećim redoslijedom: odredišna MAC adresa, izvorna MAC adresa, EtherType - 08:00 odgovara IPv4.
  • Src = ip adresa izvora iz kojeg je poslan ip paket
  • DST = odredišna ip adresa na koju je upućen ip paket
  • LEN = IP veličina paketa u bajtovima
  • SPT = izvor porta s kojeg je poslan ip paket
  • DPT = odredišni port na koji se šalje ip paket

Spremanje i vraćanje pravila filtriranja iptables

Zaključno, konfigurirajte automatsko učitavanje pravila nakon ponovnog pokretanja poslužitelja. Da biste to učinili, mora biti instaliran paket. iptables-usluge a usluga je aktivirana. Instalirajte paket putem yum:

yum instalirati iptables-usluge
systemctl omogućuju iptables

Provjerite status usluge iptables:

systemctl status iptables

Opcija pokretanja postavljena je na omogućeno (on) parametar aktivan označava da se usluga pokreće.

Pri učitavanju usluga će pročitati sadržaj datoteke / etc / sysconfig / iptables, i vratite spremljena pravila. Za spremanje naših pravila u njega koristimo naredbu:

iptables-save> / etc / sysconfig / iptables

Pravila iz datoteke možete vratiti pomoću naredbe:

iptables-vratiti < /etc/sysconfig/iptables

Sada možete ponovno pokrenuti poslužitelj i provjeriti jesu li pravila vatrozida vraćena u vrijeme pokretanja.

U sljedećem ćemo članku pokazati kako koristiti iptables za stvaranje NAT pravila za preusmjeravanje prometa za pristupni pristup temeljen na CentOS-u iz / u unutarnju mrežu organizacije.