Ce servicii rulează pe VPS-ul dumneavoastră și ce este accesibil din exterior?
Orice program care acceptă conexiuni ascultă pe un port: SSH pe 22, un server web pe 80 și 443, MariaDB pe 3306. Fiecare port accesibil din exterior este o ușă către serverul dumneavoastră. Un site web are nevoie, de obicei, doar de porturile 22, 80 și 443 din exterior. Aici aflați cum vedeți ce ascultă, pe ce adresă, și cum verificați ce vede restul internetului.
Verificați ce ascultă
Rulați pe VPS-ul dumneavoastră:
sudo ss -tulpn
Opțiunile înseamnă: TCP (-t), UDP (-u), doar cele care ascultă (-l), ce program (-p) și numere în loc de nume (-n). Un exemplu:
tcp LISTEN 0.0.0.0:22 users:(("sshd",...))
tcp LISTEN 0.0.0.0:443 users:(("nginx",...))
tcp LISTEN 127.0.0.1:3306 users:(("mariadbd",...))
tcp LISTEN 0.0.0.0:6379 users:(("redis-server",...))
tcp LISTEN [::]:22 users:(("sshd",...))
Importantă este coloana Local Address, adresa pe care ascultă programul:
| Adresă | Semnificație |
|---|---|
0.0.0.0 | Toate adresele IPv4, deci și adresa dumneavoastră publică: accesibil din exterior, cu excepția cazului în care un firewall îl blochează |
[::] | Toate adresele IPv6: același lucru pentru IPv6 |
127.0.0.1 sau [::1] | Doar serverul însuși (loopback): niciodată accesibil din exterior |
127.0.0.53 sau 127.0.0.54 | Tot loopback: asistentul DNS local al systemd-resolved |
În exemplu, MariaDB este în regulă: doar programele de pe server pot ajunge la ea. Redis ascultă pe toate adresele, iar aceasta este exact greșeala despre care este vorba.
Închideți accesul în serviciul însuși
O bază de date, un cache sau o interfață de administrare aproape niciodată nu trebuie să fie accesibile din exterior. Cel mai bun prim pas este ca serviciul să asculte doar pe loopback. Pe Debian și Ubuntu:
| Program | Setare | Fișier |
|---|---|---|
| MariaDB sau MySQL | bind-address = 127.0.0.1 | /etc/mysql/mariadb.conf.d/50-server.cnf |
| PostgreSQL | listen_addresses = 'localhost' | /etc/postgresql/<versiune>/main/postgresql.conf |
| Redis | bind 127.0.0.1 -::1 și protected-mode yes | /etc/redis/redis.conf |
Reporniți apoi serviciul (consultați Gestionarea serviciilor cu systemctl pe VPS-ul dumneavoastră) și verificați din nou cu ss -tulpn. Dacă doriți să accesați baza de date de pe laptopul dumneavoastră, folosiți un tunel SSH în locul unui port deschis, consultați Un fișier SSH config: autentificare cu un nume scurt.
Firewall-ul ca al doilea nivel
Un firewall blochează ceea ce, din greșeală, ascultă totuși pe toate adresele. Cum configurați ufw aflați în Un firewall cu ufw (sau nftables). Nu vă bazați pe un singur nivel: un firewall poate fi oprit sau o regulă poate fi prea permisivă.
ports:) ocolesc ufw. O bază de date cu "3306:3306" este atunci accesibilă din exterior, chiar dacă ufw indică faptul că portul este închis. Adăugați 127.0.0.1: în față sau nu publicați portul. Consultați Docker și firewall-ul: publicarea sigură a porturilor.Verificare din exterior
ss arată ce ascultă pe server, dar nu ce lasă să treacă firewall-ul dumneavoastră. Verificarea reală o faceți de pe un alt computer, nu de pe serverul însuși. Cu nc (netcat) pe Mac sau Linux:
nc -vz -w 3 203.0.113.10 6379 nc -6 -vz -w 3 2001:db8::10 6379
Pe Windows, PowerShell face același lucru cu Test-NetConnection 203.0.113.10 -Port 6379. Introduceți propria adresă IPv4 și IPv6; acestea se află în ecranul VPS. Rezultatul se interpretează astfel:
- Deschis (succeeded): ceva ascultă și este accesibil din exterior.
- Închis (Connection refused): nu ascultă nimic sau firewall-ul refuză activ.
- Filtrat (time-out): un firewall aruncă traficul în mod silențios.
Pentru o bază de date, atât închis, cât și filtrat sunt rezultate bune. Testați și IPv6: o greșeală frecventă este un firewall cu reguli doar pentru IPv4, în timp ce serviciul ascultă și pe [::]. Un scanner de porturi precum nmap verifică mai multe porturi deodată; folosiți un astfel de scanner doar pe propriul server.
VPS-ul dumneavoastră este complet autogestionat: ce servicii ascultă și cum este configurat firewall-ul stabiliți dumneavoastră. Noi vă ajutăm cu partea WebOké, cum ar fi ecranul VPS, rețeaua și snapshot-urile.
Doriți să aflați mai multe? Urmați cursul gratuit VPS și administrarea serverelor Linux, lecția 5.1 Porturi și servicii care ascultă sau lecția 5.2 Un firewall cu ufw și nftables.
