Inicial > Diversos > Instalação do Samba4.1 no Debian Wheezy

Instalação do Samba4.1 no Debian Wheezy

No inicio do ano publiquei um post sobre a instalação do Samba4 (Instalação do Samba4 – Active Directory compatible Domain Controler). Depois de um tempo de uso, de apanhar bastante e de várias coisas darem errado, a gente acaba vendo tudo diferente, aprende a simplificar e otimizar os trabalhos. Como a solução final foi realmente mais simples e limpa que a anterior, resolvi fazer uma atualização do post anterior. Algumas coisas permanecerão as mesmas, outras deixarão de existir (como compilação do bind, por exemplo) e algumas serão adicionadas, devido a atualização das versões utilizadas e tombos sofridos durante o caminho.

Enfim, falando do que interessa, desta vez nosso ambiente é o seguinte:

  • Debian Wheezy 7.2
  • Samba4.1
  • Bind9

Antes de começar, ajuste os arquivos /etc/hosts e /etc/hostname do servidor com o IP, FQDN e nome correto do servidor para que não tenhamos problemas com o Kerberos.

 

Bind

Sem necessidade de compilação e utilizando versões estáveis disponíveis:

# apt-get install bind9

 
Vamos informar ao Bind que o Samba poderá alterar as entradas de DNS do domínio. No arquivo /etc/bind/named.conf, inserir a linha:

 include "/var/lib/samba/private/named.conf";

 
Agora, vamos informar ao Bind para onde ele deve encaminhar as solicitações que ele não consegue resolver (Forwarders)  e quais redes são autorizadas a utilizar este servidor para resolução de nomes (acl e allow-query):

# vim /etc/bind/named.conf.options

acl redesautorizadas {
192.168.0.0/24;
192.168.2.0/24;
192.168.3.0/29;
};

options {
directory "/var/cache/bind";
//dnssec-validation auto;
tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab";
allow-query { redesautorizadas; };

forwarders{
8.8.8.8;
8.8.4.4;
};

auth-nxdomain no;    # conform to RFC1035
//      listen-on-v6 { any; };
};

 

Preparação do SO

Dependências necessárias para o serviço:

 # apt-get install build-essential libacl1-dev libattr1-dev libblkid-dev \
libgnutls-dev libreadline-dev python-dev python-dnspython gdb pkg-config \
libpopt-dev libldap2-dev  dnsutils libbsd-dev attr krb5-user docbook-xsl \
libcups2-dev acl

 
Serão solicitados o domínio e servidor administrativo, no caso:

Kerberos Realm: TESTE.COM
KDC: dc.teste.com

 

Configurar o sistema de arquivos para suporte a acl e attr. No arquivo /etc/fstab, localizar a linha que define o ponto de montagem do diretório raiz e deixá-la como no exemplo:

 UUID=uuid_disco  /   ext3    user_xattr,acl,barrier=1,errors=remount-ro  0  1

 

Depois de um tempo com o Samba em funcionamento e o servidor de arquivos ativo, observamos que a partição /run/lock enchia rapidamente e o serviço simplesmente parava. Resultado, muitas reclamações e muitos probemas. Depois de muita pesquisa e alguns testes, descobrimos que seria necessário aumentar o tamanho dessa partição no /etc/fstab e a dor de cabeça cessaria… 
Originalmente essa linha não aparece no arquivo, então é necessário adicioná-la:

tmpfs /run/lock tmpfs rw,noexec,nosuid,nodev,size=52428800 0 0

 

Mais explicações sobre o problema e a solução: 

 

Download configuração e instalação do Samba

# wget -c https://ftp.samba.org/pub/samba/stable/samba-4.1.0.tar.gz
# gunzip samba-4.1.0.tar.gz
# tar -xvf samba-4.1.0.tar
#  cd samba-4.1.0/
# ./configure --enable-debug --enable-selftest --enable-fhs \
--prefix=/usr --sysconfdir=/etc --localstatedir=/var
# make && make install
# mkdir /var/run/samba

