quarta-feira, 2 de julho de 2014

Integrando Active Directory com Samba


Quando você trabalha em uma empresa que só tem um servidor samba, é bem tranquilo de gerenciar, mas quando são vários e as pessoas precisam ter acesso ao compartilhamento de arquivos de vários servidores a desordem é uma questão de tempo. Em poucas semanas os usuários terão uma senha para acesso a cada servidor e vai perceber que gasta mais tempo do que gostaria resetando senhas. Abaixo vamos resolver isso com um tutorial bem simples.



Primeiramente vamos estabelecer os dados de cada um dos servidores e domínio. Assim vai ficar mais fácil para que qualquer um possa ajustar às suas próprias necessidades. Informo que nesse teste usei o samba 3.6.3 em um servidor Ubuntu 12.04 LTS e o servidor Active Directory no Windows Server 2008 Enterprise

Domínio: scoobycafe.dog

Nome do servidor AD: domain01.scoobycafe.dog
Ip do servidor AD: 192.168.1.5

Nome do servidor SAMBA: ubuntu.scoobycafe.dog
Ip do servidor SAMBA: 192.168.1.10

E não esqueça que é muito importante que o relógio de ambos servidores esteja sincronizado. Para garantir isso utilize esse comando:

# ntpdate 192.168.1.5

Agora vamos instalar o samba:

# apt-get install samba

Abaixo vou colocar o arquivo smb.conf que utilizei, fiquem à vontade para fazer as devidas alterações:

#======================= Opções Globais================================#

[global]

        workgroup = SCOOBYCAFE
        server string = servidor de arquivos
        security = domain
        realm = SCOOBYCAFE.DOG
        password server = 192.168.1.5
        passdb backend = tdbsam
        load printers = yes
        cups options = raw
        idmap uid = 10000-20000
        idmap gid = 10000-20000
        winbind enum users = yes
        winbind enum groups = yes
        template homedir = /home/%D/%U
        template shell = /bin/bash
        client use spnego = yes
        client ntlmv2 auth = yes
        encrypt passwords = yes
        winbind use default domain = yes
        restrict anonymous = 2
        domain master = no
        local master = no
        preferred master = no
        os level = 0


#========================= Compartilhamentos============================#

# Pastas pessoais dos usuários
[arquivos]

        path = /home/arquivos
        comment = Arquivos restritos a familia
        browseable = yes
        writable = yes
        valid users = alexandre
        force create mode = 0777

[diretorio]
        path = /home/diretorio
        comment = Arquivos restritos aos pais
        browseable = yes
        valid users = vanessa
        writable = yes
        force create mode = 0777

[backup]
        path = /home/backup
        comment = Arquivos restritos aos pais
        browseable = yes
        valid users = vanessa
        writable = yes
        force create mode = 0777


Vamos editar este arquivo, para alterar o servidor dns principal do servidor de arquivos:

# etc/resolvconf/resolv.conf.d/head

Editei o meu da seguinte forma:


nameserver 192.168.1.5
nameserver 8.8.8.8

Saia e salve o arquivo, para que as configurações se tornem permanentes, utilize esse comando:

# resolvconf -u

Para resolver nomes, eu coloquei o ip do servidor dns do AD e o secundário do GOOGLE. Eu recomendo que, caso a sua rede tenha um servidor DNS secundário, coloque o seu ip no lugar do GOOGLE, assim  se um servidor estiver fora, o outro ainda vai permitir a autenticação.

Agora vamos editar o arquivo "/etc/hosts" e adicionar as seguintes linhas:

127.0.0.1       ubuntu.scoobycafe.dog   ubuntu
127.0.0.2       ubuntu.scoobycafe.dog   ubuntu

Salve e saia. Agora vamos fazer a instalação do kerberos:

# aptitude install krb5-kdc krb5-admin-server libkrb5-dev

Edite o arquivo "/etc/krb5.conf" e deixe ele da seguinte forma:

[libdefaults]

        default_realm = SCOOBYCAFE.DOG

[realms]

        SCOOBYCAFE.DOG = {

        kdc = domain01.scoobycafe.dog

        admin_server = domain01.scoobycafe.dog

        default_domain = SCOOBYCAFE.DOG

}

[domain_realm]

        .scoobycafe.dog = SCOOBYCAFE.DOG

        scoobycafe.dog = SCOOBYCAFE.DOG


Agora vamos fazer com que ambos os servidores troquem chaves de segurança com o seguinte comando:

# kinit administrador@SCOOBYCAFE.DOG

Coloque a senha de administrador do seu domínio. Para ter certeza de que tudo ocorreu com sucesso, execute o comando "klist". A saída dele deve ser parecida com o que aparece abaixo:


Ticket cache: FILE:/tmp/krb5cc_0

Default principal: administrador@SCOOBYCAFE.DOG



Valid starting Expires Service principal

20-07-2012 23:23:30 21-07-2012 09:23:31 krbtgt/SCOOBYCAFE.LOCAL@SCOOBYCAFE.DOG


renew until 21-07-2012 23:23:30


Agora vamos fazer as últimas instalações:

# apt-get install winbind smbclient smbfs


Acesse o arquivo “/etc/nsswitch.conf” e deixar as primeiras linhas da seguinte forma:

passwd: compat winbind

group: compat winbind


shadow: compat

Agora finalmente podemos nos logar junto ao servidor:

# net rpc join -U administrador

Coloque a senha de administrador. Se a mensagem a seguir aparecer, tudo está correto até agora:



#Joined domain SCOOBYCAFE.


 Reinicie os serviços:
# service smbd restart
# service winbind restart
# service sshd restart

Após tudo isso executar o comando “wbinfo -u” para exibir os usuários do domínio e “wbinfo -g” para exibir os grupos do domíno AD.



Um detalhe importante deve ser informado. Caso ambos os servidores reiniciarem e o servidor SAMBA iniciar e o servidor AD não, os usuários não vão conseguir se conectar ao compartilhamento até que tenha um servidor de autenticação esteja disponível. Não se preocupem que o usuário root não é afetado com isso.