Edit: reformaté cela comme Q&A. Si quelqu'un peut changer cela du Community Wiki en une question typique, c'est probablement plus approprié aussi.
Comment puis-je authentifier OpenBSD par rapport à Active Directory?
Edit: reformaté cela comme Q&A. Si quelqu'un peut changer cela du Community Wiki en une question typique, c'est probablement plus approprié aussi.
Comment puis-je authentifier OpenBSD par rapport à Active Directory?
Réponses:
Préface
L'authentification contre Active Directory avec Kerberos est assez simple sur les systèmes utilisant PAM, mais OpenBSD ne le fait pas et le rend plus difficile. À partir d'un tcpdump, il semble que les systèmes PAM effectuent simplement une pré-authentification tandis que le système bsd_auth d'OpenBSD utilise l'ensemble du processus d'authentification Kerberos.
Quoi qu'il en soit, cela m'a pris un certain temps pour comprendre, alors j'espère que quelques instructions concises vous feront gagner du temps.
Quelques notes rapides avant de commencer:
Instructions
Ces étapes supposent que vous essayez d'authentifier myuser@myhost.fqdn par rapport au domaine EXAMPLE.COM. Le contrôleur de domaine est pdc.EXAMPLE.COM.
Créez un compte d'utilisateur Active Directory nommé myhost (ce n'est pas une faute de frappe, ces instructions ne fonctionneront pas avec un compte d'ordinateur). Désactivez l'expiration du mot de passe et ne laissez pas l'utilisateur changer son propre mot de passe. Définissez le mot de passe comme vous le souhaitez - il sera bientôt modifié.
C'est probablement une bonne idée de créer le compte utilisateur sous une nouvelle unité d'organisation, de le supprimer du groupe d'utilisateurs de domaine et de l'ajouter à un groupe dédié. Tout cela est une question de goût et de sécurité.
Sur pdc.EXAMPLE.COM, téléchargez et installez les outils de support de Windows Server (en particulier, vous aurez besoin de ktpass.exe)
Sur pdc.EXAMPLE.COM, exécutez:
ktpass -out c: \ temp \ myhost.keytab -princ host/myhost.fqdn@EXAMPLE.COM -mapuser myhost -pType KRB5
_
NT_PRINCIPAL + rndpass
Cela met à jour le mot de passe de l'utilisateur myhost vers quelque chose d'aléatoire (+ rndpass), mappe le principal Kerberos "host/myhost.fqdn@EXAMPLE.COM" à l'utilisateur "myhost" dans Active Directory, puis vide les informations de clé principale et privée dans le -out fichier keytab.
Copiez en toute sécurité c: \ temp \ myhost.keytab sur myhost et supprimez le fichier de pdc.EXAMPLE.COM
Sur myhost, ajoutez le keytab AD à votre keytab principal:
ktutil copy /path/to/myhost.keytab /etc/kerberosV/krb5.keytab
Configurez /etc/krb5.conf. Voici le strict minimum dont vous avez besoin. Il existe de nombreuses options disponibles, consultez la page de manuel pour plus de détails. Cela définit simplement le décalage d'horloge maximal acceptable sur 5 minutes, fait d'EXAMPLE.COM le domaine par défaut et indique à Kerberos comment traduire entre les domaines DNS et Kerberos.
[libdefaults]
clockskew = 300
default_realm = EXAMPLE.COM[royaumes]
EXAMPLE.COM = {
default_domain = EXAMPLE.COM
}[domaine_réalm]
.EXAMPLE.COM = EXAMPLE.COM
Vérifiez que vous pouvez obtenir un ticket:
# kinit Administrator@EXAMPLE.COM
Administrator@EXAMPLE.COM's Password:
# klist
Credentials cache: FILE:/tmp/krb5cc_0
Principal: Administrator@EXAMPLE.COM
Issued Expires Principal
Jun 4 21:41:05 Jun 5 07:40:28 krbtgt/EXAMPLE.COM@EXAMPLE.COM
Modifiez /etc/login.conf pour utiliser l'authentification Kerberos. Votre configuration login.conf exacte variera en fonction de la façon dont vous utilisez votre système, mais pour passer d'une installation vanilla à l'utilisation de Kerberos, il vous suffit de modifier et de commenter cette ligne sous la classe de connexion par défaut:
:tc=auth-defaults:\
Et ajoutez dessus:
:auth=krb5-or-pwd:\
Cela vérifie d'abord Kerberos sauf si l'utilisateur est root. Si Kerberos échoue, il utilisera des mots de passe locaux.
Ajoutez les utilisateurs que vous souhaitez authentifier sur cet hôte. Laissez les mots de passe vides, sauf si vous souhaitez qu'ils puissent utiliser à la fois Active Directory et les mots de passe locaux (non recommandé).
Vous pouvez effacer les mots de passe des utilisateurs existants "chpass <user>
" et remplacer la valeur "Mot de passe crypté:" par un astérisque (*)
Testez SSH et Sudo. Les deux devraient fonctionner parfaitement avec vos informations d'identification Active Directory.
C'est tout ce qu'on peut en dire.
Liens
Quelques sites utiles:
login_krb5-or-pwd
to /usr/libexec/auth
- également les fichiers de configuration et le keytab sont maintenant dans /etc/heimdal
et pas dans /etc/kerberosV
comme dans les versions précédentes d'OpenBSD.
Une mise à jour des instructions ci-dessus car certaines choses ont changé depuis.
Dans OpenBSD 5.6, une décision a été prise de retirer Heimdal de la distribution de base en raison de préoccupations concernant la qualité du code et personne ne souhaitant passer le temps de le vérifier. Dans 5.7, il a été mis à disposition sous forme de package (pour 5.6, vous devrez construire à partir de la source ou comprendre comment le réactiver dans la source). Par conséquent, avant de suivre les instructions ci-dessus, les étapes supplémentaires suivantes devront être effectuées:
-3. Installez les packages heimdal
et login_krb5
à partir de votre miroir préféré.
-2. Copiez /usr/local/libexec/auth/login_krb5*
vers /usr/libexec/auth
.
-1. Si vous avez l'intention d'utiliser beaucoup les outils heimdal, ajoutez-le /usr/local/heimdal/bin
à votre chemin système. Sinon, assurez-vous de référencer les outils avec leur chemin complet lors de leur utilisation.
De plus, les fichiers krb5.conf
et krb5.keytab
entrent /etc/heimdal
maintenant.