Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Programe
  • Firewall Centos 7 deschide portul 80. Ce trebuie făcut dacă serviciul necesar nu este disponibil

Firewall Centos 7 deschide portul 80. Ce trebuie făcut dacă serviciul necesar nu este disponibil

Dar comenzile iptables sunt complexe și multor utilizatori le este greu să-și amintească toate opțiunile și cazurile în care ar trebui să fie folosite. Prin urmare, dezvoltatorii de distribuție își creează propriile suplimente prin iptables, care ajută la simplificarea gestionării firewall-ului. CentOS are un add-on pentru gestionarea iptables numit Firewalld.

Firewalld are mai multe diferențe importante față de iptables. Aici, controlul accesului la rețea se realizează la nivel de zone și servicii, nu de lanțuri și reguli. Și, de asemenea, regulile sunt actualizate dinamic fără a întrerupe sesiunile de rulare. Acest articol vă va ghida prin configurarea unui firewall CentOS 7 folosind Firewalld ca exemplu.

După cum am spus mai sus, Firewalld nu funcționează cu lanțuri de reguli, ci cu zone. Fiecărei interfețe de rețea i se poate atribui o zonă specifică. O zonă este un set de reguli, restricții și permisiuni care se aplică acelei interfețe de rețea. Numai o zonă poate fi selectată per interfață. Dezvoltatorii au creat mai multe zone prestabilite:

  • cădere brusca- blocați toate pachetele de intrare, permiteți doar ieșirile
  • bloc- spre deosebire de varianta anterioară, va fi trimis un mesaj expeditorului pachetului pentru a-i bloca pachetul;
  • public- sunt acceptate doar conexiunile de intrare pentru ssh și dhclient;
  • extern- Suportă NAT pentru a ascunde rețeaua internă;
  • intern- sunt permise serviciile ssh, samba, mdns si dhcp;
  • dmz- folosit pentru servere izolate care nu au acces la retea. Sunt permise doar conexiunile SSH;
  • muncă- sunt permise serviciile ssh si dhcp;
  • Acasă- similar cu intern;
  • de încredere- totul este permis.

Astfel, pentru a activa sau dezactiva un serviciu, trebuie doar să îl adăugați sau să îl eliminați din zona curentă sau să schimbați zona de interfață în cea în care este permisă. Este analog cu politica implicită de pachete din iptables. Zona de încredere are politica ACCEPT și permite toate conexiunile, zona de blocare are o politică DENY care refuză toate conexiunile și toate celelalte zone pot fi considerate moștenitoare ale zonei de blocare, plus că au deja reguli predefinite pentru a permite conexiunile la rețea pentru unele servicii .

De asemenea, Firewalld are două tipuri de configurații:

  • timpul de rulare- valabil doar până la repornire, toate modificările care nu sunt specificate în mod explicit altfel sunt aplicate acestei configurații;
  • permanent- setări permanente care vor funcționa după o repornire.

Acum că știți tot ce trebuie să faceți, să trecem la utilitarul firewalld-cmd.

Sintaxa și opțiunile firewall-cmd

Puteți gestiona setările Firewalld atât folosind utilitarul consolei firewall-cmd, cât și în interfața grafică. CentOS este cel mai frecvent utilizat pe servere, așa că va trebui să lucrați într-un terminal. Să aruncăm o privire la sintaxa utilitarului:

opțiuni firewall-cmd

Următoarea sintaxă este utilizată pentru a gestiona zonele:

firewall-cmd --configuration --zone = opțiuni de zonă

Ca configurație, trebuie să specificați opțiunea --permanent pentru a salva modificările după o repornire sau nu specificați nimic, atunci modificările vor fi valabile doar până la repornire. Utilizați numele zonei dorite ca zonă. Să aruncăm o privire la opțiunile de utilitate:

  • --stat- afișați starea firewall-ului;
  • --reincarca- reîncărcați regulile din configurația persistentă;
  • --complet-reîncărcare- reîncărcare dură a regulilor, întreruperea tuturor conexiunilor;
  • --runtime-to-permanent- transfera setarile de configurare runtime intr-o configuratie permanenta;
  • --permanent- utilizați configurația persistentă;
  • --get-default-zone- afișarea zonei implicite;
  • --set-default-zone- setați zona implicită;
  • --get-active-zones- afisare zone active;
  • --get-zone- afiseaza toate zonele disponibile;
  • --get-services- afisare servicii predefinite;
  • --list-toate-zonele- afișați configurația tuturor zonelor;
  • --zonă-nouă- crearea unei noi zone;
  • --delete-zone- ștergeți o zonă;
  • --list-toate- eliminați tot ce a fost adăugat din zona selectată;
  • --list-servicii- afișați toate serviciile adăugate zonei;
  • --add-service- adăugați un serviciu în zonă;
  • --remove-service- scoateți serviciul din zonă;
  • --list-porturi- porturi de afișare adăugate zonei;
  • --add-port- adăugați un port în zonă;
  • --remove-port- scoateți portul din zonă;
  • --query-port- arată dacă portul a fost adăugat în zonă;
  • --list-protocoale- afișarea protocoalelor adăugate zonei;
  • --add-protocol- adăugați un protocol în zonă;
  • --eliminare-protocol- scoateți protocolul din zonă;
  • --list-source-ports- afișați porturile sursă adăugate zonei;
  • --add-source-port- adăugați portul sursă în zonă;
  • --remove-source-port- scoateți portul sursă din zonă;
  • --list-icmp-blocks- afișați o listă de încuietori icmp;
  • --add-icmp-block- adăugați blocare icmp;
  • --add-icmp-block- elimina blocarea icmp;
  • --add-forward-port- adăugați port pentru redirecționarea către NAT;
  • --remove-forward-port- eliminați portul pentru redirecționarea NAT;
  • --add-masquerade- activați NAT;
  • --elimină-mascarada- eliminați NAT.

Acestea sunt departe de toate opțiunile utilitarului, dar vor fi suficiente pentru acest articol.

Configurarea paravanului de protecție pe CentOS 7

1. Stare firewall

Primul pas este să vă uitați la starea firewall-ului. Pentru a face acest lucru, rulați:

sudo systemctl status firewalld

Dacă serviciul Firewalld este dezactivat, atunci trebuie să îl activați:

sudo systemctl start firewalld
sudo systemctl enable firewalld

Acum trebuie să vedeți dacă Firewalld rulează folosind comanda firewall-cmd:

sudo firewall-cmd --state

Dacă programul rulează și totul este în regulă, veți primi mesajul „în rulare”.

2. Managementul zonei

După cum vă puteți imagina, zonele sunt instrumentul principal pentru gestionarea conexiunilor de rețea. Pentru a vizualiza zona implicită, rulați:

sudo firewall-cmd --get-default-zone

În cazul meu, aceasta este zona publică. Puteți schimba zona curentă cu opțiunea --set-default-zone:

sudo firewall-cmd --set-default-zone = public

Pentru a vedea ce zone sunt utilizate pentru toate interfețele de rețea, rulați:

sudo firewall-cmd --get-active-zones

Lista va afișa zonele și interfețele pentru care sunt alocate. Cu această comandă, puteți vizualiza configurația pentru o anumită zonă. De exemplu, pentru zona publică:

