Firewall: filtrarea din rețea și ufw/firewalld pe server
Cum funcționează cele două niveluri de filtrare și cum configurați ufw sau firewalld fără să vă blocați.
Pe această pagină
Traficul care intră pe serverul dvs. BLACKBOX trece prin două niveluri de filtrare: filtrarea din rețea, administrată de BLACKBOX, și firewall-ul din sistemul de operare, pe care îl configurați dvs.: ufw pe Ubuntu și Debian, firewalld pe AlmaLinux și CentOS Stream. Panoul app.blackbox.md nu are setări de firewall, așa că toate comenzile de mai jos se rulează pe server, prin SSH, ca root.
Disponibil pentru: oricine are acces root prin SSH la un server BLACKBOX. Alte porturi în filtrarea din rețea: la cerere, prin suport.
Cele două niveluri de filtrare
| Nivel | Cine îl administrează | Pe un server nou | Cum îl modificați |
|---|---|---|---|
| Filtrarea din rețea | BLACKBOX | sunt permise SSH (22), HTTP (80), HTTPS (443) și ping | scrieți suportului; panoul nu are setări de firewall |
Firewall-ul din sistem (ufw sau firewalld) |
dvs. | inactiv sau neinstalat: BLACKBOX nu îl configurează la crearea serverului | cu comenzile din acest articol |
Traficul ajunge la aplicația dvs. doar dacă portul este deschis în ambele niveluri. De exemplu:
- Un site pe porturile 80 și 443: filtrarea din rețea le lasă deja să treacă. Dacă activați
ufwsaufirewalld, permiteți-le și acolo. - O aplicație pe portul 3000, 8000 sau 8080 nu este accesibilă din internet, chiar dacă o permiteți în
ufw: filtrarea din rețea o oprește. Publicați-o prin nginx pe 80/443 (Aplicații Node.js, Python și alte servicii: nginx ca reverse proxy) sau cereți suportului să deschidă portul.
Ca să deschideți alt port în filtrarea din rețea, scrieți suportului adresa IP a serverului, numărul comenzii (BBX-…), portul, protocolul (TCP sau UDP) și pentru ce vă trebuie: Cum contactați suportul BLACKBOX.
Atenție Clienții nu au consolă web sau VNC: serverul se administrează doar prin SSH. Înainte să activați sau să modificați firewall-ul, deschideți o a doua sesiune SSH și păstrați-o deschisă până verificați că o conexiune nouă reușește. Dacă ați pierdut totuși accesul, scrieți suportului: Ați pierdut accesul la server (parolă sau cheie).
Lăsați portul 22 deschis pentru BLACKBOX
Butoanele panoului (de exemplu „Resetează parola”, „Adaugă cheie SSH”, „Dezactivează login cu parolă”) și asistentul AI se conectează la server prin SSH, pe portul 22, ca root, cu cheia de administrare. Dacă permiteți portul 22 doar de la adresa dvs. IP, aceste funcții nu mai funcționează.
- Permiteți portul 22 de la orice adresă și protejați SSH cu chei, cu limitarea
ufw limit(mai jos) și cu fail2ban: Protecție împotriva încercărilor de ghicire a parolei cu fail2ban. - Nu mutați SSH pe alt port: filtrarea din rețea și panoul folosesc portul 22.
- Dacă vreți totuși să restricționați SSH pe adrese IP, întrebați întâi suportul. Detalii: Cheile BLACKBOX de pe serverul dvs..
Ubuntu și Debian: ufw
Pe Ubuntu, ufw este instalat, dar inactiv. Pe Debian poate lipsi; prima comandă de mai jos îl instalează.
Actualizați lista de pachete, instalați
ufw(pe Ubuntu, comanda de instalare doar confirmă că este deja instalat) și verificați starea. Rezultatul așteptat esteStatus: inactive.apt update apt install -y ufw ufw statusPermiteți SSH înainte de a activa firewall-ul. ufw confirmă cu „Rules updated” (sau „Rule added”, dacă este deja activ). În loc de
22/tcpputeți folosi numele profiluluiOpenSSH; folosiți apoi aceeași formă și pentru limitarea de mai jos.ufw allow 22/tcpDacă serverul găzduiește un site, permiteți HTTP și HTTPS:
ufw allow 80,443/tcpActivați firewall-ul. La întrebarea „Command may disrupt existing ssh connections. Proceed with operation (y|n)?” răspundeți
y. Confirmarea este „Firewall is active and enabled on system startup”.ufw enableVerificați regulile:
ufw status verboseRezultatul arată aproximativ așa:
Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- 22/tcp ALLOW IN Anywhere 80,443/tcp ALLOW IN Anywhere 22/tcp (v6) ALLOW IN Anywhere (v6) 80,443/tcp (v6) ALLOW IN Anywhere (v6)Fără să închideți sesiunea curentă, conectați-vă dintr-un terminal nou:
ssh root@IP_SERVER
Rândul Default arată regula implicită: tot ce intră și nu este permis explicit este blocat, iar traficul de ieșire trece.
Limitarea încercărilor pe SSH
ufw limit 22/tcpComanda înlocuiește regula allow pentru portul 22 (mesajul „Rule updated”). De acum, ufw respinge o adresă care deschide 6 sau mai multe conexiuni în 30 de secunde. Limita se aplică și panoului, și asistentului AI, care deschid o conexiune nouă la fiecare acțiune: dacă o acțiune eșuează după mai multe acțiuni făcute în grabă, așteptați 30 de secunde și reîncercați.
Ștergerea unei reguli
Afișați regulile numerotate:
ufw status numberedȘtergeți regula după numărul din prima coloană (puneți-l în locul lui
NUMĂR). ufw afișează regula pe care urmează să o șteargă și întreabă „Proceed with operation (y|n)?”: verificați-o și răspundețiy. Confirmarea este „Rule deleted”.ufw delete NUMĂR
După fiecare ștergere numerele se schimbă, așa că afișați din nou lista înainte de următoarea. Regulile pentru IPv6 apar separat, marcate (v6), și se șterg tot separat. Nu ștergeți regulile pentru portul 22.
Dacă ați greșit o regulă și mai aveți o sesiune deschisă, puteți opri complet firewall-ul („Firewall stopped and disabled on system startup”), apoi îl configurați din nou:
ufw disableAlmaLinux și CentOS Stream: firewalld
Instalați și porniți firewalld, apoi verificați starea. Rezultatul așteptat este
running. Zona implicită permite deja SSH, așa că pornirea nu vă deconectează.dnf install -y firewalld systemctl enable --now firewalld firewall-cmd --statePermiteți permanent SSH, HTTP și HTTPS, apoi reîncărcați regulile. Fiecare comandă răspunde
success. Dacă un serviciu era deja permis (de obiceissh), înainte apare avertismentulWarning: ALREADY_ENABLED: ssh; nu este o eroare.firewall-cmd --permanent --add-service=ssh --add-service=http --add-service=https firewall-cmd --reloadVerificați: în rândul
services:trebuie să aparăssh,httpșihttps.firewall-cmd --list-allFără să închideți sesiunea curentă, conectați-vă dintr-un terminal nou, ca la ufw.
O regulă adăugată cu --permanent intră în vigoare după firewall-cmd --reload. Fără --permanent, regula se aplică imediat, dar se pierde la reîncărcare sau la repornire.
Alte operații uzuale (rulați doar linia de care aveți nevoie, apoi reîncărcați):
# deschide un port
firewall-cmd --permanent --add-port=8080/tcp
# închide un port deschis anterior
firewall-cmd --permanent --remove-port=8080/tcp
# scoate un serviciu din listă
firewall-cmd --permanent --remove-service=http
# aplică modificările
firewall-cmd --reloadfirewalld nu are un echivalent simplu al ufw limit. Împotriva încercărilor repetate de autentificare pe SSH folosiți fail2ban.
Porturile sensibile: doar de la adresa dvs.
Bazele de date (3306 pentru MariaDB/MySQL, 5432 pentru PostgreSQL) și panourile de administrare care ascultă pe porturi proprii nu trebuie deschise pentru tot internetul.
- Cel mai sigur este să nu le deschideți deloc: lăsați serviciul să asculte pe
127.0.0.1și conectați-vă printr-un tunel SSH (Baze de date: MariaDB/MySQL și PostgreSQL). - Dacă portul trebuie să fie accesibil din exterior, cereți suportului să-l deschidă în filtrarea din rețea: implicit, aceste porturi sunt închise acolo.
- Aflați-vă adresa IP cu Instrumentul „Adresa ta IP” și permiteți portul în firewall-ul din sistem doar de la această adresă.
Ubuntu și Debian:
ufw allow from IP_DVS to any port 3306 proto tcpAlmaLinux și CentOS Stream:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="IP_DVS" port port="3306" protocol="tcp" accept'
firewall-cmd --reloadDacă adresa dvs. de internet este dinamică, actualizați regula când se schimbă. O pagină de administrare servită pe 80/443 (de exemplu /phpmyadmin) se restricționează în serverul web, nu în firewall.
Docker ocolește ufw
Când publicați portul unui container (-p 8080:80 sau ports: în Docker Compose), Docker scrie propriile reguli iptables, care se aplică înaintea regulilor ufw: ufw status nu le arată, iar o regulă deny din ufw nu le închide. Filtrarea din rețea oprește în continuare porturile în afară de 22, 80 și 443, dar un container publicat pe 80/443 sau pe un port deschis la cererea dvs. este accesibil din internet indiferent de ufw.
Publicați containerul doar pe
127.0.0.1și expuneți-l prin nginx pe 80/443:docker run -d -p 127.0.0.1:8080:80 nginxAcelași lucru în Docker Compose:
services: app: ports: - "127.0.0.1:8080:80"Pentru filtrare avansată, adăugați reguli în lanțul
DOCKER-USER, după documentația Docker despre iptables.
Instalarea și celelalte setări: Instalarea Docker și Docker Compose.
Probleme frecvente
| Ce observați | Cauza probabilă | Ce faceți |
|---|---|---|
După activarea ufw, conexiunile SSH noi dau Connection timed out |
portul 22 nu a fost permis | din sesiunea rămasă deschisă permiteți portul 22 (pasul 2 de la ufw). Fără sesiune deschisă, scrieți suportului: „Repornește” nu ajută, ufw rămâne activ după repornire |
| Site-ul nu se mai deschide după activarea firewall-ului | 80 și 443 nu sunt permise în firewall-ul din sistem | permiteți HTTP și HTTPS (pasul 3 de la ufw sau pasul 2 de la firewalld). Alte cauze: Site-ul nu se deschide |
| Aplicația pe 3000 sau 8080 nu răspunde din exterior, deși ufw o permite | filtrarea din rețea oprește portul | publicați aplicația prin nginx pe 80/443 sau cereți suportului deschiderea portului |
Butoanele panoului dau reset_failed, ssh_key_push_failed sau „Nu s-a putut schimba autentificarea prin parolă.” după o schimbare de firewall |
portul 22 este permis doar de la anumite adrese sau limita ufw limit a fost atinsă |
permiteți portul 22 de la orice adresă; după limitare, așteptați 30 de secunde și reîncercați |
| Certificatul Let's Encrypt nu se emite sau nu se reînnoiește | portul 80 este închis în firewall-ul din sistem | permiteți portul 80: validarea Let's Encrypt trece prin el (Server web cu HTTPS: nginx sau Apache și Let's Encrypt) |
Întrebări frecvente
Pot deschide singur un port în filtrarea din rețea? Nu. Panoul nu are setări de firewall, iar filtrarea din rețea o modifică echipa BLACKBOX. Scrieți suportului portul, protocolul și adresa IP a serverului.
Panoul îmi arată dacă firewall-ul este activ? Nu. Pagina „Monitorizare” arată încărcarea serverelor care au serviciul Monitoring (CPU, RAM, disc, încărcare, procese), nu starea firewall-ului: Pagina „Monitorizare”. Starea o verificați pe server, cu comenzile de verificare de mai sus.
Serverul mai răspunde la ping după ce activez firewall-ul? Da. ufw și firewalld permit implicit ping, iar filtrarea din rețea îl lasă să treacă.
Trebuie să permit traficul de ieșire? Nu, ufw și firewalld lasă implicit să iasă tot traficul. Dacă îl restricționați, păstrați cel puțin HTTP (80), HTTPS (443), DNS (53) și NTP (123/UDP): de ele depind actualizările de sistem, ora exactă a serverului, Let's Encrypt și agentul serviciului Monitoring (Serviciul Monitoring: agentul instalat pe server).
Am un plan „VPS hosting” cu panou de control. Activez ufw?
Un panou de control pentru găzduire poate avea propriul firewall. Înainte să activați ufw sau firewalld, verificați documentația panoului instalat sau întrebați suportul.
Am un server dedicat. Se aplică la fel? Comenzile pentru ufw și firewalld sunt aceleași. Ce porturi sunt deschise în rețea pentru serverul dedicat aflați de la suport.