Como usar o Active Directory para autenticar usuários linux

10

Quais são as práticas recomendadas para usar o Active Directory para autenticar usuários em caixas Linux (Debian)?

A maneira como eu gostaria que funcionasse seria adicionar usuários do AD a um grupo - digamos, administradores de linux ou servidor da web linux , e com base em sua associação ao grupo, eles / não teriam acesso a um servidor específico. Idealmente, a conta raiz seria a única mantida da maneira padrão.

Meus objetivos ao fazer isso são os seguintes:

  • Para permitir alterações de senha em um só lugar
  • Para conceder automaticamente a certas pessoas acesso aos servidores Linux usando suas credenciais do AD
  • Para consolar todas as informações do usuário em um banco de dados

As coisas que eu quero evitar são:

  • algo difícil / contra-intuitivo para o administrador do Active Directory gerenciar
  • bloquear os usuários se os servidores do AD estiverem inacessíveis por algum motivo (por exemplo, ele precisa armazenar as credenciais de alguma forma)
  • qualquer coisa muito complexa ou fora do padrão que seja interrompida na próxima vez que eu atualizar o servidor.
Brent
fonte

Respostas:

4

O software que você está procurando é chamado Likewise-open.

Na página deles:

  • Une sistemas não Windows a domínios do Active Directory em uma única etapa da linha de comando ou de uma GUI
  • Autentica usuários com um único nome de usuário e senha no Windows e fora do Windows
  • Aplica as mesmas diretivas de senha para usuários não Windows e usuários do Windows
  • Suporta várias florestas com relações de confiança entre florestas unidirecionais e bidirecionais
  • Armazena as credenciais no caso de o seu controlador de domínio cair
  • Fornece logon único para SSH e Putty
  • Mecanismo de autenticação de última geração que suporta Kerberos, NTLM e SPNEGO
  • Nenhuma alteração de esquema no Active Directory é necessária

Nós o usamos em algumas máquinas aqui e parece funcionar bem.

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

Dave Drager
fonte
O Likewise Open possui um repositório debian? Isso é importante para o gerenciamento de patches de segurança.
Brent
11
Possui um pacote Ubuntu: Pacote: likewise-open Estado: não instalado Versão: 4.1.2982-0ubuntu1 Prioridade: opcional Seção: net Mantenedor: Ubuntu Core Developers <[email protected]>
jay_dubya
Pelo que sei, essa é uma solução proprietária e você pode fazer todas as coisas listadas acima (sans gui) com LDAP + Kerberos, a maioria das quais deve ser configurada automaticamente se você estiver em um domínio do Windows.
TheFiddlerWins
4

Não há motivo para você usar qualquer software externo na maioria das distribuições.

Para o Debian / Ubuntu, você pode fazer isso com libnss-ldap e libpam-krb5. Existem alguns truques para obtê-lo 100%. Isso pressupõe que você tenha "unixHomeDirectory" preenchido para usuários do Linux, suas caixas Linux estejam usando o NTP comum com seus sistemas Windows (exigido pelo Kerberos) e que você esteja bem com pesquisas em NSS em texto sem formatação (não senha, mas informações de associação ao grupo etc. - você também pode use TLS, mas é mais complicado de configurar). Você NÃO deve ter o pam_ldap como uma senha ou fonte de autenticação no PAM, a menos que esteja configurado para usar o 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

Não é necessário editar o arquivo /etc/krb5.conf, supondo que suas caixas Linux estejam usando servidores DNS que conhecem o AD (as zonas _msdcs com os registros SRV apropriados são resolvíveis)

O arquivo /etc/nsswitch.conf deve ter "arquivos ldap" para usuários, grupos e sombra.

Para o Red Hat usando 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
fonte
3

Eu usei o Likewise-Open e achei que era buggy e não muito confiável. No ano passado, mudei para o Centrify, tanto para Linux quanto para Mac, e não tive que mexer muito com isso. Prefiro muito a configuração do arquivo conf do Centrify à configuração do arquivo de registro do Likewise-Open, que requer manipulação com ferramentas externas.

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

Jeremy Nelson
fonte