Les dues lliçons anteriors han estat un inventari del problema: els atacs tècnics ordenats per fase de la cadena i el vector humà amb tota la seva casuística. Aquesta lliçó és l'inventari de la resposta. Recorrerem el catàleg de defenses que contraresta el que hem vist, organitzat per les capes de la defensa en profunditat que vas establir a 01-03: perímetre i xarxa, endpoint, dada, aplicació i cicle de desenvolupament, i registre i observabilitat. De cada mesura en veuràs què fa, quan es fa servir i quin atac concret neutralitza; la implementació detallada correspon al mòdul 5 i aquí només s'hi enllaça. I com que el pressupost de Nimbus no és infinit, la lliçó acaba amb el més útil de tot: una taula de les dotze mesures de més retorn amb el seu cost, esforç i impacte, i un pla per fases de 30, 90 i 180 dies que la Marta podria aprovar dilluns.
Contingut
- Com triar defenses: tres criteris abans de gastar un euro
- Protecció del perímetre i de la xarxa
- Protecció de l'endpoint
- Protecció de la dada
- Protecció de l'aplicació i del cicle de desenvolupament
- El registre i l'observabilitat com a mesura de protecció
- Prioritzar amb pressupost de pime: les 12 mesures de més retorn
- Pla per fases: 30, 90 i 180 dies
- Com triar defenses: tres criteris abans de gastar un euro
Abans del catàleg, el mètode. La forma més habitual de gastar malament en seguretat és comprar el que s'anuncia i no el que falta.
Criteri 1: quin atac concret neutralitza? Tota mesura s'ha de poder associar a una entrada de la taula resum de 02-02 o del catàleg de 02-03. Si no saps quin atac atura, no saps si et fa falta.
Criteri 2: en quina fase de la cadena actua i quines altres capes hi tinc? Recorda la Kill Chain de 02-01: si totes les teves mesures actuen en la mateixa fase, tens una defensa gruixuda per un costat i nua per l'altre.
Criteri 3: quin tipus de control és? Els controls es classifiquen per funció, i una defensa sana en té dels quatre tipus:
| Tipus | Què fa | Exemple a Nimbus |
|---|---|---|
| Preventiu | Impedeix que passi | MFA, consultes parametritzades, tallafoc |
| Detectiu | Avisa que està passant | Alerta d'exportació massiva, registre d'auditoria |
| Correctiu | Redueix el dany o restaura | Restauració de còpies, revocació de tokens |
| Dissuasori | Desincentiva l'intent | Bàner legal, avís de sessió registrada |
El desequilibri típic ja el vas diagnosticar amb el NIST CSF a 02-01: gairebé tot preventiu, gairebé res detectiu. És còmode perquè el preventiu es compra i s'instal·la un cop, mentre que el detectiu exigeix que algú miri. Però quan la prevenció falla —i fallarà— l'única cosa que limita el dany és la detecció.
Un quart criteri, informal però decisiu en una pime: aquesta mesura sobreviu a un mal dia? Una defensa que exigeix deu minuts diaris de disciplina d'algú saturat no durarà tres setmanes. Les mesures que funcionen a Nimbus són les que estan per defecte, automatitzades o en el camí natural de la feina.
- Protecció del perímetre i de la xarxa
El perímetre clàssic ha perdut pes —la meitat de la plantilla treballa en remot i les dades són al núvol— però no ha desaparegut: continua sent la primera línia contra l'escaneig massiu de 02-02.
2.1 Tallafocs: quin tipus cal i per a què
| Tipus | Què inspecciona | Què atura | On encaixa a Nimbus |
|---|---|---|---|
| Filtratge de paquets | IP, port, protocol | Accés a serveis que no han de ser abastables | Els grups de seguretat del proveïdor cloud; és el que va faltar al 0.0.0.0/0 del port 22 |
| Amb estat (stateful) | L'anterior + l'estat de la connexió | Paquets que no pertanyen a una connexió establerta | Estàndard en qualsevol tallafoc modern |
| De nova generació (NGFW) | Aplicació i identitat, no només port | Trànsit legítim pel port 443 però cap a destinacions indegudes | Router de l'oficina de València |
| D'aplicació web (WAF) | Peticions HTTP: cos, paràmetres, capçaleres | Injecció SQL, XSS, recorregut de rutes, bots | Davant de l'API (A-04) |
Sobre el WAF, amb precisió, perquè és la mesura més mal interpretada de totes: un WAF compra temps, no corregeix codi. És extraordinàriament útil per a tres coses: frenar el soroll de fons automatitzat, aplicar un pedaç virtual mentre es corregeix una vulnerabilitat acabada de descobrir, i aportar visibilitat del que s'intenta contra l'API. El que no fa: substituir les consultes parametritzades ni detectar un IDOR, perquè una petició IDOR està perfectament ben formada. Si Nimbus instal·la un WAF i amb això relaxa la revisió de codi, ha empitjorat.
2.2 Segmentació
Què és. Dividir la xarxa en zones amb control entre elles, de manera que comprometre'n una no doni accés a les altres.
flowchart TB
INT["INTERNET"] --> DMZ["ZONA PUBLICA\nBalancejador + WAF"]
DMZ --> APP["ZONA D APLICACIO\nAPI, workers\nSense acces directe des d Internet"]
APP --> DAT["ZONA DE DADES\nPostgreSQL, Redis\nNomes accessible des de la zona d aplicacio"]
OFI["OFICINA VALENCIA\nWifi corporativa"] -->|"nomes via bastio + MFA"| APP
INV["WIFI CONVIDATS\nAillada, sense acces intern"] --> INT
CONS["CONSULTORA EXTERNA"] -->|"acces just-in-time, amb caducitat"| APP
Per què és la mesura més rendible contra el ransomware. La cronologia de 02-02 mostrava que l'atacant passa dies movent-se lateralment. La segmentació és el que converteix «van entrar en un portàtil» en «van entrar en un portàtil» i no en «van xifrar tota la infraestructura». Tres regles pràctiques per a Nimbus:
- La wifi de convidats no toca res intern. És un control de cinc minuts al router i elimina una classe sencera de risc.
- La zona de dades només accepta connexions de la zona d'aplicació. Mai des de l'oficina ni des d'Internet. Això ja ho vas comprovar amb
describe-security-groupsa 01-04. - L'accés administratiu passa sempre per un punt únic (bastió o VPN amb MFA), que és l'únic lloc on cal vigilar de debò.
2.3 Protecció anti-DDoS
Contra el volumètric, la defensa es contracta: el proveïdor cloud o una CDN absorbeixen el trànsit abans que arribi a l'enllaç de Nimbus. És una de les poques defenses que realment no es pot construir amb recursos propis, perquè requereix capacitat de xarxa.
Contra l'aplicatiu, la defensa es programa, i ja la vas veure a 02-02: paginació obligatòria, límits de rang de negoci, límit de taxa i temps màxim de consulta. Cap servei anti-DDoS no distingeix una petició cara d'una de barata: per a ell, totes dues són una petició HTTPS legítima.
2.4 VPN i accés remot segur
Amb 19 persones fora de l'oficina, l'accés remot és el perímetre de Nimbus.
| Model | Com funciona | Avantatge | Problema |
|---|---|---|---|
| VPN tradicional | L'equip entra a la xarxa interna i accedeix a tot | Senzilla i coneguda | Accés «tot o res»: una credencial compromesa dona la xarxa sencera. És el cas de Colonial Pipeline que veurem a 02-06 |
| Bastió / jump host | Punt únic de salt amb MFA i registre | Un sol punt per vigilar i auditar | Requereix disciplina d'ús |
| Accés Zero Trust per aplicació | S'autoritza aplicació per aplicació, verificant identitat i estat del dispositiu a cada petició | No hi ha «dins»; el compromís no dona xarxa | Més cost inicial de configuració |
Recomanació per a Nimbus: MFA obligatori a l'accés remot (sense excepcions, inclosa la consultora), bastió amb registre de sessió per a l'accés administratiu, i accés just-in-time amb caducitat per a tercers en lloc de l'accés permanent actual de l'actiu A-19. El detall d'identitat va a 02-05; la configuració de xarxa, a 05-04.
- Protecció de l'endpoint
Els 40 portàtils (A-14) són on treballen les persones, i per tant on aterra el phishing de 02-03.
3.1 Antivirus davant d'EDR
| Aspecte | Antivirus tradicional | EDR (detecció i resposta a l'endpoint) |
|---|---|---|
| Detecta per | Signatures de fitxers coneguts | Comportament: què fa un procés, amb qui parla, què modifica |
| Cobreix | Programari maliciós conegut | Atacs sense fitxer, ús indegut d'eines legítimes, moviment lateral |
| Aporta | Bloqueig | Bloqueig + telemetria i historial per investigar |
| Permet | — | Aïllar remotament un equip compromès |
| Cost | Baix | Mitjà; requereix que algú atengui les alertes |
Per què importa la diferència en el cas de Nimbus. Repassa l'exercici 3 de 02-03: el portàtil del Rubén executa un component que estableix un canal sortint i roba la galeta del navegador. Un antivirus de signatures pot no veure-hi res, perquè el fitxer és nou i perquè bona part de l'activitat fa servir eines legítimes del sistema. Un EDR veu el patró: un procés ofimàtic llançant un intèrpret d'ordres, un accés al magatzem de credencials del navegador, una connexió sortint a un domini registrat fa poc. I, sobretot, permet aïllar l'equip amb un clic i reconstruir després què va passar.
L'advertiment realista: un EDR les alertes del qual ningú no mira és una despesa, no una defensa. Abans de comprar-lo cal decidir qui l'atén i quan. Per a Nimbus, l'opció sensata sol ser un EDR amb servei gestionat de vigilància, o un EDR ben configurat amb poques alertes i molt accionables.
3.2 Les altres tres mesures d'endpoint
| Mesura | Quin atac atura | Detall pràctic per a Nimbus |
|---|---|---|
| Xifratge de disc complet | Robatori o pèrdua física d'un portàtil | Activat als 40 equips, amb custòdia centralitzada de les claus de recuperació. Sense custòdia, un empleat que oblida la seva clau provoca una pèrdua de dades autoinfligida |
| Gestió de pedaços | Explotació de vulnerabilitats conegudes —el vector de WannaCry i Equifax (02-06) | Actualitzacions automàtiques del sistema i del navegador; termini compromès per a les crítiques (7 dies és un objectiu raonable); inventari que permeti saber quina versió té cada equip |
| Control d'aplicacions | Execució de programari no autoritzat, inclòs l'USB de baiting | Permetre només aplicacions aprovades; blocar macros d'origen extern; blocar l'execució des de carpetes temporals i des de dispositius extraïbles |
La mesura més infravalorada de les tres és l'aplicació de pedaços. No és vistosa, no es pot ensenyar a un client i no apareix a cap fullet comercial. Però dos dels majors incidents de la història recent —els que analitzarem a 02-06— van ser vulnerabilitats conegudes i amb pedaç disponible durant mesos. El hardening i la gestió de l'endpoint en detall s'estudien a 05-06.
- Protecció de la dada
Les capes anteriors protegeixen contenidors. Aquesta protegeix el que hi ha dins, i és l'única que continua servint quan les altres fallen.
4.1 Classificació: el prerequisit
No es pot protegir de forma diferenciada el que no està classificat. Ja ho vas fer a 01-04 amb els quatre nivells (públic, intern, confidencial, restringit) i les seves tres regles: herència cap amunt, agregació que puja el nivell i context que defineix la sensibilitat. La classificació no és una mesura en si mateixa: és el que fa possible aplicar la resta sense arruïnar-se.
4.2 Xifratge en trànsit i en repòs
| On | Què protegeix | Estat a Nimbus |
|---|---|---|
| En trànsit, extern | Escolta entre el client i l'API | TLS 1.3 amb HSTS: fet |
| En trànsit, intern | Escolta a la xarxa privada (flux F3 del DFD) | Pendent: TLS també entre balancejador i API |
| En repòs, base de dades | Accés al disc o al volum | Xifratge del volum amb claus gestionades: fet |
| En repòs, bucket | Accés a l'emmagatzematge d'objectes | Xifratge del costat del servidor amb clau gestionada: fet |
| En repòs, còpies | Robatori d'una còpia | Crític: la còpia conté tot. Xifrada i amb clau diferent de la de producció |
| A nivell de camp | Accés legítim a la base de dades que no hauria de veure certs camps | Valorar-ho per als camps més sensibles |
Dues precisions que eviten falses sensacions de seguretat:
- El xifratge en repòs del proveïdor protegeix contra el robatori del mitjà físic, no contra un atacant amb credencials vàlides. Si l'atacant té accés a la base de dades, el motor li retorna les dades desxifrades: per això hi és la clau. No protegeix contra l'IDOR ni contra el ransomware operat amb credencials robades.
- La clau és l'actiu real. Xifrar amb una clau que és al mateix lloc que la dada és un exercici decoratiu. La gestió de claus —on viuen, qui hi accedeix, com es roten— és el problema difícil, i s'estudia a 03-06.
Els mecanismes criptogràfics es desenvolupen al mòdul 3; aquí interessa on aplicar-los.
4.3 Còpies de seguretat: la regla 3-2-1 i la immutabilitat
És la mesura més important de tota la lliçó, perquè és l'única que retorna el negoci quan tota la resta ha fallat.
La regla 3-2-1:
- 3 còpies de les dades (la de producció i dues més).
- En 2 suports o tecnologies diferents.
- 1 d'elles fora de l'abast de la infraestructura principal.
L'ampliació moderna, 3-2-1-1-0, que és la que importa contra el ransomware:
- 1 còpia immutable o desconnectada.
- 0 errors a la prova de restauració.
Per què la immutabilitat és la peça decisiva. Recorda la cronologia del ransomware de 02-02: el dia 20, abans de xifrar, l'atacant esborra les còpies. Si les còpies de Nimbus són al bucket nimbus-backups-prod (A-03), dins del mateix compte cloud (A-05) i accessibles amb les mateixes credencials que producció, aleshores no són còpies: són fitxers més que es xifraran.
Configuració objectiu per a Nimbus:
| Requisit | Implementació |
|---|---|
| Compte separat | Les còpies van a un compte cloud diferent, amb credencials que producció no coneix |
| Immutabilitat | Bloqueig d'objecte en mode compliment, amb retenció de 30 dies: ningú, ni l'administrador, no les pot esborrar abans |
| Xifratge | Amb clau pròpia, diferent de la de producció |
| Verificació | Restauració completa cronometrada cada trimestre, amb resultat documentat |
| Abast | Base de dades, bucket d'adjunts, configuració d'infraestructura i secrets (sovint oblidats) |
La frase que convé interioritzar: una còpia que no s'ha restaurat mai no és una còpia, és una esperança. El cas més comú de fracàs no és que falti la còpia: és que la còpia existia, estava corrupta, incompleta o ningú no sabia el procediment. La continuïtat i els objectius de temps de recuperació es desenvolupen a 04-06.
4.4 DLP, minimització i pseudonimització
| Mesura | Què fa | Aplicació a Nimbus |
|---|---|---|
| DLP (prevenció de fuita de dades) | Detecta i bloqueja la sortida de dades sensibles per correu, web o USB | Realista per a Nimbus en versió lleugera: alerta si surt un fitxer amb molts DNI o correus; bloqueig d'USB d'escriptura |
| Minimització | No recollir ni conservar el que no es necessita | Necessita Nimbus el DNI dels pacients? Necessita guardar l'historial de cites cinc anys? El que no hi és no es pot filtrar |
| Pseudonimització | Substituir identificadors per referències reversibles només amb informació separada | L'entorn de preproducció (A-22) ha de fer servir dades pseudonimitzades, mai còpia directa de producció |
| Anonimització | Transformació irreversible | Per a mètriques agregades i estadístiques d'ús |
| Retenció i esborrament | Eliminar quan ja no es necessita | Política escrita per tipus de dada i esborrament automatitzat |
La minimització és la mesura amb millor relació cost/benefici de l'apartat, i gairebé mai no s'aplica perquè exigeix dir que no a dades que «algun dia podrien ser útils». Una dada que no existeix no es filtra, no es xifra, no s'audita i no apareix en una notificació de bretxa.
Nota sobre implicacions legals: minimització, pseudonimització, terminis de retenció i esborrament tenen exigències normatives concretes, especialment quan les dades poden revelar informació de salut com passa amb les agendes de les clíniques. Les decisions s'han de validar amb el responsable de compliment o amb assessoria jurídica; el tractament s'aborda a 06-03.
- Protecció de l'aplicació i del cicle de desenvolupament
L'API (A-04) és la superfície principal de Nimbus. Aquesta capa desplaça la seguretat cap a l'esquerra: al moment d'escriure el codi, on corregir és barat.
5.1 Revisió de codi i anàlisi automatitzada
| Pràctica | Què troba | Cost |
|---|---|---|
| Revisió per parells amb perspectiva de seguretat | Lògica d'autorització, decisions de disseny, coses que cap eina no veu (l'IDOR) | Cap d'addicional si ja es revisen els canvis |
| SAST (anàlisi estàtica) | Patrons perillosos al codi: concatenació en SQL, verify=False, pickle.loads |
Baix; soroll inicial que cal ajustar |
| SCA (anàlisi de composició) | Dependències amb vulnerabilitats conegudes | Baix; és la de més retorn immediat |
| Anàlisi de secrets | Credencials al codi i a l'historial | Molt baix; imprescindible després de la troballa del token de 01-04 |
| DAST (anàlisi dinàmica) | Fallades visibles atacant l'aplicació en execució | Mitjà; útil en preproducció |
La llista de comprovació de quatre preguntes que l'Iván hauria d'aplicar a cada revisió, ja introduïda a 02-02:
- Qui ets? — l'endpoint exigeix autenticació?
- És teu? — es filtra per
tenant_idi es verifica la propietat del recurs? - És vàlid el que envies? — hi ha validació de tipus i de rangs?
- Quant costa això? — hi ha paginació, límits i límit de taxa?
5.2 Gestió de secrets
La troballa del token sense caducitat de 01-04 i el .env filtrat de l'atac encadenat de 02-02 tenen la mateixa arrel: els secrets viuen on no han de viure.
| Regla | Per què |
|---|---|
| Mai al codi ni al repositori | Git conserva l'historial: esborrar el fitxer no esborra el secret |
| En un gestor de secrets, amb accés registrat | Un sol lloc per auditar i rotar |
| Injectats en temps d'execució, no a la imatge de contenidor | Una imatge amb secrets és un secret publicat al registre |
| Efímers sempre que sigui possible | Credencials del proveïdor cloud amb vida de minuts en lloc de claus permanents |
| Rotables sense desplegar | Si rotar exigeix un desplegament, no es rotarà |
| En detectar una exposició: rotar primer, investigar després | L'ordre invers és l'error clàssic |
5.3 Capçaleres de seguretat HTTP
Un conjunt d'instruccions al navegador que costa uns minuts configurar i neutralitza classes senceres d'atac de l'apartat 6 de 02-02.
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
Content-Security-Policy: default-src 'none'; script-src 'self'; style-src 'self';
img-src 'self' data:; connect-src 'self' https://api.nimbusreservas.example;
frame-ancestors 'none'; base-uri 'none'; form-action 'self';
report-uri https://csp.nimbusreservas.example/informe
X-Content-Type-Options: nosniff
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: geolocation=(), camera=(), microphone=()
Cache-Control: no-storeExplicació de cadascuna, i quin atac atura:
| Capçalera | Què fa | Atac que neutralitza |
|---|---|---|
Strict-Transport-Security |
Obliga el navegador a fer servir HTTPS durant 2 anys, inclosos subdominis, i a no permetre l'excepció manual | Degradació a HTTP i interposició (02-02, apartat 3) |
Content-Security-Policy |
Declara d'on es pot carregar i executar cada tipus de recurs | XSS: encara que s'injecti codi, el navegador es nega a executar-lo |
frame-ancestors 'none' |
Impedeix que un altre web incrusti la pàgina en un marc | Clickjacking |
X-Content-Type-Options: nosniff |
Impedeix que el navegador endevini el tipus de contingut | Fitxers pujats interpretats com a codi executable |
Referrer-Policy |
Limita la informació que s'envia en navegar a un altre lloc | Fuita d'identificadors i rutes internes a la capçalera Referer |
Permissions-Policy |
Desactiva funcions del navegador que l'aplicació no fa servir | Reducció de superfície al client |
Cache-Control: no-store |
Evita que respostes amb dades personals quedin a la memòria cau | Recuperació de dades en un equip compartit |
Detalls de la CSP que marquen la diferència:
default-src 'none'com a base. Es parteix de «res permès» i s'obre l'estrictament necessari. És el principi de segur per defecte de 01-03 aplicat al navegador.- Sense
'unsafe-inline'ni'unsafe-eval'. Permetre'ls anul·la la major part del valor de la CSP davant de l'XSS. Exigeix que el JavaScript sigui en fitxers, no incrustat. report-uriconverteix la CSP en un control detectiu: cada violació es registra. Un pic d'informes de CSP sol ser el primer senyal d'un intent d'XSS. Convé desplegar-la primer en mode només informe (Content-Security-Policy-Report-Only) per no trencar la SPA.
5.4 Límit de taxa
Ja ha aparegut a cada apartat, i per una raó: és la mesura que treu rendibilitat a la majoria dels atacs automatitzats —força bruta, enumeració, exportació massiva, DDoS aplicatiu, abús de lògica de negoci.
| Dimensió del límit | Per a què |
|---|---|
| Per IP | Soroll automatitzat; poc efectiu contra atacants distribuïts |
| Per usuari o token | Enumeració i exportació massiva; és el més útil en una API |
| Per tenant | Que un client no consumeixi la capacitat dels altres |
| Per operació sensible | Inici de sessió, recuperació de contrasenya, exportació: límits molt més estrictes |
Els detalls d'AppSec es desenvolupen a 05-05.
5.5 Un flux de CI amb anàlisi de dependències i secrets
Aquest és el fitxer que l'Iván afegiria al repositori de Nimbus. Està explicat pas a pas després.
name: seguretat
on:
push:
branches: [main]
pull_request:
schedule:
- cron: "0 6 * * 1" # dilluns a les 06:00: revisio periodica
permissions:
contents: read # minim privilegi: el flux nomes llegeix el codi
jobs:
analisi:
runs-on: ubuntu-latest
steps:
# 1. Descarrega del codi. Es fixa l accio per hash, no per etiqueta.
- name: Descarregar codi
uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
with:
fetch-depth: 0 # historial complet: necessari per buscar
# secrets en commits antics
- name: Preparar Python
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38
with:
python-version: "3.12"
# 2. Dependencies amb vulnerabilitats conegudes (SCA)
- name: Analisi de dependencies
run: |
pip install pip-audit
pip-audit --requirement requirements.txt \
--format json --output auditoria.json || true
pip-audit --requirement requirements.txt \
--vulnerability-service osv --strict
# --strict retorna codi d error si hi ha vulnerabilitats:
# aixi la construccio FALLA i ningu no ho pot ignorar
# 3. Secrets al codi i a TOT l historial
- name: Analisi de secrets
uses: gitleaks/gitleaks-action@83373cf2f8c4db6e24b41c1a9b086bb9619e9cd3
env:
GITLEAKS_CONFIG: .gitleaks.toml
# 4. Patrons perillosos al codi propi (SAST)
- name: Analisi estatica
run: |
pip install bandit
bandit -r app/ -ll -f screen
# -ll: nomes severitat mitjana i alta, perque el senyal no s ofegui
# 5. Inventari de components (SBOM): respondre "que fem servir?" en minuts
- name: Generar SBOM
run: |
pip install cyclonedx-bom
cyclonedx-py requirements -i requirements.txt -o sbom.json
- name: Guardar resultats
if: always() # es guarden fins i tot si algun pas ha fallat
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
with:
name: informes-seguretat
path: |
auditoria.json
sbom.jsonLes set decisions d'aquest fitxer, explicades:
permissions: contents: read. Per defecte, molts fluxos reben permisos amplis. Declarar el mínim evita que una acció compromesa escrigui al repositori. És mínim privilegi (01-03) aplicat al CI.- Accions fixades per hash de commit, no per
@v4. Una etiqueta es pot reapuntar a un altre codi; un hash, no. És la defensa contra l'atac a la cadena de subministrament de 02-02. fetch-depth: 0. Sense l'historial complet, l'anàlisi de secrets només mira l'últim commit i es perd exactament el que cal trobar: la credencial que algú va pujar i «esborrar» fa vuit mesos.--stricta l'anàlisi de dependències. Sense això, l'informe es genera i ningú no el llegeix. Amb això, la construcció falla i cal decidir: actualitzar o justificar l'excepció per escrit. Una anàlisi que no pot blocar no canvia comportaments.-lla l'anàlisi estàtica. Filtrar per severitat és el que evita el destí habitual d'aquestes eines: 400 avisos, ningú no els mira, es desactiva l'eina.- SBOM. Quan surti la propera vulnerabilitat crítica en una biblioteca famosa, la pregunta serà «ens afecta?». Amb SBOM es respon en minuts; sense, en dies. És l'inventari de 01-04 aplicat al programari.
if: always()en guardar resultats. Els informes del dia en què alguna cosa falla són precisament els que cal conservar.
I un advertiment sobre què NO fa aquest flux: no troba l'IDOR, no troba l'abús de lògica de negoci i no troba una fallada de disseny d'autorització. Les eines automàtiques cobreixen els patrons coneguts; el criteri humà cobreix la resta. Complementaris, no substitutius.
- El registre i l'observabilitat com a mesura de protecció
El diagnòstic del CSF a 02-01 va ser clar: la funció més feble de Nimbus és Detectar. I sense registre no hi ha detecció possible.
6.1 Què registrar
| Categoria | Esdeveniments | Per què |
|---|---|---|
| Autenticació | Inicis de sessió amb èxit i fallits, MFA, tancaments, canvis de contrasenya | Detecta password spraying, stuffing, sessions anòmales (02-02) |
| Autorització | Denegacions d'accés, ús de funcions administratives, suplantació de client | Detecta escalada i IDOR |
| Accés a dades sensibles | Consultes i exportacions amb actor, tenant i volum | És la que va detectar l'exfiltració de l'exercici de 02-02 |
| Canvis de configuració | Permisos, regles de xarxa, rols, polítiques de bucket | Detecta persistència de l'atacant |
| Cicle de vida de comptes | Altes, baixes, canvis de rol, creació de tokens | Detecta comptes creats per l'atacant |
| Esdeveniments d'aplicació | Errors 5xx, errors d'SQL, violacions de CSP | Senyals primerencs d'intent d'explotació |
| Infraestructura | Accessos SSH, execució de contenidors, canvis en imatges | Moviment lateral |
Els cinc camps que ha de tenir tot esdeveniment útil: quan (amb zona horària i rellotge sincronitzat), qui (identitat nominal, no «admin»), què (acció concreta), sobre què (recurs i tenant) i des d'on (IP i agent). Un registre sense actor identificable no serveix per investigar; un registre sense recurs no serveix per mesurar l'abast.
6.2 Què NO registrar mai
Aquest apartat és tan important com l'anterior, perquè un registre mal dissenyat crea un problema de seguretat en lloc de resoldre'l.
| No registrar mai | Per què |
|---|---|
| Contrasenyes, ni tan sols fallides | Una fallada sol ser una contrasenya real mal teclejada o d'un altre servei |
| Tokens, claus d'API, galetes de sessió | Un registre amb tokens és un fitxer de credencials vàlides, i els registres es copien i es comparteixen amb facilitat |
| Dades que revelen salut | El nom del servei d'una cita («rehabilitació de genoll») no ha d'aparèixer en un registre d'aplicació |
| Números complets de targeta o compte | Obligacions específiques; a Nimbus els pagaments estan tokenitzats a la passarel·la precisament per no tocar-los |
| Cossos complets de peticions i respostes | És la via més comuna de filtrar tot l'anterior sense adonar-se'n |
| Documents d'identitat i dades personals innecessàries | Minimització també als registres |
# === MALAMENT: registra el cos complet, incloses dades personals i tokens ===
logger.info("Peticio rebuda: %s capceleres=%s cos=%s",
url, dict(peticio.headers), await peticio.body())
# === BE: registrar el necessari per investigar, res mes ===
logger.info(
"acces",
extra={
"usuari_id": usuari.id, # identitat, no nom complet
"tenant_id": usuari.tenant_id,
"accio": "exportar_reserves",
"recurs": "reserves",
"num_registres": len(files), # el VOLUM es el senyal d alerta
"ip": peticio.client.host,
"sessio_id": sessio.id,
# sense noms de pacients, sense token, sense cos de la peticio
})Per què aquesta versió permet detectar i l'anterior no: el camp num_registres juntament amb sessio_id i tenant_id és exactament el que feia funcionar la consulta de detecció de l'exercici 3 de 02-02. La detecció es dissenya quan s'escriu el registre, no quan passa l'incident. I el registre correcte conté menys dades personals que l'incorrecte, no més.
6.3 Les tres propietats que fan útil un registre
- Centralitzat. Registres repartits per cinc màquines no es correlacionen. A més, un atacant que compromet una màquina esborra els seus registres locals: enviar-los fora en temps real és el que preserva l'evidència.
- Íntegre i amb retenció. La taula d'auditoria append-only de 01-01 —amb
INSERTperò senseUPDATEniDELETEper animbus_api— és l'aplicació d'aquesta idea. Retenció mínima recomanable: 90 dies en calent, un any en fred. Moltes bretxes es descobreixen mesos després, i sense registres no es pot determinar l'abast, que és justament el que cal comunicar a clients i autoritats. - Amb alertes que algú atén. Un registre sense alertes és un arxiu històric. Poques alertes i molt bones: per a Nimbus, cinc regles inicials n'hi ha prou.
Les cinc alertes amb què començar demà:
| Alerta | Llindar inicial | Atac que detecta |
|---|---|---|
| Fallades d'autenticació des d'un mateix origen contra diversos comptes | > 5 comptes diferents en 10 min | Password spraying |
| Exportació de dades anòmala | > 5.000 registres o > 3 tenants per sessió/hora | Exfiltració |
| Ús de funció administrativa fora d'horari | Qualsevol entre 22:00 i 07:00 | Compromís de compte privilegiat |
| Canvi en regles de xarxa, permisos IAM o polítiques de bucket | Qualsevol no originat al CI | Persistència de l'atacant |
| Creació de token, clau SSH o compte nou | Qualsevol | Persistència |
Les tècniques de monitoratge i detecció es desenvolupen a 05-02.
- Prioritzar amb pressupost de pime: les 12 mesures de més retorn
Nimbus no ho pot fer tot. Aquesta és la taula que converteix el catàleg en decisions. Cost són diners, esforç és temps de l'equip, impacte és reducció real de risc.
| # | Mesura | Cost | Esforç | Impacte | Què neutralitza |
|---|---|---|---|---|---|
| 1 | MFA resistent al phishing a tots els comptes administratius (cloud, GitHub, correu, BD, VPN) | Baix | Baix | Molt alt | Spraying, stuffing, phishing de credencials, accés de la consultora |
| 2 | Còpies immutables en compte separat + prova de restauració trimestral | Baix-mitjà | Mitjà | Molt alt | Ransomware, esborrament accidental o maliciós |
| 3 | Tancar la superfície descoberta (SSH 0.0.0.0/0, Redis sense auth, http.server, node_exporter, subdominis morts) |
Nul | Baix | Molt alt | Atac oportunista automatitzat |
| 4 | Caducitat i àmbit mínim a tots els tokens + rotació del token de desplegament | Nul | Baix | Alt | L'atac encadenat de 02-02 |
| 5 | Anàlisi de dependències i secrets al CI (el yaml de l'apartat 5.5) |
Nul | Baix | Alt | Dependències vulnerables, secrets filtrats |
| 6 | Registre centralitzat + les 5 alertes de l'apartat 6.3 | Baix | Mitjà | Molt alt | Tot el que avui és invisible |
| 7 | SPF -all, DKIM i DMARC p=reject + bàner de correu extern |
Nul | Baix-mitjà | Alt | Suplantació del domini, frau del CEO |
| 8 | Procediment de verificació de pagaments i d'identitat a suport | Nul | Baix | Alt | BEC, frau d'IBAN, vishing |
| 9 | Gestió de pedaços amb termini compromès (7 dies per a les crítiques) | Baix | Mitjà | Alt | WannaCry, Equifax i equivalents |
| 10 | Xifratge de disc als 40 portàtils amb custòdia de claus | Nul | Baix | Mitjà-alt | Robatori o pèrdua de portàtil |
| 11 | Segmentació mínima: wifi de convidats aïllada, zona de dades tancada, bastió amb MFA | Baix | Mitjà | Alt | Moviment lateral, ransomware |
| 12 | EDR als portàtils amb algú que atengui les alertes | Mitjà | Mitjà | Alt | Programari maliciós, robatori de sessió, moviment lateral |
Tres observacions sobre aquesta taula:
- Vuit de les dotze mesures tenen cost econòmic nul o baix. El que falta a Nimbus no és pressupost: és decisió i temps assignat. És la conclusió més repetida en seguretat de pimes i la que més costa acceptar.
- L'única amb cost mitjà real és l'EDR (#12), i va l'última a propòsit: sense MFA, sense còpies immutables i sense registre, un EDR és un luxe mal col·locat.
- Cap de les dotze no és un producte de seguretat perimetral. No hi ha cap tallafoc nou a la llista, i no és un oblit: el risc de Nimbus no és allà.
- Pla per fases: 30, 90 i 180 dies
flowchart LR
F1["DIES 1-30\nURGENT\nTancar el que es obert,\nMFA, tokens,\ncopies immutables"]
F1 --> F2["DIES 31-90\nESTRUCTURAL\nRegistre i alertes,\nCI de seguretat,\ncorreu i processos"]
F2 --> F3["DIES 91-180\nMADURESA\nSegmentacio, EDR,\npedacos formals,\nrecertificacio"]
F3 --> F4["CONTINU\nRevisio trimestral,\nsimulacres, proves\nde restauracio"]
Fase 1 — Dies 1 a 30: aturar l'hemorràgia
Tot el que es pot fer sense pressupost, sense proveïdor i sense projecte.
| Tasca | Propietari | Verificació que està fet |
|---|---|---|
Tancar SSH a 0.0.0.0/0; accés només per bastió |
Lucía | describe-security-groups sense 0.0.0.0/0 en ports administratius |
Apagar el http.server, aïllar el NAS oblidat, retirar node_exporter públic i snmpd |
Lucía | ss -tulpn amb només els serveis previstos |
| Autenticar Redis i vincular-lo a la xarxa privada | Lucía | Connexió des de fora rebutjada |
| MFA obligatori a cloud, GitHub, correu i VPN, inclosa la consultora | Marta | Informe de comptes sense MFA: buit |
Rotar el token nimbus-deploy-bot; àmbit mínim i caducitat |
Marta | Cap token sense data de caducitat |
| Revocar l'enllaç públic del full de nòmines i revisar accessos | Sara | Enllaç inaccessible; registre revisat |
| Còpies a compte separat amb bloqueig d'objecte 30 dies | Lucía | Intent d'esborrament rebutjat pel mateix proveïdor |
| Una restauració completa cronometrada | Lucía | Document amb temps i resultat |
| Bàner de correu extern | Marta | Visible en un correu de prova |
| Procediment de verificació de pagaments, signat | Sara + Marta | Document d'una pàgina publicat |
| Canal de report de phishing comunicat als 38 | Sara | Prova de report completada |
Fase 2 — Dies 31 a 90: construir capacitat
| Tasca | Propietari | Resultat esperat |
|---|---|---|
| Registre centralitzat amb els camps de l'apartat 6.1 | Lucía | Tots els esdeveniments d'autenticació i accés a dades en un únic lloc |
| Les 5 alertes inicials, amb guàrdia rotatòria | Lucía | Cada alerta amb propietari i procediment d'una línia |
| Flux de CI de seguretat de l'apartat 5.5 | Iván | Construcció que falla davant d'una vulnerabilitat alta |
| Corregir el que reveli la primera anàlisi | Iván | Zero vulnerabilitats crítiques pendents |
SPF a -all, DKIM i DMARC en p=none amb informes |
Lucía | Informes rua rebuts i emissors identificats |
| Capçaleres de seguretat HTTP, CSP en mode informe | Iván | Capçaleres presents; informes de CSP recollits |
| Límit de taxa en autenticació, exportació i endpoints cars | Iván | Prova de càrrega que confirma el límit |
| TLS al tram intern (flux F3) | Lucía | Sense trànsit intern en clar |
| Procediment de verificació d'identitat a suport | Rubén + Marta | Document i assaig amb casos reals |
| Primer simulacre de phishing amb mètriques | Sara | Taxa de report i temps fins al primer avís mesurats |
| Xifratge de disc als 40 portàtils amb custòdia | Lucía | Inventari al 100 % |
Fase 3 — Dies 91 a 180: maduresa
| Tasca | Propietari | Resultat esperat |
|---|---|---|
DMARC a p=quarantine i després p=reject |
Lucía | Domini protegit davant de suplantació |
| CSP en mode bloqueig | Iván | Sense regressions a la SPA |
| Segmentació: convidats aïllats, zona de dades tancada, bastió | Lucía | Diagrama de xarxa actualitzat i verificat |
| EDR desplegat, amb responsable d'alertes definit | Lucía | Cobertura del 100 % dels portàtils |
| Gestió de pedaços amb terminis i mesura | Lucía | Tauler amb antiguitat de pedaços per equip |
| Accés just-in-time amb caducitat per a la consultora (A-19) | Marta | Accés permanent eliminat |
| Primera recertificació d'accessos | Marta | Llista d'accessos revisada i signada |
| Preproducció amb dades pseudonimitzades | Iván | Classificació d'A-22 resolta (ja no «a revisar») |
| Segona prova de restauració, cronometrada | Lucía | Temps de recuperació conegut i documentat |
| Primera prova de penetració externa | Marta | Informe amb pla de correcció prioritzat |
Com se sosté això en el temps: revisió trimestral d'una hora buscant el que sobra (01-04), un simulacre per trimestre, una prova de restauració per trimestre i una recertificació d'accessos per semestre. Quatre rutines, totes al calendari. El que no està agendat, no passa.
Nota: els terminis d'aquest pla són orientatius i s'han d'ajustar a la realitat de cada organització. Les obligacions formals de política, control documentat i evidència auditable es tracten a 04-02, 04-03 i 06-04.
Errors Comuns i Consells
Errors comuns:
- Comprar abans de tancar. Adquirir un WAF o un EDR mentre l'SSH és obert a Internet és invertir en la teulada amb els fonaments sense fer.
- Confiar en el WAF per no corregir el codi. El WAF compra temps; no arregla una injecció i no veu un IDOR.
- Anomenar còpia una cosa que no s'ha restaurat. La fallada més comuna no és l'absència de còpies, sinó la seva inutilitat en el moment de la veritat.
- Guardar les còpies al mateix compte i amb les mateixes credencials que producció. El ransomware modern les busca i les esborra: això no és una còpia.
- Registrar el cos complet de les peticions. Converteix el sistema de registres en un magatzem de tokens i dades personals, i multiplica l'impacte de qualsevol fuita.
- Generar cent alertes que ningú no mira. Pitjor que no tenir alertes, perquè produeix sensació de cobertura.
- Desplegar CSP directament en mode bloqueig. Trenca la SPA i acaba desactivada per sempre. Mode informe primer.
- Deixar l'anàlisi del CI sense capacitat de blocar. Un informe que no atura res no canvia el comportament de ningú.
- Xifrar i donar-ho per resolt. El xifratge en repòs no protegeix contra credencials robades ni contra una fallada d'autorització.
- Escriure el pla sense propietari ni data. Una tasca sense nom i sense dia és una intenció.
Consells:
- Comença sempre pel punt 3 de la taula: tancar el que ja és obert. Cost zero, impacte màxim, i a més redueix la feina futura.
- Per a cada mesura que implantis, escriu com comprovaries que continua funcionant d'aquí a sis mesos. Les defenses es degraden en silenci.
- Prefereix el que funciona per defecte davant del que exigeix disciplina diària. En una empresa de 38 persones, la disciplina s'esgota; la configuració roman.
- Quan dubtis entre dues mesures, tria la que redueixi el dany d'una fallada davant de la que intenti evitar una fallada més. La primera funciona fins i tot quan t'equivoques.
- Converteix cada incident i cada simulacre en una alerta nova. És el purple team de cost zero de 02-01.
- Revisa el pla de fases amb la Marta cada 30 dies, marcant el que està fet i renegociant el que no. Un pla que no es revisa mor a la fase 1.
Exercicis
Exercici 1 — Assignar defenses a atacs
Per a cadascun d'aquests vuit atacs de les lliçons 02-02 i 02-03, indica: la mesura principal que el neutralitza, una segona capa independent de la primera, el tipus de control de cadascuna (preventiu, detectiu, correctiu o dissuasori) i la fase de la cadena en què actuen.
- Password spraying contra els comptes de l'equip.
- Injecció SQL al cercador de clients.
- Ransomware que xifra la infraestructura i esborra les còpies.
- Frau de canvi d'IBAN d'un proveïdor, enviat a la Sara.
- Exfiltració lenta de dades mitjançant un token robat.
- XSS emmagatzemat al camp «notes» d'una reserva.
- SSRF a través de l'URL del logotip d'una clínica.
- Acció de CI de tercers compromesa.
Exercici 2 — Corregir un registre perillós
Aquest és el codi de registre actual de l'API de Nimbus:
@app.post("/api/v1/sesion")
async def iniciar_sessio(peticio: Request):
dades = await peticio.json()
logger.info("Intent de login: %s", dades) # (1)
usuari = autenticar(dades["email"], dades["password"])
if usuari is None:
logger.warning("Login fallit per a %s amb clau %s",
dades["email"], dades["password"]) # (2)
raise HTTPException(401, "Credencials incorrectes")
token = emetre_token(usuari)
logger.info("Login OK usuari=%s token=%s", usuari.email, token) # (3)
return {"token": token}
@app.get("/api/v1/reservas")
def llistar(usuari = Depends(usuari_actual)):
files = consultar_reserves(usuari.tenant_id)
logger.info("Reserves retornades: %s", [dict(f) for f in files]) # (4)
return filesEs demana: (a) identifica els problemes de cada línia marcada i explica el risc concret de cadascun; (b) reescriu el codi amb un registre correcte; (c) indica quines tres alertes podries construir sobre el registre corregit i quin atac detectaria cadascuna; (d) explica per què el registre correcte conté menys dades personals que l'incorrecte i tot i així permet detectar més.
Exercici 3 — Defensar el pressupost davant de la direcció
La Marta et dona 6.000 € anuals i un dia a la setmana de temps de l'equip per a seguretat durant el primer semestre. Un comercial li ha ofert un paquet de 5.500 € que inclou un tallafoc de nova generació per a l'oficina de València i un antivirus per als 40 portàtils.
Es demana:
- Argumenta, amb dades de les lliçons del mòdul, per què aquesta compra no és la millor assignació del pressupost de Nimbus.
- Proposa la teva assignació alternativa dels 6.000 € i del dia setmanal, amb partides concretes.
- Identifica les tres mesures de cost zero que s'haurien de fer les dues primeres setmanes, i justifica'n l'ordre.
- Explica quin risc acceptes conscientment en no gastar en perímetre, i com ho comunicaries a la Marta per escrit.
- Defineix tres indicadors que presentaries als sis mesos per demostrar que la inversió ha servit.
Solucions
Solució 1
| # | Atac | Mesura principal | Segona capa | Tipus | Fase |
|---|---|---|---|---|---|
| 1 | Password spraying | MFA resistent al phishing (preventiu) | Alerta per fallades des d'un mateix origen contra diversos comptes (detectiu) | Prev. + Det. | Lliurament / Explotació |
| 2 | Injecció SQL | Consultes parametritzades (preventiu) | Rol nimbus_api sense DELETE ni DDL + RLS (preventiu, limita el dany); alerta per errors de sintaxi SQL (detectiu) |
Prev. + Prev./Det. | Explotació |
| 3 | Ransomware | Còpies immutables en compte separat (correctiu) | Segmentació i MFA que dificulten el moviment lateral (preventiu); EDR (detectiu) | Corr. + Prev./Det. | Accions |
| 4 | Frau d'IBAN | Verificació per canal alternatiu al telèfon de fitxa (preventiu) | Doble aprovació per import (preventiu) + registre de la verificació (detectiu/probatori) | Prev. + Prev. | Lliurament |
| 5 | Exfiltració amb token robat | Caducitat i àmbit mínim del token (preventiu) | Alerta per volum d'exportació anòmal (detectiu) + límit de taxa per token (preventiu) | Prev. + Det. | Accions |
| 6 | XSS emmagatzemat | Codificació a la sortida (preventiu) | Content-Security-Policy amb report-uri (preventiu + detectiu) i galetes HttpOnly |
Prev. + Prev./Det. | Explotació |
| 7 | SSRF | Validació d'URL amb bloqueig de rangs interns i sense redireccions (preventiu) | Proxy de sortida amb llista blanca (preventiu) + alerta per peticions sortints a rangs interns (detectiu) | Prev. + Prev./Det. | Explotació |
| 8 | Acció de CI compromesa | Fixar accions per hash de commit (preventiu) | CI sense accés a secrets de producció i amb permissions mínims (preventiu); alerta per connexió sortint a domini nou des de l'executor (detectiu) |
Prev. + Prev./Det. | Lliurament |
Patró que emergeix: en els vuit casos, la segona capa és de naturalesa diferent de la primera —si la primera és de codi, la segona és de configuració o de detecció—. Això és defensa en profunditat ben entesa: capes que no fallen per la mateixa causa. Dues capes que depenen que l'Iván recordi alguna cosa són, a la pràctica, una sola capa.
Solució 2
(a) Problemes de cada línia:
| Línia | Problema | Risc concret |
|---|---|---|
| (1) | Registra el cos complet de l'inici de sessió, inclosa la contrasenya en clar | Totes les contrasenyes de l'equip i dels clients acaben en text pla al sistema de registres, que es copia, s'exporta i sovint s'envia a un tercer |
| (2) | Registra explícitament la contrasenya fallida | Una contrasenya fallida sol ser la contrasenya real mal teclejada, o la d'un altre servei. És un fitxer de credencials reutilitzables |
| (3) | Registra el token emès | Qualsevol amb accés als registres pot fer servir aquest token per suplantar la sessió, saltant-se l'MFA (pass-the-cookie de l'exercici de 02-03) |
| (4) | Registra totes les reserves retornades | Noms de pacients, dates i serveis: dades que revelen salut, en un registre d'aplicació sense control d'accés equivalent al de la base de dades |
(b) Codi corregit:
@app.post("/api/v1/sesion")
async def iniciar_sessio(peticio: Request):
dades = await peticio.json()
email = dades.get("email", "")
usuari = autenticar(email, dades.get("password", ""))
if usuari is None:
logger.warning("auth_fallada", extra={
"email_hash": hashlib.sha256(email.lower().encode()).hexdigest()[:16],
"ip": peticio.client.host,
"agent": peticio.headers.get("user-agent", "")[:120],
})
raise HTTPException(401, "Credencials incorrectes") # missatge uniforme
token, jti = emetre_token(usuari) # jti = identificador del token, no el token
logger.info("auth_ok", extra={
"usuari_id": usuari.id,
"tenant_id": usuari.tenant_id,
"jti": jti,
"ip": peticio.client.host,
"mfa": usuari.mfa_verificat,
})
return {"token": token}
@app.get("/api/v1/reservas")
def llistar(usuari = Depends(usuari_actual), pagina: int = 1):
files = consultar_reserves(usuari.tenant_id, pagina)
logger.info("acces_dades", extra={
"usuari_id": usuari.id,
"tenant_id": usuari.tenant_id,
"accio": "llistar_reserves",
"num_registres": len(files), # el volum, no el contingut
"pagina": pagina,
})
return filesTres decisions que mereixen comentari:
email_hashen lloc del correu a les fallades. Permet correlacionar intents contra el mateix compte sense acumular un llistat de correus vàlids als registres. És minimització aplicada a la detecció.jtien lloc del token. Eljtiés l'identificador del token: serveix per correlacionar la sessió i per revocar-la, però no permet suplantar ningú. Es detalla a 02-05.- Missatge d'error uniforme. «Credencials incorrectes» tant si el correu no existeix com si la contrasenya falla: evita l'enumeració d'usuaris de 02-02.
(c) Tres alertes construïbles:
| Alerta | Consulta conceptual | Atac detectat |
|---|---|---|
| Spraying | auth_fallada agrupat per ip, comptant email_hash diferents > 5 en 10 min |
Password spraying (02-02) |
| Exfiltració | acces_dades agrupat per usuari_id, sumant num_registres > 5.000/hora |
Exportació massiva amb token robat |
| Sessió sense autenticació prèvia | acces_dades amb un jti que no té un auth_ok corresponent en les últimes 24 h |
Pass-the-cookie / robatori de sessió |
(d) Per què menys dades permeten detectar més. El registre incorrecte acumula contingut (contrasenyes, tokens, noms de pacients) que no serveix per detectar res: ningú no construeix una alerta sobre el nom d'un pacient. El registre correcte acumula metadades estructurades —qui, què, quant, des d'on— que són exactament allò sobre el qual es consulta i s'agrega. La conseqüència és doble i molt elegant: es detecta més i es redueix l'impacte d'una fuita dels mateixos registres, que deixen de ser un objectiu valuós. Registrar bé és simultàniament una millora de detecció i una mesura de protecció de dades.
Solució 3
1. Per què la compra proposada no és la millor assignació. Quatre arguments, recolzats en el mòdul:
- No ataca el risc real de Nimbus. La superfície principal és l'API al núvol i les identitats, no la xarxa de l'oficina de València. Un NGFW a l'oficina no protegeix ni els 19 empleats en remot, ni el compte cloud (A-05), ni l'API, ni els buckets.
- Un antivirus de signatures no cobreix el que passa. Repassa la taula del mite 2 a 02-01: no atura el phishing de credencials, ni l'IDOR, ni el bucket mal configurat, ni la credencial de la consultora sense MFA, ni el frau del CEO.
- Consumeix el 92 % del pressupost deixant sense finançar les mesures 1 a 8 de la taula de l'apartat 7, que tenen impacte molt alt i cost baix o nul.
- Nimbus té avui problemes coneguts i sense resoldre —SSH obert, Redis sense autenticació, token permanent, còpies sense provar, zero detecció— que cap de les dues peces del paquet no corregeix. Gastar en el que falta abans de tancar el que és obert és l'error de l'apartat d'errors comuns.
2. Assignació alternativa:
| Partida | Import | Justificació |
|---|---|---|
| EDR gestionat per a 40 equips | 2.400 € | Única mesura de la taula amb cost real; cobreix endpoint i aporta detecció i capacitat d'aïllar |
| Plataforma de simulacres i microformació | 700 € | Ataca el vector dominant (02-03); mesura la taxa de report |
| Emmagatzematge de còpies immutables en compte separat | 600 € | És la mesura #2 de la taula; el cost és d'emmagatzematge |
| Gestor de secrets i de contrasenyes per a l'equip | 500 € | Resol el token permanent i la reutilització de contrasenyes |
| Registre centralitzat gestionat (nivell bàsic) | 900 € | Habilita la funció Detectar, la més feble segons el CSF |
| Reserva per a l'imprevist | 900 € | Una troballa de la primera anàlisi sol requerir despesa no planificada |
| Total | 6.000 € |
El dia setmanal es reparteix així: fase 1 completa les quatre primeres setmanes (tot cost zero), després alternant implantació (registre, alertes, CI) i rutina (revisar alertes, aplicar pedaços, revisió trimestral del que sobra).
3. Les tres mesures de cost zero de les dues primeres setmanes, per ordre:
- Tancar la superfície exposada (SSH
0.0.0.0/0, Redis sense autenticació,http.server,node_exporter,snmpd). Va primera perquè és explotable ara mateix per un bot sense que ningú decideixi atacar Nimbus: és risc actiu, no potencial. - MFA a tots els comptes administratius, inclosa la consultora. Va segona perquè neutralitza de cop spraying, stuffing i la major part del phishing de credencials, que és el vector dominant.
- Rotar el token permanent i posar caducitat a tots els tokens. Va tercera perquè tanca la baula 2 de l'atac encadenat de 02-02, i perquè un token filtrat converteix l'MFA en irrellevant.
4. El risc que s'accepta i com comunicar-lo. En no invertir en perímetre d'oficina s'accepta un risc residual sobre la xarxa local de València: un dispositiu compromès a l'oficina tindria més llibertat de moviment de la desitjable. Es mitiga parcialment i sense cost amb segmentació al router existent (convidats aïllats, zona de dades tancada) i amb l'EDR als portàtils.
La comunicació a la Marta ha de ser escrita, explícita i datada:
«Risc acceptat (data, revisió d'aquí a 6 mesos): no es reforça el perímetre de l'oficina de València aquest semestre. Motiu: el 100 % de les dades de clients és al núvol i la meitat de la plantilla treballa fora de l'oficina, per la qual cosa el perímetre físic no és el vector principal. Mitigació aplicada: segmentació amb l'equipament actual, EDR a tots els portàtils i xifratge de disc. Es revisarà si canvia l'arquitectura o si creix la plantilla a l'oficina. Aprovat per: Marta Solves.»
Això no és burocràcia: és la diferència entre acceptar un risc (decisió conscient, documentada, revisable) i ignorar-lo (que és el que es descobreix després d'un incident). La formalització d'aquest procés s'estudia a 04-01.
5. Tres indicadors als sis mesos:
| Indicador | Valor inicial | Objectiu a 6 mesos | Què demostra |
|---|---|---|---|
| Comptes administratius sense MFA | ~8 | 0 | Tancament del vector dominant |
| Temps de recuperació verificat (restauració completa cronometrada) | Desconegut | Conegut i < 4 h | Capacitat real de sobreviure a un ransomware |
| Taxa de report de phishing i temps fins al primer avís | 11 % / 47 min | > 35 % / < 15 min | Que la capa humana funciona com a detecció |
Un quart indicador molt visual per a direcció: nombre de serveis exposats a Internet, que hauria de baixar de sis a un el primer mes. És el que millor comunica el progrés a algú no tècnic.
Conclusió
Tens el catàleg de la resposta. Has après primer el mètode per triar: quin atac concret neutralitza cada mesura, en quina fase de la cadena actua, de quin tipus de control es tracta —preventiu, detectiu, correctiu o dissuasori— i si sobreviurà a un mal dia en una empresa de 38 persones. En perímetre i xarxa has vist els tipus de tallafocs i la precisió que evita l'error més car: un WAF compra temps i dona visibilitat, però no corregeix codi ni veu un IDOR; has entès la segmentació com la mesura més rendible contra el moviment lateral, la doble naturalesa de la defensa anti-DDoS —volumètrica que es contracta, aplicativa que es programa— i l'evolució de l'accés remot des de la VPN de tot o res cap a l'accés just-in-time amb caducitat. En endpoint has distingit antivirus d'EDR pel que de debò els separa —comportament, telemetria i capacitat d'aïllar— i has col·locat l'aplicació de pedaços al seu lloc: la mesura menys vistosa i una de les que més incidents greus hauria evitat.
En protecció de la dada t'endús tres idees que sostenen tota la resta: que el xifratge en repòs no protegeix contra credencials vàlides i que la clau és l'actiu real; que la regla 3-2-1 ampliada amb immutabilitat i prova de restauració és l'única defensa que retorna el negoci quan tot ha fallat, perquè el ransomware modern busca i esborra les còpies; i que la minimització és la mesura amb millor relació cost/benefici, perquè el que no existeix no es filtra. En aplicació i cicle de desenvolupament has recorregut la revisió de codi amb les seves quatre preguntes, la gestió de secrets amb la seva regla de rotar primer i investigar després, les capçaleres HTTP amb una CSP construïda des de default-src 'none', el límit de taxa com a lleva-rendibilitat universal, i un flux de CI real les set decisions del qual —permisos mínims, accions fixades per hash, historial complet, anàlisi que bloca, filtratge per severitat, SBOM i conservació d'informes— converteixen un informe decoratiu en un control efectiu.
En registre i observabilitat has après què registrar, amb els seus cinc camps imprescindibles, i sobretot què no registrar mai; i has comprovat a l'exercici la conclusió més contraintuïtiva de la lliçó: el registre correcte conté menys dades personals que l'incorrecte i permet detectar molt més, perquè la detecció es construeix sobre metadades estructurades, no sobre contingut. I has acabat amb el més útil per a una pime: les dotze mesures de més retorn —vuit d'elles amb cost econòmic nul o baix, cap d'elles un producte perimetral— i un pla de 30, 90 i 180 dies amb propietari i verificació per a cada tasca, sostingut per quatre rutines trimestrals al calendari.
D'aquestes dotze mesures, la número u era l'MFA, i diverses de les restants giren al voltant del mateix: qui ets i què pots fer. No és casualitat. Quan el perímetre es difumina —núvol, remot, tercers, mòbils— la identitat es converteix en el nou perímetre. A la lliçó següent, Identitat, Autenticació i Control d'Accés (02-05), l'estudiarem a fons: el cicle de vida d'una identitat i els comptes orfes, què diuen avui les guies sobre contrasenyes, les formes d'MFA ordenades per resistència al phishing, SSO i els protocols d'identitat amb la diferència exacta entre OAuth 2.0 i OpenID Connect, sessions i JWT amb la seva validació correcta davant de la ingènua, els models d'autorització DAC, MAC, RBAC, ABAC i ReBAC amb el disseny concret de Nimbus, i els comptes privilegiats, l'accés just-in-time i la recertificació.
Curs de Fonaments de Seguretat Informàtica
Mòdul 1: Introducció a la Seguretat Informàtica
- Conceptes Bàsics de Seguretat Informàtica
- Tipus d'Amenaces i Vulnerabilitats
- Principis de la Seguretat Informàtica
- Actius, Superfície d'Atac i Actors d'Amenaça
Mòdul 2: Ciberseguretat
- Definició i Abast de la Ciberseguretat
- Tipus d'Atacs Cibernètics
- Enginyeria Social i Pesca de Credencials
- Mesures de Protecció en Ciberseguretat
- Identitat, Autenticació i Control d'Accés
- Casos d'Estudi d'Incidents de Ciberseguretat
Mòdul 3: Criptografia
- Introducció a la Criptografia
- Criptografia Simètrica
- Criptografia Asimètrica
- Funcions Hash, HMAC i Emmagatzematge de Contrasenyes
- Protocols Criptogràfics
- Gestió de Claus, Certificats i PKI
- Aplicacions de la Criptografia
Mòdul 4: Gestió de Riscos i Mesures de Protecció
- Avaluació de Riscos
- Polítiques de Seguretat
- Controls de Seguretat
- Risc de Tercers i Cadena de Subministrament
- Pla de Resposta a Incidents
- Recuperació davant Desastres i Continuïtat de Negoci
Mòdul 5: Eines i Tècniques de Seguretat
- Eines d'Anàlisi de Vulnerabilitats
- Tècniques de Monitoratge i Detecció
- Proves de Penetració
- Seguretat en Xarxes
- Seguretat en Aplicacions
- Enfortiment de Sistemes i Seguretat de l'Endpoint
- Seguretat al Núvol i en Contenidors
Mòdul 6: Bones Pràctiques i Normatives
- Bones Pràctiques en Seguretat Informàtica
- Normatives i Estàndards de Seguretat
- Protecció de Dades Personals i RGPD a la Pràctica
- Compliment i Auditoria
- Formació i Sensibilització
- Ètica, Aspectes Legals i Divulgació Responsable