3. Configurarea serviciilor

Puteți vizualiza toate serviciile predefinite cu comanda:

sudo firewall-cmd --get-services

Comanda va lista toate serviciile disponibile, puteți adăuga oricare dintre ele în zonă pentru ao activa. De exemplu, să permitem conexiunea la http:

sudo firewall-cmd --zone = public --add-service = http --permanent

Și pentru a elimina acest serviciu, rulați:

sudo firewall-cmd --zone = public --remove-service = http --permanent

În ambele cazuri, am folosit opțiunea --permanent, astfel încât configurația să persistă la o repornire. După modificări, trebuie să actualizați regulile:

sudo firewall-cmd --reload

Apoi, dacă te uiți la configurația zonei, serviciul adăugat va apărea acolo:

sudo firewall-cmd --zone = public --list-all

4. Cum se deschide un port în Firewalld

Dacă nu există niciun serviciu pentru programul de care aveți nevoie, puteți deschide portul acestuia manual. Pentru a face acest lucru, pur și simplu adăugați portul dorit în zonă. De exemplu portul 8083:

sudo firewall-cmd --zone = public --add-port = 8083 / tcp --permanent

Pentru a elimina acest port din zonă, rulați:

sudo firewall-cmd --zone = public --remove-port = 8083 / tcp --permanent

Similar serviciilor, pentru a deschide un port în firewall-ul centos 7, trebuie să reporniți firewall-ul.

sudo firewall-cmd --reload

5. Redirecționare port firewalld

Redirecționarea portului în Firewalld este mult mai ușor de configurat decât în ​​iptables. Dacă aveți nevoie, de exemplu, să redirecționați traficul de la portul 2223 la portul 22, adăugați doar o redirecționare în zonă:

sudo firewall-cmd --zone = public --add-forward-port = port = 2223: proto = tcp: toport = 22

Aici, redirecționarea se face numai pe mașina curentă. Dacă doriți să configurați o rețea NAT și să redirecționați un port către o altă mașină, atunci trebuie să activați mai întâi suportul mascarade:

sudo firewall-cmd --zone = public --add-masquerade

Apoi puteți adăuga portul:

sudo firewall-cmd --zone = public --add-forward-port = port = 2223: proto = tcp: toport = 22: toaddr = 192.168.56.4

6. Reguli avansate

Dacă funcționalitatea zonelor nu este suficientă pentru dvs., puteți utiliza reguli avansate. Sintaxa generală pentru regulile extinse este:

rule family = „familie” valoare sursă destinație valoare jurnal acțiune de audit

Iată semnificația parametrilor principali:

  • La fel de familii de protocol puteți specifica ipv4 sau ipv6 sau nu faceți nimic, atunci regula se va aplica ambelor protocoale;
  • sursăși destinaţie este expeditorul și destinatarul pachetului. Deoarece acești parametri pot fi utilizați adresa IP, numele serviciului, portul, protocolul și așa mai departe;
  • Buturuga- vă permite să înregistrați trecerea pachetelor, de exemplu, în syslog. În această setare, puteți specifica prefixul liniei de jurnal și nivelul de verbozitate a jurnalului;
  • audit este o modalitate alternativă de înregistrare când mesajele vor fi trimise către serviciul auditd.
  • Acțiune este acțiunea care trebuie întreprinsă asupra pachetului potrivit. Disponibil: accept, drop, resping, mark.

Să aruncăm o privire la câteva exemple. Trebuie să blocăm accesul la server pentru utilizatorul cu IP 135.152.53.5:

sudo firewall-cmd --zone = public --add-rich-rule "rule family =" ipv4 "source address = 135.152.53.5 reject"

Sau trebuie să refuzăm doar accesul la portul 22 pentru același utilizator:

sudo firewall-cmd --zone = public --add-rich-rule "rule family =" ipv4 "adresă sursă = 135.152.53.5 port port = 22 protocol = tcp reject"

Puteți vizualiza toate regulile avansate cu comanda:

sudo firewall-cmd --list-rich-rules

concluzii

În acest articol, am discutat despre modul în care se realizează configurarea firewall-ului în CentOS 7 și ce sarcini pot fi efectuate folosindu-l. Programul este mult mai ușor de utilizat decât iptables, dar în opinia mea add-on-ul pentru firewall Ubuntu este și mai ușor de utilizat.

Firewall-ul instalat în sistemul de operare este utilizat pentru a preveni fluxul de trafic neautorizat între rețelele de calculatoare. Regulile speciale pentru firewall sunt create manual sau automat, care sunt responsabile pentru controlul accesului. Sistemul de operare dezvoltat pe nucleul Linux, CentOS 7 are un firewall încorporat și este controlat de un firewall. FirewallD este activat implicit și am dori să vorbim despre configurația sa astăzi.

După cum am menționat mai sus, FirewallD este firewall-ul implicit în CentOS 7. De aceea se va discuta despre configurarea unui firewall folosind acest instrument ca exemplu. Puteți seta reguli de filtrare folosind aceleași iptables, dar acest lucru se face într-un mod ușor diferit. Vă recomandăm să vă familiarizați cu configurația utilitarului menționat făcând clic pe următorul link și vom începe să analizăm FirewallD.

Concepte de bază pentru firewall

Există mai multe zone - seturi de reguli pentru controlul traficului pe baza încrederii în rețele. Tuturor acestora li se atribuie propriile politici, a căror combinație formează configurația firewall. Fiecărei zone îi sunt alocate una sau mai multe interfețe de rețea, ceea ce vă permite, de asemenea, să ajustați filtrarea. Regulile aplicate depind direct de interfața utilizată. De exemplu, atunci când este conectat la Wi-Fi public, firewall-ul va crește nivelul de control, iar în rețeaua de acasă, va deschide acces suplimentar pentru participanții din lanț. Firewallul considerat conține următoarele zone:

  • de încredere - nivelul maxim de încredere pentru toate dispozitivele din rețea;
  • acasă - grup de rețea locală. Există încredere în mediu, dar conexiunile de intrare sunt disponibile numai pentru anumite mașini;
  • lucru - zona de lucru. Există încredere în majoritatea dispozitivelor și sunt activate servicii suplimentare;
  • dmz - zonă pentru calculatoare izolate. Aceste dispozitive sunt deconectate de la restul rețelei și permit doar un anumit trafic de intrare;
  • intern - zona rețelelor interne. Încrederea se aplică tuturor mașinilor, se deschid servicii suplimentare;
  • extern - invers față de zona anterioară. Pe rețelele externe, mascarea NAT este activă, acoperind rețeaua internă, dar fără a bloca capacitatea de a obține acces;
  • public - o zonă de rețele publice cu neîncredere în toate dispozitivele și recepția individuală a traficului de intrare;
  • blocare - toate cererile primite sunt eliminate și se trimite o eroare icmp-gazdă-interzis sau icmp6-adm-interzis;
  • drop - nivelul minim de încredere. Conexiunile de intrare sunt abandonate fără nicio notificare.

Politicienii înșiși sunt temporari și permanenți. Când parametrii apar sau sunt editați, acțiunea firewall-ului se schimbă imediat, fără a fi nevoie de o repornire. Dacă s-au aplicat reguli temporare, după repornirea FirewallD acestea vor fi resetate. Așa se numește o regulă permanentă - va fi salvată permanent atunci când se aplică argumentul -permanent.

