Dans ce premier article en Français, nous allons voir comment vous pouvez connecter à votre réseau personnel (LAN) de votre domicile de manière sécurisée.

L’idée est d’ouvrir sur votre box internet le moins de port possible, et ainsi réduire votre surface d’attaque au maximum grâce à un tunnel SSH.

Ainsi, il n’y aura qu’une seule porte d’entrée à votre réseau et à vos équipements, nous allons sécuriser cette unique entrée.

Avec cette méthode, vous aurez accès à votre SSH et l’ensemble des ports ouverts sur cette machine, mais également aux autres devices de votre réseau (Box, Caméras, NAS, IoT etc..)

En outre, vous pourrez bypasser le proxy d’une entreprise, mais ce n’est pas l’objet de l’article, les connexions web passeront par le tunnel directement. (Extension FoxyProxy pour votre navigateur)

Pré-requis

  • Serveur SSH: RaspberryPi, Linux Box, Box Domotique, OpenSSH sous Windows, etc
  • Dyndns, nom de domaine personnel ou une ip fixe
  • Extension FoxyProxy: Chrome / Firefox

Schéma

SSH-Tunnel-Schema

Sécurisation

Génération des clés

Pour commencer, nous allons sécuriser l’accès à votre serveur SSH en utilisant un système d’accès par clé publique/clé privée et non par mot de passe. Cela évitera les tentatives de bruteforce: de votre accès. Pour accéder à votre serveur à distance, il faudra donc posséder cette clé privée que nous allons générer.

Cela n’aura aucune incidence sur la connexion directe à la machine via l’écran/clavier.

Sous Windows

Sous Windows, nous allons installer le célèbre client SSH PuTTY, et son utilitaire PuTTYgen.

Une fois PuTTYgen lancé, sélectionnez SSH-2 RSA en bas, puis cliquez sur Generate pour générer votre paire de clés.

puttygen-generate

Après avoir généré votre paire de clés, enregistrez dans un endroit sécurisé votre private key (.ppk) et copier votre clé publique sur votre serveur SSH (voir ci-dessous).

puttygen-pub

Vous ne devez en aucun cas communiquer cette clé privée sur Internet.

Configuration du authorized_keys

Connectez-vous à votre serveur en SSH (avec login/password) et modifiez avec vim par exemple le fichier ~/.ssh/authorized_keys pour y déclarer votre clé publique. Vous pouvez maintenant coller la ligne fournie par PuTTYgen dans ce fichier. Sauvegardez la configuration. (Petit Tuto pour les débutants sur vim)

Relancez votre serveur SSH sudo service sshd restart

Sous macOS / Linux

Utilisez les commandes suivantes pour générer vos paires de clés:

  • ssh-keygen Il est recommandé de définir une passphrase, mais ce n’est pas obligatoire. Il faudra taper cette passphrase à chaque utilisation de la clé privée.
  • ssh-copy-id user@host pour copier la clé publique automatiquement sur votre serveur SSH.

Configuration SSHd: désactivation du login par password

Attention En désactivant la connexion par mot de passe, vous ne pourrez plus vous connecter qu’avec une paire de clés. Si vous perdez cette paire de clés, vous devez avoir un accès physique à la machine (clavier/ecran) pour récupérer l’accès.

Voici les lignes que vous devez avoir dans votre config sshd: /etc/ssh/sshd_config

  • Protocol 2
  • PermitRootLogin no
  • PasswordAuthentication no
  • PubkeyAuthentication yes

Vérifiez que ces lignes ne sont pas commentées (#)

Ouverture du port SSH

Il faut maintenant ouvrir l’accès SSH depuis l’extérieur maintenant que nous avons sécurisé l’accès.

Vous trouverez plein de guides sur la configuration NAT de votre box, je ne m’y attarde donc pas.

Ici, il suffit de mapper le port TCP(22) vers votre serveur SSH.

Configuration du client et connexion

Sous Windows

Dans la partie session, configurer le hostname (votre DNS ou ipfixe), le port TCP(22) et le type de connexion (SSH) Puis dans la partie Auth (Connection -> SSH -> Auth), renseignez la clé privée (.ppk) que vous avez sauvegardée plus tôt.

putty-auth

Nous allons maintenant configurer la partie tunnel qui nous permet d’accéder à différents ports de votre serveur SSH lui-même, mais aussi aux autres périphériques de votre LAN.

putty-tunnels

Dans cette section, nous allons créer les équipements de votre LAN, et définir en ports dynamique l’accès à votre serveur SSH. (Cela évite de mapper tous les ports un par un si vous avez plusieurs services installés sur cette machine (FTP, HTTP, Jeedom, etc…)

On peut voir sur cette configuration par exemple, que le port TCP(8064) local(L) (de votre poste client) va mapper le port TCP(80) sur l’ip de votre LAN : 192.168.1.1 (Livebox Orange pour mon cas)

Ainsi, lorsque vous irez dans votre browser internet, et que vous irez sur la page : 127.0.0.1:8064, le tunnel ira chercher l’ip de votre 192.168.1.1 (box orange) sur le port TCP(80).

Pour le port local, vous pouvez prendre celui que vous souhaitez, du moment qu’il n’est pas déjà utilisé par votre poste client. Utilisez netstat -fa sous Windows pour visualiser toutes les connexions actives en écoute. (LISTENING)

Sous macOS - Linux

Dans un Terminal, lancez la commande suivante pour monter le tunnel SSH : ssh -D 8080 -C -N username@votre_hostname

Connexion et vérification du bon fonctionnement

Connexion aux différents ports du serveur SSH, testez: 127.0.0.1:80, si vous hébergez un site web et tous les ports qui doivent être ouverts sur votre machine Linux.

Essayez d’autre devices de votre réseau, testez: 127.0.0.1:8064 pour arriver sur la page d’authentification de votre box par exemple, etc.. Vous avez compris le principe.

Concernant le proxy, Créez un nouveau profil sur FoxyProxy sur 127.0.0.1:8080 et sélectionnez cette nouvelle configuration. Vérifiez que vous l’utilisez bien en allant sur https://ifconfig.co, vous devez trouver l’IP publique de votre box domicile au lieu de celle de votre connexion actuelle.

That’s all folks!

zoph.