Posséder son propre domaine, je dis oui !

EDIT: J’ai pris la résolution (temporaire ou non) d’utiliser le nom de domaine gautier.it – le .it c’est la classe absolue dans mon cas 😉

Je possède depuis maintenant 2 ans des noms de domaine associés à mon nom, prénom.

J’ai acheté ces domaines dans l’optique de les utiliser un jour ou l’autre pour des services quotidiens tels qu’un site/blog à mon nom, mon e-mail personnel…

Alors, pourquoi acheter dès maintenant son nom de domaine ? Et bien déjà parce que vous n’êtes pas le seul à avoir pour nom « Dupont« , ce domaine est surement déjà pris d’ailleurs. Et même si dans les années à venir de nouvelles extensions vont sortir, je trouve qu’avoir un site et un email avec un nom de domaine proche de son nom en « .fr » c’est quand même la classe, geek, mais la classe. ( Je ne dis pas non au « .eu » qui me correspond pas mal non plus ^^ )

Et sinon en pratique si on n’utilise pas son nom de domaine pour son site / email, on peut en faire quoi ?

Et bien on peut s’en servir pour créer des raccourcis vers certaines adresses web que vous avez l’habitude de consulter, ou de devoir partager.

Restons concrets, dans mon cas j’ai régulièrement l’occasion de rendre service à des amis en prenant le contrôle à distance de leurs ordinateurs. Seul problème, il se trouve que ces personnes à qui je rends service sont parfois très handicapées avec leurs navigateurs web ordinateurs, donc leur demander de faire une recherche sur internet pour « Team Viewer » par exemple est déjà une corvée. Certains découvrent le concept de barre d’adresse pour la première fois avec moi.

Donc par téléphone c’est plus simple de leur faire écrire « sos.gautier.it » que de leur demander de taper: http://download.teamviewer.com/download/TeamViewerQS_fr.exe

Vous ne trouvez pas ?

Utiliser un proxy SOCKS

Qu’est-ce qu’un proxy socks ?

Un proxy socks a la possibilité de faire transiter tous types de paquets contrairement aux proxys http/https/ftp, vous permettant ainsi de faire passer n’importe quelles applications via ce tunnel et permettant de chiffrer votre trafic sur votre réseau local et d’afficher une IP différente à la sortie.

C’est encore une méthode bien pratique pour déjouer le filtrage effectué au sein de votre réseau, à condition que le port du serveur SSH que vous souhaitez atteindre, habituellement le port 22 ne soit pas bloqué.

Une fois encore dans l’optique d’utiliser plusieurs services sur un même port, le port 443 par exemple, avec l’utilisation de SSL (https) et SSH sur celui-ci une solution existe:
http://simongoudie.com/blog/2012/06/03/sharing-port-443-between-ssl-and-ssh-using-sslh.html

Il est bien plus simple et rapide de mettre en place un proxy socks que de mettre en place un serveur OpenVPN.

Car seule une connexion SSH vers l’un de vos serveurs Linux / Windows est nécessaire.

Côté serveur:

Sous Linux Debian, en théorie rien de particulier à faire si vous avez déjà réussi à vous connectez en SSH dessus.
Sinon il sera parfois nécessaire de lancer le service: /etc/init.d/ssh start.
Voir de l’installer, se tourner alors vers openssh: apt-get install openssh-server
Si votre serveur Linux est un vps que vous louez sur un service tel que Pulseheberg, vous n’aurez rien à installer.

Sous Windows, actuellement je n’ai expérimenté qu’une seule manière pour utiliser un serveur, ordinateur Windows comme proxy socks. J’utilise pour cela le logiciel CopSSH.

Côté client:

La connexion SSH avec tunnel sous Windows, la manière simple:

Télécharger l’utilitaire « Putty » ou « Kitty », l’un  et l’autre ont des interfaces similaires ou presque, cela n’a pas d’importance.

Maintenant, renseignez vos identifiants SSH, laissez ensuite la connexion ouverte.