Nota: Na configuração, os parâmetros prefix, sysconfdir e localstatedir não são obrigatórios, fiz desta forma apenas para que os arquivos de configuração e executáveis do Samba fossem copiados para os locaias padrão da distribuição.
 

Configuração do NSS (Network Service Switch)

# vim /etc/nsswitch.conf

passwd:         compat winbind
group:          compat winbind
shadow:         compat winbind

 

Ajustes Kerberos

#vim /etc/krb5.conf
[libdefaults]
default_realm = TESTE.COM
dns_lookup_realm = true
dns_lookup_kdc = true

[realms]
TESTE.COM = {
kdc = kdc.teste.com
admin_server = kdc.teste.com
}

[domain_realm]
.teste.com = TESTE.COM
teste.com = TESTE.COM

Nota: Nas configurações do kerberos deve-se respeitar upper case e lower case na configuração dos parâmetros. 

 

Como o pacote do samba foi compilado o script de inicialização do serviço não foi criado, vamos criá-lo e configurar a inicialização automática no sistema:

# vim /etc/init.d/samba4

#! /bin/bash
### BEGIN INIT INFO
# Provides:          samba4
# Required-Start:    $network $local_fs $remote_fs
# Required-Stop:     $network $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: start Samba daemons
### END INIT INFO
#
# Start/stops the Samba daemon (samba).
# Adapted from the Samba 3 packages.
#
PIDDIR=/var/run/samba
SAMBAPID=$PIDDIR/samba.pid
 # clear conflicting settings from the environment
unset TMPDIR
# See if the daemon and the config file are there
test -x /usr/sbin/samba -a -r /etc/samba/smb.conf || exit 0
. /lib/lsb/init-functions
case "$1" in

start)
log_daemon_msg "Starting Samba 4 daemon" "samba"
# Make sure we have our PIDDIR, even if it's on a tmpfs
install -o root -g root -m 755 -d $PIDDIR
if ! start-stop-daemon --start --quiet --oknodo --exec /usr/sbin/samba -- -D; 
then
log_end_msg 1
exit 1
fi
log_end_msg 0
;;

stop)
log_daemon_msg "Stopping Samba 4 daemon" "samba"
start-stop-daemon --stop --quiet --name samba $SAMBAPID
# Wait a little and remove stale PID file
sleep 1
if [ -f $SAMBAPID ] && ! ps h `cat $SAMBAPID` > /dev/null
then
# Stale PID file (samba was succesfully stopped),
# remove it (should be removed by samba itself IMHO.)
rm -f $SAMBAPID
fi
log_end_msg 0
;;

restart|force-reload)
$0 stop
sleep 1
$0 start
;;
*)

echo "Usage: /etc/init.d/samba {start|stop|restart|force-reload}"
exit 1
;;
esac
exit 0

 
# chmod +x /etc/init.d/samba4
# update-rc.d samba4 defaults

 

Samba4 instalado e sistema ajustado. Segue alguns comandos que podem ser úteis na criação e configuração do domínio:

 

– Provision Domain
# samba-tool domain provision

– Join Domain
# samba-tool domain join teste.com DC -Uuser.adm –realm=teste.com –dns-backend=BIND9_DLZ –site=SITE –server=DC

– Retirar membro de domínio
# samba-tool domain demote –realm=TESTE.COM -Uuser.adm –password=xxxxxx –server=DC

– Teste DNS
# host -t SRV _ldap._tcp.teste.com.
# host -t A dc.teste.com

 Update Samba
* Compilar e instalar o novo pacote com as instruções anteriores.
* Alterar a permissão do arquivo key.pm
# chmod 0600 /var/lib/samba/private/tls/key.pem

 

Após os ajustes reiniciar os serviços do samba e bind.

