Virtualizarea sistemelor de management al bazelor de date (DBMS) cum ar fi PostgreSQL sau MySQL este o practică comună pentru soluțiile B2B moderne. Cu toate acestea, hypervisoarele și mediile de găzduire reprezintă vectori de atac pentru breșe de date laterale. Atunci când stocarea bazei de date partajează noduri logice cu alte API-uri sau servicii publice pe aceeași gazdă fizică, vulnerabilitățile de infrastructură cresc dramatic.
Acest ghid descrie o politică de securizare (hardening) dovedită în producție pentru hypervisoare bazate pe Linux (cum ar fi gazdele Proxmox VE sau KVM) care rulează baze de date tranzacționale B2B cu randament ridicat.
1. Separarea partițiilor fizice și izolarea subsistemelor
În mod implicit, multe hypervisoare instalează structurile de fișiere pe o singură partiție de sistem. Pentru bazele de date cu cicluri intense de scriere pe disc, umplerea fișierelor de jurnal (logs) sau suprapunerea snapshot-urilor mașinilor virtuale pot epuiza spațiul de stocare, declanșând mecanismul Linux Out Of Memory (OOM) care va opri forțat motorul bazei de date.
- Separarea sistemului de operare de mașinile virtuale: Plasați discurile virtuale ale bazelor de date (stocare brută bazată pe blocuri LVM sau pool-uri ZFS) pe matrice fizice NVMe complet separate de sistemul de operare al hypervisorului.
- Izolarea fișierelor de jurnal: Mappați fișierele de jurnal de la nivelul gazdei (
/var/log) pe volume de stocare separate pentru a evita blocarea sistemului de operare în scenariile cu telemetrie intensă. - Dezactivarea cache-ului de stocare pe gazdă: Configurați discurile virtuale să utilizeze cache-ul de tip
Write-ThroughsauNone. Acest lucru asigură că paginile de date Postgres sunt trimise direct către echipamentul fizic, prevenind coruperea datelor în cazul penelor de curent neașteptate.
2. Optimizarea kernelului pentru căile de rețea ale bazei de date
Setările sysctl de pe gazda fizică principală trebuie să blocheze spoofing-ul de adrese și să prioritizeze fluxurile de rețea dintre interfețele virtuale ale bazei de date și serviciile interne.
Adăugați următorii parametri în fișierul /etc/sysctl.d/99-security-db-host.conf:
# Dezactivează redirecționarea pachetelor la nivel de gazdă
net.ipv4.ip_forward = 0
# Previne IP Spoofing (Reverse Path Filtering)
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# Ignoră redirecționările ICMP Echo pentru a reduce riscul MitM
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
# Atenuează atacurile de tip SYN flood pe stiva gazdei
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
Avertisment: Verificați întotdeauna modificările utilizând sysctl -p și urmăriți metricile de latență. Configurarea unor valori SYN backlog agresive pe noduri cu memorie RAM redusă poate declanșa depășirea stivei de rețea.
3. Securizarea rețelei cu OPNsense și rețele VLAN
Serverele de baze de date nu ar trebui să fie niciodată accesibile direct din rețelele publice sau de management. În schimb, configurați punți de rețea (bridges) pentru a partaja mașinile virtuale în VLAN-uri izolate și non-rutabile.
Am configurat un mediu DMZ virtualizat utilizând un sistem de firewall și rutare OPNsense:
- Izolare prin VLAN: Plasați endpoint-urile aplicației (VLAN 10) și clusterele de stocare ale bazei de date (VLAN 20) pe plăci de rețea izolate complet separate.
- Exclusiv reguli explicite: Blocați tot traficul către nodurile de baze de date din VLAN 20, permițând conexiuni exclusiv de la interfețele de rețea autorizate (cum ar fi serverele API backend din VLAN 10) pe portul
5432(PostgreSQL) sau3306(MySQL).
De exemplu, pentru a aplica regulile de firewall ale gazdei direct în interfețele hypervisorului folosind iptables:
# Respinge conexiunile directe către baza de date din subrețele externe
$ iptables -A FORWARD -p tcp --dport 5432 -s 192.168.1.0/24 -j DROP
# Permite accesul doar de la clusterele API backend de încredere
$ iptables -A FORWARD -p tcp --dport 5432 -s 10.10.10.50/32 -d 10.10.20.100/32 -j ACCEPT
4. Configurarea fluxurilor de stocare izolate pentru copii de siguranță
Copiile de siguranță sunt vectori de atac de prioritate ridicată pentru exploatările de securitate. Dacă un atacator obține acces la un nod web și migrează pe hypervisor, poate localiza și suprascrie cu ușurință backup-urile gazdei.
Pentru a preveni acest lucru:
- Acces unidirecțional (Pull-based): Implementați sisteme de backup bazate pe pull (unde depozitul de backup se conectează pentru a descărca datele, în loc ca serverul de baze de date să trimită backup-ul în depozit).
- Plăci de rețea dedicate: Copiile de siguranță ar trebui transmise printr-o placă de rețea fizică dedicată (NIC) conectată la un LAN securizat de backup, ocolind rutele implicite de trafic.
- Reguli de reținere Read-Only (Imutabile): Securizați stocarea utilizând volume de snapshot imutabile, făcând backup-urile imposibil de modificat sau șters pentru o perioadă determinată de timp.
Concluzie
Securizarea gazdelor de baze de date B2B necesită straturi profunde de configurare la nivelul sistemului de operare, al firewall-ului și al arhitecturii fizice a sistemului. Prin segregarea stocării, aplicarea profilurilor de optimizare a kernelului, izolarea traficului de rețea via OPNsense și securizarea rețelelor de backup, construiți o fundație operațională robustă pentru aplicații enterprise critice.