Instalando e promovendo o Samba 4 como Domain Controller no CentOS 6.4 Minimal

Publicado por Fagner Silva do Nascimento em 09/08/2013

[ Hits: 35.518 ]

 


Instalando e promovendo o Samba 4 como Domain Controller no CentOS 6.4 Minimal



Nesta dica, compartilho os detalhes da implementação do Samba 4 como controlador de domínio primário em sua rede local.

Desde já, agradeço ao colega Bruno Rigamont que compartilhou essa informação comigo, no entanto, fiz algumas adaptações para usar no CentOS.

Aceito críticas e sugestões.

Configurações iniciais

Ambiente:
  • S.O.: CentOS x64 - Minimal
  • Servidores:
    • DC01 - Master
    • Domínio (realm): contoso.local

Desativando IPtables e o SELinux:

IPtables:

# chkconfig iptables off
# chkconfig ip6tables off


SELinux:

# vi /etc/selinux/config

SELINUX=disabled

Adicionando repositórios e atualizando sistema:

32 bits:

# rpm -Uvh http://fedora.uib.no/epel/6/i386/epel-release-6-8.noarch.rpm
# yum clean all && yum -y update


64 bits:

# rpm -Uvh http://fedora.uib.no/epel/6/x86_64/epel-release-6-8.noarch.rpm
# yum clean all && yum -y update


Instalando pacotes necessários:

# yum install gcc libacl-devel libblkid-devel gnutls-devel readline-devel python-devel gdb pkgconfig krb5-workstation zlib-devel setroubleshoot-server setroubleshoot-plugins policycoreutils-python libsemanage-python setools-libs-python setools-libs popt-devel libpcap-devel sqlite-devel libidn-devel libxml2-devel libacl-devel libsepol-devel libattr-devel keyutils-libs-devel cyrus-sasl-devel cups-devel perl wget ntpdate system-config-network-tui bind-utils -y

Ajustando a hora e data do servidor:

# /usr/sbin/ntpdate ntp.cais.rnp.br

Agendando o ntpdate:

# crontab -e

Adicione:

# Ajuste de Hora do Servidor
00 * * * * /usr/sbin/ntpdate ntp.cais.rnp.br

Nome e IP do servidor:

Obs.: se o hostname já estiver correto, pule esta etapa.

# system-config-network

Reinicie o servidor:

# reboot

Baixando e instalando o Samba 4

Download do código fonte do Samba 4:
Instalando a versão 4.0.6: # cd /usr/src
# wget
https://ftp.samba.org/pub/samba/stable/samba-4.0.6.tar.gz && tar -xzvf samba-4.0.6.tar.gz && cd samba-4.0.6 && ./configure --prefix=/usr/local/samba && make && make install

Promovendo o Samba 4

Promover domínio:

# cd /usr/local/samba
# bin/samba-tool domain provision


realm=contoso.local
domain=contoso
server-role=dc
DNS= Samba Internal
adminpass='p@ssw0rd'

Obs.: a senha tem que ser forte, contendo letras, números e caracteres especiais, caso contrário, irá dar erro no final.

Você terá que adicionar a variável PATH para Samba 4 em sua máquina:

# export PATH=$PATH:/usr/local/samba/sbin:/usr/local/samba/bin

Script de inicialização do Samba 4

Configurar script para inicializar e parar o Samba:

# vi /etc/init.d/samba

Adicionar o conteúdo abaixo:

#! /bin/bash
#
# samba4       Bring up/down samba4 service
#
# chkconfig: - 90 10
# description: Activates/Deactivates all samba4 interfaces configured to \
#              start at boot time.
#
### BEGIN INIT INFO
# Provides:
# Should-Start:
# Short-Description: Bring up/down samba4
# Description: Bring up/down samba4
### END INIT INFO
# Source function library.

. /etc/init.d/functions

if [ -f /etc/sysconfig/samba4 ]; then
    . /etc/sysconfig/samba4
fi

CWD=$(pwd)
prog="samba4"

start() {
   # Attach irda device
   echo -n $"Starting $prog: "
    /usr/local/samba/sbin/samba
    sleep 2
    if ps ax | grep -v "grep" | grep -q /samba/sbin/samba ; then success $"samba4 startup"; else failure $"samba4 startup"; fi
   echo
}
stop() {
   # Stop service.
   echo -n $"Shutting down $prog: "
    killall samba
    sleep 2
    if ps ax | grep -v "grep" | grep -q /samba/sbin/samba ; then failure $"samba4 shutdown"; else success $"samba4 shutdown"; fi
   echo
}
status() {
    /usr/local/samba/sbin/samba --show-build
}

# See how we were called.
case "$1" in
start)
    start
  ;;
stop)
    stop
  ;;
