Quelques méthodes plus sécurisées pour utiliser IPv6 public

Certaines personnes ont besoin d’utiliser IPv6 public pour accéder à leur domicile, contrairement aux VPN comme tailscale/zerotier qui nécessitent un tunneling pour établir une connexion directe, IPv6 permet une connexion directe, la plupart des réseaux cellulaires mobiles disposant d’IPv6, ce qui rend le retour à la maison très pratique.

J’ai partagé précédemment un article L’utilisation courante de sous-domaines DDns pour la bande passante domestique peut entraîner une dégradation du service de bande passante chez China Telecom, décrivant un piège creusé par l’opérateur lors de l’utilisation d’IPv6. En bref, les domaines peuvent être scannés, exposer son domaine équivaut à exposer IPv6, ce qui peut entraîner des scans et, une fois les services détectés avec de nombreuses connexions entrantes, une dégradation du service de bande passante.

Ce partage ne mentionnait que le scan de domaine, sans mentionner le scan de l'espace réseau. Ce type de scan ignore toute information exposée et parcourt directement le pool d’IP pour scanner, ce qui est plus difficile à prévenir.

Le scan de l'espace réseau comprend généralement les aspects suivants :

  • Détection de vivacité IP : utilisation de protocoles tels que ARP, ICMP, TCP pour identifier les hôtes en ligne.
  • Détection de ports/services : filtrage des ports ouverts des hôtes en ligne par scan de ports, et obtention des informations de service, de version et du système d’exploitation de l’hôte cible.
  • Détection du système d’exploitation : inférence du type et de la version du système d’exploitation de l’hôte cible en analysant les paquets de réponse.
  • Collecte de trafic : surveillance du trafic réseau pour détecter les comportements anormaux ou les modèles d’attaque.
  • Résolution d’alias : établissement d’une relation de mappage entre les adresses IP et les routeurs pour les routeurs possédant plusieurs adresses IP.
  • Détection DNS : établissement d’une relation correspondante entre les adresses IP et les noms de domaine par résolution inverse d’adresse IP.

Voici quelques méthodes pour éviter d’être détecté par le scan de l’espace réseau :

  1. Le serveur DNS interne ne retourne pas d’enregistrements AAAA
  2. Les services internes ne permettent l’accès qu’au moyen de nom de domaine, pas directement par IP
  3. Utilisation du service DNS privé AdGuardPrivate

Le serveur DNS interne ne retourne pas d’enregistrements AAAA

Lors de la navigation sur Internet, en visitant divers sites web, cette visite naturelle peut exposer l’IPv6 source, le serveur distant peut obtenir l’IPv6 source, si l’utilisateur n’a pas activé le pare-feu, cet IPv6 peut être placé dans le pool de balayage prioritaire de l’espace réseau.

On peut également placer l’adresse IPv6 du préfixe /56 dans le pool de scan, en ne parcourant que les 16 bits inférieurs, la portée du scan peut être considérablement réduite.

D’après mon expérience de plusieurs années d’utilisation d’IPv6, la navigation quotidienne avec IPv6 ne présente pas de différence notable par rapport à IPv4. Nous pouvons donc sacrifier la visite externe d’IPv6, en l’utilisant uniquement pour la connexion directe à la maison.

Méthode de configuration pour ne pas retourner la résolution IPv6

Sur le serveur DNS interne, configurez pour ne pas retourner d’enregistrements AAAA.

Le service DNS interne utilise généralement AdGuardHome, configuration de référence :

Configurer pour désactiver IPv6

Après configuration, les appareils internes n’utiliseront que IPv4 lors de l’accès à Internet, ne plus utiliser IPv6.

Les services internes ne permettent l’accès qu’au moyen de nom de domaine

Les services exposés à la maison peuvent être accessibles par port, ce qui est très facile à détecter.

Il est préférable de ne pas configurer le service pour écouter sur 0.0.0.0 et :: lors de la création du service. Les expérimentés peuvent comprendre que presque toutes les instructions de démarrage de service par défaut n’écoutent que sur 127.0.0.1 et ::1, car écouter sur IP publique comporte des risques.

Méthode de configuration du proxy inverse pour n’autoriser que le nom de domaine

Exemple nginx

L’essentiel est de définir server_name comme nom de domaine, ne pas définir comme _ ou IP.

