Ghid de securitate · Moldova

Cum monitorizez serverul: loguri, metrici și alerte?

Un server fără monitorizare îți spune că are o problemă prin clientul care sună. Unul compromis, fără loguri centralizate, nu spune nimic: atacatorul șterge jurnalul înainte să plece. Monitorizarea e ochiul pe care îl ai când nu ești logat.

Actualizat la

Răspuns scurt

  1. Monitorizezi serverul colectând trei lucruri separate: metrici de resurse și de aplicație, loguri de sistem și de aplicație, evenimente de securitate din auditd și din jurnalul de autentificare.
  2. Pui Prometheus cu node_exporter pentru metrici, Loki pentru loguri și Grafana pentru alertare, toate pe altă mașină decât cea monitorizată.
  3. Definești alertele pe obiective de nivel de serviciu (rata de erori și latența), nu pe fiecare fluctuație de CPU.
  4. Trimiți alertele pe un canal citit efectiv noaptea, cu instrucțiuni pentru fiecare.
  5. Păstrezi logurile cât să reconstitui un incident și să răspunzi Agenției pentru Securitate Cibernetică sau clientului.
Metrici de sistem
node_exporter pe portul 9100, doar din rețeaua privată
Loguri de securitate obligatorii
auth.log sau journal sshd, sudo, auditd, nginx access și error
Unde stau logurile
pe altă mașină; loguri de securitate cel puțin 6 luni, restul 90 de zile
Ce declanșează alerta
SLO încălcat, nu un prag arbitrar de CPU

Trei fluxuri, trei întrebări diferite

Metricile răspund la „merge bine?”: încărcare, memorie, disc, latență, erori 5xx. Logurile răspund la „ce s-a întâmplat?”: cine s-a autentificat, ce cereri au dat eroare, ce a scris aplicația. Evenimentele de securitate răspund la „a făcut cineva ce nu trebuia?”: sudo la ore ciudate, fișiere modificate în /etc, un proces nou care ascultă pe un port. Un grafic de CPU nu răspunde la ultimele două.

Centralizarea pe altă mașină nu este opțională

Primul lucru pe care îl face un atacator cu root este să curețe jurnalul. Dacă logurile pleacă în timp real către un server separat, cu acces doar de scriere, curățenia locală nu mai ajută. La fel pentru metrici: Prometheus stă pe mașina de monitorizare și citește exporterii. O mașină pentru zece servere costă mai puțin decât o zi de investigație fără loguri.

  • Grafana Alloy (Promtail a ieșit din suport în martie 2026) trimite journal și fișiere către Loki
  • auditd cu reguli pe /etc, /usr/bin, sudoers și chei SSH
  • exporterii accesibili doar din rețeaua privată
  • 90 de zile pentru loguri, 6 luni pentru cele de securitate, un an pentru metrici

Alerte pe care le citește cineva

O alertă la fiecare vârf de CPU e ignorată după o săptămână, iar cea importantă se pierde între ele. Definește obiective de nivel de serviciu: 99,9 % din cereri sub 500 ms, sub 0,5 % erori 5xx, certificat TLS cu peste 14 zile până la expirare, disc sub 80 %. Alertezi când obiectivul e în pericol, cu text care spune ce are de făcut cel de gardă. Securitatea are canal separat: SSH reușit dintr-o țară nouă, sudo pe cont de serviciu, /etc/passwd modificat.

Monitorizarea ca obligație, nu doar ca bună practică

HG nr. 562/2025 cere furnizorilor identificați conform Legii nr. 48/2023 proceduri de monitorizare și jurnalizare, revizuirea periodică a jurnalelor și copii de rezervă, plus notificarea Agenției pentru Securitate Cibernetică la incidente cu impact semnificativ. Nu poți notifica un incident nedetectat și nici completa raportul final fără loguri. Legea nr. 195/2024 pornește termenul de notificare a CNPDCP din momentul în care ai aflat, deci detectarea târzie nu-l prelungește.

Ce monitorizezi pe un server de producție și cu ce
SemnalUnealtăAlertă tipicăRetenție
Resurse de sistemnode_exporter + Prometheusdisc peste 80 %, memorie epuizată, load susținut1 an agregat
Aplicație webexporter nginx / aplicațieerori 5xx peste 0,5 %, latență p95 peste SLO1 an agregat
Loguri de sistem și aplicațieGrafana Alloy + Lokierori repetate, restarturi de serviciu90 de zile
Autentificare și sudojournal sshd + auditdlogin reușit din adresă nouă, sudo pe cont de serviciucel puțin 6 luni
Certificate și domeniiblackbox_exportercertificat sub 14 zile, endpoint indisponibil6 luni

