Cum să configurezi un Firewall cu Firewalld pe Linux (Ghid Complet)
Asigurarea serverului Linux împotriva accesului neautorizat și a traficului malițios nu este opțional — este o responsabilitate fundamentală pentru orice administrator de sistem. Indiferent dacă rulezi un proiect personal, o aplicație de afaceri sau un server web de producție, un firewall corect configurat este prima și cea mai critică linie de apărare. Firewalld este unul dintre cele mai puternice și flexibile instrumente de gestionare a firewall-ului disponibile pe Linux, oferind gestionarea dinamică a regulilor, controlul traficului bazat pe zone și suport pentru reguli bogate — toate fără a necesita o repornire completă a serviciului atunci când sunt aplicate modificări.
Acest ghid cuprinzător te ghidează prin tot ceea ce trebuie să știi: instalarea Firewalld, înțelegerea zonelor, gestionarea serviciilor și porturilor, scrierea regulilor bogate și monitorizarea firewall-ului în timp real. Dacă găzduiești pe un VPS sau Server Dedicat de la AlexHost, acest ghid te va ajuta să securizezi mediul și să menții o poziție de securitate puternică și adaptabilă.
Ce este Firewalld și de ce ar trebui să îl utilizezi?
Firewalld este un daemon de gestionare dinamică a firewall-ului disponibil pe majoritatea distribuțiilor Linux majore, inclusiv CentOS, RHEL, Fedora, Rocky Linux, AlmaLinux, și din ce în ce mai mult pe Debian și Ubuntu de asemenea. Spre deosebire de abordarea mai veche iptables — unde fiecare schimbare de regulă necesita golirea și reîncărcarea întregului set de reguli — Firewalld aplică modificări dinamic în timp de execuție fără a întrerupe conexiunile active.
Avantajele cheie ale Firewalld
- Arhitectură bazată pe zone — atribuie niveluri diferite de încredere interfețelor de rețea diferite sau intervalelor IP
- Actualizări dinamice de reguli — aplică modificări fără a reporni firewall-ul sau a abandona conexiunile existente
- Abstractizarea serviciilor — gestionează traficul după numele serviciului (de ex.,
http,ssh) mai degrabă decât numere de port brute - Reguli bogate — scrie reguli complexe și condiționale care vizează IP-uri, protocoale și acțiuni specifice
- Integrare D-Bus — permite altor aplicații și servicii să interacționeze cu firewall-ul în mod programatic
- Suport IPv4 și IPv6 — gestionează ambele familii de protocoale dintr-o singură interfață
Condiții preliminare
Înainte de a continua, asigurați-vă că aveți:
- Un server Linux cu CentOS 7/8/9, RHEL, Fedora, Rocky Linux, AlmaLinux, Debian sau Ubuntu
- Acces
sudosau root la server - O înțelegere de bază a comenzilor terminalului Linux
- O sesiune SSH activă (păstrați-o deschisă pe tot parcursul — veți modifica regulile firewall-ului)
> Avertisment critic: Asigurați-vă întotdeauna că SSH (portul 22 în mod implicit) este explicit permis în regulile firewall-ului înainte de a activa Firewalld. A vă bloca accesul la un server la distanță este o greșeală comună și evitabilă.
Pasul 1: Instalarea Firewalld
Firewalld este inclus în depozitele implicite ale majorității distribuțiilor Linux principale. Utilizați managerul de pachete corespunzător pentru sistemul dvs.
Pe CentOS / RHEL / Rocky Linux / AlmaLinux
sudo yum install firewalld -ySau, pe versiunile mai noi folosind DNF:
sudo dnf install firewalld -yPe Fedora
sudo dnf install firewalld -y
Pe Debian / Ubuntu
Deși Firewalld este cel mai frecvent asociat cu sistemele bazate pe RHEL, este pe deplin suportat pe distribuțiile bazate pe Debian:
sudo apt update
sudo apt install firewalld -y> Notă pentru utilizatorii Ubuntu/Debian: Dacă ufw este activ pe sistemul dvs., dezactivați-l înainte de a activa Firewalld pentru a evita conflictele:
> “`bash
> sudo ufw disable
> “`
Pasul 2: Pornirea și activarea Firewalld
După instalare, porniți serviciul Firewalld și configurați-l pentru a se lansa automat la boot-ul sistemului:
sudo systemctl start firewalld
sudo systemctl enable firewalldVerificați că serviciul rulează corect:
sudo systemctl status firewalldAr trebui să vedeți o ieșire similară cu:
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)
Active: active (running) since ...Dacă starea arată active (running), Firewalld este operațional și gata de configurat.
Pasul 3: Înțelegerea Zonelor Firewalld
Modelul bazat pe zone este piatra de temelie a arhitecturii Firewalld. O zonă definește un nivel de încredere pentru o conexiune de rețea sau o interfață. Fiecare zonă conține propriul set de reguli care determină ce trafic este permis sau refuzat.