server {
    listen 80;
    server_name yourdomain.com; # Remplacez yourdomain.com par votre nom de domaine réel

    # Retourne 403 Forbidden aux utilisateurs qui tentent d'accéder par adresse IP
    if ($host != 'yourdomain.com') {
        return 403;
    }

    location / {
        # Ici se trouve le répertoire racine de votre site web et d'autres configurations
        root /path/to/your/web/root;
        index index.html index.htm;
    }

    # Autres configurations...
}

Exemple IIS

L’essentiel est de définir host name comme nom de domaine, ne pas laisser vide.

Exemple IIS

Utilisation du service DNS privé

Ajouter une résolution personnalisée dans votre propre service DNS pour faire correspondre un nom de domaine factice au service interne.

Fonction de réécriture DNS

Cela présente plusieurs avantages évidents.

  1. Tout d’abord, le nom de domaine peut être construit librement, pas besoin d’acheter un nom de domaine, économisant ainsi les frais de nom de domaine. Si ce nom de domaine factice est détecté, les attaquants doivent demander votre service DNS pour obtenir le résultat de résolution correct.
  2. Doit exposer simultanément votre adresse de service DNS privé et votre nom de domaine virtuel, puis le scanner doit modifier la logique de résolution du nom de domaine, demander la résolution du nom de domaine à votre serveur DNS privé exposé, et remplir le nom de domaine virtuel dans l’en-tête de la requête construite, pour pouvoir commencer le scan.
sequenceDiagram
  participant Scanner as Scanner réseau
  participant DNS as Serveur DNS privé
  participant Service as Service interne

  Scanner->>DNS: 1. Découvrir l'adresse du serveur DNS privé
  Scanner->>DNS: 2. Demander la résolution du nom de domaine virtuel
  DNS-->>Scanner: 3. Retourner l'IP du service interne
  Scanner->>Service: 4. Construire les Headers avec le nom de domaine virtuel
  Note right of Service: Si les Headers ne contiennent pas le nom de domaine virtuel correct<br/>alors refuser l'accès
  alt Headers corrects
    Service-->>Scanner: 5a. Retourner la réponse du service
  else Headers incorrects
    Service-->>Scanner: 5b. Retourner une erreur 403
  end

Seulement après avoir accompli toutes les étapes ci-dessus, le scanner peut détecter le service interne, ce qui augmente considérablement la difficulté du scan.

On peut créer un service DNS privé sur AdGuardPrivate, en utilisant la fonction de résolution personnalisée pour ajouter des noms de domaine factices, bien sûr on peut aussi utiliser [dnspod.cn].

Il existe de grandes différences entre les services fournis par ces deux entreprises, AdGuardPrivate est basé sur AdGuardHome, offrant bien plus de fonctionnalités que dnspod, évaluez selon vos besoins.

Résumé

  1. Le serveur DNS interne ne retourne pas d’enregistrements AAAA
    • Conditions préalables
      • Posséder IPv6 public
      • Posséder un serveur DNS interne
    • Configuration
      • Ne pas retourner d’enregistrements AAAA
  2. Les services internes ne permettent l’accès qu’au moyen de nom de domaine, pas directement par IP
    • Conditions préalables
      • Posséder son propre nom de domaine
      • Le fournisseur de nom de domaine fournit DDNS
      • Posséder un service de proxy inverse interne
    • Configuration
      • Configurer la tâche DDNS
      • N’autoriser l’accès qu’au moyen de nom de domaine
  3. Utilisation du service DNS privé
    • Conditions préalables
      • Posséder un service DNS privé
      • Le service DNS privé fournit une résolution personnalisée
      • Le service DNS privé fournit DDNS
    • Configuration
      • Configurer la tâche DDNS
      • Ajouter une résolution personnalisée, faire correspondre un nom de domaine factice au service interne

Enfin,

  • La méthode la plus simple et la plus sûre pour se connecter directement à la maison est tailscale/zerotier avec un tunneling interne réussi, mais parfois le tunneling peut échouer pour diverses raisons réseau.
  • Ne vous connectez pas à n’importe quel Wifi inconnu, vous pourriez divulguer toutes vos informations d’un coup. Obtenez une carte SIM avec beaucoup de données, confiez temporairement votre confiance à l’opérateur, contactez-moi si vous avez besoin d’une carte SIM à grand débit à petit prix (ce n’est pas le cas), j’en ai aussi besoin.