Aller au contenu principal

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.