Anti-Hadopi 5: Le routeur "maison"
- Écrit par JC
On a vu fleurir les derniers mois pas mal d'offres ventant les mérites de routeurs "anti-hadopi" qui ne sont rien d'autre que des WRT54G utilisant un custom firmware maison, le DD-WRT. Ils sont vendus hors de prix et on peut le faire soi-même en utilisant, notamment des routeurs plus puissants. Le routeur utilisera lui-même un VPN (OpenVPN ou PPTP) pour l'ensemble de votre réseau ! C'est parti !

Préambule
Tous les tests ont été effectués à partir de DIR-825 de D-Link ou de WRT300N de Linksys et s'appliquent à tous les routeurs compatibles DD-WRT. Le DD-WRT est un firmware pour routeur basé sur un noyau linux et offrant de multiples possibilités telles que VPN, SSH, Telnet, VLan, repeater, etc. inclus nativement ! En gros, vous décuplez la puissance de votre appareil pour rien.
Ce sujet requiert un minimum de connaissances. Si vous savez déjà jouer un peu dans votre routeur (le configurer un minimum) il n'y aura aucun problème. L'IP de base d'un DD-WRT est 192.168.1.1 pour accéder à l'interface admin. Faites vos configurations initiales après le flash (DHCP ou PPPOE par exemple) qui sont identiques à ce que vous utilisez actuellement.
De plus, rien ne vous empêche de brancher le routeur à un routeur principal et de créer un 2ème réseau en branchant le routeur DD-WRT dans l'un des RJ-45 disponible puis d'y connecter vos PC, vous serez derrière le VPN également (les tests ont été effectués ainsi). N'oubliez pas de configurer également vos connexions sans fil une fois tout terminé car le wireless est activé par défaut !
I- Le routeur
A- Vérifier la compatibilité du routeur
Dans un premier temps, vous allez pouvoir aller voir par vous-même si votre routeur est compatible avec ce firmware maison en allant consulter la base de données.
Tapez les 3 premières lettre de votre routeur. Par exemple pour un WRT300, tapez WRT ou pour un DIR-300, tapez DIR. Vous allez voir apparaître la liste des routeurs compatibles. En pagaille, on y trouve une masse importante de WRT54G, GS, WRT150N, WRT160N, DIR-300, DIR-301, DIR-600, etc... Lorsqu'il y a un "yes" vert c'est que le DD-WRT existe et lorsque il y a un "no" c'est qu'il n'existe pas (simple hein ?). Lorsqu'un "wip" se trouve à côté, c'est Work in Progress, donc la création du firmware est en cours.
Lorsque vous voyez une version genre B1 ou 1.1 à côté du modèle de routeur, c'est assez simple, retournez votre routeur pour vérifier vous devriez y trouver une étiquette descriptive. Sinon, les D-Link par exemple affichent la version de l'appareil directement dans le panneau d'administration en haut à droite :
Si vous voulez choisir un routeur pour tenter l'expérience je recommande fortement un routeur puissant avec au moins 32Mo de RAM et si possible un processeur à plus de 300 Mhz ! Ceci joue un rôle d'importance, surtout lorsqu'on s'intéresse à OpenVPN.
En effet, afin de décrypter les données avec une clé 1024bits par exemple, sur un WRT54G, vous ne dépasserez jamais les 300Ko/s à cause des limitations matérielles du routeur. De plus, quand on a un espace plus important, on peut caser beaucoup plus d'options dans le firmware et ainsi, ne pas se limiter à un choix par défaut.
B- Flasher le routeur
Il existe 3 grandes techniques que je vais exposer de manière générale. Celle par interface web, celle par hard reset 30/30/30 et celle par tftp. Suivant le modèle, il faut se renseigner. Certains modèles ont leur propre wiki alors que d'autres n'ont que le forum. Par exemple, pour le WRT300N 1.1 et le DIR-825, nous utilisons la technique du hard reset alors que le WRT150N utilise l'interface web. Dans tous les cas, il est IMPÉRATIF d'être connecté à son routeur via un câble RJ-45 et surtout pas être en wireless.
A- Flash par interface web
C'est ici la méthode la plus simple. Il suffit de vous rendre dans l'interface admin de votre routeur, aller dans le menu firmware et lui donner le dd-wrt correspondant à votre routeur. Pensez à toujours préférer les images "mega" ou "openvpn" plutôt que mini. Vous attendez quelques minutes et votre routeur devrait se flasher correctement. Si vous ne savez pas quelle méthode utiliser, celle-ci est sans danger car en fait, soit votre routeur est flashé, soit vous avez directement un message d'erreur pour vous dire que l'image n'est pas correcte, tout simplement.
B- Flash hard reset 30/30/30
Ici lorsque la manipulation est réussie, la led du routeur clignote lentement. N'utilisez QUE Internet Explorer pour le flash et surtout pas Firefox, Chrome, Safari ou Opera, ça risque fortement de ne pas fonctionner.
1. Pressez le bouton reset durant 30 secondes, la led devrait clignoter
2. Débranchez le routeur mais tenez toujours le bouton reset durant 30 secondes
3. Allumez le routeur tout en restant presser le bouton reset 30 secondes encore, ça devrait flasher lentement
4. Configurez votre PC avec l'IP statique 192.168.0.2 (en fait 192.168.0.X ou X est supérieur à 1 puisque le 1 est réservé au routeur) pour votre PC (les DNS n'ont aucune importance)
5. Ouvrez votre navigateur sur 192.168.0.1 et flashez avec le firmware DD-WRT
6. Vous allez voir la barre de progression avancer et le routeur rebootera seul
7. Si une fois l'update du firmware le routeur semble bloquer, éteignez votre routeur (attendez quand même 3-4 minutes)


