Cliente Linux no servidor LDAP

Aplicar as configurações necessárias à inclusão de clientes Linux em servidores LDAP. Incluir os pacotes necessários, ajustar adequadamente os arquivos de configuração do cliente LDAP e da política de restrição do PAM (testado no Kurumin 6.0 e 7.0, Debian 3.1 e 4.0, Ubuntu 7.04 e 8.04).

[ Hits: 59.212 ]

Por: lourival araujo da silva em 02/09/2008


Introdução



Pacotes necessários

Adicione os pacotes relacionados abaixo nas versões correspondentes à sua distribuição:
  • libnss-ldap
  • libpam-ldap
  • libldap2
  • ldap-utils
  • nscd
  • ldap-clients (incorporado ao pacote ldap-utils nas versões mais recentes)

Observação: O cliente ldap depende da instalação previa do cliente samba.

apt-cache search ldap (verifica a existência dos pacotes correspondentes no repositório)
apt-get install samba sambafs smbclient (caso não estejam instalados)
apt-get install libnss-ldap libpam-ldap libldap2 ldap-utils nscd

Arquivos criados durante a instalação do cliente LDAP

A instalação dos pacotes criará os arquivos abaixo relacionados, os quais deverão ser editados após a instalação:
  • /etc/libnss-ldap.conf (libnss-ldap)
  • /etc/pam_ldap.conf (libpam-ldap)
  • /etc/ldap/ldap.conf (ldap-utils)

O arquivo /etc/ldap/ldap.conf poderá não ser criado durante a instalação, podemos, para fins práticos, copiar um dos outros dois arquivos renomeando no destino correspondente.

Arquivos a serem editados após a instalação

Os arquivos editados devem adequar o cliente LDAP e as formas de autenticação local e remota.

Arquivos de configuração do cliente LDAP:
  • /etc/nsswitch.conf
  • /etc/libnss-ldap.conf
  • /etc/pam_ldap.conf
  • /etc/ldap/ldap.conf

Arquivos de configuração da autenticação do cliente Linux:
  • /etc/pam.d/common-auth
  • /etc/pam.d/common-account
  • /etc/pam.d/common-session
  • /etc/pam.d/common-password
  • /etc/pam.d/kdm ou /etc/pam.d/gdm-session
  • /etc/pam.d/login (opcional)
  • /etc/pam.d/kscreensaver (opcional)

    Próxima página

Páginas do artigo
   1. Introdução
   2. Alterações realizadas nos arquivos correspondentes ao cliente LDAP
   3. Arquivos dos módulos do PAM do cliente
Outros artigos deste autor

Autenticação via hardware: o módulo pam_usb

Bom escudo não teme espada: o módulo pam_cracklib

Configuração "automágica" de servidor Linux PDC Samba

Cliente "automágico" Linux logando no domínio NT/Samba

Mudança de hábito: autenticando usuários em base de dados MySQL

Leitura recomendada

Código Aberto já não é uma questão de gosto

VPN entre servidores CentOS 6 e Windows 7

Instalando um firewall em ambientes gráficos leves

IDS com Snort + Guardian + Debian Lenny

O que é e como funciona um ataque de força bruta

  
Comentários
[1] Comentário enviado por wairisson em 18/02/2009 - 09:44h

ola Araujo minha situação é a seguinte possuo (ainda em testes) um servidor PDC Samba + LDAP + pam _mount autenticando usuários windows (no samba) e linux (direto no LDAP), gostaria de saber primeiro: É possivel fazer com que tanto as máquinas windows quanto as linux autenticarem só no samba (como em um PDC sem LDAP) uma vez que eu consigo fazer as maquinas windows auteticarem mais as máquinas linux eu não consegui fazer logar no samba de jeito algum ? Segundo : Possuo além do Controlador de domínio diversos outros servidores samba nas seções (ah eu não falei que sou milico também?) então tudo bem,consegui fazer as máquinas linux logarem direto no LDAP porém o não sei como configurar o samba.

[2] Comentário enviado por araujo_silva em 20/02/2009 - 20:22h

noss12

Você o mais difícil, que é autenticar o cliente Linux no LDAP, vamos então analisar a autenticação no samba.

1º O servidor Samba PDC possui uma configuração que é comum aos usuários Windows e Linux:

[globals]

workgroup = organizacao
netbios name = servidor
domain master = yes
logon script = netlogon.bat
logon home = \\%U\.profiles
logon path = \\%L\profiles\%U
logon drive = j:

security = user
encrypt passwords = yes
os level = 100

log file = /var/log/samba/log.%m
max log size = 1000
socket options = TCP_NODELAY SO_SNDBUF=8192 SO_RCVBUF=8192
hosts allow = 127.0.0.0/8 $rede

obey pam restrictions = Yes
smb passwd file = /etc/samba/smbpasswd
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n *password\supdated\ssuccessfully* .
template homedir = /home/%U
template shell = /bin/bash

[netlogon]
comment = Servico de logon
path = /var/samba/netlogon
guest ok = yes
browseable = no

[profiles]
path = /var/samba/profiles
writable = yes
browseable = no
create mask = 0600
directory mask = 0700

[home]
browseable = no
read only = no

