6. Considérations de sécurité (Security Considerations)
En tant que protocole de transport central d'Internet, TCP fait face à de multiples menaces de sécurité. Cette section décrit les principales considérations de sécurité et les mesures d'atténuation.
6.1. Attaques par numéro de séquence
Menace : Les attaquants peuvent tenter de deviner ou prédire les numéros de séquence TCP pour injecter des données malveillantes ou détourner des connexions.
Mesures d'atténuation :
- Utiliser des générateurs de nombres aléatoires cryptographiquement forts pour sélectionner les numéros de séquence initiaux (Initial Sequence Number, ISN)
- Implémenter les mécanismes de protection des numéros de séquence de la RFC 6528
- Valider strictement les segments hors fenêtre (RFC 5961)
6.2. Attaques SYN Flood
Menace : Les attaquants envoient de nombreux segments SYN sans compléter la poignée de main, épuisant les ressources du serveur.
Mesures d'atténuation :
- Implémenter les mécanismes SYN Cookie
- Limiter le nombre de connexions semi-ouvertes
- Utiliser des proxys SYN ou une protection par pare-feu
- Configurer des valeurs de délai d'attente appropriées
6.3. Détournement de connexion
Menace : Les attaquants tentent de prendre le contrôle de connexions TCP établies.
Mesures d'atténuation :
- Utiliser des protocoles de chiffrement comme TLS/SSL (par exemple, HTTPS)
- Vérifier les numéros de séquence et d'accusé de réception
- Implémenter une vérification d'état stricte
- Utiliser l'option de signature MD5 TCP (RFC 2385) ou TCP-AO (RFC 5925)
6.4. Attaques RST
Menace : Les attaquants envoient des segments RST forgés pour terminer des connexions légitimes.
Mesures d'atténuation :
- Valider strictement les numéros de séquence des segments RST
- Implémenter les améliorations du traitement RST de la RFC 5961
- Utiliser la protection par connexion chiffrée
6.5. Attaques par injection de données
Menace : Les attaquants tentent d'injecter des données malveillantes dans les connexions.
Mesures d'atténuation :
- Validation stricte des numéros de séquence
- Utiliser des mécanismes de chiffrement et d'authentification
- Vérifier l'intégrité des données (sommes de contrôle)
6.6. Attaques par déni de service (DoS)
Types de menaces :
- Épuisement des ressources : Consommation du CPU, de la mémoire ou des ressources de connexion du serveur
- Consommation de bande passante : Envoi de grandes quantités de données pour saturer le réseau
- Épuisement d'état : Création de nombreuses connexions pour épuiser l'état du serveur
Mesures d'atténuation :
- Implémenter une limitation du taux de connexion
- Utiliser des pare-feu et des systèmes de détection d'intrusion
- Configurer des limites de ressources appropriées
- Implémenter des optimisations de chemin rapide pour réduire l'utilisation du CPU
6.7. Attaques de l'homme du milieu (MITM)
Menace : Les attaquants interceptent et peuvent modifier les communications.
Mesures d'atténuation :
- Utiliser le chiffrement de bout en bout comme TLS
- Implémenter la validation des certificats
- Utiliser des mécanismes d'authentification forte
6.8. Attaques aveugles
Menace : Les attaquants tentent d'attaquer les connexions sans voir le trafic.
Mesures d'atténuation :
- Améliorations de la RFC 5961, incluant :
- ACKs de défi (Challenge ACK) pour les segments hors fenêtre
- Validation stricte de RST et SYN
- Limitation du taux des ACKs de défi
6.9. Attaques de temporisation
Menace : Inférer des informations en analysant les caractéristiques de temporisation du comportement TCP.
Mesures d'atténuation :
- Implémenter la randomisation des horodatages
- Éviter un comportement de délai d'attente prévisible
- Utiliser le chiffrement au niveau de la couche application
6.10. Recommandations d'implémentation
DOIT (MUST) :
- Utiliser des générateurs de nombres aléatoires cryptographiquement forts pour la génération d'ISN
- Implémenter et valider correctement les sommes de contrôle TCP
- Implémenter les améliorations de sécurité de la RFC 5961
DEVRAIT (SHOULD) :
- Prendre en charge TLS pour les applications nécessitant une sécurité
- Implémenter une limitation du taux de connexion
- Enregistrer les activités suspectes
RECOMMANDÉ (RECOMMENDED) :
- Utiliser des pare-feu et des systèmes de détection d'intrusion
- Mettre à jour régulièrement les implémentations TCP pour corriger les vulnérabilités connues
- Surveiller les modèles de trafic anormaux
6.11. Chiffrement et authentification
TCP lui-même ne fournit pas de chiffrement ou d'authentification. Les applications nécessitant une sécurité devraient utiliser :
- TLS/SSL (Sécurité de la couche transport) - Solution la plus couramment utilisée
- IPsec - Sécurité de la couche réseau
- TCP-AO (RFC 5925) - Option d'authentification TCP
- Chiffrement au niveau de la couche application - Comme SSH, HTTPS
6.12. Configuration de sécurité
Configuration système recommandée :
# Activer les SYN Cookies (Linux)
net.ipv4.tcp_syncookies = 1
# Limiter les tentatives de réessai SYN
net.ipv4.tcp_syn_retries = 3
net.ipv4.tcp_synack_retries = 3
# Activer la protection TIME-WAIT de la RFC 1337
net.ipv4.tcp_rfc1337 = 1
# Activer le filtrage de chemin inverse
net.ipv4.conf.all.rp_filter = 1
6.13. RFC de sécurité associées
- RFC 4953 - Défense de TCP contre les attaques de spoofing
- RFC 5925 - L'option d'authentification TCP (TCP-AO)
- RFC 5961 - Amélioration de la robustesse de TCP aux attaques aveugles dans la fenêtre
- RFC 6528 - Défense contre les attaques par numéro de séquence
- RFC 7414 - Une feuille de route pour les documents de spécification TCP (sections de sécurité)
Note importante : La sécurité est un domaine en évolution continue. Les implémenteurs doivent se tenir informés des dernières meilleures pratiques de sécurité et des annonces de vulnérabilités.