Possible? Serveur OpenVPN nécessitant une connexion basée sur un certificat ET un mot de passe (via le firmware du routeur Tomato)

8

J'ai utilisé la construction de Shibby de Tomato (version NVRAM 64k) sur mon routeur Asus N66U afin d'exécuter un serveur OpenVPN.

Je suis curieux de savoir s'il est possible de configurer ce serveur OpenVPN pour exiger à la fois un certificat ET un nom d'utilisateur / mot de passe avant qu'un utilisateur ne soit autorisé à accéder.

J'ai remarqué qu'il y avait une entrée «mot de passe de contestation» lors du remplissage des détails du certificat, mais tout le monde dit de le laisser vide «ou bien»; Je ne sais pas pourquoi et je ne trouve pas d'explication. De plus, j'ai un problème sur Google et j'ai remarqué que des gens parlaient d'un module PAM pour OpenVPN afin de s'authentifier via un nom d'utilisateur / mot de passe, mais cela semblait être une option / / ou; en d'autres termes, je peux forcer l'authentification via un nom d'utilisateur / mot de passe OU un certificat. Je veux exiger les deux.

Est-ce possible? Si c'est le cas, comment?

Eric
la source

Réponses:

4

La fonction OpenVPN que vous cherchez, ce qui permettra au serveur de clients authentifient sur la base à la fois leur certificat et un diplôme, est auth-user-pass-verify. Cette fonctionnalité permet au serveur de transmettre le nom d'utilisateur / mot de passe fourni par l'utilisateur distant à un script qui effectue l'authentification. À ce stade, vous pouvez valider les informations d'identification contre tout ce que vous voulez - PAM, RADIUS, LDAP, signaux de fumée, etc.

Je ne connais rien aux firmwares "Tomato" donc je ne vais même pas essayer de vous en donner une étape par étape ici. J'ai fait une recherche rapide et je pense que vous pouvez utiliser l'option "Configuration personnalisée" d'OpenVPN pour inclure une auth-user-pass-verifyréférence. Vous aurez besoin d'un script pour effectuer l'authentification.

Faites quelques recherches et je pense que vous trouverez des références spécifiques à "Tomate".

Evan Anderson
la source
2

Le mot de passe de défi est une phrase secrète utilisée pour permettre le déchiffrement de la clé. C'est la seule façon de vraiment faire un "mot de passe" et une clé.

Vous ne pouvez vraiment vérifier que par mot de passe ou clé, pas les deux. Si les deux méthodes sont activées, il essaiera d'abord l'authentification par clé, et si cela échoue, il reviendra à l'authentification par mot de passe.

Le fait de ne pas avoir de phrase secrète sur une clé permet à quelqu'un d'imiter plus facilement votre identité s'il arrive à la saisir.

Je suggère de découvrir pourquoi les interwebz disent que vous ne devriez pas utiliser de mots de passe sur les clés et voir si c'est vraiment un problème.

mardi
la source
Oui, c'est à ça que j'ai du mal à répondre. J'espère que quelqu'un d'autre pourra nous éclairer à cet égard; cela semble être une suggestion contre-intuitive.
Eric
En attendant, existe-t-il un moyen quantifiable de comparer la force d'un certificat + exigence à un combo nom d'utilisateur / mot de passe uniquement? Je suppose que les ordres de grandeur sont plus difficiles à déchiffrer, mais ce n'est qu'une hypothèse basée sur mes connaissances circonstancielles.
Eric
C'est une vieille réponse, mais ... Ce n'est pas ce que le mot de passe de défi est et fait. Vous pouvez utiliser une phrase secrète pour protéger une clé, comme décrit ci-dessus, mais le mot de passe de défi est quelque chose de non lié. Il n'est stocké ni dans le certificat ni dans la clé, mais est conservé avec l'autorité de certification. Il est destiné à être utilisé lors de l'utilisation de l'autorité de certification pour révoquer la clé ou émettre un remplacement.
Jack B du
2

auth-user-pass-verify est la bonne chose à faire. De plus, vous pouvez forcer le nom d'utilisateur auth-user à être le CN certifié, vous pouvez également forcer openvpn à établir une seule connexion à chaque certificat à la fois.

De cette façon, un "imitateur" doit avoir le bon utilisateur par rapport au certificat CN et le bon laissez-passer et il doit se connecter à la fois le vrai propriétaire doenst

De plus, vous pouvez penser à un IDS, en fonction de celui que vous choisissez, vous pouvez même le restreindre, comme les plages IP externes autorisées, les temps de connexion, etc.

Tout certificat exposé doit être révoqué immédiatement. Le serveur de signature devrait être hors réseau - clé de transfert par usb - alors vous avez un accès sécurisé vraiment serré.

et non, vous ne devez pas mot de passe un cert.

  1. Facile à brutaliser.
  2. Vous ne pouvez pas verrouiller un utilisateur (le certificat cert est uniquement hors ligne).
  3. Les gens perdent leurs mots de passe tout le temps, vous forçant à révoquer et à recréer un certificat à chaque fois - gros risque d'avoir beaucoup de certificats là-bas où vous oubliez peut-être parfois la révocation.

Mais si vous voulez vraiment, vous pouvez utiliser le mot de passe auth-user et cert en même temps, il n'y aura pas de solution de repli ou quelque chose.

Tout d'abord, openvpn utilisera le mot de passe cert pour décrypter la clé privée pour établir une connexion - puis l'utilisateur d'authentification se connecte au serveur - si les informations d'identification sont erronées, vous êtes absent.

Cependant, si un attaquant obtient les informations d'identification régulières, vous êtes déjà en difficulté et les chances sont élevées, il a également obtenu le mot de passe cert.

Donc, je ne vois pas de réel avantage ici, juste beaucoup d'inconvénients et un mauvais sentiment de plus de sécurité.

peu importe
la source
0

J'ai suivi ce tutoriel (avec TomatoUSB Shibby 1.28 sur mon Asus N66U): http://www.dd-wrt.com/wiki/index.php/OpenVPN Cela peut vous aider beaucoup.

AndyZ
la source
2
AndyZ - bienvenue à SF, mais nous aimons que les réponses contiennent plus de substance qu'un simple lien (qui peut pourrir avec l'âge). Si vous pouvez réviser cette réponse pour contenir les éléments importants de la méthode que vous avez suivie ainsi que le lien vers l'article, cela pourrait être une très bonne réponse.
MadHatter