Salta el contingut

Seguretat Perimetral

Introducció

La seguretat perimetral és el conjunt de mesures que protegeixen la frontera entre la xarxa interna d'una organització i les xarxes externes (Internet, partners, etc.). Malgrat que el model Zero Trust modern qüestiona el concepte de "perímetre" tradicional, les eines perimeterals continuen sent essencials com a primera línia de defensa.

flowchart TB
    Internet --> DDoS[Protecció DDoS\nCloudflare/AWS Shield]
    DDoS --> FW[Next-Gen Firewall\npfSense / FortiGate]
    FW --> WAF[WAF\nModSecurity]
    WAF --> IPS[IPS/IDS\nSuricata / Snort]
    IPS --> PROXY[Proxy invers\nNGINX / HAProxy]
    PROXY --> APP[Aplicació\nInterna]
    IPS --> SIEM[SIEM\nWazuh / Splunk]
    FW --> SIEM
    style DDoS fill:#FF5722
    style FW fill:#FF9800
    style WAF fill:#FFC107
    style IPS fill:#8BC34A
    style SIEM fill:#2196F3

Next-Generation Firewalls (NGFW)

Un NGFW va molt més enllà del firewall tradicional (que sols filtra per IP/port). Inclou:

  • Deep Packet Inspection (DPI): analitza el contingut dels paquets, no sols les capçaleres
  • Application Awareness: identifica aplicacions (Facebook, YouTube, WhatsApp) independentment del port
  • User Identity: associa tràfic a usuaris concrets (integració amb Active Directory)
  • TLS Inspection: descifra i re-xifra tràfic HTTPS per a inspecció
  • IPS integrat: detecció i prevenció d'intrusions en el propi firewall
  • URL Filtering: bloqueig per categories de URLs

Eines open source: pfSense / OPNsense

# docker-compose.yml per a lab de pfSense (OPNsense és més Docker-friendly)
version: '3'
services:
  opnsense-lab:
    image: opnsense/opnsense:24.1
    container_name: firewall-NOMCOGNOM
    privileged: true
    networks:
      external_net:
        ipv4_address: 10.0.1.1
      internal_net:
        ipv4_address: 192.168.100.1

networks:
  external_net:
    driver: bridge
    ipam:
      config:
        - subnet: 10.0.1.0/24
  internal_net:
    driver: bridge
    ipam:
      config:
        - subnet: 192.168.100.0/24

Regles de firewall: bones pràctiques

# Principis per a regles de firewall
1. DEFAULT DENY: blocar tot per defecte, permetre explícitament
2. Regles específiques > regles genèriques
3. Documentar cada regla (propòsit, data, responsable)
4. Revisar i eliminar regles obsoletes periòdicament
5. Separar regles d'entrada i sortida

# Exemple de política de firewall (lògica)
REGLA 1: PERMETRE  tràfic establert i relacionat (ESTABLISHED, RELATED)
REGLA 2: PERMETRE  SSH des de xarxa de gestió (192.168.10.0/24)
REGLA 3: PERMETRE  HTTPS des de qualsevol cap als servidors web (DMZ)
REGLA 4: PERMETRE  SMTP des dels servidors de correu (DMZ) cap a Internet
REGLA 5: PERMETRE  DNS des de la xarxa interna cap al DNS intern
REGLA 6: PERMETRE  HTTP/HTTPS des de la xarxa interna cap a Internet (via proxy)
REGLA 7: BLOCAR    accés des de la xarxa IoT a la xarxa de servidors
REGLA 8: BLOCAR    TOT (default deny - LOG)

Miniactivitat

Tens una empresa amb: - Xarxa corporativa: 192.168.1.0/24 - Servidors web en DMZ: 10.0.1.0/24 - Servidor de BBDD intern: 192.168.100.10 - Accés a internet permès per als usuaris (HTTP/HTTPS)

Escriu 5 regles de firewall (en lèxic natural o iptables) que implementin la política de seguretat adequada.

Web Application Firewall (WAF)

Un WAF protegeix específicament les aplicacions web analitzant el tràfic HTTP/HTTPS per detectar i blocar atacs com XSS, SQL injection, CSRF, etc.

ModSecurity amb NGINX

