26/07/2023
Într-o eră digitală în continuă expansiune, securitatea serverelor nu mai este un lux, ci o necesitate absolută. De la companiile multinaționale la utilizatorii individuali care își găzduiesc aplicații web simple, riscurile cibernetice sunt omniprezente. Hardening-ul serverelor, sau întărirea securității acestora, este procesul fundamental prin care se reduc vulnerabilitățile și se protejează împotriva amenințărilor potențiale. Deși există diverse tipuri de hardening – fizic (sisteme de control acces, supraveghere video) și hardware (TPM, HSM, scannere biometrice) – acest articol se va concentra pe aspectele de protecție la nivel software, oferind un ghid practic pentru a vă asigura că serverele dumneavoastră sunt fortificate împotriva celor mai comune și sofisticate atacuri.

Majoritatea atacurilor cibernetice sunt motivate financiar și necesită o competență ridicată și investiții semnificative de timp din partea atacatorilor. Prin urmare, este crucial să înțelegeți exact ce anume protejați și ce pierderi ar putea rezulta în urma unui atac. Indiferent dacă aveți nevoie de disponibilitate continuă pentru o resursă publică, cum ar fi un mirror de pachete, sau protejați date sensibile, primul pas este crearea unui model de amenințări. Acest model ar trebui să includă următoarele puncte esențiale: valoarea (date personale și publice, jurnale, echipamente, infrastructură), posibilele amenințări (compromiterea infrastructurii, șantaj, întreruperi de sistem), potențialii atacatori (hacktiviști, amenințări interne, concurenți, hackeri), metodele de atac (acces fizic, dispozitive malițioase, hack-uri software, phishing/vishing, atacuri asupra lanțului de aprovizionare) și, în final, măsurile de protecție (actualizări periodice de software, criptare, controlul accesului, monitorizare și, desigur, hardening-ul, asupra căruia ne vom concentra).
Crearea modelului de amenințări este o sarcină non-trivială, dar vitală, deoarece definește direcția generală a eforturilor de securitate cibernetică. Pentru o abordare mai formalizată, puteți utiliza metodologii precum STRIDE (Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege) pentru clasificarea amenințărilor și DREAD (Damage, Reproducibility, Exploitability, Affected Users, Discoverability) pentru evaluarea riscurilor. Standarde precum ISO/IEC 27005 sau NIST 800-30 pot oferi, de asemenea, o structură solidă.
- Înțelegerea Amenințărilor și Măsurile de Protecție
- Contracararea Scanării Porturilor
- Configurarea Serverului Web Nginx
- Protejarea Conexiunilor la Distanță prin SSH
- Configurarea Port Knocking
- Configurarea Parametrilor Kernelului Linux
- Securizarea Mediilor Containerizate
- Întrebări Frecvente (FAQ)
- Ce este hardening-ul software și de ce este important?
- De ce este esențială crearea unui model de amenințări?
- Pot folosi Port Knocking pentru a securiza și alte servicii în afară de SSH?
- Este hardening-ul o acțiune unică sau un proces continuu?
- Ce instrumente sunt recomandate pentru scanarea vulnerabilităților în imaginile containerelor?
- Concluzie
Înțelegerea Amenințărilor și Măsurile de Protecție
Există întotdeauna riscuri care pot amenința atât companiile mari, cât și utilizatorii individuali. De la o perspectivă tehnică, cele mai comune amenințări sunt:
- DoS/DDoS: Atacuri de tip Denial of Service sau Distributed Denial of Service, care duc la indisponibilitatea infrastructurii și la pierderi financiare și/sau de reputație.
- Atacul asupra Lanțului de Aprovizionare: De exemplu, infectarea unui depozit de artefacte, cum ar fi un Container Registry (JFrog Artifactory, Sonatype Nexus), ceea ce poate duce la propagarea codului malițios în întreaga infrastructură.
- Compromiterea Completă a Sistemului: Include stabilirea de puncte de acces și mișcarea orizontală în cadrul infrastructurii, transformând serverul dumneavoastră într-o rampă de lansare pentru atacuri tehnologice complexe asupra altor resurse. Consecințele grave pot include costuri legale și financiare semnificative.
- Obținerea de Avantaje: Prin modificarea resurselor sistemului, ocolirea autentificării sau alterarea logicii întregii aplicații, ceea ce poate duce la pierderi de reputație și/sau financiare.
Multe dintre aceste atacuri pot fi oprite din timp sau semnificativ îngreunate pentru potențialii atacatori dacă serverul este configurat corespunzător. Hardening-ul nu este o procedură unică; este un proces continuu care necesită monitorizare constantă și adaptare la noile amenințări. Scopul principal al acestui articol este de a vă echipa cu tehnicile necesare pentru securizarea eficientă a serverelor, concentrându-ne pe un exemplu practic: protecția serverului după configurarea inițială.
Contracararea Scanării Porturilor
Atacatori de diverse tipuri, de la rețele de botnet la grupuri APT (Advanced Persistent Threat), utilizează scanere de porturi și alte sisteme de descoperire a dispozitivelor (precum shodan.io, search.censys.io, zoomeye.ai) pentru a găsi gazde interesante pentru exploatare și extorcare ulterioară. Un scaner de rețea popular este Nmap, care permite determinarea gazdelor active într-o rețea și a serviciilor care rulează pe ele printr-o varietate de metode de scanare. Pentru a preveni identificarea ușoară a porturilor deschise și a serviciilor rulante, putem confunda atacatorul. O metodă eficientă este de a face să pară că toate cele 65535 de porturi sunt deschise, dar redirecționate către un serviciu care răspunde dinamic cu semnături aleatorii ale diverselor servicii din baza de date Nmap fingerprint. Acest lucru se realizează cu utilitarul portspoof.
git clone https://github.com/drk1wi/portspoof.git cd portspoof ./configure && make && sudo make install sudo apt install gcc g++ make # Instalați dependențele, dacă este necesar sudo chmod +x $HOME/portspoof/system_files/init.d/portspoof.sh sudo $HOME/portspoof/system_files/init.d/portspoof.sh start $NETWORK_INTERFACE O altă metodă, mai puțin sofisticată, dar eficientă, care nu necesită utilitare suplimentare, implică configurarea firewall-ului pentru a redirecționa tot traficul TCP către un port specific (de exemplu, 5555) și a genera zgomot pseudo-aleatoriu pe acel port folosind NetCat:
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j RETURN # Permite accesul SSH sudo iptables -t nat -A PREROUTING -i eth0 -p tcp -m conntrack --ctstate NEW -j REDIRECT --to-ports 5555 nc -lp 5555 < /dev/urandom Aceste tehnici încetinesc semnificativ scanarea, deoarece scanerul va necesita mult mai mult timp pentru a analiza fiecare dintre cele 65.535 de servicii false.
Configurarea Serverului Web Nginx
Pentru aplicațiile web, scanerele avansate, cum ar fi dirbuster, gobuster, ffuf, sau cele specializate pentru CMS-uri (wpscan, joomscan), pot identifica vulnerabilități. Pentru a proteja aplicațiile web, sugerăm configurarea serverului web Nginx, unul dintre cele mai populare servere. Putem adăuga anteturi de securitate HTTP și protocolul de criptare ușor și puternic ChaCha20. De asemenea, limitarea ratei cererilor este necesară pentru a preveni atacurile DoS și DDoS.
Eliminați anteturi care dezvăluie informații despre server și tehnologii (Server, X-Powered-By) prin instalarea nginx-extras și configurarea fișierului /etc/nginx/nginx.conf:
sudo apt install nginx-extras # În /etc/nginx/nginx.conf server_tokens off; more_clear_headers Server; more_clear_headers 'X-Powered-By'; # Adăugați anteturi pentru a atenua XSS și Clickjacking add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'" always; add_header X-XSS-Protection "1; mode=block"; add_header X-Frame-Options "SAMEORIGIN"; Pentru limitarea ratei cererilor:
http { limit_req_zone $binary_remote_addr zone=req_zone:10m rate=10r/s; server { location /api/ { limit_req zone=req_zone burst=20 nodelay; } } } Pentru a proteja traficul de atacuri MITM și a asigura performanțe ridicate, activați TLS 1.3 și configurați cipher-uri puternice:
ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256"; ssl_prefer_server_ciphers on; Implementarea unui WAF (Web Application Firewall) precum BunkerWeb sau ModSecurity poate oferi un strat suplimentar de protecție. Pentru ModSecurity:
sudo apt install libnginx-mod-security2 # În configurația Nginx server { modsecurity on; modsecurity_rules_file /etc/nginx/modsecurity.conf; } Protejarea Conexiunilor la Distanță prin SSH
Dacă serverul dumneavoastră este securizat doar printr-o parolă, configurația este vulnerabilă. Chiar și parolele complexe pot fi compromise. Este recomandat să dezactivați autentificarea cu parolă și să configurați autentificarea folosind chei private și publice. Generați o pereche de chei SSH pe stația de lucru:
ssh-keygen -t ed25519 -C $EMAIL Copiați cheia publică pe server în fișierul $HOME/.ssh/authorized_keys, fie manual, fie cu ssh-copy-id.
Ajustați fișierul de configurare al serverului SSH (/etc/ssh/sshd_config) cu următoarele setări pentru o securitate sporită:
PermitRootLogin no PermitEmptyPasswords no X11Forwarding no AllowUsers $USERS # Lista de utilizatori permiși PasswordAuthentication no PubkeyAuthentication yes HostbasedAuthentication no PermitUserEnvironment no După modificări, reporniți serviciul SSH: systemctl restart sshd. Puteți verifica securitatea configurației SSH folosind servicii online dedicate sau instrumente precum ssh-audit.
Tabel comparativ: Timpul estimat pentru spargerea parolelor în funcție de complexitate
| Lungimea Parolei | Doar Cifre | Litere Mici | Litere Mici și Mari | Litere, Cifre, Simboluri |
|---|---|---|---|---|
| 6 caractere | < 1 secundă | < 1 secundă | < 1 secundă | < 1 secundă |
| 8 caractere | < 1 secundă | < 1 secundă | 4 secunde | 8 ore |
| 10 caractere | < 1 secundă | 2 minute | 12 zile | 5 luni |
| 12 caractere | < 1 secundă | 1 oră | 10 ani | 34 ani |
| 14 caractere | < 1 secundă | 2 zile | 1000 ani | 2000 ani |
| 16 caractere | < 1 secundă | 5 luni | 100.000 ani | 150.000 ani |
Configurarea Port Knocking
Chiar dacă SSH este un protocol robust, vulnerabilitățile pot apărea. O modalitate de a spori securitatea SSH este de a ascunde portul SSH de vizibilitatea inutilă. Schimbarea portului SSH este adesea inutilă, deoarece un atacator îl va detecta rapid. O strategie mai eficientă este utilizarea Port Knocking, o metodă de securitate în care o 'cheie' (o secvență de accesări de porturi) este utilizată pentru a deschide temporar portul SSH. Instalați knockd:
sudo apt install knockd -y Configurați knockd prin editarea fișierului /etc/knockd.conf pentru a seta secvența de porturi și acțiunile corespunzătoare:
[options] UseSyslog [openSSH] sequence = 7000,8000,9000 seq_timeout = 5 command = /usr/sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn [closeSSH] sequence = 9000,8000,7000 seq_timeout = 5 command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn Porniți și activați knockd la pornire: sudo systemctl enable --now knockd. Pentru a trimite secvența de porturi, folosiți knock sau nmap:
knock $IP 7000 8000 9000 # sau nmap -Pn --max-retries 0 -p 7000,8000,9000 $IP Odată ce secvența corectă este primită, portul SSH (portul 22) se va deschide temporar. Această tehnică adaugă un strat suplimentar de securitate, ascunzând serviciul SSH de publicul larg și permițând accesul doar clienților autorizați care cunosc secvența corectă.