Activarea FirewallD

Mai întâi trebuie să porniți FirewallD sau să vă asigurați că este activ. Doar un demon funcțional (un program care rulează în fundal) va aplica regulile firewall. Activarea se face literalmente în câteva clicuri:

  1. Rulați clasic "Terminal" prin orice metodă convenabilă, de exemplu, prin meniu „Aplicații”.
  2. Introduceți comanda sudo systemctl start firewalld.service și apăsați tasta introduce.
  3. Utilitarul este gestionat în numele superutilizatorului, așa că va trebui să vă confirmați identitatea prin specificarea unei parole.
  4. Pentru a verifica dacă serviciul funcționează, specificați firewall-cmd --state.
  5. Reautentificați-vă în fereastra grafică care se deschide.
  6. Va fi afișată o nouă linie. Sens "Alergare" indică faptul că firewall-ul funcționează.

Dacă într-o zi trebuie să dezactivați temporar sau definitiv firewall-ul, vă sfătuim să utilizați instrucțiunile prezentate în celălalt articol al nostru de la următorul link.

Vizualizarea regulilor implicite și a zonelor disponibile

Chiar și un firewall care funcționează în mod normal are propriile reguli specifice și zone disponibile. Înainte de a începe editarea politicilor, vă recomandăm să vă familiarizați cu configurația curentă. Acest lucru se face folosind comenzi simple:

  1. Comanda firewall-cmd --get-default-zone vă va ajuta să determinați zona implicită.
  2. După activarea acestuia, veți vedea o nouă linie în care va fi afișat parametrul necesar. De exemplu, în captura de ecran de mai jos, zona activă este "Public".
  3. Cu toate acestea, mai multe zone pot fi active simultan, în plus, sunt legate de o interfață separată. Aflați aceste informații prin firewall-cmd --get-active-zones.
  4. Comanda firewall-cmd --list-all va afișa regulile implicite pentru zonă. Aruncă o privire la captura de ecran de mai jos. Vedeți că zona activă "Public" regulă atribuită "Mod implicit"- operare implicită, interfață "Enp0s3"și a adăugat două servicii.
  5. Dacă trebuie să cunoașteți toate zonele de firewall disponibile, introduceți firewall-cmd --get-zones.
  6. Parametrii unei anumite zone sunt definiți prin firewall-cmd --zone = nume --list-all, unde Nume- numele zonei.

După definirea parametrilor necesari, puteți trece la modificarea și adăugarea acestora. Să aruncăm o privire mai atentă la câteva dintre cele mai populare configurații.

Configurarea zonelor de interfață

După cum știți din informațiile de mai sus, fiecare interfață are propria sa zonă implicită. Acesta va rămâne în el până când setările sunt modificate de către utilizator sau în mod programatic. Transferul manual al interfeței în zonă pentru o sesiune este posibil și se realizează prin activarea comenzii sudo firewall-cmd --zone = home --change-interface = eth0. Rezultat "Succes" indică faptul că transferul a avut succes. Rețineți că astfel de setări sunt resetate imediat după repornirea firewall-ului.

Cu o astfel de modificare a parametrilor, trebuie avut în vedere faptul că activitatea serviciilor poate fi resetată. Unele dintre ele nu acceptă funcționarea în anumite zone, de exemplu, SSH este disponibil în "Acasă", dar în mod personalizat sau special, serviciul va refuza să funcționeze. Puteți verifica dacă interfața a fost legată cu succes la noua ramură introducând firewall-cmd --get-active-zones.

Dacă doriți să resetați setările pe care le-ați făcut mai devreme, pur și simplu reporniți firewall-ul: sudo systemctl restart firewalld.service.

Uneori nu este întotdeauna convenabil să schimbați zona interfeței pentru o singură sesiune. În acest caz, va trebui să editați fișierul de configurare, astfel încât toate setările să fie introduse permanent. Pentru aceasta vă recomandăm să folosiți un editor de text nano care este instalat din depozitul oficial sudo yum install nano. Apoi, rămâne să efectuați următoarele acțiuni:

  1. Deschideți fișierul de configurare printr-un editor introducând sudo nano / etc / sysconfig / network-scripts / ifcfg-eth0, unde eth0- numele interfeței necesare.
  2. Confirmați autenticitatea contului pentru pașii suplimentari.
  3. Găsiți parametrul "ZONA"și schimbați-i valoarea în ceea ce doriți, de exemplu, public sau acasă.
  4. Țineți cheile Ctrl + O pentru a vă salva modificările.
  5. Nu schimbați numele fișierului, doar faceți clic pe introduce.
  6. Ieșiți din editorul de text cu Ctrl + X.

Acum zona de interfață va fi așa cum ați specificat-o, până la următoarea editare a fișierului de configurare. Pentru ca setările actualizate să aibă efect, rulați sudo systemctl restart network.service și sudo systemctl restart firewalld.service.

Setarea zonei implicite

Mai sus, am demonstrat deja o comandă care vă permite să aflați zona implicită. De asemenea, poate fi schimbat prin setarea unui parametru la alegere. Pentru a face acest lucru, în consolă, trebuie doar să scrieți sudo firewall-cmd --set-default-zone = nume, unde Nume- denumirea zonei solicitate.

Succesul comenzii va fi indicat de inscripție "Succes" pe o linie separată. După aceea, toate interfețele curente vor fi legate la zona specificată, dacă nu este specificată alta în fișierele de configurare.

Crearea de reguli pentru programe și utilitare

Chiar la începutul articolului, am vorbit despre acțiunea fiecărei zone. Definirea serviciilor, utilităților și programelor din astfel de ramuri vă va permite să aplicați pentru fiecare dintre ele parametri individuali pentru solicitările fiecărui utilizator. Pentru a începe, vă recomandăm să vă familiarizați cu lista completă a serviciilor disponibile în prezent: firewall-cmd --get-services.

Rezultatul va fi afișat direct în consolă. Fiecare server este separat printr-un spațiu, iar în listă puteți găsi cu ușurință instrumentul care vă interesează. Dacă serviciul necesar nu este disponibil, ar trebui să fie instalat suplimentar. Citiți despre regulile de instalare în documentația oficială a software-ului.

Comanda de mai sus arată doar numele serviciilor. Informații detaliate despre fiecare dintre ele sunt obținute printr-un fișier individual aflat sub calea / usr / lib / firewalld / services. Astfel de documente sunt în format XML, calea, de exemplu, către SSH arată astfel: /usr/lib/firewalld/services/ssh.xml, iar documentul are următorul conținut:

SSH
Secure Shell (SSH) este un protocol pentru conectarea și executarea comenzilor pe mașini la distanță. Oferă comunicații criptate securizate. Dacă intenționați să vă accesați mașina de la distanță prin SSH printr-o interfață cu firewall, activați această opțiune. Aveți nevoie de pachetul openssh-server instalat pentru ca această opțiune să fie utilă.

Asistența de service este activată manual într-o anumită zonă. V "Terminal" comanda sudo firewall-cmd --zone = public --add-service = http, unde --zone = public- zona de activare, și --add-service = http- numele serviciului. Vă rugăm să rețineți că o astfel de modificare va fi valabilă doar într-o singură sesiune.

