Cum să Configurați Regulile Firewall: Un Ghid Tehnic Complet
O regulă de firewall este o intrare de politică care instruiește motorul de firewall să permită, să refuze sau să înregistreze traficul de rețea pe baza unor criterii definite, cum ar fi adresa IP sursă/destinație, numărul portului, protocolul de transport și direcția traficului. Regulile de firewall configurate corect formează stratul principal de aplicare între infrastructura dvs. și internetul public, făcându-le cel mai important control de securitate de pe orice server sau dispozitiv de rețea.
Acest ghid acoperă arhitectura regulilor de firewall, UFW pe Linux, firewalld, Windows Defender Firewall, nftables, și practicile operaționale care separă un mediu întărit de unul configurat greșit.
Ce Controlează de Fapt Regulile de Firewall
Fiecare regulă dintr-un set de reguli de firewall este evaluată în raport cu cinci atribute de bază ale pachetelor, denumite în mod obișnuit 5-tuple:
- Adresa IP sursă — gazda sau subrețeaua de origine (ex.,
192.168.1.0/24) - Adresa IP destinație — gazda sau intervalul țintă
- Portul sursă — portul efemer de pe partea inițiatoare
- Portul destinație — portul de serviciu de pe partea receptoare (ex.,
443pentru HTTPS,22pentru SSH) - Protocol —
TCP,UDP,ICMP, sau numărul protocolului
Dincolo de 5-tuple, firewall-urile cu stare urmăresc și starea conexiunii (NEW, ESTABLISHED, RELATED, INVALID), ceea ce le permite să permită traficul de retur pentru conexiunile de ieșire fără a scrie reguli explicite de intrare pentru fiecare răspuns.
Firewall-uri cu Stare vs. Fără Stare
| Caracteristică | Cu Stare | Fără Stare |
|---|---|---|
| Urmărește starea conexiunii | Da | Nu |
| Permite traficul de retur automat | Da | Nu — necesită reguli explicite |
| Suprasarcină de performanță | Moderată | Foarte scăzută |
| Caz de utilizare tipic | Firewall-uri gazdă, NGFW-uri | Routere de bază, ACL-uri cu debit ridicat |
| Rezistență la falsificare | Ridicată | Scăzută |
| Complexitatea regulilor | Mai mică | Mai mare |
| Exemple de instrumente | iptables (conntrack), UFW, Windows Defender | AWS NACL, ACL de bază pe Cisco IOS |
Pentru aproape toate implementările de servere — inclusiv VPS Hosting și Servere Dedicate — un firewall bazat pe gazdă cu stare este alegerea implicită corectă.
Procesarea Regulilor de Firewall: Problema Ordinii
Una dintre cele mai frecvente surse de configurare greșită este înțelegerea eronată a ordinii regulilor. Majoritatea firewall-urilor evaluează regulile de sus în jos și aplică prima regulă care se potrivește, apoi se opresc. Aceasta înseamnă că:
- O regulă
ALLOWlargă plasată deasupra unei reguliDENYspecifice o va suprascrie în mod silențios. - Un
DENY ALLîn partea de sus a unui lanț blochează totul, indiferent de ce urmează. - Regulile duplicate sau umbrite risipesc cicluri de procesare și creează confuzie la audit.
Cea mai bună practică: Plasați întotdeauna regulile specifice înaintea celor generale. Plasați regulile explicite DENY pentru sursele cunoscute ca rău intenționate în partea de sus, urmate de reguli ALLOW specifice pentru serviciile de încredere, și terminați fiecare lanț cu o politică implicită DENY.
Configurarea Regulilor de Firewall pe Linux cu UFW
UFW (Uncomplicated Firewall) este o interfață pentru iptables și nftables pe sistemele bazate pe Debian/Ubuntu. Abstractizează sintaxa lanțurilor de nivel scăzut în comenzi lizibile de om, păstrând în același timp controlul complet asupra filtrării porturilor, protocoalelor, IP-urilor și interfețelor.
Pasul 1: Instalați și Activați UFW
UFW este preinstalat pe Ubuntu. Verificați starea sa înainte de activare:
sudo ufw status verboseDacă este inactiv, activați-l:
sudo ufw enableAvertisment critic: Dacă sunteți conectat prin SSH și nu ați permis încă portul 22, activarea UFW vă va bloca accesul. Permiteți întotdeauna SSH înainte de a activa firewall-ul pe un server la distanță.
Pasul 2: Setați Politicile Implicite
Politicile implicite definesc ce se întâmplă cu traficul care nu se potrivește cu nicio regulă explicită. Linia de bază securizată este:
sudo ufw default deny incoming
sudo ufw default allow outgoingAceasta blochează toate conexiunile de intrare nesolicitate, permițând în același timp tot traficul de ieșire. Dacă politica dvs. de securitate necesită filtrarea traficului de ieșire (ex., prevenirea exfiltrării datelor sau a callback-urilor C2), modificați valoarea implicită pentru traficul de ieșire:
sudo ufw default deny outgoingApoi permiteți explicit doar destinațiile de ieșire de care are nevoie aplicația dvs.
Pasul 3: Permiteți Servicii și Porturi Specifice
UFW acceptă nume de servicii din /etc/services sau numere de port explicite:
# Allow SSH by service name
sudo ufw allow ssh
# Allow HTTP and HTTPS
sudo ufw allow http
sudo ufw allow https
# Allow a custom application port
sudo ufw allow 8080/tcp
# Allow a UDP service (e.g., DNS resolver)
sudo ufw allow 53/udpPentru a permite un interval de porturi (ex., FTP pasiv):
sudo ufw allow 49152:65535/tcpPasul 4: Restricționați Accesul la Adrese IP Sursă Specifice
Expunerea porturilor administrative la 0.0.0.0/0 este o cauză principală a compromiterii prin forță brută. Blocați SSH la un IP de management cunoscut:
sudo ufw allow from 203.0.113.50 to any port 22 proto tcpPentru a permite o întreagă subrețea de management:
sudo ufw allow from 10.0.0.0/8 to any port 22 proto tcpPasul 5: Refuzați Traficul de la IP-uri sau Subrețele Specifice
Blocați un IP cunoscut ca rău intenționat:
sudo ufw deny from 198.51.100.77Blocați o întreagă subrețea (ex., un bloc geografic sau un interval ASN abuziv):
sudo ufw deny from 198.51.100.0/24Caz limită: Regulile UFW deny trimit un răspuns TCP RST sau ICMP port-unreachable, care confirmă existența gazdei. Utilizați reject pentru a elimina silențios pachetele în schimb:
sudo ufw reject from 198.51.100.0/24Pasul 6: Inspectați Regulile Active
sudo ufw status numberedIndicatorul numbered atribuie un index fiecărei reguli, care este necesar pentru ștergerea țintită:
[ 1] 22/tcp ALLOW IN 203.0.113.50
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 443/tcp ALLOW IN AnywherePentru o ieșire completă verbosă, inclusiv politicile implicite și legăturile de interfață:
sudo ufw status verbosePasul 7: Ștergeți Reguli
Ștergeți după numărul regulii (preferat — evită ambiguitatea):
sudo ufw delete 3Ștergeți după specificația regulii:
sudo ufw delete allow 8080/tcpPasul 8: Reîncărcați și Persistați Regulile
Regulile UFW persistă automat după reporniri. După modificări în masă, reîncărcați fără a elimina conexiunile existente:
sudo ufw reloadPentru a reseta complet toate regulile și a începe de la zero:
sudo ufw resetUFW Avansat: Profile de Aplicații
UFW acceptă profile de aplicații cu nume stocate în /etc/ufw/applications.d/. Aceasta vă permite să definiți reguli cu mai multe porturi sub un singur nume:
sudo ufw app list
sudo ufw allow 'Nginx Full'
sudo ufw app info 'Nginx Full'Crearea unui profil personalizat pentru un API Node.js:
[NodeAPI]
title=Node.js API Server
description=Custom Node.js application
ports=3000,3001/tcpApoi aplicați-l:
sudo ufw allow NodeAPIConfigurarea Regulilor de Firewall cu firewalld (RHEL/CentOS/Fedora)
firewalld utilizează un model bazat pe zone în loc de un set de reguli plat. Fiecare interfață de rețea este atribuită unei zone (ex., public, internal, dmz), iar regulile sunt aplicate per zonă. Aceasta este mai flexibilă din punct de vedere arhitectural pentru serverele cu mai multe interfețe.
Operațiuni de Bază firewalld
# Check status
sudo firewall-cmd --state
# List all active zones and their interfaces
sudo firewall-cmd --get-active-zones
# List rules in the public zone
sudo firewall-cmd --zone=public --list-allPermiteți și Eliminați Servicii
# Allow HTTPS permanently
sudo firewall-cmd --zone=public --add-service=https --permanent
# Allow a custom port
sudo firewall-cmd --zone=public --add-port=8443/tcp --permanent
# Remove a service
sudo firewall-cmd --zone=public --remove-service=http --permanent
# Reload to apply permanent changes
sudo firewall-cmd --reloadReguli Complexe pentru Politici Specifice IP
Regulile complexe firewalld oferă granularitatea iptables cu o sintaxă mai lizibilă:
# Allow SSH only from a specific IP
sudo firewall-cmd --zone=public
--add-rich-rule='rule family="ipv4" source address="203.0.113.50" service name="ssh" accept'
--permanent
# Block all traffic from a subnet
sudo firewall-cmd --zone=public
--add-rich-rule='rule family="ipv4" source address="198.51.100.0/24" drop'
--permanent
sudo firewall-cmd --reloadConfigurarea Regulilor de Firewall cu nftables
nftables este înlocuitorul modern pentru iptables, oferind un cadru unificat pentru filtrarea IPv4, IPv6, ARP și bridge cu performanțe semnificativ mai bune și înlocuire atomică a regulilor.
Set de Reguli de Bază nftables
# Flush existing ruleset
sudo nft flush ruleset
# Create a basic filtering table
sudo nft add table inet filter
# Add input, forward, and output chains
sudo nft add chain inet filter input { type filter hook input priority 0 ; policy drop ; }
sudo nft add chain inet filter forward { type filter hook forward priority 0 ; policy drop ; }
sudo nft add chain inet filter output { type filter hook output priority 0 ; policy accept ; }
# Allow established and related connections
sudo nft add rule inet filter input ct state established,related accept
# Allow loopback
sudo nft add rule inet filter input iif lo accept
# Allow SSH from a specific IP
sudo nft add rule inet filter input ip saddr 203.0.113.50 tcp dport 22 accept
# Allow HTTP and HTTPS from anywhere
sudo nft add rule inet filter input tcp dport { 80, 443 } acceptPentru a face setul de reguli persistent, salvați-l în fișierul de configurare implicit:
sudo nft list ruleset > /etc/nftables.conf
sudo systemctl enable nftablesConfigurarea Regulilor de Firewall pe Windows
Windows Defender Firewall cu Securitate Avansată oferă atât interfețe GUI, cât și interfețe de linie de comandă (netsh, PowerShell) pentru gestionarea regulilor.
Utilizarea GUI
- Deschideți Windows Defender Firewall cu Securitate Avansată prin
wf.msc. - Selectați Reguli de Intrare sau Reguli de Ieșire în panoul din stânga.
- Faceți clic pe Regulă Nouă în panoul din dreapta.
- Alegeți tipul de regulă:
- Port — filtrați după numărul portului TCP/UDP
- Program — filtrați după calea executabilului
- Predefinit — utilizați o definiție de serviciu Windows încorporată
- Personalizat — control complet asupra tuturor parametrilor
- Specificați portul sau programul, alegeți Permite sau Blochează, selectați profilurile aplicabile (Domeniu, Privat, Public) și denumiți regula.
Utilizarea PowerShell (Recomandat pentru Automatizare)
# Allow inbound HTTPS
New-NetFirewallRule -DisplayName "Allow HTTPS Inbound" `
-Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow
# Allow inbound SSH (Windows OpenSSH)
New-NetFirewallRule -DisplayName "Allow SSH Inbound" `
-Direction Inbound -Protocol TCP -LocalPort 22 -Action Allow `
-RemoteAddress 203.0.113.50
# Block inbound traffic from a specific IP
New-NetFirewallRule -DisplayName "Block Malicious IP" `
-Direction Inbound -RemoteAddress 198.51.100.77 -Action Block
# View all inbound rules
Get-NetFirewallRule -Direction Inbound | Select-Object DisplayName, Enabled, Action
# Remove a rule by name
Remove-NetFirewallRule -DisplayName "Allow HTTPS Inbound"Utilizarea netsh (Moștenire dar Larg Acceptat)
:: Allow inbound port 443
netsh advfirewall firewall add rule name="Allow HTTPS" protocol=TCP dir=in localport=443 action=allow
:: Block a specific IP
netsh advfirewall firewall add rule name="Block IP" dir=in remoteip=198.51.100.77 action=block
:: Delete a rule
netsh advfirewall firewall delete rule name="Allow HTTPS"Capcane Critice și Cazuri Limită ale Regulilor de Firewall
Permisiunea Implicită pentru Traficul ESTABLISHED
Pe firewall-urile cu stare, neacordarea explicită a permisiunii pentru conexiunile ESTABLISHED și RELATED în lanțul de intrare va întrerupe toate sesiunile inițiate de ieșire (ex., apt update, curl, căutări DNS) chiar și atunci când lanțul de ieșire este setat la ACCEPT. Aceasta este cea mai frecventă configurare greșită pe configurările brute iptables sau nftables.
# This rule MUST appear before any DROP rules in the input chain
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPTParitate IPv6
Mulți administratori configurează regulile IPv4 cu meticulozitate și uită complet de IPv6. Dacă serverul dvs. are o adresă IPv6 și suportul IPv6 al UFW nu este activat, un atacator poate ocoli toate regulile IPv4 conectându-se prin ::. Verificați că /etc/default/ufw conține:
IPV6=yesInterfața Loopback
Permiteți întotdeauna explicit traficul pe interfața loopback (lo). Multe servicii locale (baze de date, cozi de mesaje, API-uri interne) comunică prin 127.0.0.1 sau ::1. Blocarea loopback-ului întrerupe comunicarea inter-proces în mod silențios.
sudo ufw allow in on lo
sudo ufw allow out on loLimitarea Ratei pentru Prevenirea Forței Brute
UFW acceptă limitarea ratei conexiunilor în mod nativ, ceea ce este esențial pentru SSH și alte servicii de autentificare:
sudo ufw limit sshAceasta permite un maxim de 6 tentative de conexiune la 30 de secunde de la un singur IP înainte de a declanșa un bloc temporar automat — o alternativă ușoară la fail2ban pentru implementările de bază.
Traficul ICMP și de Diagnosticare
Blocarea tuturor ICMP este o practică frecventă, dar contraproductivă. Aceasta întrerupe ping, traceroute, descoperirea MTU de cale și unele protocoale de rutare. Abordarea corectă este să permiteți tipuri specifice de ICMP:
- Tipul 0 (Echo Reply) și Tipul 8 (Echo Request) — pentru
ping - Tipul 3 (Destination Unreachable) — pentru descoperirea MTU de cale
- Tipul 11 (Time Exceeded) — pentru
traceroute
Blocați Tipul 17 (Address Mask Request) și Tipul 18 (Address Mask Reply), care nu au nicio utilizare modernă legitimă.
Regulile de Firewall și Mediile de Hosting
Strategia corectă de firewall depinde în mare măsură de nivelul infrastructurii dvs.
Pe Shared Web Hosting, firewall-ul este gestionat la nivelul platformei de către furnizor. Chiriașii configurează de obicei controale de acces la nivelul aplicației, mai degrabă decât filtre de pachete la nivelul kernelului.
Pe un VPS cu cPanel, cPanel/WHM include ConfigServer Security & Firewall (CSF), care învelește iptables cu o interfață de nivel înalt, detectare automată a forței brute și suport pentru port knocking. CSF este soluția standard de firewall pentru mediile cPanel și ar trebui utilizată în preferință față de UFW brut pe acele sisteme.
Pe VPS Hosting neadministrat sau Servere Dedicate, aveți control complet asupra firewall-ului kernelului. Acesta este locul unde UFW, firewalld și nftables sunt instrumentele adecvate. Linia de bază de întărire ar trebui să includă:
- Politică implicită de refuzare a traficului de intrare
- SSH restricționat la IP-uri de management cunoscute sau un gateway VPN
- Toate porturile neesențiale închise
- Limitarea ratei pe porturile de autentificare
- Înregistrarea activată pentru traficul refuzat
Dacă rulați sarcini de lucru GPU sau servicii de inferență ML pe GPU Hosting, acordați o atenție deosebită porturilor expuse de notebook-urile Jupyter, TensorBoard și API-urile de servire a modelelor — acestea sunt frecvent vizate de boți de criptomining care scanează porturile cu numere mari deschise.
Lista de Verificare pentru Auditul și Întreținerea Regulilor de Firewall
Auditurile regulate ale regulilor sunt la fel de importante ca și configurarea inițială. Regulile se acumulează în timp și devin depășite, creând o suprafață de atac inutilă.
Sarcini de audit de efectuat trimestrial:
- Rulați
sudo ufw status numberedsau echivalentul și revizuiți fiecare regulă în raport cu inventarul curent al serviciilor - Eliminați regulile pentru serviciile dezafectate, adresele IP vechi și excepțiile temporare care nu au fost niciodată curățate
- Verificați că politicile implicite sunt în continuare
deny incoming - Verificați că regulile IPv6 oglindesc regulile IPv4
- Confirmați că înregistrarea este activată și că jurnalele de trafic refuzat sunt ingerate de SIEM-ul dvs. sau de agregatorul de jurnale
- Testați regulile cu
nmapde pe o gazdă externă pentru a verifica că suprafața de atac corespunde intenției dvs.
# Scan your own server from an external host to verify exposed ports
nmap -sS -sV -p 1-65535 --open YOUR_SERVER_IP- Validați că regulile
ESTABLISHED/RELATEDsunt prezente și ordonate corect - Revizuiți regulile de limitare a ratei și ajustați pragurile pe baza tiparelor de trafic observate
Matrice de Decizie: Alegerea Instrumentului de Firewall Potrivit
| Scenariu | Instrument Recomandat | Rațiune |
|---|---|---|
| Server Ubuntu/Debian, set de reguli simplu | UFW | Sintaxă lizibilă de om, persistent implicit |
| Server RHEL/CentOS/Fedora | firewalld | Integrare nativă, modelul de zone se potrivește configurațiilor multi-NIC |
| Filtrare complexă sau cu performanță ridicată | nftables | Actualizări atomice, cadru unic pentru IPv4/IPv6/ARP |
| RHEL/CentOS 6 moștenire | iptables | Singura opțiune pe kerneluri mai vechi |
| Windows Server | Windows Defender + PowerShell | Nativ, gestionabil prin GPO, scriptabil |
| VPS cPanel | CSF (ConfigServer Firewall) | Construit special pentru cPanel, include daemonul LFD |
| VM cloud (AWS/GCP/Azure) | Grupuri de securitate cloud + firewall gazdă | Apărare în profunzime; SG-urile cloud sunt cu stare și gratuite |
Concluzii Practice Cheie
- Setați refuzarea implicită a traficului de intrare înainte de a scrie orice regulă de permisiune. Aceasta asigură că orice regulă pe care uitați să o scrieți rezultă într-o conexiune blocată, nu una deschisă.
- Nu expuneți niciodată SSH la
0.0.0.0/0pe un server de producție. Restricționați-l la un IP de management, o subrețea VPN sau utilizați port knocking. - Scrieți reguli de permisiune cât mai specifice posibil. Preferați
from 203.0.113.50 to any port 22 proto tcpfață deallow 22. - Oglindiți regulile IPv4 în IPv6. Un firewall care filtrează doar IPv4 este pe jumătate firewall.
- Activați limitarea ratei conexiunilor pe toate porturile de autentificare ca măsură de bază împotriva forței brute.
- Înregistrați traficul refuzat. Eliminările silențioase fără înregistrare fac răspunsul la incidente aproape imposibil.
- Auditați regulile conform unui program. Regulile depășite sunt o răspundere, nu o plasă de siguranță.
- Testați din exterior. Utilizați
nmapsau un scanner de porturi extern după fiecare modificare semnificativă a regulilor pentru a confirma suprafața de atac efectivă. - Utilizați
ufw reloadîn loc deufw disable && ufw enablepentru a evita eliminarea conexiunilor active în timpul actualizărilor regulilor. - Pe
nftablesșiiptables, plasați întotdeauna regula de acceptareESTABLISHED/RELATEDîn partea de sus a lanțului de intrare pentru a evita întreruperea sesiunilor inițiate de ieșire.
Întrebări Frecvente
Care este diferența dintre o regulă de firewall și un grup de securitate în mediile cloud?
Un grup de securitate (AWS, GCP, Azure) este un filtru de pachete cu stare, gestionat de cloud, aplicat la nivelul hypervisor-ului înainte ca traficul să ajungă la VM-ul dvs. O regulă de firewall bazată pe gazdă (UFW, firewalld) rulează în interiorul kernelului OS. Ambele ar trebui utilizate simultan pentru apărare în profunzime — grupul de securitate cloud ca perimetru exterior și firewall-ul gazdei ca strat de aplicare interior.
De ce UFW arată o regulă ca activă, dar traficul este în continuare blocat?
Cea mai frecventă cauză este ordinea regulilor. O regulă DENY mai devreme în lanț se potrivește înainte de regula dvs. ALLOW. Rulați sudo ufw status numbered și verificați ordinea. De asemenea, verificați că există reguli IPv6 dacă clientul se conectează prin IPv6 și confirmați că interfața corectă este vizată dacă serverul are mai multe interfețe.
Ar trebui să blochez complet ICMP pentru securitate?
Nu. Blocarea tuturor ICMP întrerupe descoperirea MTU de cale, ceea ce face ca sesiunile TCP să se blocheze pe rețelele cu MTU-uri non-standard. De asemenea, întrerupe traceroute și face diagnosticarea rețelei semnificativ mai dificilă. Blocați doar tipurile ICMP fără utilizare operațională legitimă (tipurile 17 și 18). Permiteți echo request/reply, destination unreachable și time exceeded.
Ce se întâmplă cu conexiunile SSH active când reîncarc UFW?
sudo ufw reload reîncarcă setul de reguli fără a elimina intrările de stare conntrack existente. Sesiunile SSH active rămân conectate deoarece tabelul de urmărire a conexiunilor kernelului păstrează în continuare starea lor ESTABLISHED. Doar sudo ufw disable urmat de sudo ufw enable ar elimina starea și ar putea întrerupe conexiunile active.
Cum previn pierderea regulilor de firewall după o repornire a sistemului?
UFW persistă regulile automat după reporniri prin fișierele de configurare /etc/ufw/. Pentru firewalld, utilizați indicatorul --permanent pe fiecare regulă și rulați sudo firewall-cmd --reload. Pentru nftables brut, salvați setul de reguli cu sudo nft list ruleset > /etc/nftables.conf și asigurați-vă că serviciul systemd nftables este activat. Pentru iptables, utilizați iptables-save > /etc/iptables/rules.v4 și instalați pachetul iptables-persistent.
