Introdução
Título: Ambientes mistos e agora?
Descrição: Atualmente no meio corporativo nós nos deparamos cada vez mais com ambientes mistos. A proposta desse artigo é facilitar a vida de quem está iniciando no mundo
Linux e depara-se com o seguinte:
Como ingressar uma estação Linux no ambiente que tenha como servidor de autenticação o MS Active Directory?
1 - Introdução
Atualmente no meio corporativo nós nos deparamos cada vez mais com ambientes mistos. Tais como:
- Servidores Linux e clientes Mac/Linux/Windows;
- Servidores Windows e clientes Mac/Linux/Windows (Nesse caso são para os administradores de rede que gostam de viver com muita emoção);
Entre outros.
Sendo assim, gostaria de afirmar que a proposta desse artigo é facilitar a vida de quem está iniciando no mundo Linux e depara-se com o seguinte questionamento: Como ingressar uma estação Linux no ambiente que tenha como servidor de autenticação o MS
Active Directory?
Ambiente:
- Microsoft Windows Server 2008 R2
- Active Directory
- Hostname: server1
- IP: 192.168.1.100
- Linux Ubuntu 10.10
- Hostname: maquina1
- IP: 192.168.1.101
- Samba
- Winbind
- Kerberos
Premissas:
- O AD deve está configurado
- Deve existir conectividade entre o cliente e o servidor e vice-versa (pode ser verificado através do ICMP, exemplo: Na máquina cliente, abra o shell e digite ping server1. Caso não tenha obtido nenhuma perda de pacotes, existe conectividade).
- A máquina cliente deve ter acesso à internet.
Observações:
O artigo não demonstra como instalar e/ou configurar o Active Directory. O servidor AD possui no drive C: um diretório compartilhado no AD denominado "dados" que armazena os arquivos dos usuários.
Referências:
Conectividade entre os hosts
Visando facilitar a conectividade entres os hosts, recomendo editar o arquivo hosts na máquina cliente (Linux) da seguinte maneira.
Digite:
sudo vi /etc/hosts
Insira a seguinte linha
192.168.1.100 server1.xpto.br server1
Para sair e salvar as configurações, digite - esq:x<enter>
Instalação dos aplicativos necessários
Instalação dos aplicativos necessários na máquina cliente. Digite:
sudo apt-get install krb5-user krb5-config libpam-krb5 winbind samba smbclient smbfs samba-common libpam-mount
Configuração dos arquivos
Abaixo segue a um exemplo de configuração dos arquivos. Esses arquivos podem ser customizados de acordo com o ambiente.
Editando o krb5.conf, lê-se: arquivo de configuração do kerberos.
Para editar o arquivo digite:
sudo vi /etc/krb5.conf
Caso não exista, insira as referências ao libdefaults, realms e domain_realm.
Insira as seguintes linhas:
[libdefaults]
default_realm = XPTO.BR
dns_lookup_realm= true
dns_lookup_kdc= true
ticket_lifetime= 24h
forwardable= yes
[realms]
XPTO.BR = {
kdc= server1.xpto.br
admin_server= server1.xpto.br
default_domain= XPTO.BR
}
[domain_realm]
.xpto.br = XPTO.BR
xpto.br = XPTO.BR
Para sair e salvar as configurações, digite - esq:x<enter>
Editando o nsswitch.conf, lê-se: arquivo que determina a ordem das buscas realizadas quando uma certa informação é requisitada.
Para editar o arquivo digite:
sudo vi /etc/nsswitch.conf
Caso não exista, insira as referências conforme a descrição abaixo.
passwd: compat winbind
group: compat winbind
Para sair e salvar as configurações, digite - esq:x<enter>
Editando o smb.conf, lê-se: arquivo de configuração do Samba.
Para editar o arquivo digite:
sudo vi /etc/samba/smb.conf
Caso não exista, insira as referências conforme a descrição abaixo.
#Change this to the workgroup/NT-domain name your Samba server will part
workgroup = xpto
# Cap the size of the individual log files (in KiB).
max log size = 1000
# "security = user" is always a good idea. This will require a Unix account
# in this server for every user accessing the server. See
# /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/ServerType.html
# in the samba-doc package for details.
security = ads
password server=server1.xpto.br
realm= XPTO.BR
# Some defaults for winbind (make sure you're not using the ranges
# for something else.)
idmap uid = 10000-20000
idmap gid = 10000-20000
template shell = /bin/bash
template homedir = /home/%U
# The following was the default behaviour in sarge,
# but samba upstream reverted the default because it might induce
# performance issues in large organizations.
# See Debian bug #368251 for some of the consequences of *not*
# having this setting and smb.conf(5) for details.
winbind use default domain = true
winbind enum groups = yes
winbind enum users = yes
winbind separator = +
winbind refresh tickets = yes
winbind nested groups = yes
Para sair e salvar as configurações, digite - esq:x<enter>
Testando o Kerberos
sintaxe: kinit contadeadm@DOMINIO
Exemplo:
kinit Administrator@XPTO.BR
Password for Administrator@XPTO.BR: (Digite a senha do administrador do AD)
Caso não retorne nenhuma mensagem de erro, a autenticação está funcionando.
Para visualizar as entradas no cache de credenciais locais e tabela de chaves, digite:
klist
Deve retornar algo parecido com:
Default principal: administrator@XPTO.BR
Valid starting Expires Service principal
04/18/11 18:52:12 04/19/11 04:52:17 krbtgt/XPTO.BR@XPTO.BR
renew until 04/19/11 18:52:12
Para adicionar a máquina no domínio Windows, digite:
sudo net.samba3 ads join -U Administrator
$ sudo: unable to resolve host maquina1
Enter Administrator's password: (Digite a senha do administrador do AD)
Aparecerá algo parecido como:
Using short domain name -- XPTO
Joined 'MAQUINA1' to realm 'xpto.br'
Após aparecer a mensagem, acesse o servidor AD e verifique se a máquina foi incluída com sucesso.
Acessando a máquina cliente com qualquer conta do Domínio
Para que seja possível acessar a máquina cliente (Linux) com qualquer conta do domínio você deve acessar novamente a máquina cliente e editar o arquivo /etc/security/pam_mount.conf.xml
Digite:
sudo vi /etc/security/pam_mount.conf.xml
Caso não exista, insira as seguintes linhas.
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
<!--
See pam_mount.conf(5) for a description.
-->
<pam_mount>
<volume user="*" fstype="cifs" server="192.168.1.100" path="dados/%(USER)" mountpoint="/home/%(USER)/Documentos" options="iocharset=utf8,file_mode=0700,dir_mode=0700" />
<!-- debug should come before everything else,
since this file is still processed in a single pass
from top-to-bottom -->
<debug enable="0" />
<!-- Volume definitions -->
<!-- pam_mount parameters: General tunables -->
<!--
<luserconf name=".pam_mount.conf.xml" />
-->
<!-- Note that commenting out mntoptions will give you the defaults.
You will need to explicitly initialize it with the empty string
to reset the defaults to nothing. -->
<mntoptions allow="nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,allow_other" />
<!--
<mntoptions deny="suid,dev" />
<mntoptions allow="*" />
<mntoptions deny="*" />
-->
<mntoptions require="nosuid,nodev" />
<path>/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin</path>
<logout wait="0" hup="0" term="0" kill="0" />
Para sair e salvar as configurações, digite - esq:x<enter>
Pronto! Agora a máquina cliente está habilitada para aceitar autenticação de qualquer conta do domínio.
Espero ter contribuído para comunidade VOL.