Accédez à 2FA (authentification à deux facteurs pour le VPN SSL ASA)

Le besoin de fournir un accès à distance à un environnement d'entreprise se pose de plus en plus souvent, que ce soit vos utilisateurs ou vos partenaires qui ont besoin d'accéder à un serveur particulier de votre organisation.

À ces fins, la plupart des entreprises utilisent la technologie VPN, qui s'est avérée être un moyen sécurisé de fournir un accès aux ressources locales de l'organisation.

Mon entreprise ne fait pas exception et, comme beaucoup d'autres, nous utilisons cette technologie. Et, comme beaucoup d'autres, nous utilisons Cisco ASA 55xx comme passerelle d'accès à distance.

Avec une augmentation du nombre d'utilisateurs distants, il est nécessaire de faciliter la procédure de délivrance des informations d'identification. Mais en même temps, cela doit être fait sans compromettre la sécurité.

Pour nous-mêmes, nous avons trouvé une solution en utilisant une authentification à deux facteurs pour nous connecter via Cisco SSL VPN, en utilisant des mots de passe à usage unique. Et cette publication vous expliquera comment organiser une telle solution avec un minimum de temps et des coûts nuls pour les logiciels nécessaires (à condition que vous ayez déjà Cisco ASA dans votre infrastructure).

Le marché regorge de solutions en boîte pour générer des mots de passe à usage unique, tout en offrant de nombreuses options pour les obtenir, qu'il s'agisse d'envoyer un mot de passe par SMS ou d'utiliser des jetons, à la fois matériels et logiciels (par exemple, sur un téléphone mobile). Mais l'envie d'économiser et le désir d'économiser de l'argent pour mon employeur, dans la crise actuelle, m'ont fait trouver un moyen gratuit de mettre en place un service de génération de mots de passe à usage unique. Ce qui, bien qu'il soit gratuit, n'est pas très inférieur aux solutions commerciales (il convient de noter ici que ce produit a également une version commerciale, mais nous avons convenu que les coûts, en termes d'argent, seront nuls).

Nous aurons donc besoin de:

- Une image Linux avec un ensemble d'outils intégrés - multiOTP, FreeRADIUS et nginx, pour accéder au serveur via le Web (http://download.multiotp.net/ - J'ai utilisé une image prête à l'emploi pour VMware)
— Serveur Active Directory
- En fait Cisco ASA (j'utilise ASDM pour plus de commodité)
- Tout jeton logiciel prenant en charge le mécanisme TOTP (j'utilise, par exemple, Google Authenticator, mais le même FreeOTP fera l'affaire)

Je ne rentrerai pas dans les détails du déroulement de l'image. En conséquence, vous obtiendrez Debian Linux avec multiOTP et FreeRADIUS déjà installés, configurés pour fonctionner conjointement et une interface Web pour l'administration OTP.

Étape 1. Nous lançons le système et le configurons pour notre réseau
Par défaut, le système est livré avec des informations d'identification root root. Je pense que tout le monde a deviné qu'il serait bien de changer le mot de passe de l'utilisateur root après la première connexion. Vous devez également modifier les paramètres réseau (la valeur par défaut est '192.168.1.44' avec la passerelle '192.168.1.1'). Après cela, vous pouvez redémarrer le système.

Créer un utilisateur dans Active Directory Bureau du Procureur, avec mot de passe MonSuperMotDePasse.

Étape 2. Configurer la connexion et importer les utilisateurs Active Directory
Pour ce faire, nous avons besoin d'accéder à la console, et directement au fichier multiotp.php, à l'aide duquel nous configurerons les paramètres de connexion à Active Directory.

Aller au répertoire /usr/local/bin/multiotp/ et exécutez les commandes suivantes une par une :

./multiotp.php -config default-request-prefix-pin=0

Détermine si une broche supplémentaire (permanente) est requise lors de la saisie d'une broche unique (0 ou 1)

./multiotp.php -config default-request-ldap-pwd=0

Détermine si un mot de passe de domaine est requis lors de la saisie d'un code PIN à usage unique (0 ou 1)

./multiotp.php -config ldap-server-type=1

Le type de serveur LDAP est spécifié (0 = serveur LDAP normal, dans notre cas 1 = Active Directory)

./multiotp.php -config ldap-cn-identifier="sAMAccountName"

Spécifie le format dans lequel représenter le nom d'utilisateur (cette valeur affichera uniquement le nom d'utilisateur, sans le domaine)

./multiotp.php -config ldap-group-cn-identifier="sAMAccountName"

Idem, uniquement pour le groupe

./multiotp.php -config ldap-group-attribute="memberOf"

Spécifie la méthode pour déterminer si un utilisateur appartient à un groupe

./multiotp.php -config ldap-ssl=1

S'il faut utiliser une connexion sécurisée au serveur LDAP (oui, bien sûr !)

./multiotp.php -config ldap-port=636

Port de connexion au serveur LDAP

./multiotp.php -config ldap-domain-controllers=adSRV.domain.local

Adresse de votre serveur Active Directory

./multiotp.php -config ldap-base-dn="CN=Users,DC=domain,DC=local"

Spécifiez où commencer la recherche d'utilisateurs dans le domaine

./multiotp.php -config ldap-bind-dn="[email protected]"

Spécifiez un utilisateur disposant de droits de recherche dans Active Directory

./multiotp.php -config ldap-server-password="MySuperPassword"

Spécifiez le mot de passe de l'utilisateur pour se connecter à Active Directory

./multiotp.php -config ldap-network-timeout=10

Définition d'un délai d'attente pour la connexion à Active Directory