Comenzi și configurări

node_exporter accesibil doar din rețeaua privată
# /etc/systemd/system/node_exporter.service (fragment)
ExecStart=/usr/local/bin/node_exporter --web.listen-address=10.10.0.5:9100

# firewall: doar serverul de monitorizare
ufw allow from 10.10.0.2 to any port 9100 proto tcp
Reguli auditd pentru fișierele sensibile
# /etc/audit/rules.d/hardening.rules
-w /etc/passwd -p wa -k identity
-w /etc/sudoers -p wa -k sudoers
-w /etc/sudoers.d/ -p wa -k sudoers
-w /etc/ssh/sshd_config -p wa -k sshd
-w /root/.ssh/ -p wa -k ssh_keys
-a always,exit -F arch=b64 -S execve -F euid=0 -F auid>=1000 -F auid!=unset -k root_cmds
# apoi: augenrules --load && auditctl -l
Regulă de alertă Prometheus pe rata de erori
groups:
  - name: web-slo
    rules:
      - alert: RataErori5xxPesteSLO
        expr: sum(rate(nginx_vts_server_requests_total{code="5xx"}[5m])) / sum(rate(nginx_vts_server_requests_total{code="total"}[5m])) > 0.005
        # necesită nginx-module-vts + nginx-vts-exporter; cu stub_status simplu nu ai defalcare pe cod
        for: 10m
        labels: { severity: page }
        annotations:
          summary: "Peste 0,5 % erori 5xx timp de 10 minute"
          runbook: "https://wiki.exemplu.md/runbook/5xx"

Exemple din practică

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

Un client a întrebat cine a accesat serverul lui în ultimele 30 de zile; logurile locale fuseseră rotite după 7. După centralizarea în Loki cu retenție de șase luni și auditd pe sudo și chei SSH, raportul pleacă lunar dintr-o interogare.

Magazin online din Bălți, vârf de vânzări în decembrie

Serverul cădea la 2 dimineața fiindcă discul se umplea cu loguri de depanare. Alerta pe „disc peste 80 %” a venit cu trei zile înainte, iar rotația s-a reparat fără oprire.

Instituție din Cahul, portal de programări

O conectare SSH reușită dintr-o adresă străină, la ora 4, a fost primul semn al unei chei compromise. Cheia a fost revocată în zece minute, iar logurile centralizate au arătat că atacatorul nu rulase nimic.

Greșeli frecvente

  • Ții logurile doar pe serverul monitorizat, deci atacatorul cu root le șterge cu tot cu urme.
  • Alertezi pe praguri de CPU și memorie, nu pe erorile și latența văzute de client.
  • Expui node_exporter sau Grafana public, dând atacatorului harta infrastructurii.
  • Nu ai alertă pe expirarea certificatului TLS și afli de la clienți că site-ul „dă eroare”.
  • Trimiți alertele pe un e-mail comun, necitit după program.

Cum te ajută 4hosting

  • CI/CD & Monitoring instalează Grafana, Prometheus și Loki pe o mașină separată de producție și definește alertele pe SLO, cu runbook.
  • SIEM & Incident Response corelează logurile de pe toate serverele și livrează planul de răspuns și raportul post-incident pentru client sau autoritate.
  • Orele de DevOps incluse (1–8 lunar la VPS, 10 la dedicate și GPU) acoperă configurarea exporterilor și a regulilor auditd; 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

  • Cât timp trebuie să păstrez logurile?

    Cât să poți reconstitui un incident descoperit târziu și să răspunzi clientului sau autorității: 90 de zile pentru logurile de acces web, cel puțin șase luni pentru cele de securitate (autentificări, sudo, auditd) și un an pentru metrici agregate. Clienții din UE pot cere mai mult, deci citește anexa de securitate.

  • Grafana Cloud sau un serviciu SaaS de monitorizare este acceptabil?

    Pentru metrici, de regulă da. Pentru loguri, verifică unde ajung datele: ele conțin adesea date personale, iar clientul din UE poate limita transferul prin contract. O instanță proprie pe un VPS în UE evită discuția.

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.

Ghiduri pentru firme din Moldova