Despre Linux

  • Facebook
  • Twitter
  • LinkedIn
  • Acasă
  • Linux
    • Comenzi Linux
    • Tutoriale
  • Kubernetes
  • RHCSA
    • Exerciții RHCSA
    • SELinux
    • Permisiuni
  • General
    • Open source
  • Contact

Cum se configurează FirewallD pe CentOS 7

6 ianuarie 2017 By Bobses 6 comentarii

FirewallD este o soluție completă disponibilă pentru serverele cu CentOS 7. Acest articol va explica cum se configurează firewall-ul pe un server cu CentOS 7, precum și gestionarea firewall-ului folosind instrumentul de administrare firewall-cmd. Pentru testarea firewalld pe CentOS 7 am folosit o mașină virtuală realizată în Virtualbox și un server VPS de la chroot.ro.

Concepte de bază

Înainte de a începe călătoria în lumea firewall-ului din CentOS 7, trebuie să ne familiarizăm cu câteva concepte de bază introduse de această unealtă.

Zonele

FirewallD gestionează grupurile de reguli folosind niște entități numite zone. Zonele sunt grupuri de reguli care hotărăsc tipul traficului care va fi permis, în funcție de nivelul de încredere pe care îl avem în calculatoarele din rețelele cu care suntem conectați.

Pentru calculatoarele care își schimbă des rețeaua (cum ar fi laptopurile), această flexibilitate oferită de firewalld conferă o metodă ușoară și sigură de a schimba regulile în funcție de mediu. Putem avea reguli foarte stricte în rețele nesigure (cum ar fi rețelele Wi-Fi publice), în timp ce pe rețeaua de acasă avem alte reguli mai puțin restrictive. Pentru un server, aceste zone nu sunt foarte importante, căci foarte rar acesta își schimbă mediul în care funcționează.

Indiferent de mediul în care funcționează sistemul nostru, este bine să fim familiari cu ideea generală din spatele fiecări zone predefinte de firewalld. Zonele predefinite de firewalld sunt următoarele (ordonate de la cele mai puțin de încredere la cele mai de încredere):

  • drop: cel mai de jos nivel al încrederii; toate solicitările de conectare din exterior sunt respinse fără drept de apel, fiind permise doar  conectările de ieșire;
  • block: similar cu cel de sus, dar, în loc de refuzul simplu al conexiunii, cererile care vin din exterior sunt respinse cu un mesaj  icmp-host-prohibited sau icmp6-adm-prohibite;
  • public: se referă la rețele publice, care nu sunt de încredere; nu oferă încredere altor computere, dar permite conectări din exterior de la caz la caz;
  • external: rețele externe, în eventualitatea în care folosim firewall-ul ca gateway; configurează o rețea NAT masquerading, astfel încât rețeaua internă rămâne privată dar accesibilă;
  • internal: cealaltă față a zonei externe, folosită pentru porțiuni interne a gateway-ului; consideră computerele ca fiind destul de încredere, fiind disponibile câteva servicii adiționale;
  • dmz: folosită pentru sisteme situate în DMZ (o Zonă Demilitarizată este o arhitectură conceptuală de reţea în care serverele cu acces public sunt plasate separat pe un segment izolat de reţea; scopul DMZ este acela de a asigura că serverele accesibile publicului nu pot intra în contact cu alte segmente interne de reţea, în situaţia în care un server este compromis); sunt permise numai conexiuni sigure din exterior;
  • work: zona este folosită pentru computerele care lucrează împreună într-o rețea; majoritatea computerelor de rețea prezintă încredere, fiind permise câteva servicii;
  • home: numele spune tot - e vorba de rețeua de acasă, care implică încredere în aproape toate computerele, fiind acceptate mai multe servicii;
  • trusted: toate computerele din rețea prezintă încredere; cele mai multe opțiuni sunt deschise, dar trebuie folosite, totuși, cu moderație.

Folosind firewall-ul, putem crea diferite reguli și să modificăm proprietățile fiecărei zone.

Regula permanentizării

În firewalld, regulile concepute pot fi permanente sau imediate. Dacă o regulă este adăugată sau modificată, firewall-ul își modifică imediat comportamentul. Dar, la următorul restart, vechile reguli revin.