La connexion SSH avec tunnel sous Linux, dans un terminal utilisez la commande suivante:

A noter que Putty est aussi disponible sous Linux…

Faire passer son navigateur par le proxy SOCKS:

Se rendre dans votre navigateur favori pour lui indiquer qu’il doit utiliser le proxy SOCKS que vous venez de lancer.

J’ai l’habitude d’ajouter à Chrome et Firefox, l’extension foxyproxy  qui permet de switcher rapidement entre les différents proxys que j’utilise habituellement. Je vous encourage à faire de même car cette extension est très sympathique.

Avec Internet Explorer: Options Internet (accessible également via le menu démarrer) > Connexions > Paramètres réseau > Avancé.
Remplir la ligne Socks avec: localhost et port 9999 puis cliquez sur OK > OK >OK.

Et voilà maintenant vous pouvez vérifier en allant sur http://www.mon-ip.com/ , si vous voyez apparaître l’adresse IP de votre serveur c’est que c’est bon.

Avec Firefox:

Un clic-droit sur l’icône de Foxy-Proxy puis « Utiliser  le proxy MonProxy » vous permettra ensuite d’utiliser votre votre proxy SOCKS.

Avec Chrome:

Si vous utilisez FoxyProxy, il faudra faire un clic gauche sur l’icône de celui-ci puis aller dans Options pour ajouter votre proxy SOCKS.
Ce qui donne rapidement: Options > Add new proxy: sur cette page faire attention à bien cocher « SOCKS ». Je vous laisse remplir les champs nécessaires par vous même.

Comment aller plus loin:

Évitez la fuite de DNS, si l’anonymat est une question de vie ou de mort pour vous: https://www.libre-parcours.net/2012/09/eviter-les-fuites-..
Définition du wiki et quelques logiciels: http://fr.wikipedia.org/wiki/SOCKS
Passer les frontières du SOCKS: http://repo.hackerzvoice.net/depot_madchat/coding/c/c.rezo/socks.txt

Installer un serveur OpenVPN sous Debian

Un nouvel article sur le sujet est disponible à cette adresse: Créer un serveur OpenVPN sur Microsoft Azure

Un serveur VPN dans la pratique est généralement utilisé pour passer outre les limitations imposées par l’administrateur du réseau que vous utilisez.
Ainsi il est bien souvent utilisé pour:

  • consulter les sites non autorisés sur le réseau
  • afficher à la face du monde une IP différente de celle de notre domicile

Bref, un serveur VPN ça permet de protéger ses données et de contourner la censure (une problématique qu’une partie du monde ne connaît que trop bien).

Techniquement:

Un serveur VPN (VPN pour Virtual Private Network), permets de relier de manière sécurisée 2 réseaux entre eux en créant un tunnel sécurisé (encapsulation et chiffrement de paquets).
Le protocole utilisé le plus souvent auparavant était le protocole PPTP, celui-ci présenté déjà une faiblesse, car attaquable lors de sa phase d’identification, qui était résolu grâce à une complexité de mot de passe plus élevé notamment.
Cependant le fait que le chiffrement MS-CHAPv2 est désormais lui aussi cassé, PPTP est à abandonner.

OpenVPN est la solution à déployer dans le monde du libre afin de créer un serveur VPN avec lequel vous pourrez établir une connexion sécurisée.

Afin de pouvoir se connecter sur ce serveur VPN en tout lieu, c’est à dire depuis des hotspots publics notamment sans avoir de problème, on va configurer notre serveur VPN pour qu’il écoute sur son port 443.

Si jamais votre serveur VPN fait aussi office de serveur WEB avec connexion HTTPS (vous avez dit « owncloud » ?), nous verrons plus loin une astuce afin de garder ce service actif également.

Menu du jour:

  1. Pré-requis
  2. Installer OpenVPN
  3. Configurer OpenVPN
  4. Configuration du routage
  5. Création d’un compte client OpenVPN
  6. Installation et configuration du client OpenVpn sous Windows et Linux
  7. Script pour automatiser installation Serveur et création compte client
  8. Faire cohabiter un serveur VPN sur port 443 avec un serveur apache en HTTPS

