Nous vous avons montré comment déclencher WOL à distance par «Port Knocking» sur votre routeur. Dans cet article, nous montrerons comment l’utiliser pour protéger un service VPN.
Image par Aviad Raviv & bfick.
Préface
Si vous avez utilisé la fonctionnalité intégrée de DD-WRT pour VPN ou si vous avez un autre serveur VPN dans votre réseau, vous apprécierez peut-être la possibilité de le protéger des attaques par force brute en le cachant derrière une séquence de frappe. En faisant cela, vous filtrerez les script kiddies qui tentent d’accéder à votre réseau. Cela dit, comme indiqué dans l’article précédent, la frappe de port ne remplace pas un bon mot de passe et / ou une bonne politique de sécurité. N’oubliez pas qu’avec suffisamment de patience un attaquant peut découvrir la séquence et effectuer une attaque de relecture.
Gardez également à l’esprit que l’inconvénient de la mise en œuvre de ceci est que lorsqu’un client VPN souhaite se connecter, il devra déclencher la séquence de frappe et que s’il ne peut pas terminer la séquence pour une raison quelconque, il ne pourra pas au VPN du tout.
Aperçu
Afin de protéger * le service VPN, nous allons d’abord désactiver toutes les communications possibles avec lui en bloquant le port d’instanciation de 1723. Pour atteindre cet objectif, nous utiliserons iptables. C’est parce que c’est ainsi que la communication est filtrée sur la plupart des distributions Linux / GNU modernes en général et sur DD-WRT en particulier. Si vous souhaitez plus d’informations sur iptables, consultez sa entrée wiki, et jetez un œil à notre précédent article sur le sujet. Une fois le service protégé, nous créerons une séquence de cliquetis qui ouvrirait temporairement le port d’instanciation VPN et le fermerions également automatiquement après un laps de temps configuré, tout en gardant la session VPN déjà établie connectée.
Remarque: Dans ce guide, nous utilisons le service VPN PPTP comme exemple. Cela dit, la même méthode peut être utilisée pour d’autres types de VPN, il vous suffira de changer le port bloqué et / ou le type de communication.
Prérequis, hypothèses et recommandations
Permet de craquer.
Défaut Règle «Bloquer les nouveaux VPN» sur DD-WRT
Alors que l’extrait de «code» ci-dessous fonctionnerait probablement sur toutes les distributions iptables qui se respectent elles-mêmes et utilisant Linux / GNU, car il existe tellement de variantes que nous ne montrerons comment l’utiliser que sur DD-WRT. Rien ne vous empêche, si vous le souhaitez, de l’implémenter directement sur la box VPN. Cependant, la façon de procéder dépasse le cadre de ce guide.
Parce que nous voulons augmenter le pare-feu du routeur, il est logique que nous ajoutions au script «Pare-feu». Cela entraînerait l’exécution de la commande iptables à chaque fois que le pare-feu est actualisé et ainsi maintenir notre augmentation en place pour de bon.
Depuis l’interface graphique Web de DD-WRT:
- Allez dans «Administration» -> «Commandes».
- Entrez le «code» ci-dessous dans la zone de texte:
inline="$( iptables -L INPUT -n | grep -n "state RELATED,ESTABLISHED" | awk -F : {'print $1'} )"; inline=$(($inline-2+1)); iptables -I INPUT "$inline" -p tcp --dport 1723 -j DROP
- Cliquez sur «Enregistrer le pare-feu».
- Terminé.
Qu’est-ce que cette commande «Voodoo»?
La commande «magie vaudou» ci-dessus effectue les opérations suivantes:
- Recherche où se trouve la ligne iptable qui permet à une communication déjà établie de passer. Nous faisons cela, car A. Sur les routeurs DD-WRT, si le service VPN est activé, il sera situé juste en dessous de cette ligne et B.Il est essentiel pour notre objectif de continuer à permettre aux sessions VPN déjà établies de vivre après le événement frappant.
- Déduit deux (2) de la sortie de la commande de liste pour tenir compte du décalage causé par les en-têtes de colonne d’information. Une fois cela fait, ajoutez un (1) au nombre ci-dessus, de sorte que la règle que nous insérons vienne juste après la règle qui permet une communication déjà établie. J’ai laissé ce «problème mathématique» très simple ici, juste pour clarifier la logique du «pourquoi il faut en réduire un de la place de la règle au lieu d’en ajouter un».
Configuration de KnockD
Nous devons créer une nouvelle séquence de déclenchement qui permettra la création de nouvelles connexions VPN. Pour ce faire, éditez le fichier knockd.conf en émettant dans un terminal:
vi /opt/etc/knockd.conf
Ajouter à la configuration existante:
[enable-VPN]
sequence = 02,02,02,01,01,01,2010,2010,2010
seq_timeout = 60
start_command = iptables -I INPUT 1 -s %IP% -p tcp --dport 1723 -j ACCEPT
cmd_timeout = 20
stop_command = iptables -D INPUT -s %IP% -p tcp --dport 1723 -j ACCEPT
Cette configuration va:
- Réglez la fenêtre d’opportunité pour terminer la séquence, à 60 secondes. (Il est recommandé de garder cela aussi court que possible)
- Écoutez une séquence de trois coups sur les ports 2, 1 et 2010 (cet ordre est délibéré pour faire dérailler les scanners de ports).
- Une fois la séquence détectée, exécutez la « start_command ». Cette commande «iptables» placera un «Accepter le trafic destiné au port 1723 d’où proviennent les coups» en haut des règles de pare-feu. (La directive% IP% est traitée spécialement par KnockD et est remplacée par l’IP de l’origine des coups).
- Attendez 20 secondes avant d’émettre la «commande_arrêt».
- Exécutez la «commande_arrêt». Où cette commande «iptables» fait l’inverse de ce qui précède et supprime la règle qui permet la communication.
Voilà, votre service VPN ne devrait désormais être connectable qu’après un «coup» réussi.
Auteurles conseils de
Même si vous devriez être prêt, il y a quelques points que j’estime devoir mentionner.
- Dépannage. N’oubliez pas que si vous rencontrez des problèmes, le segment «dépannage» à la fin du premier article devrait être votre premier arrêt.
- Si vous le souhaitez, vous pouvez demander aux directives «start / stop» d’exécuter plusieurs commandes en les séparant par un point-virgule (;) ou même un script. Cela vous permettra de faire des choses intéressantes. Par exemple, j’ai frappé de m’envoyer un * Email m’indiquant qu’une séquence a été déclenchée et d’où.
- N’oubliez pas que « Il y a une application pour ça»Et même si ce n’est pas mentionné dans cet article, nous vous encourageons à saisir StavFXAndroid programme de heurtoir.
- En ce qui concerne Android, n’oubliez pas qu’il existe un client VPN PPTP généralement intégré au système d’exploitation du fabricant.
- La méthode consistant à bloquer quelque chose au départ et à continuer à autoriser une communication déjà établie peut être utilisée sur pratiquement toutes les communications basées sur TCP. En fait dans le Frappé sur DD-WRT 1 ~ 6 films, je l’ai fait il y a longtemps, j’ai utilisé le protocole de bureau à distance (RDP) qui utilise le port 3389 comme exemple.
Remarque: pour ce faire, vous devrez obtenir la fonctionnalité Email sur votre routeur, qui actuellement, il n’y en a pas vraiment une qui fonctionne parce que l’instantané SVN des paquets opkg d’OpenWRT est en désordre. C’est pourquoi je suggère d’utiliser knockd directement sur la boîte VPN qui vous permet d’utiliser toutes les options d’envoi d’email disponibles sous Linux / GNU, comme SSMTP et sendEmail pour n’en citer que quelques-uns.