Cómo usar Active Directory para autenticar usuarios de Linux

10

¿Cuáles son las mejores prácticas para usar Active Directory para autenticar usuarios en cajas de Linux (Debian)?

La forma en que me gustaría que funcione sería agregar usuarios de AD a un grupo, por ejemplo, administradores de Linux o servidor web de Linux , y en función de la membresía de su grupo, se les otorgaría o no acceso a un servidor en particular. Idealmente, la cuenta raíz sería la única mantenida de la manera estándar.

Mis objetivos al hacer esto son los siguientes:

  • Para permitir cambios de contraseña en un solo lugar
  • Para otorgar automáticamente acceso a ciertas personas a los servidores de Linux utilizando sus credenciales de AD
  • Para consolidar toda nuestra información de usuario en una base de datos

Las cosas que quiero evitar son:

  • cualquier cosa difícil / contra intuitiva para que nuestro administrador de Active Directory pueda administrar
  • bloquear a los usuarios si los servidores de AD no son accesibles por alguna razón (es decir, de alguna manera necesita almacenar en caché las credenciales)
  • cualquier cosa demasiado compleja o no estándar que se romperá la próxima vez que actualice el servidor.
Brent
fuente

Respuestas:

4

El software que está buscando se llama Likewise-open.

Desde su página:

  • Une sistemas que no son de Windows a dominios de Active Directory en un solo paso desde la línea de comandos o desde una GUI
  • Autentica a los usuarios con un solo nombre de usuario y contraseña en Windows y en otros
  • Aplica las mismas políticas de contraseña para usuarios que no son de Windows y usuarios de Windows
  • Admite múltiples bosques con fideicomisos de bosque cruzado unidireccionales y bidireccionales
  • Caché de credenciales en caso de que su controlador de dominio se caiga
  • Proporciona inicio de sesión único para SSH y Putty
  • Motor de autenticación de próxima generación que admite Kerberos, NTLM y SPNEGO
  • No se requieren cambios de esquema en Active Directory

Lo hemos usado en algunas máquinas aquí y parece funcionar bien.

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

Dave Drager
fuente
¿Likewise Open tiene un repositorio de Debian? Esto es importante para nosotros para administrar parches de seguridad.
Brent
1
Tiene un paquete de Ubuntu: Paquete: igualmente abierto Estado: no instalado Versión: 4.1.2982-0ubuntu1 Prioridad: opcional Sección: net Maintainer: Ubuntu Core Developers <[email protected]>
jay_dubya
Por lo que puedo decir, esta es una solución patentada y puede hacer todas las cosas enumeradas anteriormente (sin gui) con LDAP + Kerberos, la mayoría de las cuales deberían autoconfigurarse si está en un dominio de Windows.
TheFiddlerWins
4

No hay ninguna razón para que use ningún software externo en la mayoría de las distribuciones.

Para Debian / Ubuntu puede hacerlo con libnss-ldap y libpam-krb5. Hay algunos trucos para obtener el 100%. Esto supone que tiene "unixHomeDirectory" poblado para usuarios de Linux, sus cajas de Linux están usando NTP común con sus sistemas Windows (requerido por Kerberos) y que está bien con búsquedas de texto sin formato NSS (no contraseña sino información de membresía grupal, etc.) también puede use TLS pero es más complicado de configurar). NO debe tener pam_ldap como contraseña o fuente de autenticación en PAM a menos que esté configurado para usar 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

No debería necesitar editar /etc/krb5.conf asumiendo que sus cajas de Linux están usando servidores DNS que conocen AD (las zonas _msdcs con los registros SRV apropiados son resolubles)

/etc/nsswitch.conf debería tener "archivos ldap" para usuarios, grupos, shadow.

Para Red Hat con 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
TheFiddlerWins
fuente
3

Utilicé Likewise-Open, y descubrí que tiene errores y no es muy confiable. El año pasado me cambié a Centrify, tanto para Linux como para Mac, y no he tenido que meterme mucho con eso. Prefiero la configuración del archivo conf de Centrify a la configuración del archivo de registro de Likewise-Open que requiere manipulación con herramientas externas.

http://www.centrify.com/express/free-active-directory-tools-for-linux-mac.asp

Jeremy Nelson
fuente