status)
    status irattach
    ;;
restart|reload)
    stop
    start
    ;;
*)
   echo $"Usage: $0 {start|stop|restart|status}"
   exit 1
esac

exit 0

Dê permissão de execução ao script:

# chmod +x /etc/init.d/samba

Adicionar e configurar o script para iniciar com o sistema:

# chkconfig --add samba
# chkconfig samba on


Reinicie o servidor:

# reboot

Configurando Kerberos e DNS

Configurar Kerberos:

# cd /usr/local/samba/private
# cp krb5.conf /etc/krb5.conf


Configurar DNS:

# vi /etc/sysconfig/network-scripts/ifcfg-Lan

DNS1=IP_DO_SAMBA4

Reinicie o servidor:

# service network restart

Testando o domínio criado

Testes:

# /usr/local/samba/sbin/samba -V
Version 4.0.6

Outro pequeno teste:

# bin/smbclient -L localhost -U%

Domain=[CONTOSO] OS=[Unix] Server[Samba 4.0.5]
        Sharename        Type        Comment
        ---------        ----        -------
        netlogon         Disk
        sysvol           Disk
        IPC$             IPC         IPC Service (Samba 4.0.5)
Domain=[CONTOSO] OS=[Unix] Server=[Samba 4.0.5]
        Server               Comment
        ---------            -------
        Workgroup            Master
        ---------            -------

Dicas

Fonte:
Desativar a verificação de complexidade de senha (por padrão, a senha de qualquer usuário deve ter pelo menos três dos quatro itens: maiúsculas, minúsculas, números e símbolos):

# /usr/local/samba/bin/samba-tool domain passwordsettings set --complexity=off

Mudar o tamanho mínimo da senha (definindo como 4):

# /usr/local/samba/bin/samba-tool domain passwordsettings set --min-pwd-length=4

Mudar o prazo mínimo em que o usuário pode mudar a senha (usuário só vai poder mudar a senha após 4 dias da última mudança):

# /usr/local/samba/bin/samba-tool domain passwordsettings set --min-pwd-age=4

Mudar o tempo de vida máximo da senha do usuário (usuário terá que mudar a senha após 30 dias da última mudança):

# /usr/local/samba/bin/samba-tool domain passwordsettings set --max-pwd-age=30

Mudar o histórico de senhas que impede que o usuário utilize uma senha repetida (usuário não vai poder repetir nenhuma das últimas 5 senhas):

# /usr/local/samba/bin/samba-tool domain passwordsettings set --history-length=5


Aceito críticas e sugestões. E com certeza, melhorias serão muito bem-vindas!

Abraço a todos!!!

Outras dicas deste autor

Abrindo portas do Firewall (IPtables) para Samba 4 (Active Directory)

Migrando contatos e e-mails do Google Apps para servidor Zimbra

Sarg no CentOS 6 - Configuração com suporte a gráficos

Atualizando o Samba 4 (Active Directory) para versão recente

BIND 9 DNS no Debian Squeeze/Wheezy e Ubuntu 12/13 (Compativel com Active Directory no Windows Server)

Leitura recomendada

Fórum Lazarus

DDOS utilizando hubs p2p

Modificando arquivos do Windows com live-CD do GNU/Linux

Facilitando a compilação com o g++

Tela Azul no Login do Ubuntu 16.04 LTS

  

Comentários
[1] Comentário enviado por sergiocpmaricato em 19/10/2013 - 14:25h

boa tarde eu cheguei nessa parte
e fiz essa alteração no arquivo, mas como salvo o conteudo que editei
SELINUX=disabled

eu digito isso.. fecho o terminal e qdo volto a modificação não foi feita
desde ja agradeço obrigado

[2] Comentário enviado por rengaf1 em 19/10/2013 - 15:51h


[1] Comentário enviado por sergiocpmaricato em 19/10/2013 - 14:25h:

boa tarde eu cheguei nessa parte
e fiz essa alteração no arquivo, mas como salvo o conteudo que editei
SELINUX=disabled

eu digito isso.. fecho o terminal e qdo volto a modificação não foi feita
desde ja agradeço obrigado


apos fazer a alteração no arquivo faz o seguinte:



tecla=> ESC : wq!



[3] Comentário enviado por removido em 25/10/2013 - 16:06h

Olá

Achei interessante o sua iniciativa, mas parei quando cheguei à parte em que você baixou o Samba do site oficial.

A partir do CentOS 6.4 se não me engano já possui o pacote "samba4" nos seus repositórios. Por questão de boas práticas é mais recomendável que se use o rpm do repositório, até porque se compilarmos o pacote vai ficar sempre desatualizado, sem possíveis correções e provavelmente vulnerável - sem contar que o RPM já trata de todos os ajustes necessários.

