Ce sunt porturile și suprafața de atac?

Un port este un punct de comunicare numeric (0–65535) prin care un server primește conexiuni pentru un anumit serviciu. Exemple comune:

  • 80 — HTTP (web)
  • 443 — HTTPS (web securizat)
  • 22 — SSH (acces remote la server)
  • 3389 — RDP (Remote Desktop Protocol — Windows)
  • 3306 — MySQL (bază de date)
  • 21 — FTP (transfer fișiere, nesigur)

Suprafața de atac reprezintă totalitatea punctelor prin care un atacator ar putea încerca să acceseze sistemul tău. Cu cât mai multe porturi deschise și servicii expuse, cu atât mai mare suprafața de atac.

De ce contează?

  • Servicii expuse inutil — un server de baze de date (MySQL, PostgreSQL) nu ar trebui niciodată să fie accesibil din internet. Dacă portul 3306 e deschis, orice atacator poate încerca să se autentifice.
  • Protocoale vechi și nesigure — FTP (port 21), Telnet (23), SMB (445) transmit date necriptate și sunt frecvent exploatate. Trebuie înlocuite cu alternative moderne (SFTP, SSH).
  • RDP expus — portul 3389 (Remote Desktop) expus internetului este una dintre principalele căi de intrare pentru ransomware.
  • Roboți de scanare — internetul este scanat permanent de roboți automatizați care caută porturi deschise și exploatează servicii vulnerabile în minute.

Cum verifici?

SecureCheck efectuează o scanare de porturi asupra IP-ului asociat domeniului tău și identifică serviciile expuse, clasificând riscul fiecăruia.

Verificări manuale:

  • Nmap (din terminal): nmap -sV --top-ports 1000 domeniu.ro
  • Shodan: shodan.io — caută IP-ul tău și vezi ce vede internetul despre serverul tău
  • Online: YouGetSignal Port Scanner

Cum remediezi?

Regula de bază: dacă un port nu trebuie să fie accesibil din internet, blochează-l la firewall.

Configurare firewall (UFW pe Ubuntu):

# Blochează tot implicit
ufw default deny incoming
ufw default allow outgoing

# Permite doar ce ai nevoie
ufw allow 80/tcp    # HTTP
ufw allow 443/tcp   # HTTPS
ufw allow 22/tcp    # SSH (consideră schimbarea portului implicit)

# Activează
ufw enable

Pentru SSH: mută-l de pe portul 22 pe un port non-standard, dezactivează autentificarea cu parolă și folosește doar chei SSH.

Pentru RDP: nu-l expune direct internetului. Folosește un VPN sau Azure Bastion pentru acces remote securizat.

Baze de date: ascunde-le în spatele unui firewall și conectează-te local sau prin tunel SSH, niciodată direct din internet.

Port expus public — risc și remediere

Unul sau mai multe porturi sensibile ale serverului tău (SSH, RDP, MySQL, MongoDB, Redis etc.) sunt accesibile direct din internet. Roboții de scanare descoperă aceste porturi în minute și lansează atacuri automate de tip brute-force sau exploatează vulnerabilități cunoscute.

Bazele de date și serviciile de administrare expuse direct internetului sunt printre cele mai frecvente cauze de breach-uri la companii mici și mijlocii.

Cum remediezi:

  1. Blochează portul cu firewall-ul serverului: ufw deny PORT/tcp (înlocuiește PORT cu numărul portului)
  2. Pentru baze de date (MySQL 3306, PostgreSQL 5432, MongoDB 27017, Redis 6379): accesează exclusiv local sau prin tunel SSH — niciodată direct din internet
  3. Pentru RDP (3389): folosește VPN sau Azure Bastion; pentru SSH (22): restricționează la IP-uri specifice sau mută pe port non-standard

Verificare: nmap -p PORT domeniu.ro — trebuie să returneze filtered sau closed

Panou de administrare accesibil din internet

Un panou de administrare (phpMyAdmin, wp-admin, cPanel, Plesk, Adminer) este accesibil public. Atacatorii scanează constant internetul pentru aceste interfețe și lansează atacuri de brute-force sau exploatează vulnerabilități cunoscute în versiunile neactualizate.

Accesul nerestricționat la panouri de admin este una dintre cele mai grave configurații greșite de securitate, cu potențial de compromitere completă a serverului.

Cum remediezi:

  1. Restricționează accesul la IP-uri specifice în nginx:
    location /wp-admin {
      allow 1.2.3.4;
      deny all;
    }
  2. Adaugă HTTP Basic Authentication ca strat suplimentar de protecție
  3. Schimbă URL-ul default de admin (pentru WordPress: plugin-uri precum WPS Hide Login)

Verificare: accesează URL-ul din afara rețelei proprii — trebuie să returneze 403 sau să ceară autentificare suplimentară