Cette technique est l'une des plus utilisées actuellement. Elle est simple et efficace et il en existe quelques variantes (10/10/10 ou 15/15/15) ainsi que des alternatives dont voici 2 exemples:
De nombreux routeurs ne nécessitent pas de hard reset aussi long. Par exemple, sur un DIR-825, éteindre le routeur, pressez le bouton reset et rallumer le routeur une 15aine de secondes tout en gardant une pression sur le bouton reset suffit et vous passez à l'étape 4 directement.
Il existe une alternative pour les routeurs difficile. Flashez via l'interface web votre routeur en OpenWRT (vérifiez bien qu'il existe pour le modèle de votre routeur). Une fois cela terminé, éteignez votre routeur et pressez le bouton reset. Gardez la pression jusqu'à 30 secondes en rallumant le routeur et vous devriez pouvoir le flasher en DD-WRT en passant à l'étape 4 (cela fonctionne par exemple une fois encore sur DIR-825 récalcitrant). Vous pouvez également refaire toute la manipulation de 1 à 7, cela fonctionne assurément.
C- flash par tftp
Tout d'abord, pour un utilisateur linux, rendez-vous sur le wiki de DD-WRT afin d'utiliser atftp. Sous Mac OSX, vous devriez avoir la ligne de commande tftp. Pour les Windoziens, suivez le guide (les routeurs Asus doivent suivre ce guide)
Téléchargez tftp puis:

