Răspuns scurt
- 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ă.
- Restricționezi AllowedIPs de pe server la adresa unică a fiecărui peer, ca nimeni să nu folosească altă adresă decât a lui.
- 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.
- Revoci accesul unui coleg plecat ștergând blocul lui Peer din configurație și rulând reload, în aceeași zi.
- Ț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| Criteriu | WireGuard | OpenVPN |
|---|
| Criptografie | set fix modern, nimic de configurat greșit | configurabilă, ușor de slăbit din neatenție |
|---|
| Cod și suprafață de atac | câteva mii de linii, în kernelul Linux | sute de mii de linii, în user space |
|---|
| Performanță și latență | foarte bune, reconectare rapidă la schimbarea rețelei | mai lente, reconectare mai lungă |
|---|
| Gestionarea utilizatorilor | chei publice în fișier, fără PKI | certificate, CA și liste de revocare |
|---|
| Vizibilitate din internet | port UDP care nu răspunde la pachete nesemnate | port care răspunde la sondare |
|---|
| Potrivit pentru | acces administrativ, echipe mici și medii | medii cu PKI existentă, clienți vechi |
|---|
Comenzi și configurări
Server: generarea cheilor și /etc/wireguard/wg0.confumask 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ă.