Ghid de securitate · România

Cum configurez un VPN WireGuard pentru accesul administrativ la server?

SSH, panoul bazei de date, Grafana și orice interfață de administrare nu au ce căuta pe internet, chiar protejate cu parolă și 2FA. Un VPN WireGuard le mută într-o rețea privată la care ajung doar oamenii cu o cheie, iar de pe internet serverul arată închis.

Actualizat la

Răspuns scurt

  1. Configurezi un VPN WireGuard pentru accesul administrativ generând o pereche de chei pentru server și una pentru fiecare persoană, declarată ca peer cu AllowedIPs pe o singură adresă /32.
  2. Firewall-ul deschide spre internet doar portul UDP al WireGuard, iar SSH și panourile de administrare acceptă conexiuni doar pe interfața wg0.
  3. Clienții folosesc PersistentKeepalive când sunt în spatele unui NAT și primesc în AllowedIPs doar rețelele interne, nu tot traficul.
  4. Când un coleg pleacă, ștergi peer-ul lui din configurație în aceeași zi; nu există parolă de schimbat, doar cheia de revocat.
Ce rămâne pe internet
un singur port UDP, de exemplu 51820
Un peer = o persoană
AllowedIPs = 10.8.0.x/32, fără chei partajate
SSH după configurare
acceptat doar pe interfața wg0
Revocare
ștergi blocul [Peer] și rulezi wg syncconf

De ce administrarea stă în spatele unui VPN

Fiecare serviciu expus pe internet e un serviciu care poate avea o vulnerabilitate mâine: un panou de administrare al bazei de date, o interfață Grafana, un Docker API. Chiar SSH cu chei rămâne expus la un bug în sshd. Cu WireGuard, singurul lucru vizibil de afară e un port UDP care nu răspunde deloc pachetelor fără o cheie validă. Toate serviciile administrative ascultă pe adresa privată din tunel.

Configurația care ține: chei per persoană și AllowedIPs strict

WireGuard nu are conturi și parole; identitatea e cheia publică. De aceea fiecare persoană primește propria pereche de chei, generată pe laptopul ei, și propria adresă din rețeaua tunelului. AllowedIPs pe server, pentru fiecare peer, e adresa aceea /32 și nimic altceva: așa un peer nu poate pretinde adresa altuia. Pe client, AllowedIPs listează doar rețelele interne, iar PersistentKeepalive = 25 ține tunelul deschis prin NAT. Configurația serverului stă în Git, ca revocarea să fie un commit.

  • Cheia privată a serverului nu părăsește serverul; cea a fiecărui coleg nu părăsește laptopul lui
  • Un peer separat pentru CI sau pentru serverul de monitorizare, cu adresa lui
  • Consola din panoul furnizorului rămâne calea de rezervă dacă tunelul cade

Ce spune legislația din România

Controlul accesului la sistemele care prelucrează date personale e cerut de art. 32 GDPR, iar la un incident ANSPDCP întreabă cine putea ajunge la server și cum. Pentru entitățile de sub OUG 155/2024, transpunerea NIS2 aprobată prin Legea 124/2025, art. 13 cere explicit politici de control al accesului (lit. f) și autentificare multi-factor (lit. j), iar retragerea drepturilor la plecarea unui angajat face parte din gestionarea accesului. Accesul administrativ printr-un VPN nu e cerut ca atare de ordonanță, dar e felul obișnuit în care se demonstrează ambele: un VPN cu o cheie per persoană produce automat lista de cine are acces — fișierul de configurare al serverului.

WireGuard și OpenVPN pentru accesul administrativ
CriteriuWireGuardOpenVPN
Protocol și transportUDP, criptografie fixă modernă (Noise, ChaCha20)UDP sau TCP, TLS cu suite configurabile
Dimensiune și auditCod mic, în kernelul Linux din 5.6Cod mare, în spațiul utilizatorului
IdentitateChei publice statice, un peer per persoanăCertificate X.509, PKI proprie
RevocareȘtergi peer-ul din configurațieCRL sau reemitere de certificate
Vizibilitate de pe internetNu răspunde fără cheie validăPort care răspunde la handshake
Când îl alegiAcces administrativ, site-to-site simpluNevoie de TCP/443 prin firewall-uri restrictive, PKI existentă

Comenzi și configurări