2° Devemos destacar os aspectos de que as diretivas de autenticação e domínio devem estar configuradas. Os compartilhamentos "netlogon" e "profiles" deverão estar configurados para tornar possível a autenticação dos usuários no domínio.
As permissões devem ser atribuídas a esses diretórios, e um usuário root do samba deverá ser criado no servidor de domínio:

$ mkdir -p /var/samba/profiles
$ chmod 1777 /var/samba/profiles

$ mkdir -p /var/samba/netlogon
$ chmod 775 /var/samba/netlogon $ smbpasswd -a root

3º As máquinas devem ser adicionadas ao domínio, obrigatoriamente. O que pode ser feito de forma interativa, por meio de um script:
sh maquinas.sh
#!/bin/bash
groupadd maquinas
maquinas= " ibm1 ibm2 intel1 intel2 "
for i in $maquinas;do
useradd -s /bin/false -d /dev/null -g maquinas $i$
passwd -l $i$
smbpasswd -a -m $i
done

4º Terminada a inclusão das contas das máquinas no servidor é preciso configurar as máquinas clientes: configurar o smb.conf (domain), o nsswitch.conf e os módulos da infraestrutura PAM.

[globals]

workgroup = empresa
netbios name = servidor
domain master = yes
logon script = netlogon.bat
logon home = \\%U\.profiles
logon path = \\%L\profiles\%U
logon drive = j:

security = domain
encrypt passwords = yes
os level = 33

log file = /var/log/samba/log.%m
max log size = 1000
socket options = TCP_NODELAY SO_SNDBUF=8192 SO_RCVBUF=8192

obey pam restrictions = Yes
smb passwd file = /etc/samba/smbpasswd
winbind use default domain = yes
winbind enum users = yes
winbind enum groups = yes
idmap uid = 10000-20000
idmap gid = 10000-20000
template homedir = /home/%U
template shell = /bin/bash

[netlogon]
comment = Servico de logon
path = /var/samba/netlogon
guest ok = yes
browseable = no

[profiles]
path = /var/samba/profiles
writable = yes
browseable = no
create mask = 0600
directory mask = 0700

[home]
browseable = no
read only = no

/etc/nsswitch.conf

passwd: compat winbind
group: compat winbind
shadow: compat winbind
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
(Nesse arquivo o fundamental é que existam as associações entre passwd, group e shadow com a ferramenta winbind que irá buscar os clientes no domínio)

/etc/pam.d/login
auth requisite pam_securetty.so
auth requisite pam_nologin.so
auth required pam_unix.so
auth sufficient pam_winbind.so use_first_pass
auth optional pam_mount.so

account required pam_unix.so
account sufficient pam_winbind.so use_first_pass

session optional pam_mount.so
session optional pam_mkhomedir.so skel=/etc/skel umask=0022
session required pam_limits.so
session optional pam_motd.so

password required pam_unix.so
password sufficient pam_winbind.so use_first_pass

/etc/pam.d/kdm ou /etc/pam.d/gnome-session # Conforme se utilize kde ou gnome
auth requisite pam_nologin.so
auth required pam_unix.so
auth sufficient pam_winbind.so use_first_pass
auth optional pam_mount.so

account required pam_unix.so
account sufficient pam_winbind.so use_first_pass

session optional pam_mount.so
session optional pam_mkhomedir.so skel=/etc/skel umask=0022
session required pam_limits.so
session optional pam_motd.so

password required pam_unix.so
password sufficient pam_winbind.so use_first_pass

(A configuração desse arquivo permite o login em terminais dos clientes do domínio e dos clientes locais. Para autenticação no console é necessário alterar kdm ou gdm. Para maiores de talhes consulte o artigo publicado aqui no VOL a esse respeito).

Junte o cliente ao domínio e teste se os usuários do domínio conseguem autenticar através do terminal.

# net rpc testjoin
# net rpc join -S servidor -U administrador
# wbinfo -u
# wbinfo -g
# getent passwd
# getent group

(Não esqueça de verificar se a máquina cliente e o servidor se encontram no mesmo segmento de rede e no mesmo WORKGROUP)

Confira os logs:

# tail /var/log/auth.log
# tail /var/log/samba/log.smbd
# tail /var/log/samba/log.winbind
# tail /var/log/syslog

Abraços e Boa Sorte !!!

[3] Comentário enviado por araujo_silva em 20/02/2009 - 20:27h

Desculpe o cliente do domínio deve possuir a diretiva "domain master = no".

Abraços

[4] Comentário enviado por rafaelhenrique em 19/01/2010 - 21:11h

Parabéns! Ótimo artigo! Me esclareceram algumas dúvidas sobre PAM !
Obrigado!

[5] Comentário enviado por juno em 20/03/2013 - 15:55h

Olá
Araújo e amigos do VOL,

Vocês podem me ajudar com a configuração de um servidor sendo, cliente do meu servidor openldap, até aí sem problemas consegui obter a lista pelo 'getent passwd' o que não estou conseguindo fazer é o acesso ssh nessa máquina cliente com o usuário do ldap.

Existe alguma configuração específica?

Desde já agradeço a ajuda de todos,

att,



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts