În episodul trecut am învățat cum să ne logăm în tty1 și am înțeles că Linuxul este ca un bloc de apartamente administrat la milimetru. Acum avem serverul pornit, e funcțional, dar în momentul în care introducem cablul de internet în el, devenim o țintă.
Pe internet nu sunt doar oameni bine intenționați. Există milioane de scripturi automate (boți), majoritatea rulate din China, Rusia sau servere obscure, care scanează non-stop fiecare adresă IP de pe planeta asta, căutând servere proaspăt instalate, cu parole slabe, ca să le spargă și să le transforme în calculatoare-zonbi.
Astăzi învățăm cum să punem gard electric, porți de fier și camere de luat vederi pe serverul nostru. La finalul acestui articol, vei scoate monitorul și tastatura din server, îl vei arunca sub pat sau în debara și îl vei controla în siguranță totală doar de pe laptopul tău.
1. Ce sunt Porturile și cum respiră Rețeaua?
Când conectezi serverul la router, el primește o adresă IP (de exemplu: 192.168.1.100). Adresa IP este adresa blocului. Dar cum știe internetul de unde să ceară o pagină web, unde e baza de date sau pe unde ne conectăm noi ca administratori?
Aici intervin porturile. Fiecare mașină Linux are exact 65.535 de porturi virtuale. Gândește-te la ele ca la niște ghișee sau apartamente din interiorul blocului.
-
Când o aplicație vrea să vorbească cu exteriorul, ea se pune la un ghișeu și îl „rezervă”. De exemplu, un server web stă mereu la ghișeul
80sau443. -
Traficul este de două feluri: IN (ce vine de pe net spre noi — cineva bate la un ghișeu) și OUT (când serverul nostru cere ceva de pe net, de exemplu când dăm un update).
Regula de aur a securității: Orice port deschis la care nu rulează nimic util este o fereastră deschisă prin care poate intra un hoț. Dacă nu ai nevoie de un ghișeu, îl închizi cu lacătul. Atât de simplu.
2. Cine coordonează haosul? systemd și systemctl
Înainte să vedem cum ne conectăm de la distanță, trebuie să înțelegem cine pornește și oprește aplicațiile în fundal. În Linux, programele care rulează non-stop în spate, fără interfață, se numesc daemons (programe-fantomă) și au de obicei un „d” la final (ex: sshd, dockerd).
Șeful suprem de șantier care coordonează toate aceste fantome se numește systemd. Ca să vorbești cu el și să-i dai ordine, folosești unealta systemctl.
Iată abecedarul comenzilor pe care orice sys-admin le scrie pe zi de o sută de ori (le scrii cu sudo în față dacă ești utilizator normal):
-
sudo systemctl start nume_serviciu-> Pornește serviciul ACUM. -
sudo systemctl stop nume_serviciu-> Oprește serviciul ACUM. -
sudo systemctl restart nume_serviciu-> Îl oprește și îl pornește iar (util când schimbi configurări). -
sudo systemctl status nume_serviciu-> Îți arată dacă serviciul e „bărbat” (rulează verde) sau a murit în chinuri (eroare cu roșu). -
sudo systemctl enable nume_serviciu-> Îi spune sistemului: „Când pornesc serverul din buton, pornește automat și serviciul ăsta, să nu-l mai pornesc eu de mână”.
3. Regele Comunicațiilor: sshd
Cel mai important daemon dintr-un server este sshd (Secure Shell Daemon). El stă la ghișeul (portul) 22 și treaba lui este să asculte dacă cineva de pe rețea vrea să se conecteze la terminalul serverului.
Din fabrică, Debian vine cu SSH activat. Asta înseamnă că putem scoate tastatura și monitorul din server! El poate sta de acum într-o debara întunecată, legat doar la curent și la cablul de net.
Deschide terminalul pe laptopul tău personal (dacă ești pe Linux/Mac) sau o consolă de PowerShell/CMD (dacă ești pe Windows) și tastează:
ssh numele_tau_de_user@adresa_ip_a_serverului
# Exemplu: ssh andrei@192.168.1.100
O să te întrebe dacă ai încredere în acea mașină (tastezi yes), îți bagi parola pe care ai setat-o în tty1 și... BAM! Ești în interiorul serverului tău, direct de pe canapea.
De ce NU e bine așa? Marea vulnerabilitate
Acum te loghezi cu utilizator și parolă. Dacă lași serverul așa, boții de pe net vor începe să bată la portul 22, încercând milioane de combinații de parole pe secundă (brute-force). Dacă ai o parolă de tipul parola123 sau admin, serverul tău va fi spart și controlat de altcineva în mai puțin de 5 minute.
Cum rezolvăm asta definitiv? Anulăm parolele și trecem pe chei criptografice.
4. Magia Criptografiei: Sistemul de Chei SSH
Sistemul de chei funcționează pe logica „Lacăt și Cheie”:
-
Pe laptopul tău generezi o pereche de chei: una Privată (cheia fizică de la buzunar, pe care NU o arăți nimănui, niciodată) și una Publică (lacătul).
-
Iei lacătul (cheia publică) și îl instalezi pe server.
-
Când te conectezi, serverul vede lacătul, verifică dacă laptopul tău are cheia potrivită de la buzunar și îți dă drumul înăuntru instant, fără să mai tastezi vreo parolă. Nimeni altcineva de pe planetă nu se va mai putea conecta, pentru că nimeni nu are cheia ta privată de pe laptop.
Pasul 1: Generezi cheia PE LAPTOPUL TĂU (Nu pe server!)
Deschide terminalul de pe laptopul tău și scrie:
ssh-keygen -t ed25519 -C "laptopul_meu"
(Apesi Enter la toate întrebările, nu pune nicio altă parolă dacă vrei logare instant). Această comandă a creat un algoritm super-securizat numit Ed25519.
Pasul 2: Trimitem lacătul pe server
Tot de pe laptop, rulezi comanda asta ca să montezi automat lacătul pe server:
ssh-copy-id numele_userului@ip_server
# Exemplu: ssh-copy-id andrei@192.168.1.100
Îți va cere parola serverului pentru ultima oară. Gata, lacătul e pus! Încearcă să te loghezi din nou: ssh andrei@192.168.1.100. Ai văzut? Te-a băgat direct, instantaneu, prin magie criptografică.
Pasul 3: Blindarea. Interzicem parolele!
Acum că noi avem cheie, trebuie să le tăiem craca de sub picioare hackerilor. Intrebi serverul: „De azi încolo, nu mai primești pe NIMENI care vine cu parolă”.
Intrăm pe server, deschidem fișierul de configurare al SSH-ului (folosim editorul text nano cu drepturi de root):
sudo nano /etc/ssh/sshd_config
Aici se află creierul comunicării. Cauți următoarele linii (dacă au un # în față, îl ștergi ca să le activezi) și le modifici să arate exact așa:
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
(Am interzis logarea cu parolă, am dat voie doar cu chei și am interzis ca cineva să se logheze direct ca Zeul root de la distanță).
Apeși Ctrl + O urmat de Enter ca să salvezi fișierul, și Ctrl + X ca să ieși din editor.
Acum, dă-i ordin lui systemd să aplice noile reguli:
sudo systemctl restart sshd
Nu închide fereastra curentă! Deschide un terminal NOU pe laptop și încearcă să te conectezi. Dacă te bagă direct, ai reușit! Din acest moment, poți încerca să te conectezi de pe telefon sau de pe alt PC cu parolă: serverul le va da cu ușa în nas instant. Refuză orice conexiune care nu are cheia fizică de pe laptopul tău.
5. Zidul de Apărare: UFW (Firewall)
Avem ușa securizată, dar mai avem mii de porturi (ghișee) goale care stau deschise în vânt. Avem nevoie de un gardian la intrarea în server care să blocheze tot ce nu aprobăm noi. Acest gardian se numește Firewall.
În Linux, însuși Kernel-ul are o armată brută numită iptables, dar e greu de configurat. Așa că Debian folosește un general de încredere numit UFW (Uncomplicated Firewall), care traduce dorințele noastre în comenzi simple.
Hai să-l instalăm și să-l configurăm din trei mișcări:
# 1. Instalăm firewall-ul
sudo apt update && sudo apt install ufw -y
# 2. Regula de AUR: Blocăm absolut tot ce intră din fabrică
sudo ufw default deny incoming
# 3. Permitem serverului să iasă pe net în exterior (să descarce pachete)
sudo ufw default allow outgoing
# 4. ATENȚIE MAXIMĂ! Deschidem ghișeul 22 pentru SSH. Dacă uiți asta, te dai afară singur din server!
sudo ufw allow 22/tcp
# 5. Activăm gardianul
sudo ufw enable
La ultima comandă o să te întrebe dacă ești sigur, tastezi y și Enter.
Vrei să vezi cum stă armata la porți? Scrie:
sudo ufw status verbose
O să vezi că totul e blocat (deny incoming), cu o singură excepție sacră: portul 22 pe care te afli tu acum.
Concluzie: Fortăreața e gata!
Privește puțin ce ai realizat astăzi. Ai pornit de la un Linux instalat la cheie și ai trecut la nivelul de Sys-Admin profesionist:
-
Ai înțeles cum funcționează porturile și fluxul de rețea.
-
L-ai pus pe
systemdsă lucreze pentru tine. -
Ai scos monitorul din server și ai trecut pe SSH.
-
Ai distrus posibilitatea atacurilor prin parolă folosind chei criptografice Ed25519.
-
Ai ridicat un firewall de fier (UFW) care dă cu flit oricărui scaner de pe internet.
Mașina ta e o fortăreață curată, sigură și independentă. Nimeni de pe planetă nu poate intra în debaraua ta digitală fără cheia din buzunarul tău. Acum serverul e pregătit să primească infrastructura adevărată.
În episodul următor, trecem la lucruri serioase: instalăm Docker-ul, izolăm procesele și aducem la viață primele noastre servicii în containere!
Până atunci, lasă serverul să toarcă tăcut sub pat. Ești stăpânul lui!
Daca nu ai citit articolul anterior il poti vedea aici,