Pentru a preîntâmpina revenirea vechilor reguli, putem adăuga flagul --permanent cu ajutorul comenzii firewall-cmd. Faptul că putem adăuga reguli nepermanente este un lucru foarte bun, căci putem testa unele reguli în mediul în care lucrăm, dar dacă nu ne convin, la reboot putem reveni la cele vechi.

Activarea firewall-ului

Înainte de a începe să facem reguli, trebuie să pornim daemon-ul. Unitatea systemd care se ocupă de firewalld este firewalld.service. Putem porni firewall-ul pentru sesiunea curentă cu comanda:

sudo systemctl start firewalld.service

sau

sudo systemctl start firewalld

Putem verifica dacă serviciul rulează și dacă poate fi accesat rulând comanda:

sudo firewall-cmd --state

La ieșire vom avea răspunsul de mai jos, care indică faptul că firewall-ul este activat și că rulează cu configurația default:

running

În acest moment, nu vom permite serviciului să ruleze la boot - acest lucru se poate face cu flagul enable. Vom aștepta până vom realiza și testa regulile firewall-ului.

Regulile curente ale firewall-ului

Înainte de orice modificare, trebuie să ne familiarizăm cu regulile curente oferite de firewalld.

Explorarea setărilor default

Putem vedea care din zonele menționate anterior este cea prestabilită cu comanda de mai jos:

sudo firewall-cmd --get-default-zone

Probabil răspunsul va fi cel de mai jos:

public

Deoarece nu am dat încă nicio comandă care să  modifice zona default, această zonă va fi și zona activă, adică zona care controlează traficul care trece prin interfața noastră de rețea. Pentru verifricare, vom scrie următoarea comandă:

sudo firewall-cmd --get-active-zones

Și răspunsul (unde enp0s3 este interfața de rețea a serverului):

public
       interfaces: enp0s3

Putem vedea care sunt regulile asociate zonei public default cu comanda de mai jos:

sudo firewall-cmd --list-all

Răspunsul:

Putem citi că interfața de rețea folosită de serverul nostru este enp0s3, iar singurele două servicii active sunt DHCP (care permite alocarea dinamică a IP-ului) și SSH, care permite conectarea la server de la distanță (remote).

Explorarea zonelor alternative

Trebuie să aflăm informații și despre alte zone care pot fi folosite de firewalld. Pentru aceasta vom scrie comanda:

sudo firewall-cmd --get-zones

Răspunsul:

Putem lista regulile aferente unei anumite zone cu comanda:

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

Putema afla care sunt regulile pentru toate zonele folosind comanda de mai jos care trimite output-ul către pagerul less:

sudo firewall-cmd --list-all-zones | less

Stabilirea unei zone default

Se face cu comanda de mai jos (setarea se va păstra și după reboot):

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

Configurarea regulilor pentru aplicații

Cea mai simplă metodă de a configura firewall-ul în CentOS 7 este prin adăugarea serviciilor sau porturilor folosite de aplicațiile dorite în zona default. Pentru a vedea care sunt serviciile disponibile vom scrie comanda următoare:

sudo firewall-cmd --get-services

La care vom avea un răspuns ca cel din imaginea de mai jos:

Să presupunem că vrem să instalăm panoul de control Sentora, care are nevoie de următoarele servicii și porturi deschise:

  • 20 & 21: FTP
  • 25 (TCP): SMTP
  • 53 (TCP & UDP): DNS
  • 80 (TCP & UDP): HTTP
  • 110: POP3
  • 143: IMAP
  • 443: HTTPS
  • 3306: MySQL

Pentru a aloca porturile prestabilite pentru un anumit serviciu, vom da comanda de mai jos (flagul --permanent face ca regula să se aplice și după reboot):

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

Și tot așa pentru fiecare serviciu dorit în parte. La final, cu comanda sudo firewall-cmd --list-all vom vedea toate serviciile adăugate zonei default:

Pentru a șterge un anumit serviciu, folosim comanda:

sudo firewall-cmd --permanent --remove-service=ssh

Pentru a adăuga un alt port decât cel folosit de serviciile prestabilite (vom folosi --remove-port pentru ștergere):

sudo firewall-cmd --permanent --add-port=5246/tcp