Generezi cheile (pe fiecare mașină, pentru ea însăși)
sudo apt install -y wireguard
umask 077
wg genkey | tee server.key | wg pubkey > server.pub
/etc/wireguard/wg0.conf pe server, un [Peer] per persoană
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <conținutul server.key>

[Peer]
# ana, laptop de lucru
PublicKey = <cheia publică a Anei>
AllowedIPs = 10.8.0.2/32

[Peer]
# server de monitorizare
PublicKey = <cheia publică a mașinii de monitorizare>
AllowedIPs = 10.8.0.10/32
Firewall: doar UDP 51820 spre internet, SSH doar prin tunel; pornire și revocare
sudo ufw allow 51820/udp
sudo ufw allow in on wg0 to any port 22 proto tcp
sudo ufw delete allow 22/tcp   # abia după ce ai testat tunelul dintr-o a doua sesiune
sudo systemctl enable --now wg-quick@wg0

# revocare: ștergi blocul [Peer] din wg0.conf, apoi
sudo wg syncconf wg0 <(sudo wg-quick strip wg0)

Exemple practice

Agenție web din Timișoara cu freelanceri

Cinci colaboratori aveau chei SSH pe servere de client și nimeni nu ținea lista. Agenția a pus WireGuard pe un VPS de acces, a mutat SSH-ul tuturor serverelor pe rețeaua tunelului și a dat fiecărui colaborator un peer. Plecarea unui freelancer înseamnă acum ștergerea unui bloc de patru linii.

Clinică din București cu panou de programări administrat intern

Interfața de administrare a bazei de date era pe internet, protejată de parolă. După ce un scaner a găsit-o, a fost legată de adresa din tunelul WireGuard, iar personalul o accesează prin VPN, fără ca portul să mai fie vizibil.

Greșeli frecvente

  • Folosești o singură cheie WireGuard pentru toată echipa, deci nu poți revoca pe cineva fără să-i scoți pe toți.
  • Pui AllowedIPs = 0.0.0.0/0 pe server pentru un peer și îi permiți să pretindă orice adresă din tunel.
  • Muți SSH pe wg0 înainte să testezi tunelul și rămâi fără acces.
  • Distribui configurația clientului, cu cheia privată, pe e-mail sau în chat.

Cum te ajută 4hosting

  • Serviciul VPN WireGuard configurează serverul, cheile per persoană și mutarea SSH-ului și a panourilor pe rețeaua privată, în orele incluse: 1–8 lunar la VPS, 10 la dedicate și GPU, cerute din panoul de client, secțiunea „Servicii DevOps”; orele se consumă în luna calendaristică și nu se reportează.
  • Serviciul mTLS & Zero Trust e pasul următor când ai mai multe servicii interne care trebuie să se autentifice reciproc, nu doar oameni care intră.
  • Pe VPS și dedicate ai consolă din panoul de client, deci poți muta SSH pe wg0 fără riscul de a rămâne definitiv afară.

Întrebări conexe

  • Ce fac dacă tunelul cade și SSH ascultă doar pe wg0?

    Intri prin consola din panoul furnizorului, care nu depinde de rețea, și repari configurația. De aceea testezi întâi cu SSH încă deschis pe internet, dintr-o a doua sesiune, și abia apoi închizi portul public. Păstrezi și o copie a configurației WireGuard în afara serverului.

  • WireGuard e sigur fără al doilea factor?

    Cheia WireGuard de pe laptop plus cheia SSH sunt deja două lucruri pe care trebuie să le ai. Riscul rămas e laptopul furat deblocat; îl reduci cu criptarea discului și cu frază de acces pe cheia SSH. Pentru echipe mari, o soluție peste WireGuard adaugă identitate centralizată și 2FA.

  • Pot rula WireGuard pe același server pe care îl protejez?

    Da, pentru un server sau două e cel mai simplu. Când ai mai multe mașini, pui WireGuard pe un VPS mic de acces, iar toate celelalte servere acceptă SSH doar din rețeaua acelui tunel. Așa ai un singur loc unde gestionezi peer-ii.

Cere o verificare de securitate

Un server de producție e atacat automat din primele minute după ce primește IP public, indiferent cât de mic e proiectul. Ghidul ordonează controalele după impact, de la accesul SSH până la răspunsul la incident, cu legislația din România care se aplică. Fiecare temă are o pagină dedicată, cu răspuns scurt, exemple și configurări.

Ghiduri pentru firme din România