Configurarea Parametrilor Kernelului Linux
În lumea nesigură de astăzi, un tip comun de atac este Living off the Land (LOTL), unde instrumente legitime sunt folosite pentru a exploata și escalada privilegiile. Pentru a atenua riscul unor astfel de exploatări, este important să securizați configurațiile kernelului Linux. Iată câteva setări recomandate:
Pentru a activa ASLR (Address Space Layout Randomization) și a restricționa accesul la informațiile kernelului:
kernel.randomize_va_space = 2 kernel.kptr_restrict = 2 Dezactivați funcționalitatea System Request (SysRq) și restricționați accesul la bufferul de mesaje al kernelului (dmesg):
kernel.sysrq = 0 kernel.dmesg_restrict = 1 Cu această configurație, un atacator nu va cunoaște adresa de memorie a unui program și nu va putea infiltra procese importante. De asemenea, nu va putea vizualiza bufferul de mesaje al kernelului sau trimite cereri de depanare, ceea ce îi va complica interacțiunea cu sistemul.
Securizarea Mediilor Containerizate
Mediile containerizate sunt esențiale în arhitecturile moderne, dar securizarea lor este crucială. Este esențial să adoptați practici de dezvoltare securizată și să integrați DevSecOps alături de metodologiile DevOps existente. Aceasta include utilizarea imaginilor minimale, cum ar fi Google Distroless, și instrumente de analiză a compoziției software (SCA) pentru a verifica securitatea imaginilor. Iată câteva metode pentru a analiza securitatea unei imagini:
Docker Scout și Docker SBOM
Pentru generarea unei liste de artefacte care alcătuiesc o imagine:
mkdir -pv $HOME/.docker/cli-plugins curl -sSfL https://raw.githubusercontent.com/docker/scout-cli/main/install.sh | sh -s -- curl -sSfL https://raw.githubusercontent.com/docker/sbom-cli-plugin/main/install.sh | sh -s -- docker scout cves gradle # Verifică vulnerabilitățile docker sbom $IMAGE_NAME # Generează un SBOM docker sbom alpine:latest --format syft-json --output sbom.txt # Salvează SBOM în format JSON Scanarea Containerelor cu Trivy
Trivy este un scaner puternic de securitate pentru imagini de containere, care ajută la identificarea vulnerabilităților și a configurațiilor greșite. Instalați Trivy:
curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sudo sh -s -- -b /usr/local/bin v0.59.1 Rulați o scanare de securitate pentru o imagine de container:
trivy image $IMAGE_NAME trivy -q image --ignore-unfixed --format json --list-all-pkgs $IMAGE_NAME # Ieșire detaliată în format JSON Chiar și cu practicile minimale enumerate în această secțiune, puteți asigura un nivel decent de securitate a containerelor.
Întrebări Frecvente (FAQ)
Ce este hardening-ul software și de ce este important?
Hardening-ul software este procesul de configurare și optimizare a sistemelor de operare, aplicațiilor și serviciilor pentru a reduce vulnerabilitățile și a minimiza suprafața de atac. Este crucial deoarece majoritatea atacurilor cibernetice vizează vulnerabilități software, iar un server bine întărit poate preveni sau complica semnificativ o breșă de securitate, protejând datele și asigurând disponibilitatea serviciilor.
De ce este esențială crearea unui model de amenințări?
Crearea unui model de amenințări este fundamentală deoarece vă permite să identificați și să înțelegeți potențialii atacatori, metodele de atac și resursele pe care le protejați. Acest lucru ghidează eforturile de securitate, permițându-vă să prioritizați măsurile de protecție și să alocați resursele în mod eficient, în funcție de riscurile cele mai relevante pentru infrastructura dumneavoastră.
Pot folosi Port Knocking pentru a securiza și alte servicii în afară de SSH?
Da, tehnica Port Knocking nu este limitată doar la SSH. Puteți configura knockd pentru a deschide sau închide temporar accesul la orice serviciu pe care doriți să-l ascundeți de vizibilitatea publică, cum ar fi servere web (HTTP/HTTPS), FTP sau alte servicii personalizate. Flexibilitatea sa permite aplicarea la diverse scenarii de securitate.
Este hardening-ul o acțiune unică sau un proces continuu?
Hardening-ul este un proces continuu, nu o acțiune unică. Peisajul amenințărilor cibernetice evoluează constant, cu noi vulnerabilități și metode de atac descoperite regulat. Prin urmare, este necesară o monitorizare continuă, actualizări regulate ale sistemelor și aplicațiilor, și adaptarea configurațiilor de securitate pentru a contracara noile riscuri și a menține un nivel ridicat de protecție.
Ce instrumente sunt recomandate pentru scanarea vulnerabilităților în imaginile containerelor?
Pentru scanarea vulnerabilităților în imaginile containerelor, sunt recomandate instrumente precum Docker Scout, Docker SBOM și Trivy. Docker Scout și SBOM ajută la generarea unei liste de artefacte și la identificarea componentelor dintr-o imagine, în timp ce Trivy este un scaner puternic care detectează vulnerabilități și configurații greșite, contribuind la asigurarea unei securități solide a mediilor containerizate.
Concluzie
Utilizând tehnicile prezentate în acest articol, puteți complica semnificativ sau chiar preveni un atac, sporind entropia și reducând predictibilitatea sistemului dumneavoastră. Este însă esențial să mențineți un echilibru între securitate și uzabilitatea sistemului, pentru a evita crearea de dificultăți inutile pentru utilizatorii legitimi. Securitatea serverului este o călătorie continuă, nu o destinație, iar aplicarea diligentă a acestor măsuri va contribui la o infrastructură digitală mult mai sigură și rezistentă.
Dacă vrei să descoperi și alte articole similare cu Securizarea Serverelor: Ghid Complet de Hardening, poți vizita categoria Fitness.