Zone Firewalld Încorporate
| Zonă | Nivel de Încredere | Caz de Utilizare Tipic |
|---|---|---|
drop | Cel mai scăzut | Toate conexiunile de intrare sunt abandonate fără răspuns |
block | Foarte scăzut | Conexiunile de intrare sunt respinse cu un mesaj ICMP |
public | Scăzut | Zona implicită pentru rețele publice nesigure |
external | Scăzut | Pentru interfețe orientate spre exterior cu mascaradă NAT |
dmz | Mediu | Servere accesibile din exterior dar izolate intern |
work | Mediu-Înalt | Rețele de lucru cu încredere moderată |
home | Înalt | Rețele de acasă unde alte gazde sunt de încredere |
internal | Înalt | Rețele interne, similare cu acasă |
trusted | Cel mai înalt | Toate conexiunile sunt acceptate |
Verificați Zona Implicită Curentă
sudo firewall-cmd --get-default-zone
Enumerați Toate Zonele Disponibile
sudo firewall-cmd --get-zones
Vizualizați Zonele Active Curente și Interfețele Acestora
sudo firewall-cmd --get-active-zonesExemplu de ieșire:
public
interfaces: eth0
Pasul 4: Schimbarea zonei implicite
Exemplul 1 — Setarea zonei implicite la public (Recomandat pentru VPS/Servere dedicate)
Pentru majoritatea serverelor conectate la internet, public este zona implicită corespunzătoare. Aplică un nivel de încredere conservator și permite doar traficul explicit autorizat:
sudo firewall-cmd --set-default-zone=publicVerificați schimbarea:
sudo firewall-cmd --get-default-zoneRezultat așteptat:
publicExemplul 2 — Setarea zonei implicite la home
Dacă serverul dvs. funcționează pe o rețea privată de încredere (cum ar fi un laborator acasă sau un mediu de dezvoltare intern), zona home permite o comunicare mai permisivă între gazde de încredere:
sudo firewall-cmd --set-default-zone=homeVerificați:
sudo firewall-cmd --get-default-zoneRezultat așteptat:
homeExemplul 3 — Setarea zonei implicite la work
Pentru servere pe o rețea corporativă sau de lucru unde este corespunzător un nivel moderat de încredere:
sudo firewall-cmd --set-default-zone=workVerificați:
sudo firewall-cmd --get-default-zoneRezultat așteptat:
workPasul 5: Gestionarea serviciilor cu Firewalld
Firewalld include o bibliotecă de definiții de servicii predefinite care mapează numele serviciilor la porturile și protocoalele corespunzătoare. Aceasta face mult mai ușor să gestionezi regulile după intenție mai degrabă decât după numere de porturi brute.
Listează toate serviciile predefinite
sudo firewall-cmd --get-servicesPermite un serviciu într-o zonă
Pentru a permite traficul HTTP (port 80/TCP) în zona public permanent:
sudo firewall-cmd --zone=public --add-service=http --permanentPentru a permite traficul HTTPS (port 443/TCP):
sudo firewall-cmd --zone=public --add-service=https --permanentPentru a permite SSH (port 22/TCP) — asigură-te întotdeauna că aceasta este permisă înainte de a face alte modificări:
sudo firewall-cmd --zone=public --add-service=ssh --permanentAplică modificările prin reîncărcarea Firewalld
Steagul --permanent scrie regula în configurația persistentă, dar nu o aplică imediat la firewall-ul în execuție. Reîncarcă întotdeauna după ce faci modificări permanente:

sudo firewall-cmd --reloadVerifică serviciile într-o zonă
sudo firewall-cmd --zone=public --list-servicesExemplu de ieșire:
dhcpv6-client http https sshElimină un serviciu dintr-o zonă
Pentru a elimina HTTPS din zona public:
sudo firewall-cmd --zone=public --remove-service=https --permanent
sudo firewall-cmd --reloadPasul 6: Gestionarea Porturilor Direct
În cazurile în care un serviciu nu are o definiție Firewalld predefinită, puteți deschide sau închide porturi specifice direct.
Deschiderea unui Port Specific
Pentru a deschide portul 8080 peste TCP în zona public:
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reloadPentru a deschide un port UDP (de exemplu, portul 53 pentru DNS):
sudo firewall-cmd --zone=public --add-port=53/udp --permanent
sudo firewall-cmd --reloadPentru a deschide o gamă de porturi (de exemplu, 6000–6100 TCP):
sudo firewall-cmd --zone=public --add-port=6000-6100/tcp --permanent
sudo firewall-cmd --reloadÎnchiderea unui Port Specific
Pentru a închide portul 8080:
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
sudo firewall-cmd --reloadListarea Tuturor Porturilor Deschise într-o Zonă
sudo firewall-cmd --zone=public --list-portsPasul 7: Configurare avansată cu reguli bogate
Regulile bogate vă oferă control granular și condiționat asupra traficului — mult mai departe decât permit regulile simple de serviciu sau port. Ele suportă filtrarea după IP sursă, IP destinație, protocol, port și acțiune (accept, reject, drop, log).
Sintaxa regulii bogate
rule [family="<ipv4|ipv6>"]
[source address="<IP/CIDR>"]
[destination address="<IP/CIDR>"]
[service name="<service>"] | [port port="<port>" protocol="<tcp|udp>"]
[log [prefix="<prefix>"] [level="<level>"] [limit value="<rate>"]]
[accept|reject|drop]Exemplul 1 — Permiteți SSH doar de la o anumită adresă IP
Aceasta este una dintre cele mai importante configurații de securitate pentru orice server la distanță. Dacă vă gestionați serverul de la o adresă IP fixă, restricționați accesul SSH exclusiv la acea IP:
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="203.0.113.50" service name="ssh" accept' --permanent
sudo firewall-cmd --reloadExemplul 2 — Blocați tot traficul de la o anumită adresă IP
Pentru a bloca complet o adresă IP care generează trafic malițios:
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="198.51.100.25" drop' --permanent
sudo firewall-cmd --reloadExemplul 3 — Permiteți HTTP de la o anumită subrețea
Pentru a permite traficul HTTP doar de la o subrețea internă de încredere (de ex., 192.168.1.0/24):
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="http" accept' --permanent
sudo firewall-cmd --reloadExemplul 4 — Limitați rata conexiunilor SSH pentru a preveni forța brută
Înregistrați și limitați încercările de conexiune SSH pentru a reduce expunerea la atacuri de forță brută:
sudo firewall-cmd --zone=public --add-rich-rule='rule service name="ssh" log prefix="SSH-ATTEMPT" level="notice" limit value="3/m" accept' --permanent
sudo firewall-cmd --reloadExemplul 5 — Permiteți un port specific de la o IP specifică
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.5" port port="3306" protocol="tcp" accept' --permanent
sudo firewall-cmd --reloadListați toate regulile bogate dintr-o zonă
sudo firewall-cmd --zone=public --list-rich-rulesEliminați o regulă bogată
sudo firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="198.51.100.25" drop' --permanent
sudo firewall-cmd --reloadPasul 8: Monitorizarea și Auditarea Firewall-ului Dvs.
Revizuirea regulată a configurației firewall-ului dvs. este esențială pentru menținerea unei poziții de securitate puternice. Firewalld oferă mai multe comenzi pentru a inspecta starea actuală a regulilor dvs.
Vizualizați Configurația Completă pentru Zona Implicită
sudo firewall-cmd --list-allExemplu de ieșire:
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client http https ssh
ports: 8080/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="203.0.113.50" service name="ssh" acceptVizualizați Configurația pentru Toate Zonele
sudo firewall-cmd --list-all-zonesVizualizați Configurația pentru o Zonă Specifică
sudo firewall-cmd --zone=dmz --list-allVerificați Dacă un Serviciu Specific Este Permis
sudo firewall-cmd --zone=public --query-service=httpVerificați Dacă un Port Specific Este Deschis
sudo firewall-cmd --zone=public --query-port=8080/tcpPasul 9: Reguli Runtime vs. Permanente — Înțelegerea Diferenței
Firewalld funcționează cu două straturi de configurare distincte:
| Strat | Steag | Persistență | Caz de Utilizare |
|---|---|---|---|
| Runtime | *(no flag)* | Pierdut la reîncărcare/repornire | Testarea regulilor temporar |
| Permanent | --permanent | Supraviețuiește reîncărcării și repornirii | Configurații de producție |
Flux de Lucru Bună Practică
- Testați regula la runtime mai întâi (fără
--permanent) pentru a verifica că funcționează conform așteptărilor - Adăugați regula permanent odată ce confirmată
- Reîncărcați Firewalld pentru a sincroniza configurațiile runtime și permanente
# Step 1: Test at runtime
sudo firewall-cmd --zone=public --add-service=http
# Step 2: Verify it works as expected, then make it permanent
sudo firewall-cmd --zone=public --add-service=http --permanent
# Step 3: Reload to sync
sudo firewall-cmd --reloadAlternativ, aplicați o regulă permanentă și reîncărcați imediat într-un singur flux de lucru:
sudo firewall-cmd --zone=public --add-service=http --permanent && sudo firewall-cmd --reloadPasul 10: Atribuirea Interfețelor de Rețea la Zone
Dacă serverul dvs. are mai multe interfețe de rețea (frecvent pe Servere Dedicate cu NIC-uri publice și private), puteți atribui fiecare interfață unei zone diferite cu niveluri de încredere diferite.
Atribuiți o Interfață unei Zone
sudo firewall-cmd --zone=internal --add-interface=eth1 --permanent
sudo firewall-cmd --reloadSchimbați Zona unei Interfețe
sudo firewall-cmd --zone=public --change-interface=eth0 --permanent
sudo firewall-cmd --reloadEliminați o Interfață dintr-o Zonă
sudo firewall-cmd --zone=internal --remove-interface=eth1 --permanent
sudo firewall-cmd --reloadPasul 11: Activarea IP Masquerading și Port Forwarding
Pentru servere care acționează ca gateway-uri sau rulează NAT (Network Address Translation), Firewalld suportă masquerading și port forwarding în mod nativ.
Activați Masquerading (NAT)
sudo firewall-cmd --zone=external --add-masquerade --permanent
sudo firewall-cmd --reloadRedirecționați un Port (de ex., Redirecționați Port Extern 80 la Port Intern 8080)
sudo firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
sudo firewall-cmd --reloadRedirecționați Traficul către un Gazdă Diferită
sudo firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=80:toaddr=192.168.1.10 --permanent
sudo firewall-cmd --reloadConfigurații practice de securitate pentru serverele AlexHost
Dacă rulați un server web, server de bază de date sau server de aplicații pe infrastructura AlexHost, iată configurațiile Firewalld de bază recomandate:
Configurația de bază a serverului web
# Allow SSH (restrict to your IP in production)
sudo firewall-cmd --zone=public --add-service=ssh --permanent
# Allow HTTP and HTTPS
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
# Reload to apply
sudo firewall-cmd --reload
# Verify
sudo firewall-cmd --list-all> Pro Tip: Asociați configurația firewall-ului cu un certificat SSL valid pentru a vă asigura că tot traficul web este criptat end-to-end. AlexHost oferă certificatele SSL pentru toate mediile de hosting.
Configurația de bază a serverului de bază de date (MySQL/MariaDB)
# Allow MySQL only from a specific application server IP
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.5" port port="3306" protocol="tcp" accept' --permanent
# Block direct MySQL access from the public internet
sudo firewall-cmd --zone=public --remove-service=mysql --permanent 2>/dev/null
sudo firewall-cmd --reloadConfigurația de bază a serverului cPanel/WHM
Dacă utilizați un VPS cu cPanel, va trebui să deschideți porturile necesare pentru cPanel și WHM:
# Web traffic
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
# cPanel/WHM ports
sudo firewall-cmd --zone=public --add-port=2082/tcp --permanent # cPanel HTTP
sudo firewall-cmd --zone=public --add-port=2083/tcp --permanent # cPanel HTTPS
sudo firewall-cmd --zone=public --add-port=2086/tcp --permanent # WHM HTTP
sudo firewall-cmd --zone=public --add-port=2087/tcp --permanent # WHM HTTPS
sudo firewall-cmd --zone=public --add-port=2095/tcp --permanent # Webmail HTTP
sudo firewall-cmd --zone=public --add-port=2096/tcp --permanent # Webmail HTTPS
# Mail ports
sudo firewall-cmd --zone=public --add-service=smtp --permanent
sudo firewall-cmd --zone=public --add-service=imaps --permanent
sudo firewall-cmd --zone=public --add-service=pop3s --permanent
sudo firewall-cmd --reloadDepanarea Problemelor Comune cu Firewalld
Problema 1: Firewalld Nu Pornește
Verificați conflictele cu alte instrumente de firewall:
sudo systemctl status iptables
sudo systemctl stop iptables
sudo systemctl disable iptables
sudo systemctl start firewalldProblema 2: Regulile Nu Se Mențin După Repornire
Asigurați-vă că ați folosit marca --permanent și ați reîncărcat:
sudo firewall-cmd --runtime-to-permanent
sudo firewall-cmd --reloadComanda --runtime-to-permanent salvează toate regulile runtime curente în configurația permanentă.
Problema 3: Blocat din SSH
Dacă ați blocat accidental accesul SSH, va trebui să accesați serverul prin consolă (disponibilă prin panoul de control VPS al AlexHost) și să rulați:
sudo firewall-cmd --zone=public --add-service=ssh --permanent
sudo firewall-cmd --reloadProblema 4: Verificarea Jurnalelor Firewalld
sudo journalctl -u firewalld -fSau verificați jurnalul de sistem pentru mesaje legate de firewall:
sudo grep -i firewall /var/log/messagesFirewalld Quick Reference Cheat Sheet
| Sarcină | Comandă |
|---|---|
| Verificați starea | sudo systemctl status firewalld |
| Porniți Firewalld | sudo systemctl start firewalld |
| Opriți Firewalld | sudo systemctl stop firewalld |
| Activați la boot | sudo systemctl enable firewalld |
| Obțineți zona implicită | sudo firewall-cmd --get-default-zone |
| Listați toate zonele | sudo firewall-cmd --get-zones |
| Listați zonele active | sudo firewall-cmd --get-active-zones |
| Setați zona implicită | sudo firewall-cmd --set-default-zone=public |
| Adăugați un serviciu | sudo firewall-cmd --zone=public --add-service=http --permanent |
| Eliminați un serviciu | sudo firewall-cmd --zone=public --remove-service=http --permanent |
| Deschideți un port | sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent |
| Închideți un port | sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent |
| Listați serviciile | sudo firewall-cmd --zone=public --list-services |
| Listați porturile | sudo firewall-cmd --zone=public --list-ports |
| Listați toate regulile | sudo firewall-cmd --list-all |
| Adăugați regula avansată | sudo firewall-cmd --zone=public --add-rich-rule='...' --permanent |
| Salvați regulile runtime | sudo firewall-cmd --runtime-to-permanent |
| Reîncărcați Firewalld | sudo firewall-cmd --reload |
| Modul panică (blocați tot) | sudo firewall-cmd --panic-on |
| Dezactivați modul panică | sudo firewall-cmd --panic-off |
Concluzie
Firewalld este un instrument de gestionare a firewall-ului excepțional de capabil și flexibil care oferă administratorilor de sisteme Linux control precis și dinamic asupra traficului de rețea. Prin stăpânirea zonelor, serviciilor, regulilor de porturi și regulilor bogate, puteți construi o arhitectură de securitate stratificată și adaptivă care protejează serverul dvs. împotriva accesului neautorizat, atacurilor de forță brută și amenințărilor la nivel de rețea.
Principiile cheie de reținut:
- Permiteți întotdeauna SSH înainte de a activa firewall-ul pentru a evita să vă blocați accesul
- Utilizați flag-ul
--permanentpentru toate regulile de producție și urmați întotdeauna cu--reload - Restricționați serviciile sensibile (SSH, baze de date, panouri de administrare) la adrese IP specifice de încredere folosind reguli bogate
- Revizuiți regulile firewall-ului în mod regulat — poziția dvs. de securitate ar trebui să evolueze pe măsură ce infrastructura dvs. se schimbă
- Testați regulile la runtime mai întâi, apoi faceți-le permanente după verificare
Indiferent dacă gestionați un singur VPS sau o flotă de Servere Dedicate, AlexHost oferă infrastructura, performanța și accesul complet root de care aveți nevoie pentru a implementa configurații de securitate de nivel enterprise. Combinați configurația Firewalld cu Certificate SSL pentru comunicații criptate și explorați Panouri de Control VPS pentru gestionarea serverului simplificată — toate disponibile pe platforma de încredere și cu performanță ridicată a AlexHost.
la toate serviciile de găzduire