Surfer en toute sécurité via un tunnel SSH
Si comme moi, vous n'avez pas confiance aux bornes Wifi des hôtels et des restaurants (dont la plupart des connexions ne sont pas chiffrés), une solution est de créer un tunnel chiffré jusqu'à chez vous. Ainsi, seul les paquets sortants de votre box vers le serveur web seront en clair (si protocole HTTP).
Utilisation de DynDNS
Comme je n'ai pas d'adresse IP fixe sur ma Box, j'utilise le service No-IP:
https://www.noip.com
Il suffit de créer un compte et choisir un nom de domaine. exemple:
monipperso.no-ip.biz
Configuration du routeur (box)
Deux manipulations à réaliser sur la Box:
Utilisation du service DynDNS
Il faut que la box mette à jour son adresse IP côté WAN chaque fois qu'elle change. Pour cela, allez dans l'interface de configuration de la box /
Dynamic DNS:
- Service: no-IP
- Nom d'hôte complet: monipperso.no-ip.biz
- Nom d'utilisateur / E-mail: monipperso
- Mot de passe: ************
Translation d'adresse et redirection de port
Puisque l'on fait du NAT (IPv4), il faut dire à la box ce qu'il doit faire des paquets provenant du web et à destination du port
41256 (On n'utilise pas un port TCP connu afin de compliquer toutes tentatives d'intrusions).
Créer une nouvelle règle de redirection des paquets entrants (NAT/PAT):
- Nom: sshperso
- port TCP externe (port destination provenant du WAN): 41256 (par exemple)
- port TCP interne (port TCP de notre serveur SSH à la maison): 22
- Adresse du serveur local (adresse IP ou nom de machine de notre serveur SSH à la maison): 192.168.0.5 (exemple)
Configuration du serveur
Sur le serveur, interdire les connexions de l'utilisateur
root.
sudo vi /etc/ssh/sshd_config
PermitRootLogin no
AllowUsers daniel
et redémarrer le service:
service ssh restart
sur poste client
Il faut ouvrir un tunnel entre le poste client (port choisi de façon arbitraire: 8780) et le serveur (port distant 41256).
ssh -D 8780 daniel@monipperso.no-ip.biz -p 41256
Si c'est la première fois que vous vous connectez, vérifier bien l'empreinte de la clé (protection contre l'homme du milieu).
configuration du navigateur
Une fois le tunnel établi, il faut dire à votre navigateur d'envoyer les paquets dans le tunnel (port 8780).
Préférences/Avancé/Réseau/Paramètres
- Configuration manuelle du proxy
- Hôte socks: localhost
- Port: 8780
Une fois la connexion terminée, reconfigurer firefox (pas de proxy) et fermer la connexion SSH.
POUR PLUS DE SECURITE
On peut autoriser seulement notre poste client à se connecter sur le serveur en SSH. Pour cela:
Sur le poste client
- Générer une pair de clés avec la commande ssh-keygen. La passphrase ne doit pas être vide !!! (le but c'est d'avoir + de sécurité !)
- Recopier la clé publique (fichier ~/.ssh/*.pub)
Sur le serveur
- Coller la clé publique du compte client dans la liste de clefs autorisées (fichier ~/.ssh/authorized_keys).
à faire par la suite (une fois que tout fonctionne), n’autoriser les connexions qu'avec le certificat:
sudo vi /etc/ssh/sshd_config
PubkeyAuthentication yes
PasswordAuthentication no
et redémarrer le service:
service ssh restart
Essais
Refaire un essais, il doit être demandé maintenant, la
passphrase précédemment saisie:
Enter passphrase for key '/home/daniel/.ssh/id_rsa'
Si maintenant, vous faites un essais à partir d'un poste non autorisé:
ssh -D 8780 daniel@monipperso.no-ip.biz -p 41256
Permission denied (publickey).