Adăugarea permanentă se face prin sudo firewall-cmd --zone = public --permanent --add-service = http, iar rezultatul "Succes" indică finalizarea cu succes a operațiunii.

Puteți vizualiza lista completă a regulilor permanente pentru o anumită zonă afișând lista pe o linie separată în consolă: sudo firewall-cmd --zone = public --permanent --list-services.

Rezolvarea problemei cu lipsa accesului la serviciu

În mod implicit, regulile firewall indică cele mai populare și mai sigure servicii ca fiind permise, dar blochează unele aplicații standard sau terțe. În acest caz, utilizatorul va trebui să modifice manual setările pentru a rezolva problema de acces. Acest lucru se poate face în două moduri diferite.

Port forwarding

După cum știți, toate serviciile de rețea folosesc un anumit port. Este ușor de detectat de un firewall și pot fi efectuate blocări asupra acestuia. Pentru a evita astfel de acțiuni din partea firewall-ului, trebuie să deschideți portul necesar cu comanda sudo firewall-cmd --zone = public --add-port = 0000 / tcp, unde --zone = public- zona portuara, --add-port = 0000 / tcp- numărul portului și protocolul. Firewall-cmd --list-ports va afișa o listă de porturi deschise.

Dacă trebuie să deschideți porturi care se află în interval, utilizați linia sudo firewall-cmd --zone = public --add-port = 0000-9999 / udp, unde --add-port = 0000-9999 / udp- o serie de porturi și protocolul acestora.

Comenzile de mai sus vă vor permite doar să testați aplicarea unor astfel de parametri. Dacă a avut succes, ar trebui să adăugați aceleași porturi la setările permanente, iar acest lucru se face introducând sudo firewall-cmd --zone = public --permanent --add-port = 0000 / tcp sau sudo firewall-cmd -- zone = public --permanent --add-port = 0000-9999 / udp. Lista de porturi permanente deschise este vizualizată astfel: sudo firewall-cmd --zone = public --permanent --list-ports.

Definirea serviciului

După cum puteți vedea, adăugarea de porturi este simplă, dar procedura devine mai complicată atunci când se utilizează un număr mare de aplicații. Devine dificil să urmăriți toate porturile în uz, motiv pentru care ar fi mai corect să definiți un serviciu:


Trebuie doar să alegeți cea mai potrivită metodă de rezolvare a problemei de acces la serviciu și să urmați instrucțiunile furnizate. După cum puteți vedea, toate acțiunile sunt destul de ușoare și nu ar trebui să apară dificultăți.

Crearea de zone personalizate

Știți deja că inițial FirewallD a creat un număr mare de zone diferite cu anumite reguli. Cu toate acestea, există situații în care administratorul de sistem trebuie să creeze o zonă personalizată, cum ar fi „Publicweb” pentru un server web instalat sau „PrivateDNS”- pentru serverul DNS. Folosind aceste două exemple, vom analiza adăugarea de ramuri:


În acest articol, ați învățat cum să creați zone personalizate și să adăugați servicii la acestea. Am vorbit deja despre setarea lor implicită și alocarea interfețelor, trebuie doar să specificați numele corecte. Nu uitați să reporniți firewall-ul după ce faceți modificări permanente.

După cum puteți vedea, firewall-ul FirewallD este un instrument destul de voluminos care vă permite să realizați cea mai flexibilă configurație de firewall. Singurul lucru rămas de făcut este să vă asigurați că utilitarul este lansat împreună cu sistemul și că regulile specificate încep să funcționeze imediat. Faceți acest lucru cu comanda sudo systemctl enable firewalld.

FirewallD este un instrument de gestionare a paravanului de protecție disponibil implicit pe serverele CentOS 7. Practic, este un înveliș în jurul IPTables și vine cu un instrument grafic de configurare a firewall-ului și un instrument de linie de comandă firewall-cmd. Cu serviciul IPtables, fiecare modificare necesită eliminarea vechilor reguli și crearea de noi reguli în ` / etc / sysconfig / iptables`în timp ce firewalld aplică doar diferențele.

FirewallD zone

FirewallD folosește servicii și zone în loc de reguli și lanțuri în iptables. Următoarele zone sunt disponibile în mod implicit:

  • cădere brusca- Eliminați toate pachetele de rețea de intrare fără niciun răspuns, sunt disponibile doar conexiunile de rețea de ieșire.
  • bloc- Respingeți toate pachetele de rețea de intrare cu mesajul icmp-host-prohibited, doar conexiunile de rețea de ieșire sunt disponibile.
  • public- sunt acceptate doar conexiunile de intrare selectate, pentru utilizare în locuri publice
  • extern- Pentru rețelele externe cu mascarading, sunt acceptate doar conexiunile de intrare selectate.
  • dmz- zona demilitarizata DMZ, accesibila publicului cu acces limitat la reteaua interna, sunt acceptate doar conexiunile de intrare selectate.
  • muncă
  • Acasă- Pentru computerele din zona de domiciliu, sunt acceptate doar conexiunile de intrare selectate.
  • intern- Pentru computerele din rețeaua dumneavoastră internă, sunt acceptate doar conexiunile de intrare selectate.
  • de încredere- Toate conexiunile la rețea sunt acceptate.

Pentru a obține o listă cu toate zonele disponibile:

# firewall-cmd --get-zones work drop intern extern de încredere acasă bloc public dmz

Pentru a vizualiza lista zonelor implicite:

# firewall-cmd --get-default-zone public

Pentru a schimba zona implicită:

Servicii FirewallD

Serviciile FirewallD sunt fișiere de configurare XML care conțin informații despre înregistrarea serviciului pentru firewalld. Pentru a obține o listă cu toate serviciile disponibile:

# firewall-cmd --get-services amanda-client amanda-k5-client bacula bacula-client ceph ceph-mon dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mosh mountd ms-wbt mysql nfs ntp openvpn pmcd pmcd pmwebapi pmwebapi pmbapiscv3 popproxet3 primbapiscvpxy primpbsvpxy privcv3 postbapiscv3 client sănătos smtp smtps snmp snmptrap squid ssh sinergie syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmisie-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-server xmpp-local

Fișierele de configurare XML sunt stocate în directoare / usr / lib / firewalld / servicii /și / etc / firewalld / servicii /.

Configurarea unui firewall cu FirewallD

De exemplu, iată cum puteți configura un firewall cu FirewallD dacă rulați un server web, SSH pe portul 7022 și un server de e-mail.

Mai întâi, vom configura zona implicită pentru DMZ.

# firewall-cmd --set-default-zone = dmz # firewall-cmd --get-default-zone dmz

Pentru a adăuga reguli de serviciu persistente pentru HTTP și HTTPS în DMZ, rulați următoarea comandă:

# firewall-cmd --zone = dmz --add-service = http --permanent # firewall-cmd --zone = dmz --add-service = https --permanent

Deschideți portul 25 (SMTP) și portul 465 (SMTPS):

Firewall-cmd --zone = dmz --add-service = smtp --permanent firewall-cmd --zone = dmz --add-service = smtps --permanent

