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.265 ]

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


Arquivos dos módulos do PAM do cliente



Arquivos de autenticação comum a todas as aplicações

# vim /etc/pam.d/common-auth

auth sufficient pam_unix.so
auth required pam_ldap.so use_first_pass

# vim /etc/pam.d/common-account

account sufficient pam_unix.so
account required pam_ldap.so use_first_pass

# vim /etc/pam.d/common-password

password sufficient pam_unix.so
password required pam_ldap.so try_first_pass

# vim /etc/pam.d/common-session

session sufficient pam_unix.so
session required pam_ldap.so use_first_pass
session optional pam_mkhomedir.so skel=/etc/skel umask=0022
session optional pam_limits.so

A autenticação "sufficient", em um módulo de "common-auth", indica que o usuário deverá ser buscado em outra base caso não seja encontrado na base local. Se houver a correspondência entre usuário e senha na base local (pam_unix.so), este será autenticado e realizará logon no sistema local, caso contrário será consultada a base remota (pam_ldap.so). O parâmetro use_first_pass aproveita a senha e o usuário da consulta local na consulta remota.

O parâmetro "try_first_pass" do módulo de gerenciamento de senhas é utilizado para que seja solicitada a senha anterior quando for haver a troca da senha atual.

Os parâmetros do módulo "pam_mkhomedir.so" são utilizados para criar o home dos usuários no servidor quando estes efetuam o primeiro logon. Estes parâmetros devem possuir a prioridade opcional para evitar que o usuário seja proibido de efetuar logon por já possuir um home criado.

O módulo "pam_limits.so" utiliza a configuração existente em /etc/security/limits.conf para criar restrições aos recursos do sistema por parte de aplicações ou usuários.

Arquivos de autenticação para os gerenciadores gráficos kdm e gdm e para o programa login

# vim /etc/pam.d/kdm

@include common-auth
@include common-account
@include common-session
@include common-password
auth required pam_nologin.so
auth required pam_env.so

# vim /etc/pam.d/kscreesaver

auth sufficient pam_ldap.so
auth required pam_unix.so shadow nullok

# vim /etc/pam.d/gdm-session

@include common-auth
@include common-account
@include common-session
@include common-password
auth required pam_nologin.so
auth required pam_env.so

# vim /etc/pam.d/login (opcional)

@include common-auth
@include common-account
@include common-session
@include common-password
auth required pam_securetty_so
auth required pam_nologin.so
auth required pam_env.so

O módulo pam_nologin.so é utilizado pelo PAM na consulta sobre a existência do arquivo /etc/nologin, se esse arquivo existir, nenhum usuário comum realiza logon na máquina.

O módulo pam_securetty.so é utilizado pelo PAM na consulta sobre a existência de terminal seguro para logon do usuário root, se houver terminal listado no arquivo /etc/securetty, o root poderá realizar logon no sistema, do contrário não poderá haver logon de root na máquina.

A configuração realizada no arquivo /etc/pam.d/kscreesaver, conforme observado por Carlos Morimoto, possibilita que o usuário já logado possa destravar o console na proteção de tela. Caso contrário, seria necessário realizar outro logon na máquina.

Bom trabalho a todos.
Em caso de dúvidas, críticas ou sugestões: araujo@5cta.eb.mil.br
Abraços.

Página anterior    

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

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

webCalendar: a agenda e o PAM

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

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

Leitura recomendada

Instalando e configurando o BackupPC

Implementação de um sistema de arquivos criptografado transparente ao usuário

Melhorando a segurança de servidores GNU/Linux (Parte 1)

ClamAV em desktop

Snort em modo defensivo com Flex Response 2

  
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