./multiotp.php -config ldap-time-limit=30

Définir une limite de temps pour l'opération d'importation d'utilisateurs

./multiotp.php -config ldap-activated=1

Activer la configuration de la connexion Active Directory

./multiotp.php -debug -display-log -ldap-users-sync

Nous importons des utilisateurs depuis Active Directory

Étape 3. Générez un code QR pour le jeton
Tout est extrêmement simple ici. Ouvrez l'interface web du serveur OTP dans le navigateur, connectez-vous (n'oubliez pas de changer le mot de passe par défaut pour l'admin !), et cliquez sur le bouton « Imprimer » :

Accédez à 2FA (authentification à deux facteurs pour le VPN SSL ASA)
Le résultat de cette action sera une page contenant deux codes QR. Nous ignorons hardiment le premier d'entre eux (malgré l'inscription attrayante Google Authenticator / Authenticator / 2 Steps Authenticator), et scannons à nouveau hardiment le deuxième code dans un jeton logiciel sur le téléphone :

Accédez à 2FA (authentification à deux facteurs pour le VPN SSL ASA)
(oui, j'ai délibérément foiré le code QR pour le rendre illisible).

Après avoir effectué ces actions dans votre application, toutes les trente secondes, un mot de passe à six chiffres sera généré.

Pour plus de fidélité, vous pouvez vérifier, dans la même interface :

Accédez à 2FA (authentification à deux facteurs pour le VPN SSL ASA)
Saisie du nom d'utilisateur et du mot de passe à usage unique depuis l'application sur le téléphone. Vous avez une réponse positive ? Alors nous passons à autre chose.

Étape 4. Configurer et tester FreeRADIUS
Comme je l'ai mentionné plus haut, multiOTP est déjà configuré pour fonctionner avec FreeRADIUS, il reste à faire des tests et à ajouter des informations sur notre passerelle VPN au fichier de configuration de FreeRADIUS.

Nous revenons à la console du serveur, au répertoire /usr/local/bin/multiotp/, entrer:

./multiotp.php -config debug=1
./multiotp.php -config display-log=1

Y compris donc une journalisation plus détaillée.

Dans le fichier de configuration du client FreeRADIUS (/etc/freeradius/clinets.conf) commentez toutes les lignes liées à localhost et ajoutez deux entrées :

client localhost {
        ipaddr = 127.0.0.1
        secret          = testing321
        require_message_authenticator = no
}

- pour le test

client 192.168.1.254/32 {
        shortname =     CiscoASA
        secret =        ConnectToRADIUSSecret
}

- pour notre passerelle VPN.

Redémarrez FreeRADIUS et essayez de vous connecter :

radtest username 100110 localhost 1812 testing321

Nom d'utilisateur = nom d'utilisateur, 100110 = mot de passe qui nous est communiqué par l'application sur le téléphone, localhost = adresse du serveur RADIUS, 1812 — port du serveur RADIUS, testing321 — mot de passe du client du serveur RADIUS (que nous avons spécifié dans la configuration).

Le résultat de cette commande ressemblera à ceci :

Sending Access-Request of id 44 to 127.0.0.1 port 1812
        User-Name = "username"
        User-Password = "100110"
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 1812
        Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=44, length=20

Nous devons maintenant nous assurer que l'utilisateur est authentifié avec succès. Pour ce faire, nous allons examiner le journal de multiotp lui-même :

tail /var/log/multiotp/multiotp.log

Et si la dernière entrée il y a :

2016-09-01 08:58:17     notice  username  User    OK: User username successfully logged in from 127.0.0.1
2016-09-01 08:58:17     debug           Debug   Debug: 0 OK: Token accepted from 127.0.0.1

Ensuite, tout s'est bien passé, et nous pouvons effectuer

Étape 5 Configurez Cisco ASA
Convenons que nous avons déjà un groupe et des politiques configurés pour l'accès via VPN SLL, configurés conjointement avec Active Directory, et nous devons ajouter une authentification à deux facteurs pour ce profil.

1. Ajoutez un nouveau groupe de serveurs AAA :

Accédez à 2FA (authentification à deux facteurs pour le VPN SSL ASA)
2. Ajoutez notre serveur multiOTP au groupe :

Accédez à 2FA (authentification à deux facteurs pour le VPN SSL ASA)
3. Règle profil de connexion, en définissant le groupe de serveurs Active Directory comme serveur d'authentification principal :

Accédez à 2FA (authentification à deux facteurs pour le VPN SSL ASA)
4. patte Avancé -> Authentification sélectionnez également un groupe de serveurs Active Directory :

Accédez à 2FA (authentification à deux facteurs pour le VPN SSL ASA)
5. patte Avancé -> Secondaire authentification sélectionnez le groupe de serveurs créé dans lequel le serveur multiOTP est enregistré. Notez que le nom d'utilisateur de la session est hérité du groupe de serveurs AAA principal :

Accédez à 2FA (authentification à deux facteurs pour le VPN SSL ASA)
Appliquer les paramètres et

L'étape 6 est la dernière
Nous vérifions si l'authentification à deux facteurs pour SLL VPN fonctionne pour nous :

Accédez à 2FA (authentification à deux facteurs pour le VPN SSL ASA)
Voila ! Lors de la connexion via le Client VPN Cisco AnyConnect, un deuxième mot de passe à usage unique sera également demandé.

J'espère que cet article aidera quelqu'un, et qu'il donnera matière à réflexion à quelqu'un, comment vous pouvez l'utiliser, libre Serveur OTP, pour d'autres tâches. Partagez dans les commentaires si vous le souhaitez.

Source: habr.com

Ajouter un commentaire