Categorias:Diversos
  1. Fernando
    12/01/2015 às 15:01

    Diferente da versao anterior desse post vi que voce nao compilou mais o bind. Na compilacao do bind antes usava bdb como backend, em vez do tradicional diretorio cheio de arquivos do bind 😀
    No post atual ele faz o mesmo ou salva em arquivos texto?

  2. Fernando
    12/01/2015 às 15:19

    elaborando um pouquinho na razao da minha primeira pergunta. meu objetivo final é replicar esse dns fora da maquina do samba.
    como o AD é só ‘um pouquinho’ importante, e é meu dns interno, gostaria de ter uma replica do dns pra nao ter stresses desnecessarios caso precise reiniciar a maquina ou fazer alguma manutencao programada.

    • 12/01/2015 às 16:48

      Olá Fernando. Neste último post utilizei o Bind disponível nos repositórios do Debian, para evitar muitas compilações e ajustes mesmo. Não entrei muito nestas questões, mas creio que segue o padrão do Bind de armazenamento em arquivos.
      Sobre a replicação, você está configurando um DC apenas?

      • Fernando
        13/01/2015 às 9:00

        sim, estou com um DC somente. logo que saiu o samba 4 tentei fazer com DC + replica mas fui meio infeliz, porem como a infra é toda virtualizada e tem backup até dizer chega, a replicacao do DNS ja me salva a pátria.
        creio que agora é ver como fazer pra migrar do dns atual pro mais simples pra poder fazer essa replica sem stresses.

  3. 13/01/2015 às 9:11

    Entendi… eu fiz a replicação seguindo as mesmas configurações sem problemas. Pelo vai ter que investir um tempo pra descobrir como alterar a maneira como o samba enxerga o dns…. Acha que não vale tentar a replicação do AD de novo? Aí teria réplica de todos os serviços nobres sem parada em caso de perda de um deles…

    • Fernando
      13/01/2015 às 9:41

      Valer a pena vale. mas e a paciencia? rs.
      Triste do AD no linux é que ele herda a complicacao do AD original 🙂
      Estava fucando ontem ainda na questao do dns e alem do bind ele enfia mais um monte de coisa no ldap.
      Mas enfim, vou separar um tempo nessa semana ou na proxima e subir uma nova VM e colocar uma replica do samba pra rodar e ver como vai, numa dessas vira a replica pra master e atualiza a outra e, se deus quiser, todos os problemas resolvidos 🙂

      • 13/01/2015 às 10:29

        A réplica já deixa dormir melhor, a chance de parada diminui bem… E nem é tão complicado assim fazer, muitos detalhes, mas nenhum bicho de 7 cabeças….só o kerberos mesmo rs.
        Se precisar de um help tamo aí…

      • Fernando
        13/01/2015 às 10:49

        o kerberos eu até acho susse, meu medo é mais aquelas coisas bem windows, tipo as GPOs.
        mas vamos ver 😀

  4. Gilmar Cabral
    16/04/2015 às 22:20

    Boa noite.
    Talvez alguém passou por esta situação.
    Estou com samba4 e bind9.9 em debian 7.2, pacotes instalados do repositório backports.
    Ambiente esta funcionando bem, porém me deparei com o seguinte problema.
    Este ambiente esta em LAB para eu simular ambiente real.
    Então ingressei a maquina no samba4 e funcionou de boa.
    O problema é quando desengresso a maquina e a mesma remove os registros no bind tanto na zona master como na reverse mas a mesma continua na base do samba4. Em seguida
    eu removo a maquina no ou Computers do samba4
    Quando eu removo a maquina do samba4 e tento ingressar a maquina novamente ela registra no samba4 mas não registra a maquina do dns, da erros conforme abaixo. m

    samba_dlz: starting transaction on zone agrovale.intra
    Apr 16 18:56:44 lobeira named[18097]: client 192.168.1.86#1079: update ‘agrovale.intra/IN’ denied
    Apr 16 18:56:44 lobeira named[18097]: samba_dlz: cancelling transaction on zone agrovale.intra
    Apr 16 18:56:45 lobeira named[18097]: samba_dlz: starting transaction on zone agrovale.intra
    Apr 16 18:56:45 lobeira named[18097]: samba_dlz: disallowing update of signer=not-gavr07\$\@AGROVALE.INTRA name=not-gavr07.agrovale.intra type=A error=insufficient access rights
    Apr 16 18:56:45 lobeira named[18097]: client 192.168.1.86#1082/key not-gavr07\$\@AGROVALE.INTRA: updating zone ‘agrovale.intra/NONE’: update failed: rejected by secure update (REFUSED)

    Pelo que andei vendo o problema parece esta relacionado quando cria a zona reversa.
    Caso alguém possui alguma ideia do que pode ser.
    Desde já agradeço

    • 17/04/2015 às 9:16

      Bom dia Gilmar. Não tive este problema quando fiz a instalação, acredito ser porque não criei as zonas reversas.

  5. Gilmar Cabral
    17/04/2015 às 10:08

    Entendi.
    No seu caso de não utilizar zonas reversas.
    Se vc desengressar a maquina do dominio e em seguida remover ela na base do AD do samba4 quando ingressar novamente a mesma maquina ela consegue criar normalmente os registro da maquina na zona master do bind?
    Desde já agradeço

  6. Gilmar Cabral
    17/04/2015 às 10:37

    Entendi.
    Pelos testes realmente deve ser algo no reverso mesmo.
    Quando mando reparar o IP da maquina da esta mensagem abaixo.
    Posso remover o registro da zona master que ele adicona normal o registro no bind.
    Vc tem alguma sugestão do que pode ser a causa do reverso esta negando o registro?
    Agradeço novamente.

    Apr 17 10:33:21 lobeira named[3796]: samba_dlz: disallowing update of signer=not-gavr07\$\@AGROVALE.INTRA name=86.1.168.192.in-addr.arpa type=PTR error=insufficient access rights
    Apr 17 10:33:21 lobeira named[3796]: client 192.168.1.86#1191/key not-gavr07\$\@AGROVALE.INTRA: updating zone ‘1.168.192.in-addr.arpa/NONE’: update failed: rejected by secure update (REFUSED)

  7. Gilmar Cabral
    20/04/2015 às 9:45

    Natália Vaz realizei mais testes.
    Reinstalei todo servidor samba4 sem o uso o DNS reverso porem o problema relado anteriormente onde eu desengresso a maquina do dominio a mesma é removida do bind automaticamente mas continua na base do AD do samba4 então removo a maquina do samba4 do AD e algum tempo tento ingressar a mesma maquina novamente no dominio.
    E neste ponto que da o problema conforme abaixo.
    Ela cria a entrada no AD do samba4 mas não cria no bind.

    Apr 20 09:41:22 lobeira named[11793]: samba_dlz: starting transaction on zone agrovale.intra
    Apr 20 09:41:22 lobeira named[11793]: client 192.168.1.86#1056: update ‘agrovale.intra/IN’ denied
    Apr 20 09:41:22 lobeira named[11793]: samba_dlz: cancelling transaction on zone agrovale.intra
    Apr 20 09:41:22 lobeira named[11793]: samba_dlz: starting transaction on zone agrovale.intra
    Apr 20 09:41:22 lobeira named[11793]: samba_dlz: disallowing update of signer=not-gavr07\$\@AGROVALE.INTRA name=not-gavr07.agrovale.intra type=A error=insufficient access rights
    Apr 20 09:41:22 lobeira named[11793]: client 192.168.1.86#1059: updating zone ‘agrovale.intra/NONE’: update failed: rejected by secure update (REFUSED)
    Apr 20 09:41:22 lobeira named[11793]: samba_dlz: cancelling transaction on zone agrovale.intra

  1. No trackbacks yet.

Deixe um comentário