Porturi deschise, IMAP, IMAPS, POP3 și POP3S:

Firewall-cmd --zone = dmz --add-service = imap --permanent firewall-cmd --zone = dmz --add-service = imaps --permanent firewall-cmd --zone = dmz --add-service = pop3 --permanent firewall-cmd --zone = dmz --add-service = pop3s --permanent

Deoarece portul SSH a fost schimbat la 7022, vom elimina serviciul SSH (portul 22) și vom deschide portul 7022

Firewall-cmd --remove-service = ssh --permanent firewall-cmd --add-port = 7022 / tcp --permanent

Pentru a implementa modificările, trebuie să reîncărcăm firewall-ul:

Firewall-cmd --reîncărcare

În cele din urmă, puteți enumera regulile.

Primul lucru pentru a proteja serverul de amenințările externe este un firewall care filtrează traficul de intrare și de ieșire. Vreau să mă ocup de configurarea iptables - un caz special de firewall pe CentOS în acest articol și, de asemenea, să vorbesc despre instalarea și dezactivarea acestuia. Ghidul meu nu va fi exhaustiv, voi lua în considerare doar acele aspecte pe care le consider cele mai importante și le folosesc eu însumi în munca mea.

Acest articol face parte dintr-o singură serie de articole despre server.

Introducere

Iptables este în prezent standardul de facto în distribuțiile Linux moderne. Nici nu-mi amintesc de la început ce altceva este folosit ca firewall. Deci, orice administrator Linux trebuie să se ocupe de configurarea acestui firewall în munca sa.

Există diferite legături pentru acest firewall, care sunt folosite pentru o configurație mai „convenabilă”. Ubuntu are ufw, în centos - firewalld, nu sunt familiarizat cu alții. Personal, nu văd nicio comoditate în utilizarea acestor instrumente. Sunt obișnuit să configurez un firewall Linux în mod demodat, așa cum am învățat chiar de la început. Mi se pare că acesta este cel mai simplu și mai convenabil mod pe care îl voi împărtăși cu voi. Esența sa se rezumă la crearea unui script cu reguli de firewall. Acest script poate fi editat cu ușurință pentru a se potrivi nevoilor dvs. și transferat de la server la server.

Se dezactivează firewalld

Am atins deja problema dezactivării firewalld în subiectul despre. În primul rând, dezactivați firewalld, care este prezent implicit în centos 7 imediat după instalare:

# systemctl opri firewalld

Acum să-l eliminăm de la pornire, astfel încât să nu se mai pornească după repornire:

# systemctl dezactivează firewalld

După aceea, setările firewall-ului de pe server devin complet deschise. Puteți vizualiza regulile iptables cu comanda:

Instalarea iptables

De fapt, firewall-ul de pe serverul nostru este deja activ și rulează, pur și simplu nu există reguli, totul este deschis. Va trebui să instalăm utilități suplimentare de management, fără de care este imposibil să configurați iptables. De exemplu, firewall-ul nu poate fi repornit:

# systemctl restart iptables.service A eșuat la lansarea apelului de metodă: Unitatea iptables.service a eșuat la încărcare: Nu există un astfel de fișier sau director.

Sau adăugarea la autorun nu va funcționa:

# systemctl enable iptables.service Nu s-a putut lansa apelul de metodă: Nu există un astfel de fișier sau director

Pentru a evita astfel de erori, instalați pachetul necesar cu utilitare:

# yum -y instalează iptables-services

Acum puteți adăuga iptables la pornire și rulare:

# systemctl enable iptables.service # systemctl start iptables.service

Configurare firewall

Folosesc un script pentru a gestiona regulile firewall. Să-l creăm:

# mcedit /etc/iptables.sh

În continuare, îl vom completa cu regulile necesare. Voi analiza toate părțile semnificative ale scenariului și O voi cita integral sub forma unui fisier text la finalul articolului... Regulile sunt făcute sub formă de imagini pentru a interzice copierea și lipirea. Acest lucru poate duce la erori în funcționarea regulilor, pe care le-am întâlnit eu în timpul pregătirii articolului.

Vom lua în considerare o situație în care un server este o poartă de acces la Internet pentru o rețea locală.

În primul rând, vom seta toate variabilele pe care le vom folosi în script. Nu este necesar să faceți acest lucru, dar este recomandat pentru că este convenabil să transferați setările de la server la server. Va fi suficient doar să reatribuiți variabilele.

Înainte de a aplica noile reguli, ștergem toate lanțurile:

Blocăm tot traficul care nu se potrivește cu niciuna dintre reguli:

Permitem tot traficul localhost și localhost:

Permite ping:

Dacă nu aveți nevoie de acest lucru, atunci nu adăugați reguli de permis pentru icmp.

Deschidem accesul la Internet pentru serverul însuși:

Dacă doriți să deschideți toate conexiunile la server de intrare, adăugați o regulă în continuare:

Acum să adăugăm protecție împotriva celor mai comune atacuri de rețea. Mai întâi, să aruncăm toate pachetele care nu au nicio stare:

Blocarea pachetelor nule:

Ne închidem de atacurile syn-flood:

Dacă nu puneți restricții privind accesul din rețeaua locală, atunci permitem tuturor să acceseze Internetul:

Apoi, refuzăm accesul de la Internet la rețeaua locală:

Pentru ca rețeaua noastră locală să utilizeze Internetul, activați nat:

Pentru a nu pierde accesul la server, după aplicarea regulilor, permitem conexiuni ssh:

Și la sfârșit, notăm regulile, astfel încât acestea să se aplice după o repornire:

Am compilat o configurare simplă care blochează toate conexiunile de intrare cu excepția ssh și permite accesul din rețeaua locală la Internet. Pe parcurs, ne-am apărat împotriva unor atacuri de rețea.

Salvăm scriptul, îl facem executabil și rulăm:

# chmod 0740 /etc/iptables.sh # /etc/iptables.sh

Să revizuim regulile și să verificăm dacă toate regulile sunt în vigoare:

# iptables -L -v -n

Vă rugăm să rețineți că trebuie să aplicați regulile doar dacă aveți acces la consola serverului. Dacă faceți o greșeală în setări, este posibil să pierdeți accesul. Asigurați-vă că, în caz de urgență, puteți dezactiva firewall-ul și puteți ajusta setările.

Deschiderea portului

Acum să ne extindem puțin configurația și să deschidem porturile pentru unele servicii din iptables. Să presupunem că avem un server web și trebuie să deschidem accesul la acesta de pe Internet. Adăugați reguli pentru traficul web:

A fost adăugată permisiunea pentru conexiunile de intrare pe porturile 80 și 443, pe care serverul web le folosește în activitatea sa.

Dacă aveți instalat un server de e-mail, atunci trebuie să permiteți conexiunile de intrare la acesta pe toate porturile utilizate:

Pentru ca serverul DNS să funcționeze corect, trebuie să deschideți portul UDP 53

Port forwarding

Să luăm în considerare o situație în care este necesar să redirecționăm porturile de la interfața externă către un computer din rețeaua locală. Să presupunem că trebuie să obțineți acces rdp la computerul 10.1.3.50 de pe internet. Redirecționăm portul TCP 3389:

Dacă nu doriți să străluciți cu un port cunoscut în exterior, atunci puteți redirecționa de la un port non-standard către portul rdp al computerului țintă:

Dacă redirecționați portul din exteriorul către interiorul rețelei locale, atunci asigurați-vă că comentați regula care blochează accesul de la rețeaua externă la cea internă. În exemplul meu, această regulă este: $ IPT -A FORWARD -i $ WAN -o $ LAN1 -j REJECT

Sau, înainte de această regulă, creați o regulă de autorizare pentru accesul extern la serviciul intern, de exemplu, astfel:

$ IPT -A FORWARD -i $ WAN -d 10.1.3.50 -p tcp -m tcp --dport 3389 -j ACCEPT

Activarea jurnalelor

În timpul configurării, este util să activați jurnalele pentru a monitoriza pachetele blocate și a afla de ce nu există acces la serviciile necesare pe care se pare că le-am deschis deja. Trimit toate pachetele blocate în lanțuri separate (block_in, block_out, block_fw) corespunzătoare direcției de trafic și marchează fiecare direcție în jurnal. Este mai convenabil să faci debriefing în acest fel. Adăugați următoarele reguli la sfârșitul scriptului, înainte de a salva setările:

Puteți urmări toate pachetele blocate în fișierul / var / log / mesaje.

După ce ați terminat cu configurarea, comentați aceste rânduri dezactivând înregistrarea. Cu siguranță ar trebui să faceți acest lucru, deoarece buștenii cresc foarte repede. Personal, nu văd niciun sens practic în stocarea unor astfel de informații.

Cum se dezactivează iptables

Dacă decideți brusc că nu mai aveți nevoie de un firewall, îl puteți dezactiva după cum urmează:

# systemctl opri iptables.service

Această comandă oprește firewall-ul. Și următorul se elimină de la pornire:

# systemctl dezactivează iptables.service

Dezactivând firewall-ul, am permis toate conexiunile.

Concluzie

După cum am promis, postez un script gata făcut cu setul principal de reguli pe care le-am luat în considerare.

Încă o dată, vreau să vă atrag atenția asupra faptului că atunci când configurați iptables, trebuie să fiți extrem de atenți. Nu începeți această afacere dacă nu aveți acces la consola serverului. Chiar și când scriam acest articol, am pierdut accesul la server din cauza unei erori ridicole în reguli. Această eroare a apărut din cauza copierii și pierderii unei liniuțe duble - a fost înlocuită cu o singură liniuță.

curs online „Administrator Linux” în OTUS. Cursul nu este pentru începători, pentru admitere aveți nevoie de cunoștințe de bază despre crearea de rețele și instalarea Linux pe o mașină virtuală. Training-ul durează 5 luni, după care absolvenții de succes ai cursului vor putea promova interviuri cu partenerii. Ce vă va oferi acest curs:

  • Cunoașterea arhitecturii Linux.
  • Stăpânirea metodelor și instrumentelor moderne de analiză și prelucrare a datelor.
  • Abilitatea de a selecta o configurație pentru sarcinile necesare, de a gestiona procesele și de a asigura securitatea sistemului.
  • Deținerea instrumentelor de lucru de bază ale administratorului de sistem.
  • Înțelegerea specificului implementării, configurării și întreținerii rețelelor bazate pe Linux.
  • Capacitatea de a rezolva rapid problemele emergente și de a asigura funcționarea stabilă și neîntreruptă a sistemului.
Testează-te la testul de admitere și vezi detaliile programului pe.

Zonele

Daemonul firewalld gestionează grupuri de reguli folosind așa-numitele zone.

Zonele sunt în esență seturi de reguli care guvernează traficul în funcție de nivelul de încredere într-o anumită rețea. Zonele sunt alocate interfețelor de rețea și controlează comportamentul firewall-ului.

Calculatoarele care se conectează adesea la rețele diferite (de exemplu, laptopuri) pot folosi zone pentru a-și schimba seturile de reguli în funcție de mediul lor. De exemplu, atunci când este conectat la o rețea WiFi publică, firewall-ul poate aplica reguli mai stricte și poate relaxa restricțiile pe o rețea de acasă.

Următoarele zone există în firewalld:

  • scădere: cel mai scăzut nivel de încredere în rețea. Tot traficul de intrare este eliminat fără un răspuns, sunt acceptate doar conexiunile de ieșire.
  • bloc: Această zonă este similară cu cea anterioară, dar cererile de intrare sunt eliminate cu mesajul icmp-host-prohibited sau icmp6-adm-prohibited.
  • public: Această zonă reprezintă o rețea publică în care nu se poate avea încredere, dar gestionează conexiunile de intrare în mod individual.
  • extern: zona rețelelor externe. Suportă mascarea NAT, astfel încât rețeaua internă să rămână închisă, dar încă accesibilă.
  • intern: reversul zonei externe, rețele interne. Calculatoarele din această zonă pot fi de încredere. Servicii suplimentare disponibile.
  • dmz: Folosit pentru calculatoarele situate în DMZ (calculatoare izolate care nu vor avea acces la restul rețelei); acceptă doar unele conexiuni de intrare.
  • lucru: zona rețelei de lucru. Majoritatea mașinilor din rețea pot fi de încredere. Servicii suplimentare disponibile.
  • acasă: zonă de rețea de domiciliu. Mediul poate fi de încredere, dar sunt acceptate numai conexiunile de intrare definite de utilizator.
  • de încredere: toate mașinile din rețea pot fi de încredere.

Reguli de salvare

Regulile firewalld sunt permanente și temporare. Dacă apare vreo regulă sau se modifică în set, comportamentul curent al firewall-ului se schimbă imediat. Cu toate acestea, după o repornire, toate modificările se vor pierde dacă nu sunt salvate.

Majoritatea comenzilor firewall-cmd pot folosi indicatorul --permanent, care va salva regula și apoi o va folosi permanent.

Activarea paravanului de protecție firewalld

Mai întâi trebuie să activați demonul. Fișierul unitar systemd se numește firewalld.service. Pentru a porni demonul, introduceți.

sudo systemctl start firewalld.service

Asigurați-vă că serviciul rulează:

firewall-cmd --state
alergare

Firewall-ul este acum activ și rulează conform configurației implicite.

Momentan, serviciul este activat, dar nu va porni automat cu serverul. Pentru a evita blocarea accidentală pe propriul dvs. server, creați mai întâi un set de reguli și apoi configurați autorun.

Reguli de firewall implicite

Vizualizarea regulilor implicite

Pentru a afla care zonă este utilizată implicit, introduceți:

firewall-cmd --get-default-zone
public

Momentan, firewalld nu a primit instrucțiuni cu privire la alte zone, în plus, nicio interfață nu este asociată cu alte zone, așa că acum zona publică este zona implicită și, de asemenea, singura zonă activă.

Pentru a obține o listă de puncte fierbinți, introduceți:


public
interfețe: eth0 eth1

Există două interfețe de rețea legate de zona publică: eth0 și eth1. Interfețele asociate cu o zonă funcționează conform regulilor pentru acea zonă.

Pentru a afla ce reguli folosește zona în mod implicit, introduceți:

firewall-cmd --list-all
public (implicit, activ)
interfețe: eth0 eth1
surse:
servicii: dhcpv6-client ssh
porturi:
mascarada: nu
porturi înainte:
icmp-blocks:
reguli bogate:

Deci acum știi că:

  • public este zona implicită și singura zonă activă.
  • Interfețele eth0 și eth1 sunt legate de acesta.
  • Acceptă traficul DHCP (alocarea adresei IP) și SSH (administrare la distanță).

Alte zone firewall

Acum ar trebui să vă familiarizați cu celelalte zone.

Pentru a obține o listă cu toate zonele disponibile, introduceți:

firewall-cmd --get-zones

Pentru a obține setările pentru o anumită zonă, adăugați indicatorul -zone = la comandă.

firewall-cmd --zone = home --list-all
Acasă
interfete:
surse:
servicii: dhcpv6-client ipp-client mdns samba-client ssh
porturi:
mascarada: nu
porturi înainte:
icmp-blocks:
reguli bogate:

Pentru a lista definițiile tuturor zonelor disponibile, adăugați opțiunea --list-all-zones. Pentru o vizualizare mai convenabilă, rezultatul poate fi trimis către paginator:

firewall-cmd --list-all-zones | Mai puțin

Configurarea zonelor de interfață

Inițial, toate interfețele de rețea sunt legate la zona implicită.

Schimbarea zonei de interfață pentru o sesiune

Pentru a transfera o interfață într-o zonă diferită pentru o sesiune, utilizați opțiunile —zone = și —change-interface =.

De exemplu, pentru a aduce eth0 în zona de acasă, ar trebui să tastați:

sudo firewall-cmd --zone = home --change-interface = eth0
succes

Notă: Când mutați interfața într-o altă zonă, trebuie să țineți cont de faptul că acest lucru poate afecta funcționarea unor servicii. De exemplu, zona de domiciliu acceptă SSH, astfel încât conexiunile de la acest serviciu nu vor fi abandonate. Dar unele zone renunță la toate conexiunile, inclusiv SSH, și apoi vă puteți bloca accidental să vă accesați propriul server.

Pentru a vă asigura că interfața este legată de noua zonă, introduceți:

firewall-cmd --get-active-zones
Acasă
interfețe: eth0
public
interfețe: eth1

După repornirea paravanului de protecție, interfața se va lega din nou la zona implicită.

sudo systemctl restart firewalld.service
firewall-cmd --get-active-zones
public
interfețe: eth0 eth1

Schimbarea permanentă a zonei de interfață

Dacă nu este specificată nicio altă zonă în setările interfeței, după repornirea paravanului de protecție, interfața va fi relegată la zona implicită. Pe CentOS, astfel de configurații sunt stocate în directorul / etc / sysconfig / network-scripts, în fișiere în format ifcfg-interface.

Pentru a defini o zonă pentru o interfață, deschideți fișierul de configurare pentru acea interfață, de exemplu:

Adăugați variabila ZONE = la sfârșitul fișierului și specificați o altă zonă ca valoare, de exemplu, acasă:

. . .
DNS1 = 2001: 4860: 4860 :: 8844
DNS2 = 2001: 4860: 4860 :: 8888
DNS3 = 8.8.8.8
ZONA = acasă

Salvați și închideți fișierul.

Pentru a actualiza setările, reporniți serviciul de rețea și firewall:

sudo systemctl reporniți network.service
sudo systemctl restart firewalld.service

După repornire, eth0 se va lega de zona de acasă.

firewall-cmd --get-active-zones
Acasă
interfețe: eth0
public
interfețe: eth1

Setarea zonei implicite

De asemenea, puteți alege o zonă implicită diferită.

Pentru aceasta, este utilizat parametrul –set-default-zone =. După aceea, toate interfețele vor fi legate la o altă zonă:

sudo firewall-cmd --set-default-zone = home
Acasă
interfețe: eth0 eth1

Crearea regulilor pentru aplicații

Adăugarea unui serviciu într-o zonă

Cel mai simplu mod este să adăugați un serviciu sau un port în zona pe care o folosește firewall-ul. Răsfoiți serviciile disponibile:

firewall-cmd --get-services
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client pmmp dns ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mdnspmspms open mysqlwbmspwd pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmisie-client vnc-server wbem-https

Notă: Mai multe informații despre fiecare serviciu specific pot fi găsite în fișierele .xml din directorul / usr / lib / firewalld / services. De exemplu, informațiile despre un serviciu SSH sunt stocate în /usr/lib/firewalld/services/ssh.xml și arată astfel:



SSH

Pentru a activa asistența pentru servicii într-o anumită zonă, utilizați opțiunea –add-service =. Puteți specifica zona țintă folosind opțiunea -zone =. În mod implicit, aceste modificări vor funcționa pentru o singură sesiune. Pentru a salva modificările și a le utiliza permanent, adăugați marcajul —permanent.

De exemplu, pentru a porni un server web care să servească trafic HTTP, mai întâi trebuie să activați suportul pentru acest trafic în zona publică pentru o sesiune:

sudo firewall-cmd --zone = public --add-service = http

Dacă serviciul trebuie adăugat la zona implicită, indicatorul –zone = poate fi omis.

Asigurați-vă că operația a avut succes:

firewall-cmd --zone = public --list-services
dhcpv6-client http ssh

Testați serviciul și firewall. Dacă totul funcționează corect, puteți modifica setul de reguli permanent și puteți adăuga o regulă pentru a sprijini acest serviciu.

sudo firewall-cmd --zone = public --permanent --add-service = http

Pentru a vedea o listă de reguli persistente, introduceți:

sudo firewall-cmd --zone = public --permanent --list-services
dhcpv6-client http ssh

Zona publică acceptă acum HTTP și portul 80 permanent. Dacă serverul web poate servi trafic SSL / TLS, puteți adăuga și serviciul https (pentru o singură sesiune sau într-un set de reguli persistente):

sudo firewall-cmd --zone = public --add-service = https
sudo firewall-cmd --zone = public --permanent --add-service = https

Ce se întâmplă dacă serviciul dorit nu este disponibil?

Firewall-ul firewall include în mod implicit multe dintre cele mai comune servicii. Cu toate acestea, unele aplicații necesită servicii pe care firewalld nu le acceptă. În acest caz, puteți face două lucruri.

Metoda 1: setarea portului

Cel mai simplu mod de a face acest lucru este să deschideți un port de aplicație în zona necesară a paravanului de protecție. Trebuie doar să specificați portul sau intervalul de porturi și protocolul.

De exemplu, o aplicație care utilizează portul 5000 și TCP trebuie adăugată în zona publică. Pentru a activa suportul pentru aplicație pe sesiune, utilizați parametrul –add-port = și specificați protocolul tcp sau udp.

sudo firewall-cmd --zone = public --add-port = 5000 / tcp

Asigurați-vă că operația a avut succes:

firewall-cmd --list-ports
5000 / tcp

De asemenea, puteți specifica un interval de porturi serial separând primul și ultimul port al intervalului cu o liniuță. De exemplu, dacă aplicația dvs. folosește porturile UDP 4990-4999, pentru a le adăuga în zona publică, veți introduce:

sudo firewall-cmd --zone = public --add-port = 4990-4999 / udp

După testare, puteți adăuga aceste reguli la setările paravanului de protecție permanent.