Na verdade eu evito ao máximo ter que compilar os pacotes no servidor por estes motivos, só o faço quando realmente não existem pacotes pré-compilados nos repositórios ou quando não distribuído pelos desenvolvedores.

Abraço!

[4] Comentário enviado por rengaf1 em 07/11/2013 - 16:56h


[3] Comentário enviado por eduardohki em 25/10/2013 - 16:06h:

Olá

Achei interessante o sua iniciativa, mas parei quando cheguei à parte em que você baixou o Samba do site oficial.

A partir do CentOS 6.4 se não me engano já possui o pacote "samba4" nos seus repositórios. Por questão de boas práticas é mais recomendável que se use o rpm do repositório, até porque se compilarmos o pacote vai ficar sempre desatualizado, sem possíveis correções e provavelmente vulnerável - sem contar que o RPM já trata de todos os ajustes necessários.

Na verdade eu evito ao máximo ter que compilar os pacotes no servidor por estes motivos, só o faço quando realmente não existem pacotes pré-compilados nos repositórios ou quando não distribuído pelos desenvolvedores.

Abraço!



blz .. ate entendo teu comentario, porem acrescento que o samba 4 que tem no repositorio do centos com yum install ... ele nao instala o servidor Active directoy, instala apenas o cliente samba 4, nenhuma distribuicao possui o samba 4 nos repositorios com o pacote completo para servidor...

resumindo: por enquanto a solução so existe atraveis da compilação.

agora quanto a ficar desatualizado, saindo nova versao e simples, baixa a nova versao e recompila ele e pronto teu samba 4 vai ta atualizado.


[5] Comentário enviado por davilatr em 08/11/2013 - 18:12h

Segui a risca o tutorial mas no dir /usr/local/samba/private não existe o arquivo krb5.conf para copiar em /etc/

[6] Comentário enviado por rengaf1 em 09/11/2013 - 10:17h


[5] Comentário enviado por davilatr em 08/11/2013 - 18:12h:

Segui a risca o tutorial mas no dir /usr/local/samba/private não existe o arquivo krb5.conf para copiar em /etc/


bom dia amigo...

vc instalou os pacotes necessários? yum install gcc libacl-devel libblkid-devel gnutls-devel readline-devel python-devel gdb pkgconfig krb5-workstation zlib-devel setroubleshoot-server setroubleshoot-plugins policycoreutils-python libsemanage-python setools-libs-python setools-libs popt-devel libpcap-devel sqlite-devel libidn-devel libxml2-devel libacl-devel libsepol-devel libattr-devel keyutils-libs-devel cyrus-sasl-devel cups-devel perl wget ntpdate system-config-network-tui bind-utils -y

se não tem o krb5 e porque não instalou ele " krb5-workstation "

verifica direitinho e retorna ai pra ver o que acontece...

[7] Comentário enviado por ssantoss em 11/02/2014 - 15:29h

Prezado Fagner boa tarde,
Alguns pontos que necessito de ajuda se possível após seguir seu tutorial.
na hora do teste com: bin/smbclient -L localhost -U% dá o seguinte mensagem: bin/smbclient: arquivo ou diretório não encontrado. isso implica em qual problema? o outro teste de ficou igual ao seu.

Depois de desabilitar o iptable e o selinux e seguir com o tutorial, não é para habilitar novamente esses dois itens? tem alguma implicação em segurança?
Ao utilizar o crontab -e o que deve ser feito?
Depois de executar os passos indicados, como faço para utilizar o DC através de máquinas windows?

Pelas perguntas, dá para perceber que sou iniciante nesses assuntos...
Obrigado.

[8] Comentário enviado por rengaf1 em 12/02/2014 - 14:20h


[7] Comentário enviado por ssantoss em 11/02/2014 - 15:29h:

Prezado Fagner boa tarde,
Alguns pontos que necessito de ajuda se possível após seguir seu tutorial.
na hora do teste com: bin/smbclient -L localhost -U% dá o seguinte mensagem: bin/smbclient: arquivo ou diretório não encontrado. isso implica em qual problema? o outro teste de ficou igual ao seu.

R = Você terá que adicionar a variável PATH para Samba 4 em sua máquina:

# export PATH=$PATH:/usr/local/samba/sbin:/usr/local/samba/bin

vc fez essa etapa?

Depois de desabilitar o iptable e o selinux e seguir com o tutorial, não é para habilitar novamente esses dois itens? tem alguma implicação em segurança?

R = cara até poderia habilitar novamente mais teria que liberar as varias portas usadas pelo samba 4 no iptables... e teria que acertar tambem alguns ajustes no SElinux.

Ao utilizar o crontab -e o que deve ser feito?

R = da um "ESCS :wq!" sem as " pra salvar o arquivo.

