De balade de nouveau en Colombie.
Cette année, j’ai refait mon script de connexion vers la maison. Il s’agit de faire croire à face de bouc et co que je suis toujours à la maison pas qu’ils me posent tout un tas de questions dont moi-même ne suis pas sûr de pouvoir répondre…
Tout est fait sous Linux Debian mais il est facile d’adapter à d’autres distribution.
Côté serveur
Pré-requis, avoir une machine à la maison qui écoute en SSH (port tcp/22), c’est le serveur. Et le routeur (box) de la maison doit rediriger les connexions SSH de l’extérieur vers ce serveur.
Cette machine doit permettre le routage et masquer les connexions qui passent par elle. Les commandes :
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s 10.3.0.0/24 -o eth0 -j MASQUERADE
Il faut autoriser les VPN dans le démon SSHD, ajouter dans /etc/ssh/sshd_config
:
PermitRootLogin yes
PermitTunnel yes
Et redémarrer le démon :
service ssh restart
Côté client
Sur mon poste utilisateur en Colombie, je crée dans /usr/local/bin/tun2home.sh
le script :
#!/bin/bash ID=$(id | cut -d '=' -f 2 | cut -d '(' -f 1) echo $ID [ "$ID" != "0" ] && sudo /usr/local/bin/tun2home.sh [ "$ID" != "0" ] && return 2>&- [ "$ID" != "0" ] && exit 2>&- # Verif cnx [ "$(ip a | grep tun0)" != "" ] && echo "Already running..." [ "$(ip a | grep tun0)" != "" ] && return 2>&- [ "$(ip a | grep tun0)" != "" ] && exit 2>&- # cnx SERVER="1.2.3.4" ssh -p 443 -w0:0 root@$SERVER -f -- \ ifconfig tun0 10.3.0.2 pointopoint 10.3.0.1 ifconfig tun0 10.3.0.1 pointopoint 10.3.0.2 # routage OLDGATEWAY=$(ip r | grep default | head -1 | cut -d ' ' -f 3) route add -host $SERVER gw $OLDGATEWAY route del default route add default gw 10.3.0.2 # Modif DNS route add -host 8.8.8.8 gw $OLDGATEWAY echo "nameserver 8.8.8.8" > /etc/resolv.conf
Remplacer l’adresse IP 1.2.3.4
par l’adresse de la maison…
Rendre exécutable le script :
chmod 755 /usr/local/bin/tun2home.sh
Modifier SUDO pour permettre aux utilisateurs de lancer la connexion VPN. Créer le fichier /etc/sudoers.d/tun2home
:
%users ALL=NOPASSWD: /usr/local/bin/tun2home.sh
Maintenant, un utilisateur peut initier le VPN vers la maison avec la commande :
tun2home.sh
Optimisations
Le serveur SSH sur son port tcp/22 habituel est une cible régulière d’attaque sur Internet. Mais même si il y a peu de chance que les attaques réussissent sur un serveur à jour, il est toujours pénible de voir ça dans les logs toute la journée.
La solution, changer le port par défaut et penser à changer la redirection de port sur le routeur de la maison. Évidemment, certains ports sont plus opportuns que d’autres et un choix judicieux peut aider à camoufler le VPN ou à contourner les blocages de ports de certains opérateurs locaux peu scrupuleux.