Come utilizzare Active Directory per autenticare gli utenti Linux


10

Quali sono le migliori pratiche per l'utilizzo di Active Directory per autenticare gli utenti su scatole Linux (Debian)?

Il modo in cui vorrei che funzionasse sarebbe quello di aggiungere utenti AD a un gruppo - diciamo amministratori Linux o server web linux , e in base alla loro appartenenza al gruppo non avrebbero / non avrebbero avuto accesso a un particolare server. Idealmente, l'account root sarebbe l'unico gestito in modo standard.

I miei obiettivi nel fare questo sono i seguenti:

  • Per consentire la modifica della password in un unico posto
  • Concedere automaticamente ad alcune persone l'accesso ai server linux usando le loro credenziali AD
  • Consolodare tutte le informazioni sui nostri utenti in un unico database

Le cose che voglio evitare sono:

  • qualsiasi cosa difficile / contro-intuitiva da gestire per il nostro amministratore di Active Directory
  • bloccare gli utenti se i server AD non sono raggiungibili per qualche motivo (ad esempio, deve in qualche modo memorizzare nella cache le credenziali)
  • qualcosa di troppo complesso o non standard che si interromperà al prossimo aggiornamento del server.

Risposte:



4

Il software che stai cercando si chiama allo stesso modo aperto.

Dalla loro pagina:

  • Unisce i sistemi non Windows ai domini Active Directory in un solo passaggio dalla riga di comando o da una GUI
  • Autentica gli utenti con un singolo nome utente e password sia su Windows che non Windows
  • Applica gli stessi criteri password per utenti non Windows e utenti Windows
  • Supporta più foreste con trust tra foreste unidirezionali e bidirezionali
  • Memorizza nella cache le credenziali nel caso in cui il controller di dominio non funzioni
  • Fornisce Single Sign-On per SSH e Putty
  • Motore di autenticazione di nuova generazione che supporta Kerberos, NTLM e SPNEGO
  • Non sono richieste modifiche allo schema in Active Directory

L'abbiamo usato su alcune macchine qui e sembra funzionare bene.

http://www.likewise.com/products/likewise_open/


Allo stesso modo Open ha un repository debian? Questo è importante per noi per la gestione delle patch di sicurezza.
Brent,

1
Ha un pacchetto Ubuntu: Pacchetto: likelike-open Stato: non installato Versione: 4.1.2982-0ubuntu1 Priorità: opzionale Sezione: net Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
jay_dubya

Da quello che posso dire è una soluzione proprietaria e puoi fare tutte le cose sopra elencate (sans gui) con LDAP + Kerberos, la maggior parte delle quali dovrebbe essere configurato automaticamente se sei su un dominio Windows.
TheFiddler vince

4

Non vi è alcun motivo per utilizzare qualsiasi software esterno sulla maggior parte delle distribuzioni.

Per Debian / Ubuntu puoi farlo con libnss-ldap e libpam-krb5. Ci sono alcuni trucchi per ottenerlo al 100%. Questo presuppone che tu abbia "unixHomeDirectory" popolato per utenti Linux, che le tue scatole Linux stiano usando NTP comune con i tuoi sistemi Windows (richiesto da Kerberos) e che tu stia bene con ricerche NSS in chiaro (non password ma informazioni di appartenenza al gruppo ecc. - puoi anche usa TLS ma è più complicato da configurare). NON dovresti avere pam_ldap come password o fonte di autenticazione in PAM a meno che tu non sia configurato per usare TLS.

/etc/ldap.conf

# LDAP Configuration for libnss-ldap and libpam-ldap.
# Permit host to continue boot process with out contacting LDAP server
bind_policy soft
# Define LDAP servers to use for queries, these must be Global Catalog servers
uri ldap://ldap.site.company.local
# Define root search location for queries
base dc=company,dc=local
#debug 1
# LDAP version, almost always going to be v3, it is quite mature
ldap_version 3
# Username used to proxy authentication. You can have this in a separate file owned by root for security OR use TLS/SSL (see man page)
# Do NOT use LDAP for authentication if you are using plain text binds, use Kerberos instead (and LDAP for authorization only). See libpam-krb5.
binddn cn=ldap-auth-svc,ou=ldap,ou=services,dc=site,dc=company,dc=local
# Password for proxy acct
bindpw SooperSekeretPazzwerd
#  TCP port to perform queries on, 3268 is a Global Catalog port which will reply for all users in *.company.local
port 3268
# Search range scope (sub = all)
scope sub
# Tell the client to close TCP connctions after 30 seconds, Windows will do this on the server side anyways, this will prevent errors from showing up in the logs.
 idle_timelimit 30
# Expect queries for group membership to return DN for group members instead of usernames (lets you use MSAD group membership seamlessly)
nss_schema rfc2307bis
# Filters - User accounts must have a UID >= 2000 to be recognized in this configuration and must have a unixHomeDirectory defined.
nss_base_group dc=company,dc=local?sub?&(objectClass=group)(gidNumber=*)
nss_base_user dc=company,dc=local?sub?&(objectClass=user)(!(objectClass=localputer))(uidNumber>=2000)(unixHomeDirectory=*)
nss_base_shadow dc=company,dc=local?sub?&(objectClass=user)(!(objectClass=localputer))(uidNumber>=2000)(unixHomeDirectory=*)
# Object Class mappings.  You may want to have the posixAccount to map to "mail" and have users login with their email addresses, i.e.  "nss_map_objectclass posixAccount mail".
nss_map_objectclass posixAccount user
nss_map_objectclass shadowAccount user
nss_map_objectclass posixGroup group
# Attribute mappings.
nss_map_attribute uniqueMember member
nss_map_attribute uid sAMAccountName
nss_map_attribute homeDirectory unixHomeDirectory
nss_map_attribute shadowLastChange pwdLastSet
# Attribute in LDAP to query to match the username used by PAM for authentication
pam_login_attribute sAMAccountName
# Filter for objects which are allowed to login via PAM
pam_filter objectclass=User

Non dovresti modificare /etc/krb5.conf supponendo che le tue scatole Linux stiano usando server DNS che conoscono AD (le zone _msdcs con i record SRV appropriati sono risolvibili)

/etc/nsswitch.conf dovrebbe avere "files ldap" per utenti, gruppi, shadow.

Per Red Hat utilizzando SSSD:

/etc/sssd/sssd.conf

[domain/AD]
id_provider = ldap
auth_provider = krb5
chpass_provider = krb5
access_provider = ldap

ldap_uri = ldap://ldap.company.local:3268/
ldap_search_base = dc=company,dc=com
ldap_default_bind_dn = cn=ldap-auth-svc,ou=ldap,ou=services,dc=site,dc=company,dc=local
ldap_default_authtok = SooperSekeretPazzwerd
ldap_schema = rfc2307bis
ldap_user_object_class = user
ldap_group_object_class = group
ldap_user_name = sAMAccountName
ldap_user_home_directory = unixHomeDirectory
enumerate = true
ldap_tls_reqcert = never
ldap_tls_cacertdir = /etc/openldap/cacerts

ldap_id_use_start_tls = False
cache_credentials = True
krb5_realm = SITE.COMPANY.COM
case_sensitive = false
[sssd]
services = nss, pam
config_file_version = 2

domains = AD
[nss]
filter_users = root,named,avahi,nscd


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.