# nginx.conf amb ModSecurity
server {
    listen 443 ssl;
    server_name app.empresa.cat;

    # ModSecurity
    modsecurity on;
    modsecurity_rules_file /etc/nginx/modsecurity/main.conf;

    ssl_certificate /etc/ssl/app.crt;
    ssl_certificate_key /etc/ssl/app.key;
    ssl_protocols TLSv1.3;

    location / {
        proxy_pass http://backend:8080;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
# Desplegar NGINX + ModSecurity en Docker
docker run -d \
  --name waf-NOMCOGNOM \
  -p 443:443 \
  -v $(pwd)/nginx.conf:/etc/nginx/nginx.conf \
  owasp/modsecurity-crs:nginx

IDS/IPS: Suricata i Snort

Un IDS (Intrusion Detection System) monitora el tràfic i genera alertes. Un IPS (Intrusion Prevention System) pot a més blocar el tràfic maliciós activament.

Suricata: IDS/IPS modern

# docker-compose.yml per a Suricata
services:
  suricata:
    image: jasonish/suricata:latest
    container_name: ids-NOMCOGNOM
    network_mode: host        # Per monitorar tota la xarxa de l'host
    cap_add:
      - NET_ADMIN
      - NET_RAW
    volumes:
      - ./suricata/rules:/var/lib/suricata/rules
      - ./suricata/logs:/var/log/suricata
    command: -i eth0 --init-errors-fatal
# Regla Suricata personalitzada (suricata/rules/local.rules)
# Detectar escaneig Nmap
alert tcp any any -> $HOME_NET any (
  msg:"SCAN Nmap SYN scan detected";
  flags:S;
  detection_filter: track by_src, count 100, seconds 10;
  sid:9000001;
  rev:1;
)

# Detectar força bruta SSH
alert tcp any any -> $HOME_NET 22 (
  msg:"BRUTE FORCE SSH login attempt";
  content:"SSH";
  detection_filter: track by_src, count 10, seconds 60;
  sid:9000002;
  rev:1;
)

Diferència IDS vs IPS

IDS IPS
Posicionament Out-of-band (còpia del tràfic) Inline (intercepta tràfic)
Acció Alerta Alerta + Bloqueig
Latència Zero (no afecta tràfic) Afegeix latència
Risc falsos positius Baix (no bloca) Alt (pot blocar tràfic legítim)
Cas d'ús Monitoratge, detecció Xarxes amb tràfic conegut

SIEM i SOC

Un SIEM (Security Information and Event Management) centralitza i correlaciona logs de tots els dispositius de seguretat per identificar patrons d'atac.

Arquitectura d'un SOC bàsic

flowchart LR
    subgraph Fonts de dades
        FW[Firewall Logs]
        IDS[IDS/IPS Alerts]
        AD[Active Directory Logs]
        WEB[Web Server Logs]
        EDR[Endpoint EDR]
    end
    subgraph SIEM
        COLLECT[Col·lector\nWazuh Agent/Syslog]
        PROCESS[Processament\nNormalització + Correlació]
        STORE[Emmagatzematge\nOpenSearch/Elasticsearch]
        ALERT[Motor d'Alertes]
    end
    subgraph SOC
        L1[Analyst L1\nTriatge]
        L2[Analyst L2\nInvestigació]
        L3[Analyst L3\nThreat Hunting]
        IR[IR Team\nResposta]
    end

    FW --> COLLECT
    IDS --> COLLECT
    AD --> COLLECT
    WEB --> COLLECT
    EDR --> COLLECT
    COLLECT --> PROCESS
    PROCESS --> STORE
    STORE --> ALERT
    ALERT --> L1
    L1 -->|Escalat| L2
    L2 -->|Escalat| L3
    L3 -->|Incident| IR

Protecció DDoS

Un atac DDoS (Distributed Denial of Service) intenta saturar els recursos d'un sistema per fer-lo indisponible. Es realitza des de molts orígens simultàniament (botnet).

Tipus d'atacs DDoS

Capa OSI Tipus Exemple Volum típic
L3 (Xarxa) Volumètric UDP flood, ICMP flood 100+ Gbps
L4 (Transport) Protocol SYN flood, ACK flood 10+ Mpps
L7 (Aplicació) Aplicació HTTP flood, SlowLoris Menor volum, difícil detecció

Mitigació

# Protecció bàsica contra SYN flood amb iptables
iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 \
  -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP

# Fail2ban per a blocar IPs amb massa intents
apt-get install fail2ban

# /etc/fail2ban/jail.local
[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 3600  # 1 hora de ban
findtime = 600  # Finestra de 10 minuts

Per a atacs de gran volum, cal solucions externes com Cloudflare, AWS Shield o Akamai.