Les explications qui vont suivre ont été copiées à 99% depuis le blog de Pazpop

Je m’accorde 1% car je suis sympa avec moi-même.


 

Dans cet article, je vais donc vous expliquer comment installer votre propre serveur VPN OpenVPN sous GNU/Linux Debian 7. Vous pouvez également suivre ce tutoriel pour d’autre distributions Linux et d’autres versions de Debian. Pour connaître la version de votre système d’exploitation, utiliser les commandes : uname -a et/ou cat /etc/debian_version.

Pré-requis :

Avant de commencer, vous devez être connecté sur votre serveur GNU/Linux en root via putty. Vous devez également avoir votre système à jour (apt-get update && apt-get upgrade).

 

Installer OpenVPN :

Effectuez une copie des fichiers de configuration et du générateur de clées :

 

Configuration d’OpenVPN :

Éditez le fichier /etc/openvpn/easy-rsa/vars et ajoutez ces lignes à la fin du fichier:

Ensuite, exécutez les commandes suivante afin de générer les clés (.key) et les certificats (.crt) :

Copiez ensuite les clés et les certificats dans le répertoire /etc/openvpn/ :

Puis, générez les répertoires /etc/openvpn/jail et /etc/openvpn/clientconf. Le premiers répertoire permet de chrooté le processus OpenVPN (afin de limiter les dégâts en cas de faille dans OpenVPN) puis, le dernier répertoire contiendra la configuration des clients :

Enfin, créez le fichier de configuration /etc/openvpn/server.conf :

Cette configuration permet de créer un serveur VPN SSL routé basé sur le protocole TCP et utilisant le port HTTPS (443). Les clients obtiendront une nouvelle adresse IP dans le range 10.8.0.0/24 et aurons les DNS de OpenNIC (87.98.175.85 et 188.165.91.48).

Vous pouvez tester la configuration en saisissant la commande suivante:

Alors en théorie si ça marche, ça renvoie à peu près cette ligne:

Personnellement cela ne m’a rien renvoyé, et même une fois j’ai fais ctrl+c pour sortir ^^ et pourtant mon serveur fonctionne donc … je ne sais pas.

– Démarrage du serveur VPN OpenVPN :

On lance le serveur avec la commande :

Vous pouvez observer les logs :

 

Configuration du routage :

À ce stade les machines clientes vont pouvoir se connecter au serveur VPN. Par contre impossible d’aller plus loin car ce dernier aura l’adresse 10.8.0.x qui ne sera par routée en dehors de votre serveur. Il faut donc configurer le serveur pour qu’il joue le rôle de routeur entre l’interface VPN (tun0) et l’interface physique (eth0). Après ces opérations, votre serveur NATera les adresses en 10.8.0.x vers son adresse IP réelle.

Configuration du routage:

[ sh -c ‘echo 1 > /proc/sys/net/ipv4/ip_forward’ ]

Afin de rendre cette modification permanente, vous devez éditer le /etc/sysctl.conf :

Puis configurer la translation d’adresse (NAT) :

Pour rendre cette règle de NAT persistante, il va falloir créer un script qui se lancera au démarrage de votre Debian :

Dans le fichier « /etc/init.d/ScriptIPtables », écrire (en root):

Rendre exécutable ce fichier (en root):

Le serveur est maintenant prêt à accueillir les clients.

Création d’un compte client OpenVPN

Ici, nous allons créer la configuration pour notre client VPN. (Plus bas, un script pour faire ça rapidement)

Avec  les commandes suivantes, un mot de passe sera demandé à l’utilisateur pour se connecter à votre serveur VPN.

Si pour vous cela n’a pas d’importance, vous pouvez utiliser les commandes suivantes:

Copiez les fichiers nécessaires sous le répertoire /etc/openvpn/clientconf/ préalablement créé :

On va ensuite dans le répertoire /etc/openvpn/clientconf/mon-serveur-vpn/ :

