Quanto è pratico autenticare un server Linux contro AD?


18

Utilizziamo server Windows e Linux presso la nostra società di sviluppo software.

Uno dei punti di attrito con questa configurazione è che non abbiamo un'unica soluzione di accesso. Essendo più un negozio Microsoft che uno Linux, vogliamo autenticarci contro AD.

Ho letto un paio di articoli online e capisco che questo è possibile.

Attualmente stiamo utilizzando i seguenti servizi su Linux che richiedono autenticazione:
- server git (tramite SSH)
- Sendmail
- server Web Apache che attualmente utilizza file .htaccess.
- Condivisioni di file SAMBA

Quello che voglio sapere è quanto sia pratico questo tipo di installazione? Funziona davvero o è soggetto a errori?


Grazie per le ottime risposte a tutti, questo mi dà una migliore sensazione di quale sia l'esperienza di questo setup nel mondo reale. Questo aiuta davvero. Selezionare qui la risposta corretta è difficile poiché tutti rispondono alla domanda.
Philip Fourie,

Controlla FreeIPA :) freeipa.org
GioMac il

Risposte:


11

Non è difficile ed è perfettamente pratico.

Disponiamo di alcune centinaia di macchine desktop a doppio avvio che utilizzano l'autenticazione AD e numerosi server che utilizzano l'autenticazione AD per consentire ai client Windows di utilizzare le loro condivisioni samba senza un'autorizzazione esplicita da parte degli utenti.

C'è stato un altro articolo su SF su cosa devi fare.

Fondamentalmente devi configurare kerberos, winbind, nss e pam.

Quindi fai una kinite una net ads joine la tua.

Puoi configurare pam per usare più metodi per auth se vuoi, quindi se uno non funziona tornerà al successivo.

Di solito usiamo file, winbindd e ldap per server che servono fileshares a server Windows.

Se possibile, utilizzerei LDAP per le informazioni sull'account e windbind rigorosamente per auth, ma credo che tu possa mappare gli attributi in penso /etc/ldap.conf se necessario. Se finisci per usare winbindd per le informazioni sull'account è possibile usare il RID (metodo di hashing) per generare uid / gids, ma è anche possibile usare altri metodi. Abbiamo usato i RID su un file server di grandi dimensioni ed è stato un vero problema, quindi, se possibile, proverei a esplorare una delle altre opzioni. Nel nostro caso, tutti gli utenti e i gruppi AD si riflettono in LDAP da un sistema IDM upstream, quindi utilizziamo LDAP per le informazioni sull'account sui server più recenti e utilizziamo winbind esclusivamente per l'autenticazione.


6

L'autenticazione è assolutamente semplice utilizzando Likewise Open. http://www.likewise.com/products/likewise_open/index.php

Quasi tutta la mia infrastruttura Linux ha centralizzato l'autenticazione e la gestione degli utenti grazie a Likewise Open. È incredibilmente semplice da installare e implementare. Non posso dire abbastanza bene al riguardo.

Come nota, UID e GID sono assegnati secondo una funzione hash, quindi sono identici su tutta l'infrastruttura, quindi i montaggi NFS funzionano perfettamente.


1
Uso allo stesso modo aperto su diversi server e ho scoperto che funziona bene. Se Apache / Sendmail è una macchina rivolta verso l'esterno, potresti voler controllare l'eventuale latenza / carico aggiunto.
Kyle Brandt,

3
Il collegamento è ora interrotto
gogaz

Sembra che (per i contenuti del sito web) la società non stia più facendo questo prodotto.
Alexei Martianov,

4

Ho installato i servizi Windows per Unix e aggiunto un utente in AD chiamato "Unix Authenticator", quindi ho apportato le seguenti modifiche ai file di configurazione sui computer Linux:

/etc/ldap.conf:
host ldap.<foo>.com
base cn=Users,dc=<foo>,dc=com
binddn cn=Unix Authenticator,cn=Users,dc=<foo>,dc=com
bindpw <password>
nss_base_passwd cn=Users,dc=<foo>,dc=com?sub
nss_base_shadow cn=Users,dc=<foo>,dc=com?sub
nss_base_group cn=Users,dc=<foo>,dc=com?sub
nss_map_objectclass posixAccount User
nss_map_objectclass shadowAccount User
nss_map_objectclass posixGroup Group
nss_map_attribute cn msSFUName
nss_map_attribute uid msSFUName
nss_map_attribute gid gidNumber
nss_map_attribute gecos sAMAccountName
nss_map_attribute homeDirectory msSFUHomeDirectory
nss_map_attribute uniqueMember Member
pam_login_attribute msSFUName
pam_filter objectclass=user
pam_password ad
/etc/ldap.secret:
<password>
/etc/nsswitch.conf:
passwd: compat ldap
shadow: compat ldap
group: compat ldap
/etc/nsswitch.ldap:
host files dns
/etc/pam.d/system-auth:
auth required /lib/security/pam_env.so
auth sufficient /lib/security/pam_unix.so likeauth nullok
auth sufficient /lib/security/pam_ldap.so use_first_pass
auth required /lib/security/pam_deny.so

account sufficient /lib/security/pam_ldap.so
account required /lib/security/pam_unix.so

password required /lib/security/pam_cracklib.so retry=3
password sufficient /lib/security/pam_unix.so nullok md5 shadow use_authtok
password sufficient /lib/security/pam_ldap.so use_first_pass use_authtok
password required /lib/security/pam_deny.so

session required /lib/security/pam_limits.so
session required /lib/security/pam_unix.so

Spero che sia di aiuto.


Questo è un approccio interessante, grazie esplorerò anche questa strada.
Philip Fourie,

1
Per favore non usare pam_ldap per auth (in /etc/pam.d/system-auth) così com'è. Invierà la tua password in chiaro. Dovresti usare LDAPS o GSSAPI se vuoi autenticarti tramite LDAP. Puoi utilizzare LDAP per NSS e Kerberos per l'autenticazione se vuoi farlo in modo sicuro (vedi sotto)
TheFiddler vince il

2

Gli utenti di Windows hanno ottenuto l'autorizzazione contro AD, ma la maggior parte dei nostri server (unità pubblica ecc.) Sono Linux e fanno parte del dominio. Da un PoV di Windows nessuno se ne accorge. Da parte mia, mi sento un po 'fruttato con il mio nome utente di Windows, ma è circa la sua dimensione.

Usando semplicemente la vecchia samba.


2

Non è necessario utilizzare Samba, AD supporta direttamente Kerberos e LDAP. 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%. Ciò presuppone che tu abbia "unixHomeDirectory" popolato per gli 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

Hai bisogno di cambiare qualcosa sul lato AD in questo scenario? Ricordo di aver visto alcuni "strumenti Unix per Windows" che dovevano essere installati quando si utilizza SAMBA?
Martin Nielsen,

Questa soluzione non dipende da SAMBA, utilizza LDAP / Kerberos nativi. L'unico motivo per utilizzare gli strumenti Unix è ottenere una GUI per modificare gli attributi utente / gruppo POSIX. Anche questo non è necessario se si utilizza SSSD. SAMBA (in Winbind) consente di installare software che consente al sistema di emulare un client Windows. L'impostazione sopra utilizza solo LDAP / Kerberos standard.
TheFiddler vince il

Accidenti, volevo scrivere "ldap / kerberos", non so cosa sia successo. Colpa mia. Ma gli strumenti Unix per AD non sono effettivamente richiesti per LDAP / Kerberos?
Martin Nielsen,
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.