Serveur Vpn + Vidéo surveillance avec un Raspberry Pi
Depuis pas mal de temps je réfléchissais à faire un serveur VPN pour pouvoir passer tous ces filtres (beurk!) qui sont souvent mis en place (dans mon IUT par exemple). De plus, m’étant fait cambriolé récemment, je me suis intéressé au caméra de surveillance que je pourrai laisser à la maison. Voici donc en deux parties mes bidouilles sur mon Raspberry Pi.
Avant toute chose:
Le matériel nécessaire:
– Un Raspberry Pi (oui sinon on ira pas très loin…)
– Une clé wifi pour ceux qui voudraient avoir un serveur sans fil =P
– Carte SD
– Du temps et de la patience!
Serveur VPN et SSH
Les premières choses à faire: installer un linux sur le pi. Si vous ne savez pas comment faire voici un bon tuto.
Ensuite il va falloir installer les drivers wifi et configurer les connexions. En effet il est possible de brancher clavier + souris + écran (hdmi) mais c’est assez fastidieux, je préfère de loin la connexion en ssh (connexion à distance via un autre ordinateur). Voilà comment procéder:
Par ethernet: vous avez accès à votre box, il vous suffit de brancher le pi dessus. Pour vous connecter en ssh il vous faudra l’adresse ip, trouvable en allant sur votre routeur par navigateur. Je vous conseille de passer le raspberry en adresse fixe (onglet DHCP dans l’administration de votre box).
En ce qui me concerne, j’ai fais un serveur dhcp avec isc-dhcp pour pouvoir connecter le raspberry non pas à ma box mais à mon pc. C’est donc Le raspberry qui donnera une adresse ip à la machine branchée. Pour info voici mon fichier de config /etc/dhcp/dhcpd.conf (Pensez aussi à faire une sauvegarde de votre fichier avant de toucher quoi que ce soit) :
# A slightly different configuration for an internal subnet. subnet 10.0.0.0 netmask 255.255.255.252 { range 10.0.0.2 10.0.0.2; option broadcast-address 10.0.0.3; default-lease-time 600; max-lease-time 7200; }
Pour la config des connections, voici mon fichier /etc/network/interfaces:
auto lo iface lo inet loopback #Configurqtion de eth0 auto eth0 allow-hotplug eth0 #Mode administrateur ( box --> pc --> raspberry) iface eth0 inet static address 10.0.0.1 netmask 255.255.255.0 #Mode client (box --> raspberry) #iface eth0 inet dhcp # Ajout du routeur par defaut up route add default gw 10.0.0.2
Pour vous connecter à votre raspberry pi il suffira de taper: ssh pi@ipRaspberry Astuce sécurité: Il vaut mieux changer le port d’écoute du serveur ssh, et en mettre un supérieur à 1024. Il vous suffit d’éditer le fichier /etc/ssh/sshd_config et de changer la valeur du port. N’oubliez pas de relancer le serveur ssh:
/etc/init.d/ssh restart
Pour vous connecter:
ssh pi@ipRaspberry -p numPort
Par wifi: Au lieu de faire un copier – coller, voici également un très bon tuto.
Configuration du VPN: En ce qui concerne le serveur VPN, j’ai suivi le tuto du blog nicolargo, écrit pour Ubuntu / Debian et fonctionne très bien sur Raspberry.
Pour pouvoir utiliser internet lors de la connexion au serveur, il faut activer le NAT (translation d’adresse ip) avec cette commande (remplacer wlan0 par eth0 pour le partage en ethernet). A n’effectuer que dans le cas où votre pi ne serait pas branché / relié directement à votre box (dans le cas où un ordinateur routeur ferait l’intermédiaire). La commande serait donc à exécuter sur le routeur intermédiaire.
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
Puis indiquer au raspberry qu’il doit router les trames (ip forwarding) ainsi qu’à la machine / routeur intermédiaire si existante (si oui action à faire donc deux fois…). Pour cela il faut modifier le fichier /etc/sysctl.conf et décommenter la ligne
net.ipv4.ip_forward=1
Et enfin prendre en compte les modifications en tapant:
sudo sysctl -p /etc/sysctl.conf
Je vous présente mon petit raspberry pi avec la boîte qui va bien!
Serveur Web Motion + VNC
Pour pouvoir surveiller ma maison tranquillement, j’ai simplement ajouté une webcam et configuré un serveur web avec motion. Pour ce faire j’ai suivi ce (très bon) tutoriel. Je peux maintenant garder un œil dans la maison de n’importe où, il m’a suffit de faire un nom de domaine avec no-ip, d’installer le client no-ip sur le raspberry pi et le tour est joué! Cependant pensez tout de même à changer le port du serveur Web par un nombre peut être moins courant, car si vous y arrivez alors tout le monde peut le faire! ça peut éventuellement devenir embêtant…
J’ai aussi installé un serveur VNC pour pouvoir m’y connecter et avoir un interface graphique. ça peut dépanner dans certains cas, pour cela il suffit de lancer la commande
sudo apt-get install tightvnc
Puis de lancer le daemon avec… sudo tightvnc
Voila Il y a maintenant un serveur SSH, VNC, VPN et Web sur mon petit raspberry. Il me suffit d’ouvrir les ports sur ma box et de rediriger le flux sur l’adresse du pi pour pouvoir y accéder de n’importe où! Si vous voulez que tout se lance au démarrage, modifiez le fichier /etc/rc.local. En exemple voici le mien:
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %sn" "$_IP" fi #Démarrage du client no-ip sudo /usr/local/bin/noip2 #Démarrage du serveur vnc sudo tightvncserver #Démarrage du serveur web Motion sudo motion #Activation du partage de connection (translations) sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE exit 0
Voili voilou les enfants, à vos hacks maintenant!
C’est très intéressant même si ce n’est pas à la portée de tout le monde.
Merci! C’est vrai que ce n’est pas forcément évident, mais je vais rédiger dans peu de temps un nouvel article pour se monter un VPN ainsi qu’un serveur DNS (via DNSSEC) facilement, et sans prise de tête. Le but étant de donner la possibilité à ceux qui s’y intéressent de garder un minimum d’anonymat (cf prochaine loi sur le renseignement).