Depois de executar os passos indicados, como faço para utilizar o DC através de máquinas windows?

R = vai ter instalar o adminpack num pc com o win 7 ou xp.

Pelas perguntas, dá para perceber que sou iniciante nesses assuntos...
Obrigado.



qualquer coisa é só gritar..rsrs

[9] Comentário enviado por rengaf1 em 29/03/2014 - 11:54h


[4] Comentário enviado por rengaf1 em 07/11/2013 - 16:56h:


[3] Comentário enviado por eduardohki em 25/10/2013 - 16:06h:

Olá

Achei interessante o sua iniciativa, mas parei quando cheguei à parte em que você baixou o Samba do site oficial.

A partir do CentOS 6.4 se não me engano já possui o pacote "samba4" nos seus repositórios. Por questão de boas práticas é mais recomendável que se use o rpm do repositório, até porque se compilarmos o pacote vai ficar sempre desatualizado, sem possíveis correções e provavelmente vulnerável - sem contar que o RPM já trata de todos os ajustes necessários.

Na verdade eu evito ao máximo ter que compilar os pacotes no servidor por estes motivos, só o faço quando realmente não existem pacotes pré-compilados nos repositórios ou quando não distribuído pelos desenvolvedores.

Abraço!


blz .. ate entendo teu comentario, porem acrescento que o samba 4 que tem no repositorio do centos com yum install ... ele nao instala o servidor Active directoy, instala apenas o cliente samba 4, nenhuma distribuicao possui o samba 4 nos repositorios com o pacote completo para servidor...

resumindo: por enquanto a solução so existe atraveis da compilação.

agora quanto a ficar desatualizado, saindo nova versao e simples, baixa a nova versao e recompila ele e pronto teu samba 4 vai ta atualizado.

e se o problema seria quanto a atualizar pra versão mais atual do samba 4, aqui está uma solução simples e funcional!

http://www.vivaolinux.com.br/dica/Atualizando-o-Samba-4-Active-Directory-para-versao-recente/

[10] Comentário enviado por fredericolara em 02/07/2014 - 14:37h

Pessoal complementado a dica do Fagner, apos a instalação do Samba 4, basta baixar a ferramenta remota de administração da Microsoft.

Download ferramenta para Win7: http://www.microsoft.com/en-us/download/details.aspx?id=7887

Download ferramenta para Win8: http://www.microsoft.com/en-us/download/details.aspx?id=28972

Com isso e possível criar os Usuários, Grupos, OU, GPO, como se estivesse no AD Microsoft.

[11] Comentário enviado por lDavidson em 20/05/2015 - 12:11h

Boa tarde Fagner,

Modifiquei alguns itens no seu tutorial e fiz outra dica para instalação da versão mais recente do Samba 4.2.1 (Atualmente) no Centos 6.6.
Tive que modificar alguns itens como adição do pacote openldap-devel, etc.

Quando autorizado posto o link aqui.

Vlws pela Dica, funcionou 100% aqui no ambiente virtual que fiz. Parabéns!!

Como o amigo acima Frederico Lara disse, basta instalar depois o RSAT em um micro com Windows 7 ou 8 e tudo fica fácil para administrar o servidor, claro que lembrando que este micro com Windows 7 ou 8 já deve está ingressado no domínio criado no Samba4.


[12] Comentário enviado por rengaf1 em 20/05/2015 - 12:17h


[11] Comentário enviado por lDavidson em 20/05/2015 - 12:11h

Boa tarde Fagner,

Modifiquei alguns itens no seu tutorial e fiz outra dica para instalação da versão mais recente do Samba 4.2.1 (Atualmente) no Centos 6.6.
Tive que modificar alguns itens como adição do pacote openldap-devel, etc.

Quando autorizado posto o link aqui.

Vlws pela Dica, funcionou 100% aqui no ambiente virtual que fiz. Parabéns!!

Como o amigo acima Frederico Lara disse, basta instalar depois o RSAT em um micro com Windows 7 ou 8 e tudo fica fácil para administrar o servidor, claro que lembrando que este micro com Windows 7 ou 8 já deve está ingressado no domínio criado no Samba4.



fala.. idavidson.. fique a vontade quanto as modificações e ajustes.. toda contribuição sempre será bem vida.!
tudo para o bem do mundo livre.. forte abraço!

[13] Comentário enviado por vanderson_silva em 14/07/2015 - 09:29h


Parabéns pelo tutorial , foi de grande ajuda. Tinha feito vários outros testes em outras distribuições más pra mim o CentOS foi a melhor. Obrigado !

[14] Comentário enviado por alexpfc em 20/04/2017 - 18:04h

Cara vc é bom, funcionou perfeitamente! adicionei o windows 7 como o controlador remoto do DC



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts