
Aujourd'hui, je veux partager comment configurer un serveur d'authentification à deux facteurs pour protéger le réseau d'entreprise, les sites, les services, ssh. Le serveur fonctionnera en bundle: LinOTP + FreeRadius.
Pourquoi en avons-nous besoin?
Il s'agit d'une solution totalement gratuite et pratique, au sein de son réseau, indépendante des prestataires tiers.
Ce service est trÚs pratique, assez visuel, contrairement à d'autres produits open source, et prend également en charge un grand nombre de fonctions et de politiques (par exemple, login + mot de passe + (PIN + OTPToken)). Grùce à l'API, il s'intÚgre aux services d'envoi de sms (configuration LinOTP-> configuration du fournisseur-> fournisseur SMS), génÚre des codes pour les applications mobiles comme Google Autentificator et bien plus encore. Je pense que c'est plus pratique que le service considéré dans l'
article .
Ce serveur fonctionne trÚs bien avec Cisco ASA, serveur OpenVPN, Apache2, et en effet avec presque tout ce qui prend en charge l'authentification via un serveur RADIUS (par exemple, pour SSH dans le centre de données).
Il faut:
1) Debian 8 (jessie) -
Obligatoire! (l'installation d'essai sur debian 9 est décrite à la fin de l'article)
Début:
Installer Debian 8.
Ajouter un référentiel LinOTP:
Ajouter des clés:
Parfois avec une installation «propre», aprÚs avoir exécuté cette commande, Debian émet:
gpg: `/root/.gnupg' gpg: `/root/.gnupg/gpg.conf' gpg: : `/root/.gnupg/gpg.conf' gpg: `/root/.gnupg/secring.gpg' gpg: `/root/.gnupg/pubring.gpg' gpg: ( --keyserver) gpg: : URI
Il s'agit de la configuration initiale de gnupg. Rien à craindre. Exécutez à nouveau la commande.
Posée par Debiana:
gpg: "913DFF12F86258E5" hkp keys.gnupg.net (1) LSE LinOTP2 Packaging <linotp2@lsexperts.de> 2048 bit RSA key F86258E5, : 2010-05-10 Keys 1-1 of 1 for "913DFF12F86258E5". , N) Q) >
Réponse: 1
Suivant:
Installez mysql. En théorie, vous pouvez utiliser un serveur SQL différent, mais pour plus de simplicité, je vais l'utiliser, comme recommandé pour LinOTP.
(des informations supplĂ©mentaires, y compris sur la reconfiguration de la base de donnĂ©es LinOTP, peuvent ĂȘtre trouvĂ©es dans la documentation officielle sur le
lien . Au mĂȘme endroit, vous pouvez trouver la commande: dpkg-reconfigure linotp pour modifier les paramĂštres si vous avez dĂ©jĂ installĂ© mysql).
(Vérifier à nouveau les mises à jour ne fera pas de mal)
Installez LinOTP et les modules complémentaires:
Nous répondons aux questions de l'installateur:
Utiliser Apache2: oui
Créez un mot de passe pour l'administrateur Linotp: "YourPassword"
Générer un certificat auto-signé?: Oui
Utiliser MySQL?: Oui
OĂč se trouve la base de donnĂ©es: localhost
Créez la base de données LinOTP (nom de la base de données) sur le serveur: LinOTP2
Créez un utilisateur distinct pour la base de données: LinOTP2
Nous définissons le mot de passe de l'utilisateur: "YourPassword"
Dois-je crĂ©er une base maintenant? (quelque chose comme "Ătes-vous sĂ»r de vouloir ..."): oui
Saisissez le mot de passe racine MySQL créé lors de son installation: «YourPassword»
C'est fait.
(facultatif, vous ne pouvez pas définir)
(facultatif, vous ne pouvez pas définir)
Et donc notre interface Web Linotp est désormais disponible à l'adresse suivante:
"<b>https</b>: //IP_/manage"
Je parlerai des paramĂštres de l'interface Web un peu plus tard.
Maintenant, la chose la plus importante! Lancez FreeRadius et liez-le Ă Linotp.
Installez FreeRadius et le module LinOTP
client de sauvegarde et configurations de rayon d'utilisateurs.
Créez un fichier client vide:
Nous Ă©ditons notre nouveau fichier de configuration (une configuration de sauvegarde peut ĂȘtre utilisĂ©e comme exemple)
client 192.168.188.0/24 { secret = passwd # }
Ensuite, créez le fichier utilisateurs:
Nous éditons le fichier, en indiquant le rayon que nous utiliserons perl pour l'authentification.
DEFAULT Auth-type := perl
Ensuite, éditez le fichier / etc / freeradius / modules / perl
Nous devons écrire le chemin du script linotp perl dans le paramÚtre du module:
Perl { ....... ......... <source lang="bash">module = /usr/lib/linotp/radius_linotp.pm
.....
Ensuite, nous créons un fichier dans lequel nous disons à partir duquel (domaine, base de données ou fichier) prendre les données.
URL=https://IP__LinOTP_(192.168.XX)/validate/simplecheck REALM=webusers1c RESCONF=LocalUser Debug=True SSL_CHECK=False
Ici, je m'attarderai un peu plus, car c'est important:
Description complĂšte du fichier avec commentaires:
#IP du serveur linotp (adresse IP de notre serveur LinOTP)
URL = https: //172.17.14.103/validate/simplecheck
# Notre espace que nous allons créer dans l'interface web LinOTP.)
REALM = rearm1
# Le nom du groupe juzverej créé dans le webmord LinOTP.
RESCONF = flat_file
#optional: commentez si tout semble bien fonctionner
Debug = True
#optional: utilisez-le si vous avez des certificats auto-signés, sinon commentez (SSL si nous créons notre certificat et que nous voulons le vérifier)
SSL_CHECK = Faux
Ensuite, créez le fichier / etc / freeradius / sites-available / linotp
Et copiez la config dedans (n'éditez rien de maniÚre inappropriée):
authorize { #normalizes maleformed client request before handed on to other modules (see '/etc/freeradius/modules/preprocess') preprocess # If you are using multiple kinds of realms, you probably # want to set "ignore_null = yes" for all of them. # Otherwise, when the first style of realm doesn't match, # the other styles won't be checked. #allows a list of realm (see '/etc/freeradius/modules/realm') IPASS #understands something like USER@REALM and can tell the components apart (see '/etc/freeradius/modules/realm') suffix #understands USER\REALM and can tell the components apart (see '/etc/freeradius/modules/realm') ntdomain # Read the 'users' file to learn about special configuration which should be applied for # certain users (see '/etc/freeradius/modules/files') files # allows to let authentification to expire (see '/etc/freeradius/modules/expiration') expiration # allows to define valid service-times (see '/etc/freeradius/modules/logintime') logintime # We got no radius_shortname_map! pap } #here the linotp perl module is called for further processing authenticate { perl }
Ensuite, faites un lien sim:
Personnellement, je tue les sites de rayon par défaut, mais si vous en avez besoin, vous pouvez soit modifier leur configuration, soit les désactiver.
Revenons maintenant à la face Web et réfléchissons-y plus en détail:
Dans le coin supérieur droit, cliquez sur LinOTP Config -> UserIdResolvers -> New
Choisissez ce que nous voulons: LDAP (AD win, LDAP samba), ou SQL, ou utilisateurs Flatfile locaux.
Remplissez les champs obligatoires.
Ensuite, créez des REALMS:
Dans le coin supérieur droit, cliquez sur LinOTP Config -> Realms -> New.
et donnez un nom à nos REALMS, ainsi que cliquez sur les UserIdResolvers créés précédemment.
Toutes ces données sont nécessaires à freeRadius dans le fichier /etc/linotp2/rlm_perl.ini, comme je l'ai écrit ci-dessus, donc si vous ne l'avez pas modifié, faites-le maintenant.
Tout le serveur est configuré.
Ajout:
Installer LinOTP sur Debian 9 (Merci Ă
prikhodkov )
# Ajoutez le référentiel LinOTP à /etc/apt/sources.list.d/linotp.list et mettez à jour les navets:
echo "deb
linotp.org/apt/debian stretch linotp"> /etc/apt/sources.list.d/linotp.list
mise Ă jour apt-get
apt-get install dirmngr
apt-key adv --recv-keys 913DFF12F86258E5
# Installez et configurez le serveur mysql en gros:
apt-get install mysql-server
# Installer les packages linotp et freeradius
apt-get install linotp linotp-adminclient-cli python-ldap freeradius python-passlib python-bcrypt git libio-all-lwp-perl libconfig-file-perl libtry-tiny-perl
# Créer des liens symboliques vers des fichiers de configuration freeradius
ln -s /etc/freeradius/3.0/sites-available / etc / freeradius / sites-available
ln -s /etc/freeradius/3.0/sites-enabled / etc / freeradius / sites-enabled
ln -s /etc/freeradius/3.0/clients.conf /etc/freeradius/clients.conf
ln -s /etc/freeradius/3.0/users / etc / freeradius / users
# Installez le module linotp-auth-freeradius-perl
git clone
github.com/LinOTP/linotp-auth-freeradius-perlcd linotp-auth-freeradius-perl /
cp radius_linotp.pm /usr/share/linotp/radius_linotp.pm
# Nous apportons le fichier de configuration freeradius pour linotp Ă ce formulaire
cat / etc / freeradius / sites-enabled / linotp
linotp serveur {
écoute {
ipaddr = *
port = 1812
type = auth
}
écoute {
ipaddr = *
port = 1813
type = acct
}
autoriser {
prétraiter
mettre Ă jour {
& contrĂŽle: Type d'authentification: = Perl
}
}
authentifier {
Type d'authentification Perl {
perl
}
}
comptabilité {
unix
}
}
# Dans les sites activés pour freeradius, nous ne laissons que linotp
ls / etc / freeradius / sites-enabled
linotp
# Ajouter des hĂŽtes Ă partir desquels nous autorisons les connexions sur freeradius
cat /etc/freeradius/clients.conf
hĂŽte client1 {
ipaddr = IP_1
masque de réseau = 32
secret = 'SECRET_1'
}
client hĂŽte2 {
ipaddr = IP_2
masque de réseau = 32
secret = 'SECRET_2'
}
# En tant que base d'utilisateurs, nous utilisons le connecteur Perl
cat / etc / freeradius / users
DEFAUT Type d'authentification: = perl
}
chat /etc/freeradius/3.0/mods-available/perl
perl {
filename = /usr/share/linotp/radius_linotp.pm
func_authenticate = authentifier
func_authorize = autoriser
}
# Dans le répertoire mods-activé, créez des liens symboliques à partir du répertoire mods-disponible pour le module perl et supprimez eap
ln -s /etc/freeradius/3.0/mods-available/perl /etc/freeradius/3.0/mods-enabled/perl
rm /etc/freeradius/3.0/mods-enabled/eap
# Créer une clé d'audit pour exécuter linotp
linotp-create-auditkeys -f linotp.ini
# Nous créons une config du connecteur pour vérifier le DD arrivant dans le rayon
cat /etc/linotp2/rlm_perl.ini
URL = https: // IP_LINOTP_SRV / validate / simplecheck
REALM = royaume
RESCONF = LocalUser
Debug = True
SSL_CHECK = Faux
Je vais laisser ci-dessous quelques liens sur la configuration des systĂšmes, qui doivent le plus souvent ĂȘtre protĂ©gĂ©s par une authentification Ă deux facteurs:
Configuration de l'authentification Ă deux facteurs dans
Apache2Configuration avec Cisco ASA (un autre serveur de gĂ©nĂ©ration de jetons y est utilisĂ©, mais les paramĂštres de l'ASA lui-mĂȘme sont les mĂȘmes).
VPN avec authentification Ă deux facteursConfiguration
de l'authentification à deux facteurs dans ssh (LinOTP y est également utilisé) - merci à l'auteur. Vous pouvez également y trouver des informations intéressantes sur la configuration des politiques LiOTP.
De plus, les cms de nombreux sites prennent en charge l'authentification Ă deux facteurs (pour Wordpress, LinOTP a mĂȘme son propre module spĂ©cial sur
github ), par exemple, si vous souhaitez créer une section sécurisée pour les employés de l'entreprise sur votre site Web d'entreprise.
FAIT IMPORTANT! NE cochez PAS la case "Google autenteficator" pour utiliser Google Authenticator! Le code QR ne peut pas ĂȘtre lu alors ... (fait Ă©trange)
Pour écrire l'article, des informations ont été utilisées à partir des articles suivants:
itnan.ru/post.php?c=1&p=270571www.digitalbears.net/?p=469Merci aux auteurs.