Ghid de securitate · Moldova

Cum configurez un VPN WireGuard pentru accesul administrativ la server?

Portul SSH deschis către internet primește mii de încercări pe zi, iar panourile de administrare expuse public sunt scanate constant. Un VPN WireGuard mută toate aceste uși în spatele unei singure porți și transformă „cine are acces” într-un fișier pe care îl poți citi.

Actualizat la

Răspuns scurt

  1. Configurezi un VPN WireGuard pe server sau pe un nod dedicat de acces, generezi o pereche de chei pentru fiecare persoană și dispozitiv și aloci fiecăreia o adresă fixă.
  2. Restricționezi AllowedIPs de pe server la adresa unică a fiecărui peer, ca nimeni să nu folosească altă adresă decât a lui.
  3. Firewall-ul acceptă SSH, bazele de date și panourile doar pe interfața wg0; din internet rămân deschise 80, 443 și portul UDP al WireGuard.
  4. Revoci accesul unui coleg plecat ștergând blocul lui Peer din configurație și rulând reload, în aceeași zi.
  5. Ții un inventar al peer-ilor, cu nume, dispozitiv și dată, ca auditul de acces să fie o listă, nu o anchetă.
Protocol și port
UDP, implicit 51820; un singur port deschis
Criptografie
Curve25519, ChaCha20-Poly1305, fără opțiuni de configurat greșit
O cheie per
persoană și dispozitiv, cu adresă fixă în /32
SSH după VPN
sshd ascultă doar pe adresa wg0; portul 22 închis din internet

De ce VPN în fața SSH și a panourilor

SSH cu chei e sigur, dar rămâne vizibil: orice vulnerabilitate viitoare din OpenSSH e exploatabilă de oricine găsește portul. Panourile web (Grafana, phpMyAdmin, consola Docker) sunt și mai fragile. Cu WireGuard, un atacator vede un singur port UDP care nu răspunde la pachete nesemnate, iar serviciile administrative ascultă doar pe adresa din VPN. Suprafața de atac scade de la zece servicii la unul, mic și auditat intens.

Chei pe persoană, adrese fixe, AllowedIPs strict

Fiecare om primește o cheie pentru laptop și, la nevoie, una pentru telefon. Fiecare cheie are o adresă fixă, de exemplu 10.8.0.11/32, iar pe server AllowedIPs pentru acel peer e exact acea adresă. Logurile arată adresa VPN, deci știi cine a fost, iar un peer nu poate pretinde adresa altuia: WireGuard verifică sursa pe baza cheii. Pe client, AllowedIPs conține doar rețelele serverelor, nu 0.0.0.0/0.

  • cheia privată se generează pe dispozitivul persoanei, nu se trimite pe chat
  • PresharedKey pe fiecare peer, ca strat suplimentar
  • adresă /32 fixă per peer, notată în inventar
  • AllowedIPs pe client, doar rețelele serverelor

Firewall-ul și revocarea

După ce VPN-ul merge, închizi portul 22 din internet și lași sshd să asculte doar pe wg0. La fel pentru 5432, 3306, 3000 și orice panou. Regula de firewall e scurtă: din internet doar 80, 443 și 51820/udp; pe wg0, tot ce le trebuie administratorilor. Când un coleg pleacă, ștergi blocul lui Peer, rulezi wg syncconf și accesul dispare instantaneu, fără să atingi authorized_keys pe douăzeci de servere. Cu un nod dedicat de acces, revocarea se face într-un singur loc.

WireGuard și OpenVPN pentru accesul administrativ, comparate
CriteriuWireGuardOpenVPN
Criptografieset fix modern, nimic de configurat greșitconfigurabilă, ușor de slăbit din neatenție
Cod și suprafață de ataccâteva mii de linii, în kernelul Linuxsute de mii de linii, în user space
Performanță și latențăfoarte bune, reconectare rapidă la schimbarea rețeleimai lente, reconectare mai lungă
Gestionarea utilizatorilorchei publice în fișier, fără PKIcertificate, CA și liste de revocare
Vizibilitate din internetport UDP care nu răspunde la pachete nesemnateport care răspunde la sondare
Potrivit pentruacces administrativ, echipe mici și mediimedii cu PKI existentă, clienți vechi

Comenzi și configurări

Server: generarea cheilor și /etc/wireguard/wg0.conf
umask 077
wg genkey | tee /etc/wireguard/server.key | wg pubkey > /etc/wireguard/server.pub

cat > /etc/wireguard/wg0.conf <<EOF
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = $(cat /etc/wireguard/server.key)

# ion.popescu, laptop, adăugat 2026-09-09
[Peer]
PublicKey = <cheia publică a lui Ion>
PresharedKey = <psk generat cu wg genpsk>
AllowedIPs = 10.8.0.11/32
EOF
systemctl enable --now wg-quick@wg0
Client: configurație pe laptopul persoanei
[Interface]
PrivateKey = <generată pe laptop cu wg genkey>
Address = 10.8.0.11/32
DNS = 10.8.0.1

