Tres de les cinc troballes del pentest anterior eren, en el fons, problemes de xarxa: un tauler publicat a la interfície externa del host, un subdomini que apuntava a una IP aliena i un servei accessible des d'on no havia de ser-ho. I segueixen pendents des de 05-01 els tres grans: PostgreSQL escoltant a 0.0.0.0:5432, SSH obert a tot Internet i la consultora amb accés permanent. Aquesta lliçó dibuixa la xarxa de Nimbus tal com està, la redissenya per zones, tanca aquests forats, munta l'accés remot i el DNS com han d'estar, i acaba comprovant amb proves de connectivitat que la segmentació funciona de debò: un disseny no provat és només un dibuix bonic.
Contingut
- La xarxa de Nimbus avui, amb els seus problemes
- Segmentació: el control amb millor relació cost/impacte
- Tallafocs: tipus, política per omissió i regles de sortida
- Accés remot segur: VPN, bastió i accés just-in-time
- Wifi corporativa i de convidats
- DNS: resolució, filtratge i protecció del domini
- Protecció davant de DoS i DDoS
- Detecció en xarxa i el problema del trànsit xifrat
- Zero Trust aplicat a la xarxa
- Verificar que la segmentació funciona
- La xarxa de Nimbus avui, amb els seus problemes
flowchart TB
subgraph OF["OFICINA DE VALENCIA - 10.20.0.0/16"]
direction LR
W1["Wifi corporativa\n40 portatils"] --- SW["Switch pla\nUNA SOLA VLAN"]
W2["Wifi de convidats\n(mateixa xarxa fisica)"] --- SW
NAS["NAS i multifuncio\nsense contrasenya"] --- SW
AP["Punts d'acces\ni router: panell web\namb clau per omissio"] --- SW
end
subgraph REM["TELETREBALL - 20 persones"]
P["Portatils a casa,\ncoworking, wifi publica"]
end
subgraph CL["NUVOL - 10.30.0.0/16"]
API["API FastAPI\n10.30.10.11-12"]
DB["PostgreSQL\n10.30.20.5\nPORT 5432 OBERT A 0.0.0.0/0"]
S3["Bucket A-02 adjunts\ni A-03 copies"]
PRE["PREPRODUCCIO A-22\n10.30.90.7\nRedis i http.server oberts"]
end
SW -->|"SSH obert a 0.0.0.0/0"| API
P -->|"connexio directa\nsense VPN"| API
API --> DB
API --> S3
PRE -->|"credencials compartides\namb produccio"| DB
CONS["CONSULTORA A-19\nacces remot PERMANENT\ncompte compartit, sense MFA"] --> API
CONS --> DB
Set problemes, ordenats per gravetat:
| # | Problema | Conseqüència directa |
|---|---|---|
| 1 | PostgreSQL a 0.0.0.0:5432 |
R-03. Qualsevol a Internet pot intentar autenticar-se contra les dades de 40 clíniques |
| 2 | SSH obert a 0.0.0.0/0 |
Superfície permanent de força bruta i el 82 % del soroll d'alertes de 05-02 |
| 3 | Accés permanent de la consultora (A-19) | La porta per on va entrar el ransomware de 02-06 |
| 4 | Xarxa d'oficina plana | Des d'un portàtil compromès s'arriba a tot: és el patró de Target |
| 5 | Convidats a la mateixa xarxa física | Qualsevol visita és dins del perímetre |
| 6 | Preproducció amb accés a la base de dades de producció | La troballa de la caça d'amenaces de 05-02 |
| 7 | Teletreball sense VPN ni control d'origen | La meitat de la plantilla connecta des de wifis que Nimbus no controla |
Cap no requereix comprar res per corregir-se. Els set són configuració, i aquesta és la millor notícia de la lliçó.
- Segmentació: el control amb millor relació cost/impacte
La segmentació divideix la xarxa en zones i controla explícitament què pot parlar amb què. És el control que té millor relació cost/impacte perquè no impedeix la intrusió, però impedeix que la intrusió es converteixi en catàstrofe: converteix «han compromès un portàtil» en «han compromès un portàtil», i no en «han compromès l'empresa».
És la lliçó de Target (02-06): els atacants van entrar pel proveïdor de climatització i van arribar als terminals de pagament perquè entre tots dos no hi havia cap frontera. I és també el dia 1-4 de l'incident de Nimbus: des de la xarxa d'administració s'arribava a la zona de dades sense cap control intermedi.
Vocabulari mínim. Una VLAN separa dominis de difusió al mateix switch físic (és lògica, no cablatge nou); una subxarxa és el rang IP associat; el trànsit entre VLAN passa per un dispositiu que encamina i allà és on s'aplica la política. Al núvol l'equivalent són les subxarxes de la VPC i els grups de seguretat, que són tallafocs per instància i no per perímetre: això permet microsegmentació, és a dir, que dos servidors de la mateixa subxarxa no puguin parlar entre si si no ho han de fer.
Disseny objectiu de l'oficina:
| VLAN | Zona | Rang | Pot parlar amb |
|---|---|---|---|
| 10 | Usuaris (portàtils) | 10.20.10.0/24 | Internet i VPN corporativa. Res de gestió ni servidors |
| 20 | Servidors locals (NAS, impressió) | 10.20.20.0/24 | Només ports concrets des de la VLAN 10 |
| 30 | Convidats | 10.20.30.0/24 | Només Internet, amb aïllament entre clients |
| 40 | Gestió (switches, APs, router) | 10.20.40.0/24 | Només des del portàtil de la Lucía, per VPN o consola |
| 50 | No fiables (IoT, TV de sala) | 10.20.50.0/24 | Només Internet |
I al núvol:
| Subxarxa | Contingut | Entrada permesa |
|---|---|---|
| 10.30.1.0/24 pública | Balancejador i bastió | 443 des d'Internet; 22 només des de la VPN |
| 10.30.10.0/24 privada d'aplicació | API en contenidors | 8000 només des del balancejador; 22 només des del bastió |
| 10.30.20.0/24 privada de dades | PostgreSQL | 5432 només des de 10.30.10.0/24 |
| 10.30.90.0/24 preproducció | A-22 | Aïllada per complet de les tres anteriors |
La correcció dels dos forats històrics és literalment això: 5432 deixa d'acceptar 0.0.0.0/0 i només accepta la subxarxa d'aplicació; 22 deixa d'acceptar 0.0.0.0/0 a cada servidor i només s'assoleix des del bastió, que al seu torn només s'assoleix des de la VPN. Vint minuts de feina per al risc més ben puntuat del registre de 04-01.
- Tallafocs: tipus, política per omissió i regles de sortida
| Tipus | Què inspecciona | On va a Nimbus |
|---|---|---|
| Filtratge de paquets | Capçaleres: IP, port, protocol | Grups de seguretat cloud, nftables a cada host |
| Amb estat (stateful) | A més, l'estat de la connexió: permet la resposta al que tu vas iniciar | Router de l'oficina i tots els anteriors |
| De nova generació (NGFW) | Aplicació, usuari, contingut; sol integrar IPS | Opcional per a l'oficina; car per al pressupost |
| WAF (aplicació web) | Peticions HTTP: injeccions, patrons d'atac | Davant de l'API. No substitueix corregir el codi (05-05) |
Dos principis governen la configuració. El primer: política per omissió de denegar. Es tanca tot i s'obre el que està justificat, amb un comentari que digui per què. Una regla sense justificació documentada és una regla que ningú no gosarà treure d'aquí a tres anys.
El segon, el que gairebé ningú no aplica: filtrar també la sortida. Gairebé totes les organitzacions controlen què entra i deixen sortir qualsevol cosa cap a qualsevol lloc. Però l'exfiltració d'1,2 TB de 02-06 i el canal de comandament i control són trànsit de sortida. Un servidor de base de dades no necessita navegar per Internet.
#!/usr/sbin/nft -f
# /etc/nftables.conf del servidor de base de dades (10.30.20.5)
flush ruleset
table inet filtre {
chain entrada {
type filter hook input priority 0; policy drop; # DENEGAR PER OMISSIO
ct state established,related accept # respostes al que hem iniciat nosaltres
ct state invalid drop # paquets fora de context
iif "lo" accept # bucle local
# 5432 NOMES des de la subxarxa d'aplicacio. Aqui mor R-03.
ip saddr 10.30.10.0/24 tcp dport 5432 accept
# SSH NOMES des del bastio, mai des d'Internet.
ip saddr 10.30.1.10/32 tcp dport 22 accept
# Metriques per a Prometheus, nomes des del collector.
ip saddr 10.30.10.20/32 tcp dport 9187 accept
}
chain sortida {
type filter hook output priority 0; policy drop; # DENEGAR TAMBE LA SORTIDA
ct state established,related accept
oif "lo" accept
udp dport 53 ip daddr 10.30.0.2 accept # nomes el resolutor intern
udp dport 123 accept # NTP: sense hora no hi ha correlacio
tcp dport 443 ip daddr @repos_paquets accept # actualitzacions, llista acotada
tcp dport 443 ip daddr @endpoint_copies accept # copies al bucket A-03
# Tota la resta es descarta I ES REGISTRA: aquest log es la deteccio
# d'exfiltracio i de comandament i control que faltava a 02-06.
log prefix "SORTIDA-BLOQUEJADA " level warn
}
}Al núvol, la mateixa política expressada com a grups de seguretat:
sg-dades:
descripcio: "PostgreSQL de produccio (A-01)"
entrada:
- des_de: sg-aplicacio # referencia AL GRUP, no a un rang d'IP:
port: 5432 # si l'API escala, la regla segueix sent valida
proto: tcp
motiu: "Connexions de l'API. Substitueix 0.0.0.0/0 (R-03, 2026-04-07)"
- des_de: sg-bastio
port: 22
motiu: "Administracio, nomes via bastio"
sortida:
- cap_a: endpoint-s3-privat # transit de copies que NO surt a Internet
port: 443
motiu: "Copies a A-03 per punt d'enllac privat"
# Sense regla 0.0.0.0/0 de sortida: el servidor de dades no navega.Referenciar grups i no rangs d'IP és la bona pràctica més rendible del núvol: la regla segueix sent correcta quan l'API escala, se substitueix o canvia d'IP, i expressa la intenció («l'aplicació parla amb les dades») en lloc d'un accident d'adreçament.
El que costa de debò el filtratge de sortida és la primera setmana: apareixen dependències que ningú no havia documentat. És exactament el motiu pel qual val la pena, perquè aquestes dependències desconegudes són també la superfície que l'atacant fa servir. Es desplega primer en mode registre, es llegeixen els SORTIDA-BLOQUEJADA durant dues setmanes, s'obre el que és legítim i llavors s'activa.
- Accés remot segur: VPN, bastió i accés just-in-time
VPN amb WireGuard
WireGuard és lliure, ràpid, cap en 4.000 línies de codi auditable i la seva configuració entra en una pantalla.
# /etc/wireguard/wg0.conf — servidor VPN a la subxarxa publica (10.30.1.20)
[Interface]
Address = 10.90.0.1/24 # xarxa exclusiva de la VPN, diferent de tota la resta
ListenPort = 51820
PrivateKey = <clau privada del servidor>
PostUp = nft add rule inet filtre reenviament iifname wg0 oifname eth0 accept
PostDown = nft flush chain inet filtre reenviament
# Lucia (administracio de sistemes)
[Peer]
PublicKey = <clau publica de la Lucia>
AllowedIPs = 10.90.0.10/32 # UNA IP fixa per persona: sense aixo, els registres
# d'acces no identifiquen ningu
# Ivan (desenvolupament): mateixa VPN, identitat diferent i permisos diferents aigues avall
[Peer]
PublicKey = <clau publica de l'Ivan>
AllowedIPs = 10.90.0.11/32Tres decisions importen. Una IP fixa per persona converteix els registres de tallafoc en traçabilitat real. L'autenticació és per clau, sense contrasenyes per endevinar, però això obliga a un procediment d'alta i baixa: la baixa d'un empleat inclou esborrar el seu [Peer], i si no és a la llista de comprovació de sortida, l'accés sobreviu a la persona. I la VPN dona accés a la xarxa, no als sistemes: ser a la VPN no ha de bastar per entrar a la base de dades; segueix calent autenticació a cada servei.
Bastió SSH
# ~/.ssh/config al portatil de la Lucia
Host bastio
HostName 10.30.1.10
User lucia
IdentityFile ~/.ssh/id_ed25519_nimbus # Ed25519 (03-06)
IdentitiesOnly yes # no oferir totes les claus
Host api-* db-*
ProxyJump bastio # salta pel bastio sense deixar-hi la clau
User lucia # No es un tunel manual: la clau privada MAI
IdentityFile ~/.ssh/id_ed25519_nimbus # arriba al bastioProxyJump és la peça clau: el bastió reenvia la connexió, però l'autenticació passa d'extrem a extrem i la clau privada no toca el bastió. És la diferència amb el vell hàbit de copiar la clau al salt, que converteix el bastió en el punt únic de compromís total. El bastió, a més, registra totes les sessions i és l'únic host amb 22 accessible, i només des de la VPN.
Accés just-in-time i la consultora (A-19)
L'accés just-in-time inverteix el model: en lloc d'un accés permanent que es revoca quan algú se'n recorda, no hi ha accés fins que es demana, s'aprova i es concedeix amb caducitat automàtica. És el control C-03 de 04-03, i per a A-19 la implementació acordada a 04-04 és:
- Comptes nominals, un per tècnic de la consultora. S'ha acabat el
svc-consultoracompartit: sense nom no hi ha responsabilitat ni investigació possible. - MFA obligatori, el control que per si sol hauria evitat l'incident.
- Sol·licitud amb tiquet que indica sistema, motiu i durada; aprovació de la Lucía o la Marta.
- Caducitat de 8 hores, aplicada pel sistema i no per la memòria de ningú.
- Accés només al sistema concret, no a la xarxa completa.
- Alerta D-03 de 05-02 si apareix una autenticació fora de la finestra pactada.
- Revocació de l'excepció del 2023 sense caducitat del registre de 04-02, que és el que mantenia viu l'accés permanent.
- Wifi corporativa i de convidats
| WPA2-Personal | WPA2-Enterprise | WPA3 | |
|---|---|---|---|
| Autenticació | Clau compartida per tothom | Credencial individual (802.1X) | Individual o SAE |
| Si algú se'n va | Cal canviar la clau a tothom | S'esborra el seu compte | Igual |
| Captura de trànsit | Amb la clau es desxifra el dels altres | No | No: PFS per sessió |
| Atac de diccionari offline | Possible amb la captura de l'encaixada | No | No (SAE ho impedeix) |
Per a Nimbus: WPA3 on el maquinari ho permeti i WPA2-Enterprise a la resta, amb credencial individual contra el proveïdor d'identitat. La clau única compartida per 38 persones és a desenes de mòbils, ha passat per xats i no es canvia des del 2022.
La xarxa de convidats ha d'estar realment aïllada: VLAN 30 pròpia, sense ruta cap a cap altra VLAN, aïllament entre clients activat (que dos convidats no es vegin entre si), límit d'amplada de banda, portal amb condicions d'ús i clau rotada. L'error habitual és fer servir el mateix punt d'accés amb SSID diferent però sense separació de VLAN: això és la mateixa xarxa amb dos noms.
Dues coses que no són controls, i convé dir-ho sense embuts: el filtratge per MAC —les MAC es clonen amb una ordre i es veuen a l'aire encara que el trànsit estigui xifrat— i amagar l'SSID —la xarxa continua anunciant-se a cada connexió d'un client, i a més obliga els portàtils a anar-la buscant activament, cosa que facilita els punts d'accés falsos—. Consumeixen temps d'administració i donen una falsa sensació de seguretat.
El risc de la wifi pública afecta la meitat de la plantilla. Avui TLS protegeix el contingut (03-05), així que l'escenari clàssic de «et llegeixen la contrasenya» és en gran mesura històric; el que continua sent real és el punt d'accés fals que suplanta un portal conegut i l'enverinament de DNS local. La mesura efectiva és simple i ja està muntada: VPN sempre activa fora de l'oficina, amb DNS forçat pel túnel, més HSTS a tots els dominis propis.
- DNS: resolució, filtratge i protecció del domini
El DNS és el control més barat que existeix i el més oblidat. Tres fronts:
Resolució segura i filtratge. Tots els equips fan servir el resolutor corporatiu (o el del túnel VPN), mai el que ofereixi la wifi del bar. Un DNS filtrant bloqueja la resolució de dominis maliciosos, de dominis acabats de registrar i de categories no desitjades. És un control desproporcionadament eficaç: talla el phishing al clic i talla el comandament i control a la primera trucada a casa, funciona igual al portàtil de casa i a l'oficina, i hi ha opcions gratuïtes o de pocs euros per usuari. Per a Nimbus és, juntament amb el MFA, la millor compra per euro del catàleg. DNSSEC protegeix la integritat de les respostes i s'activa al domini propi; DoH/DoT xifren la consulta, amb la contrapartida que un DoH descontrolat al navegador se salta el filtratge corporatiu, així que es configura de forma explícita.
Protecció del propi domini. nimbusreservas.example és l'actiu A-08, crític, i perdre'l és perdre el correu, el web i la capacitat d'emetre certificats. Quatre mesures: bloqueig de transferència al registrador (registrar lock), MFA al compte del registrador amb dues persones amb accés, renovació automàtica amb alerta a 90 dies —han caigut empreses senceres per un domini no renovat—, i revisió trimestral de la zona, que és on apareixen els registres oblidats.
Apropiació de subdominis. És el que va trobar el pentest a 05-03. Passa quan un registre CNAME o A continua apuntant a un recurs que ja no controles —un bucket esborrat, un servei donat de baixa, una IP alliberada—: qualsevol pot reclamar aquell recurs i servir contingut sota el teu domini, amb el teu certificat vàlid i, si les galetes són de domini ampli, amb accés a les sessions dels teus usuaris.
# Revisio trimestral: cada registre de la zona ha de respondre i ser NOSTRE
for sub in $(cat zona-nimbus.txt); do
desti=$(dig +short "$sub" CNAME)
ip=$(dig +short "$sub" A | tail -1)
# Un CNAME que apunta a un desti inexistent (NXDOMAIN) es el senyal classic
# de subdomini reclamable: s'elimina el registre, no s'"arregla" el desti.
if [ -n "$desti" ] && ! dig +short "$desti" | grep -q .; then
echo "RISC $sub -> $desti (desti inexistent: reclamable)"
fi
echo "$sub A=$ip"
done
- Protecció davant de DoS i DDoS
Convé ser honest sobre el que pot i no pot fer una empresa de 38 persones.
| Tipus | Què fa | Ho pot Nimbus per si sola? |
|---|---|---|
| Volumètric (inundació d'amplada de banda) | Satura l'enllaç abans d'arribar als teus servidors | No. Cal un proveïdor amb capacitat d'absorció |
| De protocol (SYN flood i similars) | Esgota taules de connexió | Parcialment: syncookies, tallafoc amb estat |
| D'aplicació (peticions cares) | Tomba l'API amb poques peticions ben triades | Sí, i és el que més l'afecta: límit de taxa, memòries cau, consultes acotades, paginació obligatòria |
Mesures realistes: CDN o proxy invers amb protecció anti-DDoS davant de l'API i del web (hi ha plans gratuïts suficients per a aquesta mida), cosa que a més amaga la IP real de l'origen —que llavors ha d'acceptar trànsit només des de la CDN, o l'atacant l'esquiva—; límit de taxa per IP, per client i per tenant (02-04 i 05-05); autoescalat amb sostre, perquè sense límit l'atac deixa de ser una caiguda i passa a ser una factura; i paginació obligatòria als endpoints que retornen llistes.
Què fer durant un atac, en ordre: confirmar que és un atac i no un pic legítim o una fallada pròpia; activar el mode de protecció de la CDN; no desactivar el registre (es perd l'evidència just quan cal); bloquejar per patró a la vora i no a l'origen; comunicar-ho als clients amb honestedat (04-05); i no pagar cap extorsió associada. I després: post mortem i ajust de llindars.
- Detecció en xarxa i el problema del trànsit xifrat
On es col·loquen els sensors importa tant com quins es trien:
| Sensor | On | Què aporta |
|---|---|---|
| Suricata (IDS/IPS) | En línia a la vora de l'oficina, o en mode escolta sobre un port mirall | Alertes per signatura; en mode IPS bloqueja, amb el risc de tallar trànsit legítim |
| Zeek | En mode escolta, oficina i VPC | Registres rics: conn.log, dns.log, ssl.log, fitxers transferits. És la millor matèria primera per a 05-02 |
| Registres de flux (NetFlow / VPC Flow Logs) | Al proveïdor cloud | Qui va parlar amb qui, quant i quan. Barats, sense desxifrar res i suficients per veure 1,2 TB sortint |
| Logs del tallafoc | Tots | El que s'ha bloquejat, que és on apareix el comandament i control |
Què es perd amb el xifratge. Avui més del 90 % del trànsit va xifrat, així que un IDS de signatures veu molt menys que fa deu anys. El que continua sent visible sense desxifrar res és molt: qui parla amb qui, quant, en quina direcció i amb quin ritme; el nom del servidor a la salutació TLS i les consultes DNS; el certificat i l'empremta del client TLS. Amb això n'hi ha prou per detectar exfiltració, comandament i control periòdic i destinacions anòmales. Per això els registres de flux i de DNS reten més, i surten molt més barats, que intentar mirar a dins.
L'alternativa —inspecció TLS, és a dir, acabar el xifratge en un equip intermedi per llegir el contingut— té un cost que va més enllà del tècnic: obliga a instal·lar una autoritat de certificació pròpia a cada equip, exposa en aquest punt tot el que la gent fa, inclosa la seva banca i la seva salut, i crea un objectiu d'altíssim valor. Per a Nimbus la conclusió és clara: no es fa inspecció TLS sobre els equips d'empleats; s'inverteix en flux, DNS i telemetria de l'endpoint, que donen gairebé el mateix senyal sense aquest cost. (Nota de validació legal i laboral: a Espanya, qualsevol mesura que permeti accedir al contingut de les comunicacions de la plantilla exigeix informació prèvia, proporcionalitat i, segons el cas, negociació amb la representació dels treballadors; requereix validació jurídica abans d'implantar-se. Es desenvolupa a 06-03 i 06-06.)
- Zero Trust aplicat a la xarxa
| Perímetre tradicional | Zero Trust | |
|---|---|---|
| Supòsit | A dins es confia, a fora no | No es confia en la xarxa, mai |
| Control d'accés | Per ubicació (IP, VLAN) | Per identitat + dispositiu + context, a cada petició |
| Si es compromet un portàtil | Moviment lateral lliure | El portàtil no dona accés a res per si sol |
| Teletreball | Excepció que es resol amb VPN | El cas normal: no hi ha dins ni fora |
flowchart LR
U["Usuari\nidentitat verificada\namb MFA/FIDO2"] --> PD["PUNT DE DECISIO\nqui, quin dispositiu,\nquin context, quin recurs"]
D["Dispositiu\ngestionat, xifrat,\nal dia (05-06)"] --> PD
C["Context\nhora, pais, risc,\nsensibilitat del recurs"] --> PD
PD -->|"permes, acotat\ni amb caducitat"| R["Recurs concret\n(un sistema, no la xarxa)"]
PD -->|"denegat o\nsegon factor extra"| X["Registre i alerta\n(05-02)"]
R --> V["Verificacio continua:\nla sessio es reavalua,\nno es concedeix per sempre"]
Zero Trust no es compra: s'implanta per fases, i per a Nimbus les tres primeres ja estan en marxa o són gratuïtes:
| Fase | Què es fa | Cost | Estat |
|---|---|---|---|
| 1 | Identitat forta: MFA/FIDO2 a tots els comptes, comptes nominals, fi dels compartits | Baix | En curs (C-01) |
| 2 | Segmentació de xarxa i microsegmentació al núvol (§2) | Nul | Aquesta lliçó |
| 3 | Accés just-in-time per a tercers i per a administració (§4) | Nul | Pendent (C-03) |
| 4 | Postura del dispositiu com a condició d'accés (xifrat, al dia, amb agent) | Mitjà | 05-06 |
| 5 | Autorització per petició a la mateixa aplicació | Mitjà | 05-05 |
| 6 | Reavaluació contínua de la sessió i telemetria integrada | Alt | Objectiu a 2-3 anys |
L'advertiment pràctic: una VPN no és Zero Trust. Una VPN que dona accés a tota la xarxa interna reprodueix el perímetre amb un altre nom; es converteix en un pas cap a Zero Trust només quan el que hi ha darrere està segmentat i cada servei autentica pel seu compte.
- Verificar que la segmentació funciona
Aquest és l'apartat que més vegades es salta i el que decideix si tot l'anterior és real. Un disseny de xarxa no provat és un dibuix, i la forma de provar-lo és intentar, des de cada zona, arribar al que no s'hauria d'assolir.
#!/usr/bin/env bash
# verificar-segmentacio.sh — s'executa DES DE cada zona, despres de cada canvi de xarxa.
# Cada linia declara: desti, port, i si l'expectativa es OBERT o TANCAT.
PROVES=(
"10.30.20.5 5432 TANCAT # BD des de la VLAN d'usuaris: R-03"
"10.30.10.11 22 TANCAT # SSH directe a l'API sense passar pel bastio"
"10.30.1.10 22 TANCAT # el bastio NO s'assoleix sense VPN"
"10.20.40.1 443 TANCAT # panell de gestio des de la xarxa d'usuaris"
"10.20.20.10 445 TANCAT # NAS des de la xarxa de convidats"
"10.30.90.7 6379 TANCAT # Redis de preproduccio"
"1.1.1.1 53 OBERT # sortida a Internet: control positiu"
)
fallades=0
for prova in "${PROVES[@]}"; do
read -r host port esperat _ <<< "$prova"
# -z: sense enviar dades. -w 3: 3 s d'espera, perque un port filtrat
# (que no respon) no bloquegi l'script indefinidament.
if nc -z -w 3 "$host" "$port" 2>/dev/null; then real="OBERT"; else real="TANCAT"; fi
if [ "$real" = "$esperat" ]; then
printf 'OK %-14s %-5s esperat=%s\n' "$host" "$port" "$esperat"
else
printf 'FALLADA %-14s %-5s esperat=%s real=%s\n' "$host" "$port" "$esperat" "$real"
fallades=$((fallades+1))
fi
done
echo "---"; echo "Proves fallides: $fallades"; exit $((fallades > 0))Quatre detalls que fan útil aquest script. Declara l'expectativa, així que serveix de documentació executable del disseny. Inclou un control positiu (1.1.1.1:53 ha d'estar obert): si tot surt «tancat», el més probable és que el problema sigui el mateix script o que no hi hagi xarxa, no que la segmentació sigui perfecta. Retorna codi de sortida diferent de zero, cosa que permet executar-lo des del CI d'infraestructura després de cada canvi. I s'executa des de cada zona, perquè la resposta depèn de l'origen: això vol dir llançar-lo des d'un portàtil a la VLAN d'usuaris, des de la wifi de convidats, des del bastió i des de preproducció.
Per a una comprovació més àmplia, nmap des de cada zona contra les altres documenta el mapa real:
# Des d'un portatil a la VLAN de convidats: no s'hauria de veure RES intern
nmap -sn 10.20.10.0/24 10.20.20.0/24 10.20.40.0/24
# Sortida esperada: "0 hosts up"L'error a evitar, i és el més comú de la lliçó: donar per bona la segmentació perquè el diagrama és correcte i les regles «hi són posades». Les regles se solapen, els grups de seguretat s'hereten, algú obre alguna cosa «un moment» per depurar i no la tanca, i una taula de rutes converteix dues zones separades en una de sola. L'única prova que dues zones estan separades és intentar creuar-les i no poder.
Errors Comuns i Consells
- Xarxa plana «perquè som pocs». La mida no protegeix (02-06): amb 38 persones i 40 portàtils, un sol equip compromès arriba a tot.
- Convidats amb SSID diferent però sense VLAN separada. És la mateixa xarxa amb dos noms.
- Confiar en el filtratge MAC o a amagar l'SSID. No són controls; són feina administrativa amb sensació de seguretat.
- Obrir SSH a Internet i «compensar-ho» amb
fail2ban. El control correcte és que no sigui assolible;fail2banés la segona línia, no la primera. - No filtrar la sortida. És el que permet l'exfiltració i el comandament i control. Comença en mode registre i activa'l en dues setmanes.
- VPN que dona accés a tota la xarxa interna. És el perímetre amb un altre nom; darrere hi ha d'haver segmentació i autenticació per servei.
- Deixar registres DNS de recursos donats de baixa. És la porta a l'apropiació de subdominis, amb el teu domini i el teu certificat.
- Consell: comença pels tres tancaments de vint minuts.
5432a la subxarxa d'aplicació,22només des del bastió i la VPN, i l'excepció d'A-19 revocada. És el descens de risc per hora invertida més gran de tot el curs. - Consell: posa l'script de verificació al CI d'infraestructura. Si una regla s'obre per error, ho sabràs el mateix dia i no al pròxim pentest.
- Consell: el DNS filtrant és la millor compra per euro després del MFA. Talla phishing i comandament i control, funciona dins i fora de l'oficina i costa uns pocs euros per usuari.
Exercicis
Exercici 1 — Tancar els tres forats històrics
Escriu, per a cadascuna de les tres troballes pendents des de 05-01 —PostgreSQL a 0.0.0.0:5432, SSH obert a 0.0.0.0/0 i l'accés permanent de la consultora (A-19)—: el canvi concret, el risc del registre de 04-01 que redueix, el temps estimat i com verificaries que està fet.
Exercici 2 — Dissenyar la xarxa objectiu de l'oficina
Un antic becari va deixar documentada aquesta configuració de l'oficina:
VLAN unica 10.20.0.0/16 per a tot (portatils, NAS, impressora, APs, TV de sala).
Wifi corporativa i convidats: mateix AP, mateixos SSID separats, sense VLAN.
Filtratge MAC activat a l'AP. SSID de convidats ocult.
Router: panell d'administracio accessible des de qualsevol equip de la xarxa.
Regla del router: permetre tot el sortint.- Reescriu el disseny en zones amb els seus rangs i la seva matriu de comunicació permesa.
- Indica quins dos «controls» cal retirar i per què.
- Proposa tres regles de sortida i explica quin atac talla cadascuna.
Exercici 3 — Interpretar una verificació fallida
Després d'aplicar la segmentació, la Lucía executa l'script del §10 des d'un portàtil de la VLAN d'usuaris i obté:
OK 10.30.20.5 5432 esperat=TANCAT
FALLADA 10.30.10.11 22 esperat=TANCAT real=OBERT
OK 10.30.1.10 22 esperat=TANCAT
FALLADA 10.20.40.1 443 esperat=TANCAT real=OBERT
OK 10.20.20.10 445 esperat=TANCAT
FALLADA 1.1.1.1 53 esperat=OBERT real=TANCATInterpreta cada fallada, indica la causa més probable i l'ordre en què les atacaries.
Solucions
Exercici 1
| Forat | Canvi concret | Risc | Temps | Verificació |
|---|---|---|---|---|
PostgreSQL a 0.0.0.0:5432 |
Regla d'entrada del grup sg-dades referenciant sg-aplicacio en lloc de 0.0.0.0/0; a més listen_addresses acotat i pg_hba.conf restringit a la subxarxa d'aplicació |
R-03 (25 → residual baix) | 20 min | nmap -Pn -p 5432 des d'Internet ha de donar filtered; l'script del §10 des de la VLAN d'usuaris ha de donar TANCAT; i una prova de fum de l'API ha de continuar funcionant |
SSH obert a 0.0.0.0/0 |
Port 22 eliminat de tots els grups llevat de sg-bastio; el bastió només accepta 22 des de la subxarxa de la VPN; ProxyJump a la configuració de tothom |
R-07 i el 82 % del soroll d'alertes de 05-02 | 45 min | nmap extern: filtered a tots els hosts, inclòs el bastió; connexió de prova amb VPN activa i sense ella |
| Accés permanent d'A-19 | Comptes nominals amb MFA, sol·licitud amb tiquet, caducitat automàtica de 8 h, accés al sistema concret i no a la xarxa, alerta D-03, i revocació de l'excepció del 2023 del registre de 04-02 | R-01, el risc més ben puntuat del registre | 1 dia de feina + signatura de la consultora | Comprovar que el compte compartit ja no autentica; sol·licitar un accés de prova i verificar que caduca sol a les 8 h; comprovar que D-03 dispara amb un accés fora de finestra |
L'observació de fons: el més important dels tres no és tècnic. Els dos primers són regles de tallafoc; el tercer exigeix una conversa contractual amb un proveïdor, i per això fa dos anys que està pendent. És la diferència entre 04-04 i aquesta lliçó.
Exercici 2
(1) Zones i matriu. El disseny és el de la taula del §2: VLAN 10 usuaris (10.20.10.0/24), 20 servidors locals (10.20.20.0/24), 30 convidats (10.20.30.0/24), 40 gestió (10.20.40.0/24) i 50 no fiables (10.20.50.0/24), amb la TV de sala a la 50 i els punts d'accés, el switch i el router a la 40.
| Des de ↓ / Cap a → | Usuaris | Servidors | Convidats | Gestió | No fiables | Internet |
|---|---|---|---|---|---|---|
| Usuaris | Aïllament entre equips | Ports concrets (impressió, fitxers) | No | No (llevat del portàtil de la Lucía per VPN) | No | Sí |
| Servidors | Només respostes | — | No | No | No | Només actualitzacions |
| Convidats | No | No | Aïllament entre clients | No | No | Sí |
| Gestió | No | No | No | — | No | Només actualitzacions |
| No fiables | No | No | No | No | — | Sí, acotat |
Detall que sol oblidar-se: aïllament també dins de la VLAN d'usuaris. Un portàtil no necessita parlar amb un altre portàtil, i aquest trànsit és justament el del moviment lateral i el del ransomware que es propaga per la xarxa local.
(2) Els dos «controls» a retirar són el filtratge MAC i l'SSID ocult. El primer se salta clonant una MAC visible a l'aire, i a canvi genera feina cada vegada que entra un dispositiu. El segon no amaga res —la xarxa apareix tan bon punt un client s'hi connecta— i empitjora la seguretat: obliga els portàtils a anar preguntant per aquell SSID allà on vagin, cosa que facilita que un punt d'accés fals respongui «sí, sóc jo». Se substitueixen per WPA3 o WPA2-Enterprise amb credencial individual.
(3) Tres regles de sortida:
- Bloquejar tot el sortint llevat de 80/443, DNS al resolutor intern i NTP. Talla el comandament i control per ports no estàndard i bona part del programari maliciós genèric, que sol trucar a casa per ports alts.
- Bloquejar DNS sortint (53, DoH conegut) cap a qualsevol destinació que no sigui el resolutor corporatiu. Talla l'exfiltració per DNS —una tècnica clàssica precisament perquè el DNS gairebé mai no es filtra— i obliga que tot el trànsit passi pel filtre de dominis.
- Bloquejar SMB, RDP i SSH sortints des de la VLAN d'usuaris cap a Internet. No hi ha cas d'ús legítim, i talla tant l'exfiltració a servidors externs com la connexió inversa des d'un equip compromès.
Exercici 3
La tercera fallada és la més important i cal llegir-la primer. 1.1.1.1:53 esperat OBERT i real TANCAT és el control positiu, i que falli invalida els altres resultats: pot ser que el portàtil no tingui xarxa, que el DNS sortint estigui bloquejat per la nova regla d'egress (cosa que seria correcta i només obliga a canviar el control positiu pel resolutor intern) o que l'script estigui malament. Sense control positiu vàlid, els «OK» de les línies 1, 3 i 5 no proven res: podrien ser tancats per falta de connectivitat i no per segmentació.
Interpretació dels altres dos:
10.30.10.11:22obert des de la VLAN d'usuaris. El bastió està ben tancat (línia 3 en OK), però el servidor de l'API continua acceptant SSH des de fora del bastió. Causa més probable: la regla es va aplicar al grup de seguretat nou, però la instància conserva una segona pertinença a un grup antic més permissiu, i al núvol els grups se sumen, no es resten. És l'error clàssic. Es revisa la llista completa de grups de la instància, no només el que s'acaba d'editar.10.20.40.1:443obert: el panell de gestió del router s'assoleix des de la xarxa d'usuaris. Causa més probable: el dispositiu de gestió escolta a totes les seves interfícies i no només a la VLAN 40, o falta la regla entre VLAN. S'acota a la interfície de gestió i es comprova de nou.
Ordre de treball: (1) arreglar el control positiu i repetir la prova completa, perquè fins llavors no hi ha resultats fiables; (2) l'SSH de l'API, perquè és accés administratiu des d'una zona d'usuaris i equival a no haver tancat res; (3) el panell del router, que és greu —controla la xarxa— però és un graó per sota. I una conclusió transversal: aquest script s'ha d'executar al CI d'infraestructura després de cada canvi, perquè les dues fallades són exactament el tipus de residu que ningú no detecta fins al pentest següent.
Conclusió
Has convertit la xarxa de Nimbus d'un dibuix amb set problemes en un disseny defensable, i ho has fet sense comprar res: els set eren configuració. Saps per què la segmentació és el control amb millor relació cost/impacte —no impedeix la intrusió, impedeix que es converteixi en catàstrofe—, distingeixes VLAN, subxarxa, grup de seguretat i microsegmentació, i tens el disseny objectiu per zones de l'oficina (usuaris, servidors, convidats, gestió, no fiables) i del núvol (pública amb bastió, aplicació, dades, preproducció aïllada), amb la correcció concreta de 5432 acotat a la subxarxa d'aplicació i 22 assolible només des del bastió.
Coneixes els tipus de tallafoc i on va cadascun, la política per omissió de denegar, i el control que gairebé ningú no aplica: filtrar la sortida, amb regles nftables comentades i el seu equivalent en grups de seguretat que referencien grups i no rangs d'IP. Saps que el filtratge de sortida costa una primera setmana de dependències no documentades i que aquest és justament el motiu pel qual val la pena, i que es desplega en mode registre abans d'activar-se. Muntes l'accés remot amb WireGuard —una IP fixa per persona perquè els registres identifiquin algú— i amb bastió SSH fent servir ProxyJump, on la clau privada no toca mai el salt; i saps per què una VPN no és Zero Trust si darrere no hi ha segmentació. Has tancat A-19 amb comptes nominals, MFA, tiquet, caducitat de 8 hores, alerta D-03 i la revocació de l'excepció del 2023.
Saps triar entre WPA2-Personal, WPA2-Enterprise i WPA3, aïllar de debò la xarxa de convidats i per què el filtratge MAC i l'SSID ocult no són controls —el segon fins i tot empitjora la seguretat—. Domines el DNS en els seus tres fronts: resolució i filtratge com la millor compra per euro després del MFA, DNSSEC, protecció del domini A-08 amb bloqueig de transferència, MFA al registrador i renovació automàtica, i l'apropiació de subdominis amb la seva comprovació trimestral. Saps què pot i què no pot fer Nimbus davant de DDoS —el d'aplicació sí, el volumètric no— i què fer durant un atac. Saps on col·locar Suricata, Zeek i els registres de flux, què continua sent visible encara que tot vagi xifrat (qui parla amb qui, quant, DNS i SNI) i per què Nimbus no farà inspecció TLS sobre els equips de la seva plantilla. I tens Zero Trust com a pla per fases, amb les tres primeres gratuïtes o en curs.
Sobretot, t'endus la disciplina que separa el disseny de la realitat: l'script de verificació de segmentació, amb expectatives declarades, control positiu, codi de sortida per al CI i execució des de cada zona. L'única prova que dues zones estan separades és intentar creuar-les i no poder.
La xarxa ja no regala l'accés. Però fixa't en on queda ara la superfície d'atac: el port 443 de l'API continua obert a tot Internet, i ho ha d'estar, perquè allà viu el producte. Cap regla de tallafoc no distingeix una reserva legítima d'un intent de llegir les dades d'una altra clínica: aquesta distinció només la pot fer l'aplicació. A Seguretat en Aplicacions (05-05) entrem al codi: cicle de desenvolupament segur, defenses concretes contra el Top 10 d'OWASP amb les correccions escrites, autorització centralitzada que generalitza la lliçó de l'IDOR, seguretat d'APIs, gestió de secrets, capçaleres i CSP, i un pipeline de CI amb SAST, DAST, SCA i escaneig de secrets que decideix què trenca el build i què només avisa.
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
