Comment accéder à votre réseau, partie 2 Protégez votre VPN (DD-WRT)
Nous vous avons montré comment déclencher WOL à distance en «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 sur votre réseau, vous apprécierez peut-être la possibilité de le protéger contre les attaques par force brute en le cachant derrière une séquence de frappes. En faisant cela, vous allez filtrer les scripts pour enfants qui essaient d'accéder à votre réseau. Cela dit, comme indiqué dans l'article précédent, le port frappant ne remplace pas un bon mot de passe et / ou une stratégie de sécurité. Rappelez-vous qu’avec suffisamment de patience, un attaquant peut découvrir la séquence et effectuer une attaque répétée..
N'oubliez pas non plus que l'inconvénient de cette implémentation est que lorsqu'un client VPN souhaite se connecter, il doit déclencher la séquence de coups. préalablement et que s'ils ne peuvent pas terminer la séquence pour quelque raison que ce soit, ils ne pourront pas du tout utiliser de réseau privé virtuel.
Vue d'ensemble
Afin de protéger * le service VPN, nous allons tout d'abord désactiver toutes les communications possibles en bloquant le port d'instanciation de 1723. Pour atteindre cet objectif, nous allons utiliser iptables. En effet, 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 son entrée dans le wiki et consultez notre précédent article sur le sujet. Une fois le service protégé, nous allons créer une séquence de frappe qui ouvrira temporairement le port d'instanciation du VPN et le fermera automatiquement après un laps de temps configuré, tout en maintenant la session VPN déjà établie connectée..
Remarque: Dans ce guide, nous utilisons le service VPN PPTP à titre d'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
- Il est supposé / requis que vous avez un routeur DD-WRT activé pour Opkg.
- Il est supposé / requis que vous avez déjà effectué les étapes du guide «Comment accéder à votre réseau (DD-WRT)».
- Une certaine connaissance en réseau est supposée.
Permet de craquer.
Défaut Règle «Bloquer les nouveaux VPN» sur DD-WRT
Bien que l'extrait de code ci-dessous fonctionne probablement avec chaque distribution iptables utilisant Linux / GNU qui se respecte, car il existe de nombreuses variantes, nous ne montrerons comment l'utiliser que sur DD-WRT. Si vous le souhaitez, rien ne vous empêche de l'implémenter directement sur le boîtier VPN. Cependant, comment faire, sort du cadre de ce guide.
Parce que nous voulons augmenter le pare-feu du routeur, il est logique d'ajouter au script «Pare-feu». De cette manière, la commande iptables serait exécutée à chaque fois que le pare-feu est actualisé, ce qui permet de maintenir notre augmentation en place pour les garder..
Depuis l'interface 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" état 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é.
Quelle est cette commande "Voodoo"?
La commande «voodoo magic» ci-dessus a les effets suivants:
- Trouve où se trouve la ligne iptable qui permet le passage d’une communication déjà établie. Nous le faisons, car A. sur les routeurs DD-WRT, si le service VPN est activé, il se situera juste en dessous de cette ligne et B. Il est essentiel pour continuer à permettre aux sessions VPN déjà établies de continuer événement frappant.
- Déduit deux (2) de la sortie de la commande de liste pour prendre en compte le décalage provoqué par les en-têtes de colonne d’information. Une fois que cela est fait, ajoute un (1) au numéro ci-dessus, de sorte que la règle que nous insérons viendra 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 préciser la logique de «pourquoi on doit réduire un de la place de la règle au lieu d'en ajouter un».
Configuration KnockD
Nous devons créer une nouvelle séquence de déclenchement qui permettra de créer 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]
séquence = 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:
- Définissez 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 frappes sur les ports 2, 1 et 2010 (cet ordre est délibéré pour mettre les scanners de ports à l'écart).
- Une fois la séquence détectée, exécutez la “commande_départ”. Cette commande «iptables» placera un «accepter le trafic destiné au port 1723 d'où proviennent les coups» sur la partie supérieure des règles du pare-feu. (La directive% IP% est traitée spécialement par KnockD et est remplacée par l'adresse IP de l'origine du choc).
- Attendez 20 secondes avant d'émettre la “stop_command”.
- Exécutez la “stop_command”. Où cette commande “iptables” fait le contraire de ce qui précède et supprime la règle qui permet la communication.
Auteurconseils de
Bien que vous deviez être prêt, il y a quelques points qui méritent d’être mentionnés.
- 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 faire en sorte que les directives «start / stop» exécutent plusieurs commandes en les séparant avec un semi-colen (;) ou même un script. Cela vous permettra de faire des choses intéressantes. Par exemple, j’ai envoyé à knockd un * Email me disant qu’une séquence a été déclenchée et à partir de laquelle.
- N'oubliez pas qu'il existe une application pour cela et que même si ce n'est pas mentionné dans cet article, nous vous invitons à utiliser le programme de heurteur Android de StavFX..
- À propos d'Android, n'oubliez pas qu'un client VPN PPTP est généralement intégré au système d'exploitation du fabricant..
- La méthode consistant à bloquer quelque chose initialement puis à continuer à permettre des communications déjà établies peut être utilisée sur pratiquement toutes les communications basées sur TCP. En fait, dans les films Knockd on DD-WRT 1 ~ 6, je l’ai fait il ya bien longtemps, j’ai utilisé le protocole RDP (Remote Desktop Protocol) qui utilise le port 3389 comme exemple..
Qui dérange mon sommeil?