Authentification d'OpenBSD par rapport à Active Directory

24

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?

sh-beta
la source
Très agréable! Cela semble très complet et bien écrit. Je n'utilise pas OpenBSD, mais les parties AD semblent parfaites.
Evan Anderson
+1 pour un bon guide, même si ce n'est pas vraiment une question.
David Schmitt
Vous devez changer cela en un format de questions et réponses.
Doug Luxem
Modifié, bien qu'il s'agisse toujours d'un wiki communautaire. Si quelqu'un d'autre peut changer cela, allez-y.
sh-beta

Réponses:

17

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:

  • Les utilisateurs doivent exister sur le système OpenBSD avant de tenter de se connecter. Ils ne sont pas créés automatiquement.
  • Si vous voulez que les utilisateurs soient créés automatiquement, regardez dans Samba / Winbind. Je n'ai eu que des ennuis (plantages inexplicables, spam de journaux sérieux, authentification peu fiable), donc je ne l'utilise que lorsque je le dois.
  • Cela a été testé sur OpenBSD 4.5 et Windows Server 2003. Je suis sûr que cela fonctionnera avec Win2k, mais YMMV.
  • Cette version d'OpenBSD utilise Heimdal 0.7.2. Tout ici, à part les chemins et les éléments login.conf, fonctionnera probablement sur d'autres * nixes exécutant le même Heimdal, mais encore une fois, YMMV.

Instructions

Ces étapes supposent que vous essayez d'authentifier [email protected] par rapport au domaine EXAMPLE.COM. Le contrôleur de domaine est pdc.EXAMPLE.COM.

  1. 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é.

  2. 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é.

  3. Sur pdc.EXAMPLE.COM, téléchargez et installez les outils de support de Windows Server (en particulier, vous aurez besoin de ktpass.exe)

  4. Sur pdc.EXAMPLE.COM, exécutez:

    ktpass -out c: \ temp \ myhost.keytab -princ host/[email protected] -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/[email protected]" à l'utilisateur "myhost" dans Active Directory, puis vide les informations de clé principale et privée dans le -out fichier keytab.

  5. Copiez en toute sécurité c: \ temp \ myhost.keytab sur myhost et supprimez le fichier de pdc.EXAMPLE.COM

  6. Sur myhost, ajoutez le keytab AD à votre keytab principal:

    ktutil copy /path/to/myhost.keytab /etc/kerberosV/krb5.keytab

  7. 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

  8. Vérifiez que vous pouvez obtenir un ticket:

    # kinit [email protected]
    [email protected]'s Password:
    # klist
    Credentials cache: FILE:/tmp/krb5cc_0
    Principal: [email protected]

    Issued Expires Principal
    Jun 4 21:41:05 Jun 5 07:40:28 krbtgt/[email protected]

  9. 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.

  10. 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 (*)

  11. 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:

sh-beta
la source
On dirait que 2008 R2 contient ktpass.exe. Peut-être que 2008 aussi, je ne peux pas en être sûr à ce stade. Si quelqu'un peut clarifier, ce serait formidable.
Aaron Mason
De plus, pour ce faire à partir de la version 5.7, vous devrez installer le package Heimdal - il a été supprimé de la base en 5.6.
Aaron Mason
Addendum au commentaire précédent - vous devrez également installer le package login_krb5 et copier le login_krb5-or-pwdto /usr/libexec/auth- également les fichiers de configuration et le keytab sont maintenant dans /etc/heimdalet pas dans /etc/kerberosVcomme dans les versions précédentes d'OpenBSD.
Aaron Mason
5

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 heimdalet 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.confet krb5.keytabentrent /etc/heimdalmaintenant.

Aaron Mason
la source