Implementando um servidor de domínio com o poderoso Samba4
Amigos,
Já tem um certo tempo que eu não posto nada aqui, mas devido a minha labuta para implementar um servidor de domínio de maneira funcional, resolvi escrever esse artigo para documentar os procedimentos realizados e também para ajudar os colegas que tiverem essa mesma necessidade.
Para montar o ambiente utilizei o Debian Wheezy 7.7 devidamente atualizado e uma máquina com Windows 7 Ultimate para ser a estação de trabalho de testes.
Bom, agora chega de “bla, bla, bla” e vamos colocar a mão na massa!
Para facilitar o nosso trabalho, é altamente recomendável ter um servidor de DHCP na rede. Se você já tem, configure-o para distribuir os Ips, Gateway, DNS, WINS e Domain Search de acordo com o seu ambiente, de modo que o DNS primário e WINS devem ser SEMPRE o IP do Samba4 (no caso desse artigo, o 192.168.0.254). O Domain Search deve ser o domínio criado (no caso desse artigo, meudominio.com.br).
Se você não tem, vamos implementar no próprio servidor do Samba4:
apt-get -y --force-yes install isc-dhcp-server
Agora, vamos editar o arquivo de configuração:
vim /etc/dhcp/dhcpd.conf
Deixe-o de acordo com o seu ambiente! No caso desse artigo, fica assim:
## DHCP ## Por Luiz Henrique M. Fagundes ## www.aprendendolinux.com #Nivel de log log-facility local7; shared-network meudominio { subnet 192.168.0.0 netmask 255.255.255.0 { default-lease-time 600; max-lease-time 7200; option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.255; option routers 192.168.0.1; option domain-name-servers 192.168.0.254; option netbios-name-servers 192.168.0.254; option domain-name "meudominio.com.br"; range 192.168.0.2 192.168.0.253; } }
Agora, vamos instalar os os pacotes necessários para essa implementação antes de instalar o samba 4 via backports:
apt-get install attr acl krb5-user ntp
Deixe as repostas padrão na configuração do Kerberos. Apenas atentando para a primeira pergunta “Reino por omissão do Kerberos”, informe seu domínio em letras maiúsculas.
Agora vamos configurar o repositório wheezy-backports para ter uma versão mais recente do samba4:
echo "deb https://ftp.br.debian.org/debian wheezy-backports main" >> /etc/apt/sources.list.d/wheezy-backports.list
Vamos agora instalar (usando o repositório wheezy-backports) os pacotes do samba4, o Bind 9.9 (será usado como DNS para o samba) e o pacote libnss-winbind que usaremos para fazer a integração de outras soluções, caso implementemos nessa mesma máquina:
apt-get update && apt-get install -y -t wheezy-backports samba smbclient libnss-winbind bind9
Vamos então, fazer os ajustes necessários para preparar o sistemas para futuras integrações. Vamos editar o arquivo “/etc/nsswitch.conf”
vim /etc/nsswitch.conf
Vamos alterar apenas as linhas iniciadas com passwd, group e shadow, deixando-as assim:
passwd: compat winbind group: compat winbind shadow: compat winbind
Agora precisamos configurar o suporte a ACLs. Edite o arquivo “/etc/fstab”:
vim /etc/fstab
ATENÇÃO! IMPORTANTE! Não copie e cole a linha abaixo, edite a entrada referente a partição desejada do disco.
UUID=2a7a876c-fe12-4945-ad66-b55e173435f2 / ext4 user_xattr,acl,barrier=1,errors=remount-ro 0 1
O disco utilizado não apresenta partições separadas, apenas o /. Ajuste se necessário. Os parâmetros user_xattr, acl e barrier devem ser definidos na partição onde os arquivos dos usuários serão alocados.
Agora, vamos aplicar as mudanças com o comando abaixo:
mount -o remount,rw /
Agora precisamos ajustas as configurações de rede. Então, primeiro vamos configurar o arquivo hosts:
vim /etc/hosts
Insira a linha abaixo, obviamente conforme as configurações do seu servidor:
192.168.0.254 nome-da-maquina.meudominio.com.br nome-da-maquina
Agora vamos configurar a interface de rede:
vim /etc/network/interfaces
Obviamente, você deve configurar de acordo com a sua estrutura de rede. No meu caso ficou assim:
auto eth0 iface eth0 inet static address 192.168.0.254 netmask 255.255.255.0 gateway 192.168.0.1 dns-nameserver 192.168.0.1 dns-search meudominio.com.br
Agora precisamos reiniciar o serviço de rede:
service networking stop ; sleep 2 ; service networking start
Agora vamos ajustas as configurações do DNS:
vim /etc/resolv.conf
Configure de acordo com o seu ambiente:
domain meudominio.com.br search meudominio.com.br nameserver 192.168.0.254 nameserver 192.168.0.1
O nameserver 192.168.0.254 será utilizado pelo samba, enquanto o 192.168.0.1 é o serviço de DNS da rede local que está em vigor.
Precisamos também configurar serviço de NTP para a atualização de data/hora:
vim /etc/ntp.conf
Deixe esse arquivo EXATAMENTE como nesse conteúdo:
# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help driftfile /var/lib/ntp/ntp.drift # Enable this if you want statistics to be logged. statsdir /var/log/ntpstats/ statistics loopstats peerstats clockstats filegen loopstats file loopstats type day enable filegen peerstats file peerstats type day enable filegen clockstats file clockstats type day enable # pool.ntp.org maps to about 1000 low-stratum NTP servers. Your server will # pick a different set every time it starts up. Please consider joining the # pool: https://www.pool.ntp.org/join.html server ntp.usp.br server gps.ntp.br # Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for # details. The web page https://support.ntp.org/bin/view/Support/AccessRestrictions # might also be helpful. ntpsigndsocket /var/lib/samba/ntp_signd/ # Note that "restrict" applies to both servers and clients, so a configuration # that might be intended to block requests from certain clients could also end # up blocking replies from your own upstream servers. # By default, exchange time with everybody, but don't allow configuration. restrict -4 default kod notrap nomodify nopeer noquery restrict -6 default kod notrap nomodify nopeer noquery # Local users may interrogate the ntp server more closely. restrict 127.0.0.1 restrict ::1
Agora precisamos reiniciar o serviço:
service ntp restart
Enfim, chegou o momento de começarmos a configurar o Samba4. Por padrão, a instalação do samba4 instalada do repositório wheezy-backports está definida apenas para compartilhamento de arquivos e impressoras. Vamos então configurá-lo para trabalhar como servidor de domínio.
Primeiro devemos parar o serviço do samba. Usaremos o comando abaixo:
service samba stop
Agora, vamos remover o arquivo de originar de configuração, mas vamos manter uma cópia de segurança:
mv /etc/samba/smb.conf /etc/samba/smb.conf.default
E enfim, vamos rodar o comando que vai gerar as novas configurações:
samba-tool domain provision --option="interfaces=lo eth0" --option="bind interfaces only=yes" --use-rfc2307 --realm=MEUDOMINIO.COM.BR --domain=MEUDOMINIO --server-role=dc --dns-backend=BIND9_DLZ --adminpass='123Mudar'
Explicando as opções:
–option=”interfaces=lo eth0″ –option=”bind interfaces only=yes” – Se seu controlador de domínios tem mais de uma interface de rede essa opção é obrigatória. Isso força o samba escutar e resolver corretamente o DNS para a interface da sua rede local;
–use-rfc2307 – O uso dessa opção ativa o Samba Active Directory para armazenar atributos posix. É também criado informações NIS (Network Information Service) no AD, permitindo a administração de UIDs/GIDs e outras funções Unix;
–realm=MEUDOMINIO.COM.BR – É onde setamos o domínio completo, no caso prefixo mais sufixo;
–domain=DOMINIO – Nessa opção, devemos setar apenas o prefixo do domínio;
–dns-backend=BIND9_DLZ – Por padrão Samba4 utiliza o seu próprio DNS. Essa opção força o Samba4 utilizar o Bind como DNS Backend. Na minha opinião é o mais recomendado, pois se tratar da solução Open Source mais flexível disponível no momento;
–adminpass=’123Mudar’ – Aqui configuramos a senha do usuário “Administrator”, que será o administrator do sistema. Defini a senha para ‘123Mudar’.
Agora vamos preparar o bind para ser usado como DNS do Samba4. Edite primeiro o arquivo “/etc/bind/named.conf”
vim /etc/bind/named.conf
Inclua no final do arquivo a seguinte linha:
include "/var/lib/samba/private/named.conf";
Agora precisamos editar o arquivo “/etc/bind/named.conf.options”.
vim /etc/bind/named.conf.options
ATENÇÃO! Abaixo da linha “dnssec-validation auto;” insira a seguinte linha:
tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab";
Agora como instalamos a versão 9.9 do Bind, precisamos ajustar isso no arquivo de configuração gerado pelo Samba4. Edite o arquivo “/var/lib/samba/private/named.conf”:
vim /var/lib/samba/private/named.conf
COMENTE a linha referente ao Bind 9.8.0 e DESCOMENTE a linha referente ao Bind 9.9.0. Fica assim:
dlz "AD DNS Zone" { # For BIND 9.8.0 # database "dlopen /usr/lib/i386-linux-gnu/samba/bind9/dlz_bind9.so"; # For BIND 9.9.0 database "dlopen /usr/lib/i386-linux-gnu/samba/bind9/dlz_bind9_9.so"; };
Agora, precisamos copiar as configurações do Kerberos geradas pelo samba para o diretório de configurações do sistema:
cp /var/lib/samba/private/krb5.conf /etc/
Agora precisamos fazer o seguinte: Iniciar o samba para que ele prepare o arquivo “ dns.keytab” para o Bind, reiniciar o Bind para ativar essas configurações e restartar o samba para que ele passe a usar efetivamente o Bind como DNS. Faremos os comandos nessa sequencia:
service samba start service bind9 restart service samba restart
Agora, vamos desativar a política de atualização de senha para o usuário administrador, para que a senha não expire nunca:
samba-tool user setexpiry administrator --noexpiry
Agora vamos ajustar as configurações do samba conforme as nossas preferências.
No meu caso eu fiz assim… Primeiro eu criei as pastas:
mkdir -p /srv/samba/home /srv/samba/profiles /srv/samba/trash
Então, vamos ajustar as configurações do samba conforme as necessidades:
[global] workgroup = MEUDOMINIO realm = MEUDOMINIO.COM.BR netbios name = NOME-DA-MAQUINA interfaces = lo, eth0 bind interfaces only = Yes server role = active directory domain controller server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbind, ntp_signd, kcc, dnsupdate idmap_ldb:use rfc2307 = yes ## Configura Lixeira para o Samba4 vfs objects = recycle recycle:keeptree = yes recycle:versions = yes recycle:repository = /srv/samba/trash/%U recycle:exclude = *.tmp, *.log, *.obj, ~*.*, *.bak recycle:exclude_dir = tmp, cache, profiles ## Desabilita o compartilhamento de impressoras printcap name = /dev/null load printers = no disable spoolss = yes printing = bsd [netlogon] path = /var/lib/samba/sysvol/aprendendolinux.com/scripts read only = No browseable = No [sysvol] path = /var/lib/samba/sysvol read only = No browseable = No [profiles] path = /srv/samba/profiles read only = No browseable = No [home] path = /srv/samba/home read only = No [Lixeira] comment = Lata de Lixo path = /srv/samba/trash/%U read only = No directory mask = 0777
Agora vamos aplicar as novas configurações:
smbcontrol all reload-config
Agora precisamos testar as configurações.
Vamos testar se o PDC está asseitando autenticação:
kinit [email protected]
Digite a senha. No caso 123Mudar. Nada deve ser retornado nesse comando se tudo correu bem.
Vamos agora testar as configurações de DNS do samba:
host -t SRV _ldap._tcp.meudominio.com.br host -t SRV _kerberos._udp.meudominio.com.br host -t A nome-da-maquina.meudominio.com.br.
Testar a conectividade com o samba:
smbclient -k //nome-da-maquina.meudominio.com.br/netlogon -c 'ls'
Se tudo saiu bem, algo parecido com isso deve ser retornado:
Domain=[MEUDOMINIO] OS=[Unix] Server=[Samba 4.1.11-Debian] . D 0 Tue Nov 18 19:14:27 2014 .. D 0 Tue Nov 18 19:14:40 2014 36015 blocks of size 2097152. 33671 blocks available
Por favor, você deve respeitar essa ordem de testes.
Agora, para gerenciar o poderoso Samba4 através do Windows, você precisará do RSAT. Não vou abortar a instalação e configuração dessa ferramenta, até porque encontrei um artigo bem completo sobre isso do Marcelo Matias que você pode acessá-lo clicando aqui.
Para baixar o RSAT para Windows 7 SP1 i386, clique aqui.
Para baixar o RSAT para Windows 7 SP1 x64, clique aqui.
Agora segue um vídeo que ensina a integrar a máquina windows no domínio, configurar as permissões da pasta home e gerenciar o DNS:
Documentação oficial do samba sobre as permissões da pasta home:
https://bit.ly/1ACj9vJ
Download deste vídeo tutorial:
https://downloads.aprendendolinux.com/videos/VideoAulaSamba4.zip
ALGUMAS DICAS ADICIONAIS:
Para cadastrar um usuário no domínio você terá que respeitar as regras de validação de senha do servidor. Para mudar essas regras utilize os seguintes comandos:
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 ítens: Maiúsculas, Minusculas, Números, Simbolos):
samba-tool domain passwordsettings set --complexity=off
Mudar o tamanho mínimo da senha (definindo como 4):
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)
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)
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)
samba-tool domain passwordsettings set --history-length=5
Isso é tudo galera, espero ter colaborado!
Esse artigo foi útil? Colabore com o nosso site para podermos continuar dando mais dicas como essa!
Formas de doação:
- Boleto / Cartão de crédito: https//bit.ly/AprendendoLinux
- Pix: [email protected]
- PicPay: @henrique_fagundes
- PayPal: [email protected]
- Bitcoin: bc1qtnn5z058htzy799dslwrpjcdpm0vuta3vrj28l
Favorecido: Luiz Henrique Marques Fagundes
Professor.
Ótimo conteúdo, mas não consegui aplicar em VLANs sabe me dizer se possui algum artigo relacionado a isto?