Sejam todos bem vindos ao Café com Linux!

Decidi criar o primeiro post com um tutorial. Pretenderei sempre postar novos tutoriais, dicas e notícias com assuntos relacionados à área de Tecnologia da Informação, buscando priorizar sempre Software Livre.

Este será um tutorial sobre o Samba4, uma ferramenta que tem amadurecido muito desde sua primeira versão. Uma das grandes vantagem ao utilizar o Samba4 é poder criar um controlador de domínio Active Directory (AD DC) similar ao da Microsoft. O objetivo deste post é preparar um ambiente RHEL/CentOS com as dependências necessárias para a compilação, instalação e primeira configuração. Não irei abordar a instalação do RHEL/CentOS, pois imagino que já saibam como fazer.

O ambiente utilizado:

  • VM CentOS 6.7 x86_64 minimal (utilizei uma imagem mínima por instalar somente o necessário para o funcionamento do S.O.);
  • 1GB de RAM;
  • 20GB de HD;

Como utilizei uma imagem minimal (offline), recomendo fazer a atualização após a instalação do S.O. utilizando o comando:

# yum update

Iremos fazer a instalação e configurações iniciais com o nosso serviço de firewall iptables parado e o SELinux no modo permissivo com os comandos abaixo. Lembrando que não é recomendável utilizar um servidor em produção com o firewall desabilitado e como se trata somente de um laboratório, deixaremos a criação de um arquivo iptables configurado de forma correta, liberando somente as portas necessárias para o funcionamento do Samba4 em um outro post.

# service iptables stop
# setenforce 0

Iremos editar o arquivo do SELinux e alterar a linha conforme abaixo:

# vim /etc/sysconfig/selinux
SELINUX=permissive

Iremos instalar agora os pacotes necessários para a compilação e funcionamento do samba:

# yum install -y epel-release vim wget man perl gcc attr libacl-devel libblkid-devel gnutls-devel readline-devel python-devel gdb pkgconfig krb5-workstation zlib-devel setroubleshoot-server libaio-devel setroubleshoot-plugins policycoreutils-python libsemanage-python perl-ExtUtils-MakeMaker perl-Parse-Yapp perl-Test-Base popt-devel libxml2-devel libattr-devel keyutils-libs-devel cups-devel bind-utils libxslt docbook-style-xsl openldap-devel autoconf pam-devel systemd-devel

Obtendo o samba:

Utilizaremos o “wget” para baixar a última versão estável do Samba4 no site “https://www.samba.org/samba/download/”

$ cd /usr/src
$ wget "https://ftp.samba.org/pub/samba/samba-latest.tar.gz"
$ tar zxvf samba-latest.tar.gz
$ cd /usr/src/samba-4.2.3

Compilando o samba:

Utilizaremos o comando abaixo para que seja criado o makefile e seja possível compilar o samba. Nessa etapa é interessante acompanhar o resultado final, pois será informado se há necessidade de instalação de mais algum pacote. Caso tenha ocorrido tudo com sucesso o resultado final deverá ser ” ‘configure’ finished successfully (47.522s)”.

$ ./configure

Esse processo pode levar algum tempo, de acordo com o seu hardware. Iremos executar o seguinte comando para compilar o samba:

$ make

Instalando o samba:

Esse processo também pode levar algum tempo. Iremos executar o seguinte comando para instalar o samba:

# make install

Provisionando o samba:

Após a instalação, iremos criar o Active Directory.

