Passa al contenuto principale

6. Considerazioni sulla sicurezza (Security Considerations)

Come protocollo di trasporto centrale di Internet, TCP affronta molteplici minacce alla sicurezza. Questa sezione delinea le principali considerazioni sulla sicurezza e le misure di mitigazione.

6.1. Attacchi al numero di sequenza

Minaccia: Gli attaccanti possono tentare di indovinare o prevedere i numeri di sequenza TCP per iniettare dati malevoli o dirottare connessioni.

Misure di mitigazione:

  • Utilizzare generatori di numeri casuali crittograficamente forti per selezionare i numeri di sequenza iniziali (Initial Sequence Number, ISN)
  • Implementare meccanismi di protezione dei numeri di sequenza dalla RFC 6528
  • Validare rigorosamente i segmenti fuori finestra (RFC 5961)

6.2. Attacchi SYN Flood

Minaccia: Gli attaccanti inviano numerosi segmenti SYN senza completare l'handshake, esaurendo le risorse del server.

Misure di mitigazione:

  • Implementare meccanismi SYN Cookie
  • Limitare il numero di connessioni semi-aperte
  • Utilizzare proxy SYN o protezione firewall
  • Configurare valori di timeout appropriati

6.3. Dirottamento della connessione

Minaccia: Gli attaccanti tentano di prendere il controllo di connessioni TCP stabilite.

Misure di mitigazione:

  • Utilizzare protocolli di crittografia come TLS/SSL (ad es., HTTPS)
  • Verificare i numeri di sequenza e di acknowledgment
  • Implementare controllo di stato rigoroso
  • Utilizzare l'opzione di firma MD5 TCP (RFC 2385) o TCP-AO (RFC 5925)

6.4. Attacchi RST

Minaccia: Gli attaccanti inviano segmenti RST contraffatti per terminare connessioni legittime.

Misure di mitigazione:

  • Validare rigorosamente i numeri di sequenza dei segmenti RST
  • Implementare miglioramenti nella gestione RST dalla RFC 5961
  • Utilizzare protezione con connessione crittografata

6.5. Attacchi di iniezione dati

Minaccia: Gli attaccanti tentano di iniettare dati malevoli nelle connessioni.

Misure di mitigazione:

  • Validazione rigorosa dei numeri di sequenza
  • Utilizzare meccanismi di crittografia e autenticazione
  • Verificare l'integrità dei dati (checksum)

6.6. Attacchi Denial of Service (DoS)

Tipi di minacce:

  • Esaurimento delle risorse: Consumo di CPU, memoria o risorse di connessione del server
  • Consumo di larghezza di banda: Invio di grandi quantità di dati per saturare la rete
  • Esaurimento dello stato: Creazione di numerose connessioni per esaurire lo stato del server

Misure di mitigazione:

  • Implementare limitazione del tasso di connessione
  • Utilizzare firewall e sistemi di rilevamento delle intrusioni
  • Configurare limiti di risorse appropriati
  • Implementare ottimizzazioni del percorso rapido per ridurre l'utilizzo della CPU

6.7. Attacchi Man-in-the-Middle (MITM)

Minaccia: Gli attaccanti intercettano e possibilmente modificano le comunicazioni.

Misure di mitigazione:

  • Utilizzare crittografia end-to-end come TLS
  • Implementare validazione dei certificati
  • Utilizzare meccanismi di autenticazione forti

6.8. Attacchi ciechi

Minaccia: Gli attaccanti tentano di attaccare le connessioni senza vedere il traffico.

Misure di mitigazione:

  • Miglioramenti dalla RFC 5961, inclusi:
    • ACK di sfida (Challenge ACK) per segmenti fuori finestra
    • Validazione rigorosa di RST e SYN
    • Limitazione del tasso di ACK di sfida

6.9. Attacchi di temporizzazione

Minaccia: Deduzione di informazioni analizzando le caratteristiche di temporizzazione del comportamento TCP.

Misure di mitigazione:

  • Implementare randomizzazione dei timestamp
  • Evitare comportamento di timeout prevedibile
  • Utilizzare crittografia a livello applicativo

6.10. Raccomandazioni di implementazione

DEVE (MUST):

  • Utilizzare generatori di numeri casuali crittograficamente forti per la generazione di ISN
  • Implementare e validare correttamente i checksum TCP
  • Implementare i miglioramenti di sicurezza della RFC 5961

DOVREBBE (SHOULD):

  • Supportare TLS per applicazioni che richiedono sicurezza
  • Implementare limitazione del tasso di connessione
  • Registrare attività sospette

RACCOMANDATO (RECOMMENDED):

  • Utilizzare firewall e sistemi di rilevamento delle intrusioni
  • Aggiornare regolarmente le implementazioni TCP per correggere vulnerabilità note
  • Monitorare pattern di traffico anomali

6.11. Crittografia e autenticazione

TCP stesso non fornisce crittografia o autenticazione. Le applicazioni che richiedono sicurezza dovrebbero utilizzare:

  • TLS/SSL (Transport Layer Security) - Soluzione più comunemente utilizzata
  • IPsec - Sicurezza a livello di rete
  • TCP-AO (RFC 5925) - Opzione di autenticazione TCP
  • Crittografia a livello applicativo - Come SSH, HTTPS

6.12. Configurazione di sicurezza

Configurazione di sistema raccomandata:

# Abilitare SYN Cookies (Linux)
net.ipv4.tcp_syncookies = 1

# Limitare tentativi di ritrasmissione SYN
net.ipv4.tcp_syn_retries = 3
net.ipv4.tcp_synack_retries = 3

# Abilitare protezione TIME-WAIT RFC 1337
net.ipv4.tcp_rfc1337 = 1

# Abilitare filtraggio del percorso inverso
net.ipv4.conf.all.rp_filter = 1

6.13. RFC di sicurezza correlate

  • RFC 4953 - Difesa di TCP contro attacchi di spoofing
  • RFC 5925 - L'opzione di autenticazione TCP (TCP-AO)
  • RFC 5961 - Miglioramento della robustezza di TCP agli attacchi blind in-window
  • RFC 6528 - Difesa contro attacchi al numero di sequenza
  • RFC 7414 - Una roadmap per i documenti di specifica TCP (sezioni sulla sicurezza)

Nota importante: La sicurezza è un campo in continua evoluzione. Gli implementatori dovrebbero rimanere informati sulle ultime pratiche di sicurezza e sugli annunci di vulnerabilità.