15%

Economisește 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
22.10.2024
1 +1

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., 443 pentru HTTPS, 22 pentru SSH)
  • ProtocolTCP, 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 StareFără Stare
Urmărește starea conexiuniiDaNu
Permite traficul de retur automatDaNu — necesită reguli explicite
Suprasarcină de performanțăModeratăFoarte scăzută
Caz de utilizare tipicFirewall-uri gazdă, NGFW-uriRoutere de bază, ACL-uri cu debit ridicat
Rezistență la falsificareRidicatăScăzută
Complexitatea regulilorMai micăMai mare
Exemple de instrumenteiptables (conntrack), UFW, Windows DefenderAWS 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ă ALLOW largă plasată deasupra unei reguli DENY specifice 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 verbose

Dacă este inactiv, activați-l:

sudo ufw enable

Avertisment 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 outgoing

Aceasta 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 outgoing

Apoi 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/udp

Pentru a permite un interval de porturi (ex., FTP pasiv):

sudo ufw allow 49152:65535/tcp

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

Pentru a permite o întreagă subrețea de management:

sudo ufw allow from 10.0.0.0/8 to any port 22 proto tcp

Pasul 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.77

Blocați o întreagă subrețea (ex., un bloc geografic sau un interval ASN abuziv):

sudo ufw deny from 198.51.100.0/24

Caz 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/24

Pasul 6: Inspectați Regulile Active

sudo ufw status numbered

Indicatorul 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    Anywhere

Pentru o ieșire completă verbosă, inclusiv politicile implicite și legăturile de interfață:

sudo ufw status verbose

Pasul 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/tcp

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

Pentru a reseta complet toate regulile și a începe de la zero:

sudo ufw reset

UFW 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/tcp

Apoi aplicați-l:

sudo ufw allow NodeAPI

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

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

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

Configurarea 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 } accept

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

Configurarea 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

  1. Deschideți Windows Defender Firewall cu Securitate Avansată prin wf.msc.
  2. Selectați Reguli de Intrare sau Reguli de Ieșire în panoul din stânga.
  3. Faceți clic pe Regulă Nouă în panoul din dreapta.
  4. 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
  1. 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 ACCEPT

Paritate 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=yes

Interfaț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 lo

Limitarea 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 ssh

Aceasta 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 numbered sau 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 nmap de 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/RELATED sunt 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

ScenariuInstrument RecomandatRațiune
Server Ubuntu/Debian, set de reguli simpluUFWSintaxă lizibilă de om, persistent implicit
Server RHEL/CentOS/FedorafirewalldIntegrare nativă, modelul de zone se potrivește configurațiilor multi-NIC
Filtrare complexă sau cu performanță ridicatănftablesActualizări atomice, cadru unic pentru IPv4/IPv6/ARP
RHEL/CentOS 6 moștenireiptablesSingura opțiune pe kerneluri mai vechi
Windows ServerWindows Defender + PowerShellNativ, gestionabil prin GPO, scriptabil
VPS cPanelCSF (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/0 pe 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 tcp față de allow 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 nmap sau 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 de ufw disable && ufw enable pentru a evita eliminarea conexiunilor active în timpul actualizărilor regulilor.
  • Pe nftables și iptables, plasați întotdeauna regula de acceptare ESTABLISHED/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.

15%

Economisește 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