[Peer]
PublicKey = <cheia publică a serverului>
PresharedKey = <același psk>
Endpoint = vpn.exemplu.md:51820
AllowedIPs = 10.8.0.0/24, 10.10.0.0/24
PersistentKeepalive = 25
SSH doar pe VPN, firewall, revocare
# sshd: ascultă doar pe adresa VPN
echo 'ListenAddress 10.8.0.1' > /etc/ssh/sshd_config.d/20-vpn-only.conf && sshd -t && systemctl reload ssh
# sshd nu poate lega o adresă care încă nu există la boot — pune dependența explicit
mkdir -p /etc/systemd/system/ssh.service.d
printf '[Unit]\nAfter=wg-quick@wg0.service\nRequires=wg-quick@wg0.service\n' \
  > /etc/systemd/system/ssh.service.d/10-after-wg.conf
systemctl daemon-reload

# firewall: din internet doar web și WireGuard
ufw default deny incoming
ufw allow 80,443/tcp
ufw allow 51820/udp
ufw allow in on wg0 to any port 22 proto tcp
ufw enable

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

Exemple din practică

Outsourcing din Chișinău, 15 servere pentru clienți din UE

Fiecare server avea SSH pe 22 deschis și Grafana publică, cu parolă. Un nod de acces WireGuard în Frankfurt, cu 18 peer-i, a permis închiderea tuturor porturilor administrative; auditul clientului olandez a primit inventarul peer-ilor ca dovadă.

Firmă de logistică din Bălți, administrator extern

Administratorul de sistem lucra din alt oraș și se conecta la baza de date direct pe 3306. După WireGuard, portul a fost închis, iar la încheierea contractului revocarea a însemnat ștergerea unui bloc Peer, nu schimbarea parolelor peste tot.

Clinică din Cahul, acces pentru furnizorul de software

Furnizorul aplicației medicale cerea acces pentru actualizări. În loc de o parolă partajată, a primit un peer propriu, cu AllowedIPs limitat la serverul aplicației și activ doar în ferestrele convenite.

Greșeli frecvente

  • Trimiți prin chat cheia privată generată pe server, în loc să o genereze colegul pe dispozitivul lui.
  • Lași AllowedIPs = 0.0.0.0/0 pe server pentru un peer, deci acel client poate folosi orice adresă și logurile tac.
  • Pornești VPN-ul, dar nu închizi portul 22, deci ai două uși în loc de una.
  • Folosești o singură cheie „a firmei” pe toate laptopurile și nu mai poți revoca pe cineva fără să-i deranjezi pe toți.
  • Nu ai inventar al peer-ilor și descoperi după un an chei active ale foștilor colaboratori.

Cum te ajută 4hosting

  • VPN & WireGuard proiectează și instalează nodul de acces, cheile pe persoană și regulile de firewall pe VPS-urile și serverele dedicate 4hosting.
  • mTLS & Zero Trust duce același principiu mai departe, cu autentificare mutuală între servicii, când echipa crește.
  • Orele de DevOps incluse (1–8 lunar la VPS, 10 la dedicate și GPU) acoperă configurarea WireGuard și închiderea porturilor administrative; le ceri din panoul de client; orele se consumă în luna calendaristică, fără reportare.
  • Factură în euro, cu TVA-ul local defalcat; suport în engleză și română.

Întrebări conexe

  • Ce fac dacă pierd accesul după ce închid portul 22?

    Păstrează o sesiune SSH deschisă cât testezi regulile noi și conectează-te prin VPN dintr-o a doua fereastră înainte să închizi portul public. Dacă totul cade, consola din panoul furnizorului rămâne disponibilă. La prima încercare, pune regula de firewall cu timer de anulare.

  • Pot da acces prin VPN unui furnizor extern doar temporar?

    Da, e chiar modul recomandat. Îi dai un peer propriu, cu AllowedIPs limitat la serverul de care are nevoie, activat doar în fereastra convenită. Logurile arată adresa lui de VPN, deci acțiunile rămân atribuibile.

  • WireGuard funcționează dacă administratorul este în spatele unui NAT sau al unei rețele mobile?

    Da. Clientul inițiază conexiunea, deci NAT-ul din partea lui nu contează, iar PersistentKeepalive menține sesiunea. Reconectarea de la Wi-Fi la 4G durează sub o secundă, fără ca sesiunea SSH să cadă.

Cere o verificare de securitate

Acest ghid adună într-un singur loc măsurile care contează pentru un server de producție al unei firme din Moldova: de la cheia SSH până la copia de backup pe care nimeni nu o poate șterge. Fiecare capitol trimite la o pagină de întrebare cu pași, comenzi și exemple. Este scris pentru echipe care livrează clienților din UE, raportează la instituții locale sau vând online și nu își permit o zi de indisponibilitate.