sudo firewall-cmd --zone = public --permanent --add-port = 5000 / tcp
sudo firewall-cmd --zone = public --permanent --add-port = 4990-4999 / udp
sudo firewall-cmd --zone = public --permanent --list-ports
succes
succes
4990-4999 / udp 5000 / tcp

Metoda 2: definiți un serviciu

Adăugarea de porturi în zone este ușoară, dar dacă aveți multe dintre aceste aplicații, poate fi dificil să găsiți pentru ce este un anumit port. Pentru a evita această situație, puteți defini servicii în loc de porturi.

Serviciile sunt pur și simplu colecții de porturi cu un nume și o descriere specifice. Serviciile facilitează gestionarea setărilor, dar sunt mai complexe decât porturile.

În primul rând, trebuie să copiați scriptul existent din directorul / usr / lib / firewalld / services în directorul / etc / firewalld / services (unde firewall-ul caută setări non-standard).

De exemplu, puteți copia definiția serviciului SSH și o puteți utiliza pentru a defini exemplul de serviciu condiționat. Numele scriptului trebuie să se potrivească cu numele serviciului și să aibă extensia .xml.

sudo cp /usr/lib/firewalld/services/service.xml /etc/firewalld/services/example.xml

Corectați fișierul copiat.

sudo nano /etc/firewalld/services/example.xml

Fișierul conține definiția SSH:



SSH
Secure Shell (SSH) este un protocol pentru conectarea și executarea comenzilor pe mașini la distanță. Oferă comunicații criptate securizate. Dacă intenționați să vă accesați mașina de la distanță prin SSH printr-o interfață cu firewall, activați această opțiune. Aveți nevoie de pachetul openssh-server instalat pentru ca această opțiune să fie utilă.

Majoritatea definiției serviciului sunt metadate. Puteți schimba numele scurt al serviciului în etichete ... Acesta este numele care poate fi citit de om al serviciului. De asemenea, trebuie să adăugați o descriere a serviciului. Singura modificare care va afecta serviciul este schimbarea numărului de port și a protocolului.

Să revenim la serviciul exemplu; Să presupunem că solicită deschiderea portului TCP 7777 și portul UDP 8888. Definiția va arăta astfel:



Serviciu de exemplu
Acesta este doar un exemplu de serviciu. Probabil că nu ar trebui să fie folosit pe un sistem real.

Salvați și închideți fișierul.

Reporniți firewall-ul:

sudo firewall-cmd --reload

Serviciul va apărea acum în lista de servicii disponibile:

firewall-cmd --get-services
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns exemplu ftp de înaltă disponibilitate http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mdns mount my nsf-mslwb open pm pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmisie-client vnc-server wbem-https

Crearea zonelor

Firewall-ul oferă multe zone predefinite, care sunt suficiente pentru majoritatea lucrărilor. Cu toate acestea, în unele situații devine necesar să se creeze o zonă personalizată.

De exemplu, puteți crea o zonă publicweb pentru un server web și o zonă privateDNS pentru un serviciu DNS.

Când creați o zonă, trebuie să o adăugați la setările permanente ale paravanului de protecție.

Încercați să creați zone publicweb și privateDNS:

sudo firewall-cmd --permanent --new-zone = publicweb
sudo firewall-cmd --permanent --new-zone = privateDNS

Asigurați-vă că există zone:

sudo firewall-cmd --permanent --get-zones

În sesiunea curentă, zonele noi nu vor fi disponibile:

firewall-cmd --get-zones
blocați dmz drop extern acasă intern public de încredere lucru

Pentru a accesa noile zone, trebuie să reporniți firewall-ul:

sudo firewall-cmd --reload
firewall-cmd --get-zones
bloc dmz drop extern acasă intern privatDNS public publicweb lucru de încredere

Acum puteți aloca serviciile și porturile necesare noilor zone. De exemplu, SSH, HTTP și HTTPS pot fi adăugate în zona publicweb.

sudo firewall-cmd --zone = publicweb --add-service = ssh
sudo firewall-cmd --zone = publicweb --add-service = http
sudo firewall-cmd --zone = publicweb --add-service = https
firewall-cmd --zone = publicweb --list-all
publicweb
interfete:
surse:
servicii: http https ssh
porturi:
mascarada: nu
porturi înainte:
icmp-blocks:
reguli bogate:

Puteți adăuga DNS în zona privateDNS:

sudo firewall-cmd --zone = privateDNS --add-service = dns
firewall-cmd --zone = privateDNS --list-all
privateDNS
interfete:
surse:
servicii: dns
porturi:
mascarada: nu
porturi înainte:
icmp-blocks:
reguli bogate:

Apoi puteți lega interfețele de rețea de zone noi:

sudo firewall-cmd --zone = publicweb --change-interface = eth0
sudo firewall-cmd --zone = privateDNS --change-interface = eth1

Acum puteți testa configurația. Dacă totul funcționează corect, puteți adăuga aceste reguli la setările permanente.

sudo firewall-cmd --zone = publicweb --permanent --add-service = ssh
sudo firewall-cmd --zone = publicweb --permanent --add-service = http
sudo firewall-cmd --zone = publicweb --permanent --add-service = https
sudo firewall-cmd --zone = privateDNS --permanent --add-service = dns

Puteți configura apoi interfețele de rețea pentru a se conecta automat la zona corectă.

De exemplu, eth0 se va lega de publicweb:

sudo nano / etc / sysconfig / network-scripts / ifcfg-eth0
. . .
IPV6_AUTOCONF = nr
DNS1 = 2001: 4860: 4860 :: 8844
DNS2 = 2001: 4860: 4860 :: 8888
DNS3 = 8.8.8.8
ZONE = publicweb

Și interfața eth1 va fi legată de privateDNS:

sudo nano / etc / sysconfig / network-scripts / ifcfg-eth1
. . .
NETMASK = 255.255.0.0
DEFROUTE = „nu”
NM_CONTROLLED = „da”
ZONA = privateDNS

Reporniți serviciile de rețea și paravanul de protecție:

sudo systemctl reporniți rețeaua
sudo systemctl restart firewalld

Verificați zonele:

firewall-cmd --get-active-zones
privateDNS
interfețe: eth1
publicweb
interfețe: eth0

Asigurați-vă că serviciile necesare rulează în zonele:

firewall-cmd --zone = publicweb --list-services
http htpps ssh
firewall-cmd --zone = privateDNS --list-services
dns

Zonele personalizate sunt complet gata de funcționare. Puteți face oricare dintre ele zona implicită. De exemplu:

sudo firewall-cmd --set-default-zone = publicweb

Pornire automată a paravanului de protecție

Acum că ați verificat toate setările și v-ați asigurat că toate regulile funcționează conform așteptărilor, puteți configura firewall-ul pentru redare automată.

Pentru a face acest lucru, introduceți:

sudo systemctl enable firewalld

Firewall-ul va începe acum cu serverul.

Concluzie

Firewall-ul firewall este un instrument foarte flexibil. Zonele vă permit să schimbați rapid politica de firewall.

Acum știți cum funcționează firewalld, sunteți familiarizat cu conceptele de bază ale unui firewall, puteți crea zone personalizate și adăuga servicii.

Etichete:,

Top articole similare