Pentru a adăuga un anumit serviciu unei alte zone decât cea default, vom folosi comanda:

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

La final, dacă suntem mulțumiți de regulile implementate, trebuie să restartăm daemon-ul cu comanda:

sudo firewall-cmd --reload

Pentru a face ca firewalld să se inițializeze la pornirea sistemului, trebuie obligatoriu să dăm comanda:

sudo systemctl enable firewalld

Amintiți-vă că trebuie în mod explicit să deschideți porturile în firewall pentru orice serviciu suplimentar sau aplicație adăugată ulterior.

Setările inițiale ale unui server cu CentOS 7 aici.

Setarea firewall-ului pe un server cu Ubuntu 14.04 am explicat-o în acest articol.

Partajează asta:

  • Dă clic pentru a partaja pe Facebook(Se deschide într-o fereastră nouă)
  • Dă clic pentru a partaja pe LinkedIn(Se deschide într-o fereastră nouă)
  • Dă clic pentru a partaja pe Twitter(Se deschide într-o fereastră nouă)

Similare

Din categoria: Tutoriale Etichete: CentOS 7, firewall

Trackbacks

  1. Cluster Kubernetes multi-master în Oracle Cloud Free Tier | Despre Linux spune:
    12 iulie 2021 la 8:34

    […] Nu este recomandat; normal este să deschideți doar porturile necesare (comenzi utile pentru firewalld aici): […]

    Răspunde
  2. Podman: containere Prometheus, Alertmanager și Grafana | Despre Linux spune:
    26 iunie 2021 la 9:28

    […] În distribuțiile din familia RedHat se folosește Firewalld - aici sunt reguli de configurare. […]

    Răspunde
  3. Netdata: monitorizare grafică în timp real a unui server Linux | Despre Linux spune:
    21 iunie 2021 la 11:22

    […] Vedeți aici cum se deschid porturile cu firewalld în CentOS/RHEL. […]

    Răspunde
  4. SELinux - copiere versus mutare fișiere | Despre Linux spune:
    20 iunie 2021 la 11:40

    […] Nu uităm să verificăm dacă avem portul 80 deschis (în cazul în care folosim firewalld): […]

    Răspunde
  5. Certificarea RHCSA - prezentare și obiective | Despre Linux spune:
    8 iulie 2018 la 12:29

    […] firewall settings using firewall-config, firewall-cmd, or […]

    Răspunde
  6. Monitorizare grafică în timp real a unui server Linux | Lumea lui Bobses spune:
    18 februarie 2017 la 18:32

    […] Vedeți aici cum se deschid porturile cu firewalld în CentOS/RHEL. […]

    Răspunde

Lasă un răspuns Anulează răspunsul

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.

Copyright © 2023 · Bobses

Administrează consimțămintele pentru cookie-uri
Pentru a oferi cea mai bună experiență, folosim tehnologii, cum ar fi cookie-uri, pentru a stoca și/sau accesa informațiile despre dispozitive. Consimțământul pentru aceste tehnologii ne permite să procesăm date, cum ar fi comportamentul de navigare sau ID-uri unice pe acest site. Dacă nu îți dai consimțământul sau îți retragi consimțământul dat poate avea afecte negative asupra unor anumite funcționalități și funcții.
Funcționale Mereu activ
Stocarea tehnică sau accesul sunt strict necesare în scopul legitim de a permite utilizarea unui anumit serviciu cerut în mod explicit de către un abonat sau un utilizator sau în scopul exclusiv de a executa transmiterea unei comunicări printr-o rețea de comunicații electronice.
Preferințe
Stocarea tehnică sau accesul este necesară în scop legitim pentru stocarea preferințelor care nu sunt cerute de abonat sau utilizator.
Statistici
Stocarea tehnică sau accesul care sunt utilizate exclusiv în scopuri statistice. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
Stocarea tehnică sau accesul sunt necesare pentru a crea profiluri de utilizator pentru a trimite publicitate sau pentru a urmări utilizatorul pe un site web sau pe mai multe site-uri web în scopuri de marketing similare.
Administrează opțiunile Administrează serviciile Administrează vânzătorii Citește mai multe despre aceste scopuri
Vizualizează preferințele
{title} {title} {title}