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à.