Economisiți 15% la toate serviciile de găzduire

Testează-ți abilitățile și obține Reducere la orice plan de găzduire

Utilizați codul: Skills Începeți
Secțiuni
Linux Securitate

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 sudo sau 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 -y

Sau, pe versiunile mai noi folosind DNF:

sudo dnf install firewalld -y

Pe 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 firewalld

Verificați că serviciul rulează corect:

sudo systemctl status firewalld

Ar 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 ÎncredereCaz de Utilizare Tipic
dropCel mai scăzutToate conexiunile de intrare sunt abandonate fără răspuns
blockFoarte scăzutConexiunile de intrare sunt respinse cu un mesaj ICMP
publicScăzutZona implicită pentru rețele publice nesigure
externalScăzutPentru interfețe orientate spre exterior cu mascaradă NAT
dmzMediuServere accesibile din exterior dar izolate intern
workMediu-ÎnaltRețele de lucru cu încredere moderată
homeÎnaltRețele de acasă unde alte gazde sunt de încredere
internalÎnaltRețele interne, similare cu acasă
trustedCel mai înaltToate 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-zones

Exemplu 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=public

Verificați schimbarea:

sudo firewall-cmd --get-default-zone

Rezultat așteptat:

public

Exemplul 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=home

Verificați:

sudo firewall-cmd --get-default-zone

Rezultat așteptat:

home

Exemplul 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=work

Verificați:

sudo firewall-cmd --get-default-zone

Rezultat așteptat:

work

Pasul 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-services

Permite 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 --permanent

Pentru a permite traficul HTTPS (port 443/TCP):

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

Pentru 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 --permanent

Aplică 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 --reload

Verifică serviciile într-o zonă

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

Exemplu de ieșire:

dhcpv6-client http https ssh

Elimină un serviciu dintr-o zonă

Pentru a elimina HTTPS din zona public:

sudo firewall-cmd --zone=public --remove-service=https --permanent
sudo firewall-cmd --reload

Pasul 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 --reload

Pentru a deschide un port UDP (de exemplu, portul 53 pentru DNS):

sudo firewall-cmd --zone=public --add-port=53/udp --permanent
sudo firewall-cmd --reload

Pentru 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 --reload

Listarea Tuturor Porturilor Deschise într-o Zonă

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

Pasul 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 --reload

Exemplul 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 --reload

Exemplul 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 --reload

Exemplul 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 --reload

Exemplul 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 --reload

Listați toate regulile bogate dintr-o zonă

sudo firewall-cmd --zone=public --list-rich-rules

Eliminaț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 --reload

Pasul 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-all

Exemplu 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" accept

Vizualizați Configurația pentru Toate Zonele

sudo firewall-cmd --list-all-zones

Vizualizați Configurația pentru o Zonă Specifică

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

Verificați Dacă un Serviciu Specific Este Permis

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

Verificați Dacă un Port Specific Este Deschis

sudo firewall-cmd --zone=public --query-port=8080/tcp

Pasul 9: Reguli Runtime vs. Permanente — Înțelegerea Diferenței

Firewalld funcționează cu două straturi de configurare distincte:

StratSteagPersistențăCaz de Utilizare
Runtime*(no flag)*Pierdut la reîncărcare/repornireTestarea regulilor temporar
Permanent--permanentSupraviețuiește reîncărcării și reporniriiConfigurații de producție

Flux de Lucru Bună Practică

  1. Testați regula la runtime mai întâi (fără --permanent) pentru a verifica că funcționează conform așteptărilor
  2. Adăugați regula permanent odată ce confirmată
  3. 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 --reload

Alternativ, 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 --reload

Pasul 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 --reload

Schimbați Zona unei Interfețe

sudo firewall-cmd --zone=public --change-interface=eth0 --permanent
sudo firewall-cmd --reload

Eliminați o Interfață dintr-o Zonă

sudo firewall-cmd --zone=internal --remove-interface=eth1 --permanent
sudo firewall-cmd --reload

Pasul 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 --reload

Redirecț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 --reload

Redirecț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 --reload

Configuraț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 --reload

Configuraț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 --reload

Depanarea 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 firewalld

Problema 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 --reload

Comanda --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 --reload

Problema 4: Verificarea Jurnalelor Firewalld

sudo journalctl -u firewalld -f

Sau verificați jurnalul de sistem pentru mesaje legate de firewall:

sudo grep -i firewall /var/log/messages

Firewalld Quick Reference Cheat Sheet

SarcinăComandă
Verificați stareasudo systemctl status firewalld
Porniți Firewalldsudo systemctl start firewalld
Opriți Firewalldsudo systemctl stop firewalld
Activați la bootsudo systemctl enable firewalld
Obțineți zona implicităsudo firewall-cmd --get-default-zone
Listați toate zonelesudo firewall-cmd --get-zones
Listați zonele activesudo firewall-cmd --get-active-zones
Setați zona implicităsudo firewall-cmd --set-default-zone=public
Adăugați un serviciusudo firewall-cmd --zone=public --add-service=http --permanent
Eliminați un serviciusudo firewall-cmd --zone=public --remove-service=http --permanent
Deschideți un portsudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
Închideți un portsudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
Listați serviciilesudo firewall-cmd --zone=public --list-services
Listați porturilesudo firewall-cmd --zone=public --list-ports
Listați toate regulilesudo firewall-cmd --list-all
Adăugați regula avansatăsudo firewall-cmd --zone=public --add-rich-rule='...' --permanent
Salvați regulile runtimesudo firewall-cmd --runtime-to-permanent
Reîncărcați Firewalldsudo 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:

  1. Permiteți întotdeauna SSH înainte de a activa firewall-ul pentru a evita să vă blocați accesul
  2. Utilizați flag-ul --permanent pentru toate regulile de producție și urmați întotdeauna cu --reload
  3. Restricționați serviciile sensibile (SSH, baze de date, panouri de administrare) la adrese IP specifice de încredere folosind reguli bogate
  4. 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ă
  5. 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.