# /usr/local/samba/bin/samba-tool domain provision
Realm [LOCAL]: CAFE.LOCAL     //Você deverá inserir o nome completo do domínio em caixa alta (FQDN);
Domain [CAFE]:     //Nome do domínio ou ENTER para escolher a opção já definida como padrão;
Server Role (dc, member, standalone) [dc]:     //Você deverá informar se será um controlador de domínio, membro ou standalone. Como iremos criar o AD DC, deveremos escolher a opção [dc] que já está como padrão;
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:     //Utilizaremos o DNS do próprio samba4 como backend, então pressionamos novamente ENTER para o padrão;
DNS forwarder IP address (write 'none' to disable forwarding) [192.168.1.1]:     //No meu caso estou escolhendo um servidor DNS da minha rede para ser utilizado como forwarder em casos que o samba não consiga resolver os nomes;
Administrator password:     //Você deverá definir uma senha complexa para que o provisionamento do domínio seja criado com sucesso;
Retype password:     //Você deverá reinserir a senha para confirmar. Após essa etapa, se tudo estiver ocorrido bem, seu samba retornará um mensagem similar à seguir;

O resultado deverá ser parecido com o abaixo:

Once the above files are installed, your Samba4 server will be ready to use
Server Role: active directory domain controller
Hostname: cafecomlinux
NetBIOS Domain: CAFE
DNS Domain: cafe.local
DOMAIN SID: S-1-5-21-11342085-354663710-1608352529

Testando o samba:

Iniciaremos o Samba4 em modo standalone para realizar alguns testes. O nosso samba ainda não tem scripts de inicialização. Estarei criando um novo post, onde utilizaremos um modelo disponível no site wiki.samba.org.

# /usr/local/samba/sbin/samba

Executaremos o “smbclient” para checar se o samba criou os compartilhamentos padrões “netlogon” e “sysvol” durante o seu provisionamento.

# /usr/local/samba/bin/smbclient -L localhost -U%

Testaremos agora a autenticação no compartilhamento “netlogon” com usuário e senha criados no momento de provisionamento do samba:

# /usr/local/samba/bin/smbclient //localhost/netlogon -UAdministrator -c 'ls'
Enter Administrator's password:
Domain=[CAFE] OS=[Windows 6.1] Server=[Samba 4.2.3]
. D 0 Thu Sep 3 23:40:16 2015
.. D 0 Thu Sep 3 23:40:55 2015

17971068 blocks of size 1024. 15315052 blocks available

Testando o DNS

O DNS é necessário para o funcionamento do Active Directory. Sem o DNS configurado, o Kerberos e alguns outros serviços podem não funcionar corretamente. Iremos alterar o arquivo “resolv.conf” inserindo as informações do nosso servidor DNS do samba.

# vim /etc/resolv.conf
; generated by /sbin/dhclient-script
search cafe.local     //Nome do domínio;
nameserver 192.168.1.67     //Endereço de ip do servidor samba4;

Para testar se o DNS está trabalhando direito, execute os comandos a seguir e compare a saída com o mostrado abaixo:

# host -t SRV _ldap._tcp.cafe.local
_ldap._tcp.cafe.local has SRV record 0 100 389 cafecomlinux.cafe.local.
# host -t SRV _kerberos._udp.cafe.local
_kerberos._udp.cafe.local has SRV record 0 100 88 cafecomlinux.cafe.local.
# host -t A cafecomlinux.cafe.local
cafecomlinux.cafe.local has address 192.168.1.67

Se retornar algum erro, verifique os logs.

Configurando o Kerberos:

Iremos copiar ou criar um link simbólico do arquivo de configuração gerado na criação do AD para o local padrão do arquivo de configuração no sistema.

# ln -sf /usr/local/samba/private/krb5.conf /etc/krb5.conf

Agora iremos testar o Kerberos gerando um ticket com o “kinit” e “klist”.

# kinit administrator@CAFE.LOCAL
Password for administrator@CAFE.LOCAL:
Warning: Your password will expire in 41 days on Thu Oct 15 23:40:53 2015
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@CAFE.LOCAL

Valid starting Expires Service principal
09/04/15 19:36:56 09/05/15 05:36:56 krbtgt/CAFE.LOCAL@CAFE.LOCAL
renew until 09/05/15 19:36:47

Fonte:
Samba Wiki

Dúvidas, comentários, sugestões?

comments