Dans Server, entrez celle de votre routeur. Laissez Password vide et dans File, la version du firmware qui va être flashé. Quant à la dernière ligne, mettez un nombre entre 10 et 99 afin d'être sur qu'il soit flashé. C'est une méthode extrêmement simple et efficace. Il est conseillé de reset les paramètres du routeur en paramètres usine. Dans votre interface admin vous devriez trouver un "reset to factory default". Vous pouvez aussi tout simplement presser le bouton reset à l'arrière de votre routeur quelques secondes.
Maintenant connectons-nous à l'IP 192.168.1.1 pour accéder aux options DD-WRT. Notez que je n'examinerai pas les différents menus, amusez-vous avez, le wireless et la connexion sont simples à configurer comme sur tout routeur "normal". :
II- Configurer OpenVPN
Ici, il existe 2 méthodes (en fait 3 mais une est assez inefficace et échoue trop souvent) suivant le type de VPN que vous avez. Tout d'abord, nous allons voir les OpenVPN sans mot de passe et ceux avec login et mot de passe. On se retrouve donc à l'adresse 192.168.1.1. Vous allez commencer par vous créer un login et pass administrateur !
Avant les tutos généraux, voici tout d'abord des tutos spécifiques pour certains fournisseurs VPN afin de vous faciliter encore plus la tâche :
IvacyArethusaXangoVPNVpntunnel.seDarknetVPNCryptocloudTorrentFreedomN'hésitez pas à me contacter pour en ajouter d'autres ou poser vos questions. Maintenant, place aux explications plus générales !
A- OpenVPN sans login/pass
C'est notamment le cas de XangoVPN.
Dans un premier temps, décompressez le fichier que vous donnera votre fournisseur VPN ou téléchargez les 3 clés qu'il vous envoie. Vous devriez avoir un .ovpn, un .key, un ca.crt et un .crt. Ouvrez le .ovpn avec notepad. Il devrait ressembler à cela :
client
dev tun #ou tap
proto tcp #ou udp suivant le protocole
remote IP.SERVEUR PORT #en général 1194 pour le port
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt #votre ca.crt
cert cert.crt #votre cert.crt
key key.key #votre key.key
comp-lzo #la compression est activée
verb 1
route-method exe
route-delay 2
Comme vous pouvez le constater, tout est décrit afin que nous puissions configurer notre routeur correctement. Rendez-vous maintenant dans l'interface Admin du routeur puis dans Services > VPN
1. Activez OpenVPN Client
2. Server IP/Name : mettez-y l'ip de votre VPN
3. Port : le port du VPN
4. Ne touchez pas les 4 paramètres suivants SAUF si vous avez une configuration différente avec votre VPN
5. Use LZO : ici oui
6. Tunnel protocole : ici TCP (je vous le dis tout de suite, UDP c'est mieux !)
7. Tunnel Device : TAP ou TUN, ici TUN
8. Public server key : copiez l'intégralité de votre ca.crt
9. Public client key : copiez l'intégralité de votre cert.crt
10. Private Client key : copiez l'intégralité de votre key.key
11. Cliquez sur Apply Settings puis Save
12. Allez dans le menu Administration en haut
13. Appuyez sur Reboot Router et attendez une 30aine de secondes
14. Rendez-vous sur http://www.mon-ip.com tout devrait fonctionner
B-OpenVPN avec un login/pass
C'est la méthode que nous retiendrons pour de nombreux fournisseurs VPN comme Arethusa, Cryptocloud (avec quelques modifs de paramètres), VPNTunnel.se, etc. Il existe ici 2 variantes. La première est simple et convient à ceux n'ayant que une clé (ca.crt) ainsi qu'un login et un pass. La seconde convient à tout type de configuration de 1 à 4 clés !
B-1 Méthode rapide avec 1 clé ca.crt
1- Aller dans Services > VPN
2- Activer VPN Daemon
3- Start Type Wan Up
4- Copier votre ca.crt dans "Certification du serveur public"
5- Dans "Clef du Client Privée" inscrivez sur 2 lignes votre login et votre pass
6- Copier votre vpn.ovpn (votre fichier de configuration) dans "OpenVPN Config"
7- à la ligne ca xxxx.crt mettez ca ca /tmp/openvpn/ca.crt
8- Ajoutez ou modifiez la ligne auth-user-pass en indiquant auth-user-pass /tmp/openvpn/key.pem
9- Vous pouvez tentez de modifier votre fichier config avec des fonctions présentes sur cette page ou vous inspirez des scripts de la méthode B-2
10- Allez Dans Administration > Shell et entrez les lignes suivantes :
iptables -I FORWARD -i br0 -o tun0 -j ACCEPT
iptables -I FORWARD -i tun0 -o br0 -j ACCEPT
iptables -I INPUT -i tun0 -j REJECT
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
Faites Sauvegarder le Pare-Feu
11- Allez dans Administration > Gestion et redémarrez le routeur
12- Un petit tour sur http://www.mon-ip.com et vous devriez être sur le VPN
Note:
Cette méthode peut être adaptée en utilisant les autres champs pour les autres clés.
B-2 Méthode avec scripts
Nous allons commencer par activer la partition JFFS2 du routeur afin de pouvoir y mettre nos clés, login et pass. Pour cela allez dans Administration > Gestion > JFFS2 et activez le tout.
Par mesure de sécurité, cliquer aussi sur Activer pour Effacer JFFS2. Enregistrez vos paramètres puis redémarrez le routeur. Vous verrez que le bouton Désactiver au niveau de Effacer JFFS2 est maintenant coché :

Récupérez les différentes informations de votre founisseurs: fichiers configuration, login et pass, certificats (en général, vous n'avez que le ca.crt). Nous sommes prêt à commencer.
Allez dans Administration Shell et suivez à la lettre les indications suivantes :
Voici ci dessous 3 scripts exemples afin de vous montrer les 3 grandes différences de scripts au niveau des clés (on peut en avoir entre 1 et 4 suivant le fournisseur de VPN). Regardez bien votre fichier ovpn et les clés qui accompagnent votre abonnement afin d'adapter l'un de ces exemples.
1. Script pour clé ca.crt (arethusa, vpntunnel.se, etc.):
Entrez le script suivant si vous avez seulement la clé ca.crt:
sleep 30
echo "USERNAME
PASSWORD" > /jffs/user.conf
sleep 10
echo "client
dev tun
proto udp
remote nl.tunsrv.s6n.net 443
resolv-retry infinite
nobind
hand-window 30
persist-key
persist-tun
ca /jffs/ca.crt
ns-cert-type server
cipher AES-256-CBC
comp-lzo
verb 3
keepalive 10 60
reneg-sec 0
auth-user-pass /jffs/user.conf
redirect-gateway def1 bypass-dhcp" > /jffs/config.ovpn
sleep 10
echo "-----BEGIN CERTIFICATE-----
VOTRE CLÉ CA.CRT À L'IDENTIQUE
-----END CERTIFICATE-----" > /jffs/ca.crt
2. Script avec 3 clés ca.crt, cert.crt et key.key:
sleep 30
echo "USERNAME
PASSWORD" > /jffs/user.conf
sleep 10
echo "client
dev tun
proto udp
remote SERVEUR PORT
resolv-retry infinite
nobind
persist-key
persist-tun
ca /jffs/ca.crt
cert /jffs/cert.crt
key /jffs/key.key
ns-cert-type server
cipher AES-256-CBC
comp-lzo
verb 3
auth-user-pass /jffs/user.conf
redirect-gateway def1 bypass-dhcp" > /jffs/config.ovpn
sleep 10
echo "-----BEGIN CERTIFICATE-----
VOTRE CLÉ CA.CRT À L'IDENTIQUE
-----END CERTIFICATE-----" > /jffs/ca.crt
sleep 10
echo "-----BEGIN CERTIFICATE-----
VOTRE CLÉ CERT.CRT À L'IDENTIQUE
-----END CERTIFICATE-----" > /jffs/cert.crt
sleep 10
echo "Contenu de la clé à l'identique" > /jffs/key.key
3. Script pour 4 clés ca.crt, ta.key, cert.crt et key.key :
Entrez le script suivant si vous avez 4 clés:
sleep 30
echo "USERNAME
PASSWORD" > /jffs/user.conf
sleep 10
echo "float
remote SERVEUR PORT
dev tun
persist-key
persist-tun
proto udp
pull
route-method exe
route-delay 2
nobind
tun-mtu 1500
comp-lzo
auth-user-pass /jffs/user.conf
cipher AES-256-CBC
tls-client
client
tls-auth /jffs/ta.key 1
ns-cert-type server
ca /jffs/ca.crt
cert /jffs/cert.crt
key /jffs/key.key
keepalive 10 60
resolv-retry 86400
verb 1" > /jffs/config.ovpn
sleep 10
echo "-----BEGIN CERTIFICATE-----
VOTRE CLÉ CA.CRT À L'IDENTIQUE
-----END CERTIFICATE-----" > /jffs/ca.crt
sleep 10
echo "-----BEGIN CERTIFICATE-----
VOTRE CLÉ CERT.CRT À L'IDENTIQUE
-----END CERTIFICATE-----" > /jffs/cert.crt
sleep 10
echo "-----BEGIN CERTIFICATE-----
VOTRE CLÉ TA.KEY À L'IDENTIQUE
-----END CERTIFICATE-----" > /jffs/ta.key
sleep 10
echo "Contenu de la clé à l'identique" > /jffs/key.key
Note:
1. Copier l'un de ces scripts en respectant les retour à la ligne
2. Remplacez username et password par les vôtres
3. Remplacez serveur port par votre serveur et le port de ce dernier
4. Si vous avez plusieurs serveurs disponibles, mettez remote-random sur une ligne puis dessous remote serveur port pour chaque serveur.
5. echo "client jusqu'au prochain " correspond à votre fichier ovpn. Adaptez cette partie du script. Vous pouvez avoir dev tap au lieu de dev tun ou alors prot tcp au lieu de udp par exemple.
6. le dernier echo "---BEGIN CERTIFICATE--- est pour votre clé ca.crt que vous mettez à l'identique et les autres, si vous en avez servent à créer les autres clés
6. N'oubliez pas que votre script peut être différent et ajouter d'autres paramètres ou bien en enlever, tenez-vous y.
Maintenant que vous avez adapté votre script (ne vous inquiétez pas, c'est la phase la plus difficile), cliquez sur "sauver le démarrage" puis vous devriez voir votre script s'afficher :
Nous allons maintenant créer les règles du firewall afin de ne pas avoir de problèmes lors de nos passages dans le VPN.
Toujours dans le Shell entrez les lignes suivantes :
iptables -I FORWARD -i br0 -o tun0 -j ACCEPT
iptables -I FORWARD -i tun0 -o br0 -j ACCEPT
iptables -I INPUT -i tun0 -j REJECT
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
Cliquez maintenant sur Sauver le Pare-Feu et vous devriez obtenir ceci :
Note:
Si votre VPN est en tap (dev tap) remplacez les tun0 par tap0
Maintenant, allez dans Administration > Gestion et tout en bas, redémarrez votre routeur. Votre script de démarrage va créer tous les fichiers dont nous avons besoin. Attendez environ 3 à 4 minutes.
Retournez maintenant Dans Administration > Shell puis cliquez sur le bouton Éditer sous Démarrage puis effacez dans la fenêtre et remplacez par ce script :
sleep 30
/usr/sbin/openvpn --config /jffs/config.ovpn --auth-user-pass /jffs/user.conf &
Sauvegardez à nous en cliquant sur Sauver le Démarrage tout en bas, ça vous donne un truc de ce genre là après :
Maintenant, allez dans Services > VPN
Dans Client OpenVPN (en bas), cliquez sur activer et ne remplissez RIEN puis sauvegardez :
Maintenant, retournez dans Administration > Gestion puis cliquez sur redémarrer...
Dans 2 à 3 minutes allez faire un tour sur http://www.mon-ip.com et tout devrait fonctionner parfaitement, vous devriez être protégé par votre VPN !
III- Configurer PPTP
C'est le plus simple (mais aussi le VPN le moins sécurisé et réputé moins stable). Pour cela, connectez-vous à votre interface admin à l'IP 192.168.1.1 du DD-WRT.
Allez dans Services > VPN puis remplissez les champs avec les différentes informations que vous a donné votre fournisseur (si vous n'avez que IP, login et pass, ne rentrez que cela). Ensuite, allez dans Administration > Gestion puis redémarrer...
Allez faire un tour sur http://www.mon-ip.com et tout devrait fonctionner parfaitement, vous devriez être protégé par votre VPN !
Note :
Afin de renseigner correctement les différents champs, regardez la configuration Linux disponible chez votre fournisseur VPN, elle donne en général une description plus importante et fournit l'ensemble des données nécessaires.
Pour des raisons de sécurité, préférez TOUJOURS l'OpenVPN au PPTP qui souffre de vulnérabilités diverses.
IV- Conclusion
Vous voilà maintenant équipé d'un routeur tournant sous Linux avec un VPN qui se connecte automatiquement et protège l'ensemble de votre réseau ! De plus, en cas de déconnexion, il se reconnectera automatiquement. N'hésitez pas à aller vérifier votre IP une fois de temps en temps. Si vous avez la moindre question, n'hésitez pas à utiliser le formulaire de contact ou alors un commentaire afin d'étayer le présent tuto !
N'hésitez pas trop à franchir le pas, ça vaut vraiment le coup surtout que vous pouvez, une fois que vous commencez à maîtriser un peu l'engin, utiliser et activer le SSH par exemple ou encore mettre des routeur en mode repeater à l'étage d'une maison, etc. Vous tenez là un jouet qui vous occupera des heures...
Sources:
V- Articles du dossier Anti-Hadopi
3- Le VPN
MAJ: 15/06/10 : Ajout de la méthode B-1, plus facile à utiliser avec des vpns comme arethusa ou encore vpntunnel.se et Cryptocloud : Cette méthode est encore assez instable
MAJ: 17/06/10 : différents textes de ce tutoriel ont été retouchés. De plus, je me suis aperçu qu'un bug dans le DD-WRT du DIR-825 créait apparemment des problèmes et la connexion droppait avec la partie B-1 de manière très importante (toutes les 5 minutes) et également B-2 de manière aléatoire (openVPN avec login/pass).
Par contre en utilisant le dernier firmware du DD-WRT mini VPN du WRT300N, plus aucun problème ne semble subsister (connexion stable pendant plus de 8 heures)
MAJ 24/06/10 : Ajout dans la partie OpenVPN de tutos spécifiques à certains fournisseurs VPN afin de faciliter la configuration
MAJ 30/06/10 : Amélioration de la visibilité des scripts et mise à jour de la liste des tutos VPN personnalisés















