xServere.NET · Suport online (+40) 725.903.503 [email protected]

xServere Insights

Firewall

Firewall pe FreeBSD: configurare PF pentru un server web cu acces SSH restrâns

Firewall pe FreeBSD: configurare PF pentru un server web cu acces SSH restrâns
Toate articolele

PF poate controla accesul la serviciile FreeBSD. Exemplul explică validarea, activarea și limitele unei politici minime pentru un server web.

Actualizat 27.10.2026

FreeBSD oferă mai multe soluții de filtrare, inclusiv PF și IPFW. Pentru un server web simplu, PF permite o politică explicită: conexiunile de intrare sunt refuzate implicit, serviciile publice sunt permise, iar administrarea este restrânsă. FreeBSD este un sistem distinct de Linux; comenzile nftables sau firewalld nu sunt tutoriale PF.

1. Stabilește arhitectura și accesul de recuperare

Exemplul se adresează unei gazde FreeBSD simple, cu adresare de rețea pregătită și fără NAT, bridge, rutare pentru alte sisteme ori jails care cer politici suplimentare. Nu îl aplica mecanic pe un router sau pe o instalare care are deja reguli complexe.

Confirmă consola furnizorului și păstrează sesiunea administrativă actuală. Notează interfața externă, adresa administratorului și portul SSH. Pentru identificare poți folosi, cu drepturile potrivite:

freebsd-version
ifconfig
sockstat -4 -6 -l
pfctl -s info

Dacă PF este deja activ, salvează fișierul de configurare și inspectează regulile și tabelele înainte de orice înlocuire. Ieșirea unei liste de reguli nu este întotdeauna o copie completă a configurației necesare recuperării.

2. Pregătește regulile pentru sistemul tău

Pe o instalare nouă, pregătește /etc/pf.conf. Înlocuiește vtnet0 cu interfața reală și adresa demonstrativă cu IP-ul administrativ stabil:

ext_if = "vtnet0"
admin_v4 = "203.0.113.10"

set skip on lo0

block in all
pass out all keep state

pass in on $ext_if inet proto tcp from $admin_v4 to ($ext_if) port 22 flags S/SA keep state
pass in on $ext_if proto tcp from any to ($ext_if) port { 80, 443 } flags S/SA keep state
pass in on $ext_if inet proto icmp all keep state
pass in on $ext_if inet6 proto icmp6 all keep state

Regula SSH este numai pentru IPv4; administrarea prin IPv6 necesită propria regulă cu sursa corectă. HTTP și HTTPS prin TCP sunt permise către adresele interfeței. HTTP/3 prin UDP 443 nu este inclus. Adaugă alte protocoale numai după inventariere.

ICMP și ICMPv6 sunt permise în acest exemplu pentru funcționarea și diagnosticarea rețelei. Configurațiile care depind de DHCP sau alte servicii de infrastructură necesită reguli suplimentare. Nu bloca integral ICMPv6 fără analiza impactului.

3. Înțelege ordinea regulilor

În filtrarea PF, ultima regulă potrivită decide în mod obișnuit rezultatul, iar quick poate opri evaluarea. De aceea, regulile de permitere urmează blocării generale. Stările existente sunt evaluate separat și pot continua să permită trafic după modificarea politicii.

PF din FreeBSD a evoluat diferit față de PF din OpenBSD. Verifică manualele versiunii FreeBSD instalate; un exemplu copiat dintr-o documentație OpenBSD recentă poate folosi funcții sau sintaxă diferite.

4. Validează înainte de activare

pfctl -nf /etc/pf.conf

Comanda verifică fișierul fără să îl încarce. O validare reușită nu confirmă că IP-ul administratorului ori interfața sunt corecte. Pregătește fișierul de revenire și procedura din consolă înainte de aplicarea politicii.

5. Activează controlat și verifică sesiuni noi

Pentru primul test pe o instalare unde PF nu este activ, din consola de recuperare sau cu ea disponibilă, poți folosi:

service pf onestart
pfctl -sr
pfctl -ss

onestart permite pornirea fără să configurezi încă activarea la boot. Dacă serviciul este deja activ, încărcarea unei configurații revizuite se poate face prin:

pfctl -f /etc/pf.conf

Testează imediat o conexiune SSH nouă și site-ul din exterior. Verifică separat IPv4 și IPv6. Sesiunea SSH deschisă înainte de modificare nu dovedește că autentificările noi sunt permise.

După teste, configurează persistența:

sysrc pf_enable="YES"

La o eroare, revino din consolă la fișierul verificat anterior și reîncarcă-l. pfctl -d dezactivează complet filtrarea și nu trebuie folosit ca soluție obișnuită de depanare.

6. Adaugă limite numai după măsurare

PF oferă opțiuni precum max-src-conn și max-src-conn-rate pentru anumite limite TCP. Ele nu numără cererile HTTP și pot afecta utilizatori care împart aceeași adresă. În spatele unui CDN, o limită aplicată adresei proxy-ului poate grupa mulți clienți.

Nu introduce valori universale pentru toate serviciile și nu mări limitele tabelei de stări fără evaluarea memoriei și a cauzei încărcării. Pentru Layer 7, folosește și mecanismele proxy-ului sau aplicației.

7. Corelează firewall-ul cu protecția rețelei

PF poate filtra la gazdă, dar nu recuperează o legătură deja saturată în amonte. Pentru o instalare FreeBSD discutată cu XSERVERE, confirmă compatibilitatea mediului și protecția de rețea disponibilă. Păstrează configurația, testele și accesul de recuperare în documentația serverului.

Surse

  • FreeBSD Handbook — Firewalls — https://docs.freebsd.org/en/books/handbook/firewalls/
  • FreeBSD — pf.conf(5) — https://man.freebsd.org/cgi/man.cgi?query=pf.conf&sektion=5
  • FreeBSD — pfctl(8) — https://man.freebsd.org/cgi/man.cgi?query=pfctl&sektion=8

Ți-a fost util acest articol?

Distribuie X LinkedIn Facebook