Verificarea Porturilor Deschise și Ascultătoare pe Linux Folosind netstat și ss
Monitorizarea porturilor deschise și ascultătoare pe un sistem Linux este una dintre cele mai critice practici pentru menținerea securității serverului, diagnosticarea problemelor de rețea și gestionarea eficientă a infrastructurii. Prin auditarea regulată a porturilor deschise și a serviciilor legate de acestea, puteți identifica proactiv încercările de acces neautorizate, detecta configurații greșite și elimina suprafețele de atac inutile înainte ca acestea să devină vulnerabilități grave.
Indiferent dacă rulați o aplicație cu trafic ridicat pe un plan VPS Hosting sau gestionați o flotă de mașini bare-metal, înțelegerea expunerii rețelei a serverului Linux este obligatorie. Acest ghid oferă o prezentare cuprinzătoare și precis din punct de vedere tehnic a modului de utilizare a ambelor netstat și ss — cele două instrumente de linie de comandă cel mai utilizate pentru inspecția porturilor pe Linux — împreună cu instrumente suplimentare și bune practici din lumea reală.
1. Înțelegerea Porturilor și Tipurile Lor
Înainte de a intra în detaliile instrumentelor în sine, este important să stabilim o înțelegere clară a ceea ce sunt porturile, cum sunt categorizate și de ce monitorizarea lor este importantă.
Ce Este un Port de Rețea?
Un port de rețea este un punct final de comunicare logic asociat cu un proces sau serviciu specific pe un gazdă. Porturile permit unui singur server cu o adresă IP să ruleze mai multe servicii în rețea simultan — de exemplu, un server web pe portul 80, un daemon SSH pe portul 22 și o bază de date pe portul 3306.
Categorii de Porturi
| Interval | Categorie | Descriere |
|---|---|---|
| 0–1023 | Porturi Cunoscute | Rezervate pentru serviciile standard de sistem (HTTP, SSH, FTP, etc.) |
| 1024–49151 | Porturi Înregistrate | Utilizate de aplicații și middleware (MySQL, PostgreSQL, etc.) |
| 49152–65535 | Porturi Dinamice/Efemere | Atribuite temporar pentru conexiunile client de ieșire |
Stări de Port pe Care le Veți Întâlni
- LISTEN — Portul este deschis și un serviciu așteaptă activ conexiuni de intrare.
- ESTABLISHED — Există o conexiune activă între două puncte finale.
- TIME_WAIT — Conexiunea se închide; sistemul așteaptă pentru a se asigura că capătul distant a primit confirmarea finală.
- CLOSE_WAIT — Capătul distant a închis conexiunea; aplicația locală nu și-a închis încă partea.
Protocoale de Transport
- TCP (Transmission Control Protocol): Orientat pe conexiune, fiabil, cu verificare de erori și livrare garantată. Utilizat de HTTP, HTTPS, SSH, FTP și majoritatea protocoalelor de nivel aplicație.
- UDP (User Datagram Protocol): Fără conexiune, mai rapid, dar fără garanții de livrare. Utilizat de DNS, NTP, DHCP și serviciile de streaming.
2. Verificarea Porturilor cu netstat
Ce este netstat?
netstat (network statistics) este un utilitar clasic de linie de comandă care afișează conexiunile de rețea active, tabelele de rutare, statisticile interfeței și porturile în ascultare. Deși a fost oficial depreciat în favoarea ss pe distribuțiile Linux moderne, netstat rămâne larg implementat — mai ales pe sistemele moștenite și în mediile în care administratorii sunt profund familiarizați cu sintaxa acestuia.
Instalarea netstat
netstat face parte din pachetul net-tools, care nu mai este instalat implicit pe multe distribuții moderne. Instalați-l după cum urmează:
Debian / Ubuntu:
sudo apt update && sudo apt install net-tools -yCentOS / RHEL / AlmaLinux / Rocky Linux:
sudo yum install net-tools -y
# or on newer versions:
sudo dnf install net-tools -yArch Linux:
sudo pacman -S net-toolsSintaxa de bază netstat
sudo netstat [options]Verificarea Tuturor Porturilor TCP și UDP în Ascultare
sudo netstat -tulnDetalii despre steaguri:
| Steag | Semnificație |
|---|---|
-t | Afișează conexiunile și porturile TCP |
-u | Afișează conexiunile și porturile UDP |
-l | Arată doar socket-urile în ascultare (porturi care așteaptă conexiuni) |
-n | Afișează adresele IP și numerele de port numerice (omite rezoluția DNS pentru viteză) |
Exemplu de ieșire:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
tcp6 0 0 :::443 :::* LISTEN
udp 0 0 0.0.0.0:68 0.0.0.0:*Citirea ieșirii:
- Proto — Protocolul utilizat (tcp, udp, tcp6, udp6).
- Local Address — Adresa IP și numărul portului pe care serviciul este în ascultare.
0.0.0.0înseamnă că serviciul ascultă pe toate interfețele disponibile;127.0.0.1înseamnă că este accesibil doar local. - Foreign Address — Adresa clientului la distanță (afișată ca
0.0.0.0:*pentru porturile în ascultare fără conexiune activă). - State — Starea conexiunii (
LISTEN,ESTABLISHED,TIME_WAIT, etc.).
Includerea Informațiilor despre Proces
Pentru a vedea ce proces deține fiecare port în ascultare, adăugați steagul -p:
sudo netstat -tulnpExemplu de ieșire cu informații despre proces:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1023/sshd
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2847/nginx
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 3102/mysqld> Notă: Trebuie să rulați această comandă cu sudo pentru a vedea numele proceselor pentru toți utilizatorii, nu doar pentru al dvs.
Filtrarea Ieșirii pentru Porturi sau Servicii Specifice
Utilizați grep pentru a restrânge rezultatele la un port sau serviciu specific:
# Check if anything is listening on port 80
sudo netstat -tuln | grep ":80"
# Check for SSH (port 22)
sudo netstat -tuln | grep ":22"
# Check for MySQL (port 3306)
sudo netstat -tuln | grep ":3306"
# Check for HTTPS (port 443)
sudo netstat -tuln | grep ":443"Vizualizarea Tuturor Conexiunilor Active (Nu Doar a Celor în Ascultare)
Pentru a vedea toate conexiunile active, inclusiv pe cele stabilite, eliminați steagul -l:
sudo netstat -tunpAfișarea Tabelului de Rutare
sudo netstat -rAfișarea Statisticilor Interfeței de Rețea
sudo netstat -i3. Verificarea porturilor cu ss
Ce este ss?
ss (socket statistics) este înlocuitorul modern pentru netstat, dezvoltat ca parte a pachetului iproute2. Comunică direct cu kernelul Linux prin socket-uri Netlink, ceea ce îl face semnificativ mai rapid și mai eficient decât netstat — în special pe sistemele cu mii de conexiuni simultane.
ss este instalat implicit pe practic toate distribuțiile Linux moderne, inclusiv Ubuntu 18.04+, CentOS 7+, Debian 9+ și derivatele acestora.
Sintaxa de bază ss
ss [options] [filter]Verificarea tuturor porturilor TCP și UDP în ascultare
ss -tulnIndicatorii au aceeași semnificație ca în netstat:
| Indicator | Semnificație |
|---|---|
-t | Afișează socket-uri TCP |
-u | Afișează socket-uri UDP |
-l | Afișează doar socket-uri în ascultare |
-n | Afișează adrese numerice (fără rezoluție DNS) |
Exemplu de ieșire:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.1:3306 0.0.0.0:*
tcp LISTEN 0 511 [::]:443 [::]:*
udp UNCONN 0 0 0.0.0.0:68 0.0.0.0:*Includerea informațiilor despre proces
sudo ss -tulnpExemplu de ieșire:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1023,fd=3))
tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=2847,fd=6))
tcp LISTEN 0 128 127.0.0.1:3306 0.0.0.0:* users:(("mysqld",pid=3102,fd=21))Filtrarea după protocol
Afișează doar porturile TCP în ascultare:
ss -tlAfișează doar porturile UDP în ascultare:
ss -ulAfișează toate conexiunile TCP (inclusiv cele stabilite):
ss -tFiltrare avansată cu ss
Una dintre cele mai puternice caracteristici ale ss este filtrarea bazată pe expresii încorporate, care vă permite să filtrați după port, adresă, stare și altele — fără a depinde de grep.
Filtrare după numărul specific al portului:
ss -tuln sport = :80
ss -tuln sport = :443
ss -tuln sport = :22Filtrare după portul de destinație:
ss -tuln dport = :3306Afișează toate socket-urile în starea ESTABLISHED:
ss -t state establishedAfișează toate socket-urile în starea LISTEN:
ss -t state listeningFiltrare după adresa IP sursă:
ss -tuln src 192.168.1.100Afișează conexiuni la un anumit gazdă la distanță:
ss -t dst 203.0.113.50Combinați mai multe filtre:
ss -t state established '( dport = :443 or sport = :443 )'Afișarea utilizării memoriei socket-ului
ss poate afișa, de asemenea, utilizarea detaliată a memoriei per socket, ceea ce este util pentru diagnosticarea problemelor de performanță:
ss -tmAfișarea informațiilor despre temporizator
ss -toAceasta afișează temporizatoarele de retransmisie și temporizatoarele keepalive pentru conexiunile TCP, ceea ce este neprețuit pentru diagnosticarea problemelor de stabilitate a conexiunii.
4. Compararea netstat vs. ss
Ambele instrumente realizează același obiectiv fundamental, dar există diferențe semnificative care ar trebui să vă ghideze alegerea:
| Caracteristică | netstat | ss |
|---|---|---|
| Pachet | net-tools (adesea nu este pre-instalat) | iproute2 (pre-instalat pe distribuții moderne) |
| Viteză | Mai lent (citește din /proc/net/) | Mai rapid (folosește interfața kernel Netlink) |
| Performanță la scară | Se degradează cu mii de conexiuni | Gestionează eficient un număr mare de conexiuni |
| Filtrare avansată | Necesită piping la grep | Filtrare bazată pe expresii încorporată |
| Detaliu ieșire | Bun | Mai detaliat (memorie, timere, etc.) |
| Suport IPv6 | Adecvat | Excelent |
| Status întreținere | Depreciat | Activ întreținut |
| Curbă de învățare | Familiar administratorilor cu experiență | Sintaxă ușor diferită dar bine documentată |
Când să utilizați netstat
- Când administrați sisteme Linux mai vechi (CentOS 6, Debian 7, etc.) unde
sspoate să nu fie disponibil. - Când lucrați cu scripturi sau documentație care utilizează deja sintaxa
netstat. - Când sunteți mai confortabil cu formatul său de ieșire și nu aveți nevoie de filtrare avansată.
Când să utilizați ss
- Pe orice distribuție Linux modernă (Ubuntu 18.04+, CentOS 7+, Debian 9+ și mai noi).
- Când gestionați servere cu un volum ridicat de conexiuni concurente — cum ar fi cele care rulează pe Servere Dedicate sub sarcină grea.
- Când aveți nevoie de filtrare avansată, informații despre timere sau statistici de memorie socket.
- Pentru automatizare și scripting unde performanța contează.
5. Alte instrumente pentru verificarea porturilor deschise
Dincolo de netstat și ss, mai multe alte utilitare sunt utile pentru inspectarea porturilor și analiza rețelei pe Linux.
lsof — List Open Files (Inclusiv socluri)
lsof (List Open Files) tratează socketurile de rețea ca fișiere (în conformitate cu filosofia Linux „totul este un fișier”) și poate afișa ce proces are un port specific deschis.
Instalați lsof:
# Debian/Ubuntu
sudo apt install lsof -y
# CentOS/RHEL
sudo yum install lsof -yVerificați ce proces folosește portul 80:
sudo lsof -i :80Verificați ce proces folosește portul 443:
sudo lsof -i :443Listați toate conexiunile de rețea:
sudo lsof -iListați toate socketurile TCP în ascultare:
sudo lsof -i TCP -s TCP:LISTENExemplu de ieșire:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 2847 root 6u IPv4 23456 0t0 TCP *:http (LISTEN)
nginx 2848 www-data 6u IPv4 23456 0t0 TCP *:http (LISTEN)nmap — Network Mapper
nmap este un instrument puternic de scanare a rețelei utilizat pentru auditarea securității, descoperirea rețelei și scanarea porturilor. Spre deosebire de ss și netstat (care inspectează sistemul local), nmap poate scana atât gazdele locale, cât și pe cele la distanță.
Instalați nmap:
# Debian/Ubuntu
sudo apt install nmap -y
# CentOS/RHEL
sudo yum install nmap -yScanați toate porturile TCP pe localhost:
sudo nmap -sT localhostScanați porturile deschise cu detectarea sistemului de operare:
sudo nmap -sT -O localhostScanați o gamă specifică de porturi:
sudo nmap -p 1-1024 localhostScanați porturile UDP (necesită root):
sudo nmap -sU localhostScanați un server la distanță:
sudo nmap -sT 203.0.113.50> Important: Scanați doar sistemele pe care le dețineți sau pentru care aveți permisiune explicită. Scanarea neautorizată a porturilor poate încălca legile și condițiile de serviciu.
fuser — Identificați procesele care utilizează fișiere sau socluri
# Find which process is using port 80 (TCP)
sudo fuser 80/tcp
# Find which process is using port 53 (UDP)
sudo fuser 53/udp/proc/net/ — Interfață directă cu nucleul
Pentru scopuri de scripting, puteți citi informațiile portului direct din sistemul de fișiere virtual al nucleului Linux:
# View raw TCP socket table
cat /proc/net/tcp
# View raw UDP socket table
cat /proc/net/udpRețineți că adresele și porturile în /proc/net/tcp sunt afișate în hexazecimal și necesită conversie pentru lizibilitate umană. Instrumente precum ss și netstat analizează automat aceste date.
6. Bune practici de securitate pentru gestionarea porturilor deschise
Știind cum să verifici porturile deschise este doar jumătate din bătălie. Acționarea pe baza acestor informații este ceea ce ține serverul tău în siguranță. Iată bune practici pe care ar trebui să le urmeze fiecare administrator Linux:
Principiul expunerii minime
Expune doar porturile care sunt absolut necesare pentru ca aplicația ta să funcționeze. Fiecare port deschis este un vector de atac potențial. Auditează regulat porturile tale ascultătoare și închide sau firewall orice nu trebuie să fie accesibil public.
Leagă serviciile la interfețe specifice
Evită legarea serviciilor la 0.0.0.0 (toate interfețele) dacă nu este necesar. De exemplu, un server de bază de date MySQL ar trebui să asculte doar pe 127.0.0.1 dacă este accesat doar local:
# In /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 127.0.0.1Folosește un Firewall
Folosește ufw (Ubuntu) sau firewalld / iptables (CentOS/RHEL) pentru a restricționa accesul la porturile deschise după adresă IP, subnet sau interfață de rețea:
# Allow SSH only from a specific IP (ufw)
sudo ufw allow from 203.0.113.10 to any port 22
# Deny all other access to port 22
sudo ufw deny 22Auditează regulat porturile ascultătoare
Programează auditări regulate ale porturilor folosind cron jobs sau instrumente de monitorizare. Un port ascultător nou și brusc poate indica un serviciu compromis, o configurare greșită sau — în cel mai rău caz — malware:
# Quick audit command — save output and compare over time
sudo ss -tulnp > /var/log/port_audit_$(date +%F).txtSecurizează serviciile cu SSL/TLS
Orice serviciu expus pe internet — servere web, servere de mail, panouri de control — ar trebui să folosească conexiuni criptate. Asociază porturile tale deschise cu Certificatele SSL valide pentru a proteja datele în tranzit și a preveni atacurile man-in-the-middle.
Monitorizează pentru schimbări neașteptate
Folosește instrumente de detecție a intruziunilor cum ar fi AIDE, Tripwire sau auditd pentru a te alerta atunci când procese noi încep să asculte pe porturi. Integrează cu jurnalizarea centralizată (de ex., ELK Stack, Graylog) pentru vizibilitate cuprinzătoare.
Dezactivează serviciile neutilizate
Dacă un serviciu nu este necesar, oprește-l și dezactivează-l din pornirea la boot:
# Stop and disable a service (systemd)
sudo systemctl stop <service-name>
sudo systemctl disable <service-name>Referință rapidă: Comenzi cele mai utile
| Sarcină | Comanda netstat | Comanda ss | |
|---|---|---|---|
| Toate porturile TCP/UDP în ascultare | sudo netstat -tuln | sudo ss -tuln | |
| Toate porturile în ascultare cu PID-uri | sudo netstat -tulnp | sudo ss -tulnp | |
| Doar porturile TCP în ascultare | sudo netstat -tln | sudo ss -tl | |
| Doar porturile UDP în ascultare | sudo netstat -uln | sudo ss -ul | |
| Filtrare după portul 80 | `sudo netstat -tuln | grep ":80"` | sudo ss -tuln sport = :80 |
| Toate conexiunile stabilite | sudo netstat -tunp | sudo ss -t state established | |
| Afișare tabel de rutare | sudo netstat -r | ip route show |
Concluzie
Monitorizarea porturilor deschise și ascultătoare este o abilitate fundamentală pentru orice administrator de sistem Linux sau inginer DevOps. Indiferent dacă asigurați un server web de producție, depanați o problemă de conectivitate sau efectuați un audit de securitate de rutină, netstat și ss vă oferă vizibilitate imediată și acționabilă asupra expunerii rețelei sistemului dumneavoastră.
Pentru a rezuma principalele concluzii:
- Utilizați
ssca instrument principal pe orice distribuție Linux modernă — este mai rapid, mai bogat în funcții și activ întreținut. - Utilizați
netstatatunci când lucrați pe sisteme moștenite sau când scripturile și fluxurile de lucru existente depind de acesta. - Completați cu
lsofșinmappentru inspecție mai profundă la nivel de proces și scanare externă a porturilor. - Acționați întotdeauna asupra constatărilor dumneavoastră — închideți porturile inutile, legați serviciile la interfețele corecte și aplicați reguli de firewall.
- Asigurați serviciile expuse cu Certificatele SSL și controale de acces corespunzătoare.
Dacă căutați un mediu de găzduire care vă oferă acces root complet pentru a implementa aceste practici de securitate, planurile noastre de VPS Hosting AlexHost oferă control complet asupra configurației serverului Linux — inclusiv gestionarea firewall-ului, consolidarea serviciilor și monitorizarea rețelei. Pentru echipele care au nevoie de performanță maximă și resurse dedicate, Serverele Dedicate noastre oferă puterea brută și izolarea necesare pentru operațiuni de securitate de nivel enterprise. Și dacă preferați un mediu gestionat cu o interfață familiară, explorați opțiunile noastre de VPS cu cPanel pentru gestionarea serverului simplificată fără a sacrifica controlul.
Auditarea regulată a porturilor, combinată cu o configurație de server consolidată, este una dintre cele mai eficace apărări împotriva accesului neautorizat și breșelor de date. Faceți-o o parte de rutină a practicii dumneavoastră de administrare a sistemelor.
la toate serviciile de găzduire