Créez le fichier client.conf (remplacez A.B.C.D par l’adresse publique de votre serveur VPN) :

Pour assurer la compatibilité avec le client Windows OpenVPN, on fait une copie du fichier client.conf vers client.ovpn:

 

Installer et configurer votre client VPN Windows

Téléchargez et installez le client VPN OpenVPN. Vous le trouverez ici. Attention, prenez le client compatible avec l’architecture de votre CPU (64bits ou 32).

Allez sur votre serveur et télécharger le contenue du répertoire /etc/openvpn/clientconf/mon-serveur-vpn. Collez ensuite les fichiers dans le répertoire de votre ordinateur C:Program FilesOpenVPNconfig.

Exécutez votre client VPN OpenVPN en tant qu’administrateur. Dans votre barre des taches, en bas à droite, une nouvelle icône devrait apparaître. Faites un clic droit dessus et cliquez sur ‘Connecter’.

– Installer et configurer votre client VPN Linux

Et bien, il suffit d’un petit « apt-get install openvpn », se rendre ensuite à l’aide du terminal dans le dossier ou se trouve l’ensemble de vos fichiers clients. Puis « sudo openvpn client.conf ».

Après quelques secondes vous serez connecté à votre serveur VPN !!
Pour vérifier votre nouvelle IP, allez ici.


–  Script création d’un serveur OpenVPN

Script extrêmement basique car il compile juste les étapes décrites précédemment. Fonctionne parfaitement sous une installation propre de Debian 7.
A télécharger en txt.
Attention, il va falloir fixer à la main les règles iptables.

– Script création compte client OpenVPN

Un script pour automatiser la création de clients OpenVPN.

 


– Faire cohabiter OpenVPN et un serveur web sur son port 443 c’est tout à fait possible.

Pour cela on doit procéder à « 2 » modifications.

Tout d’abords si vous utilisez un serveur web apache:
Modifier le fichier: « /etc/apache2/ports.conf » afin de changer le port des connexions SSL qui était (surement) 443 en 10443 par exemple.

Il faut que vous fassiez le même types de modification dans vos fichiers de virtual-hosts, qui doivent se trouver ici: « /etc/apache2/sites-available » toutes mentions du port 443 deviendra 10443.

Ensuite il faut modifier le fichier: « /etc/openvpn/server.conf »

On a rajouté la ligne:

Cela permet d’indiquer à OpenVPN que les paquets https qu’il va recevoir sur ce port devront être redirigés en interne sur le port 10443 sur lequel écoute désormais notre serveur apache.

Bien sûr après avoir fait ces modifications, il faut relancer nos services:

Si un message d’erreur apparaît pour l’un ou l’autre c’est probablement dû à un oubli du côté d’Apache.


Ce qu’il faut comprendre: bien que nous accédions au serveur OpenVPN via le port 443, qui correspond généralement à une connexion de type sécurisée SSL, les paquets envoyés par OpenVPN sur ce port ne comportent pas l’en-tête attendus dans le cas d’une connexion https.
Ainsi si jamais votre opérateur utilise un équipement particulier pour regarder à l’intérieur de vos paquets, il peut repérer l’utilisation d’OpenVPN et le bloquer.
Si jamais vous étiez dans ce cas de figure, il est intéressant de s’orienter vers ces solutions:


 

Astuce: Si jamais vous arrivez à vous connecter au VPN avec votre client, mais que vous n’avez pas ensuite accès à internet, pensez à vérifier vos règles NAT:


Sources consultées (et aujourd’hui copié) lors de la création de cet article:

Création du serveur: http://pazpop.fr/installer-un-serveur-vpn-openvpn-sous-gnulinux-debian/
Chroot OpenVPN + script: http://blog.valouille.fr/2013/02/installation-dun-serveur-openvpn-et-automatisation/
Faire cohabiter OpenVPN + serveur web https: http://www.vpntutorials.com/tutorials/openvpn-sharing-a-port-with-a-webserver-on-port-80-443/