Na execução deste “LAB”, optei pelas placas em modo bridge o que torna possível o acesso remoto por SSH pelo host real. O gateway padrão é o roteador da minha rede local e a instalação do sistema foi realizada com os pacotes básicos, acrescentando apenas o servidor SSH para que pode-se configurar o Debian pelo PUTTY.
Cenário:
Passo a passo:
1) Atualização do repositório e dos pacotes do sistema:
# apt-get update && apt-get upgrade
2) instalação das dependências:
apt-get install acl attr autoconf bison build-essential \ debhelper dnsutils docbook-xml docbook-xsl flex gdb krb5-user \ libacl1-dev libaio-dev libattr1-dev libblkid-dev libbsd-dev \ libcap-dev libcups2-dev libgnutls28-dev libjson-perl \ libldap2-dev libncurses5-dev libpam0g-dev libparse-yapp-perl \ libpopt-dev libreadline-dev perl perl-modules pkg-config \ python-all-dev python-dev python-dnspython python-crypto \ xsltproc zlib1g-dev libgpgme11-dev python-gpgme python-m2crypto libsystemd-dev
Nesta parte basta seguir selecionando “OK” e pressionando “ENTER”, sem realizar qualquer alteração. Logo após a instalação das dependências, baixaremos o SAMBA em sua versão estável mais recente o que pode ser verificado no endereço: https://download.samba.org/pub/samba/stable/
3) Baixando, descompactando e compilando o SAMBA 4:
# wget https://download.samba.org/pub/samba/stable/samba-4.6.5.tar.gz # tar -zxvf samba-4.6.5.tar.gz # cd samba-4.6.5 # ./configure --enable-debug --enable-selftest
Se tudo ocorrer sem problemas será exibida uma mensagem de sucesso e a partir deste ponto é só compilar e instalar o SAMBA.
# make
Obs: A execução do comando “make” é um pouco demorada, sendo este o único inconveniente. Tenha um pouco de paciência.
# make install
4) Configurações importantes:
Algumas configurações adicionais são necessárias a fim de garantir o correto funcionamento do servidor. Os arquivos “/etc/resolv.conf/” e o “/etc/hosts/” devem estar de acordo com o domínio a ser criado, bem como o IP do servidor deve ser fixo já que este será o DNS da rede local.
# vim /etc/hosts
# vim /etc/resolv.conf
Após configurar e salvar o “/etc/resolv.conf” execute o comando “chattr +i” para garantir que o arquivo não seja modificado pelo sistema.
# chattr +i /etc/resolv.conf
A configuração destes 2 (dois) arquivos nos auxilia no provisionamento do servidor. estando os arquivos corretamente configurados antes de se elevar o SAMBA a AD, quando da configuração do serviço o domínio já estará definido.
5) Provisionando o SAMBA 4:
Antes do provisionamento do SAMBA 4 como AD é uma boa prática listarmos tudo que for pertinente a consecução do domínio, seria algo como um checklist a fim de garantir os parâmetros corretos de configuração. Veja os dados na tabela a seguir:
Checklist SAMBA 4 | |
Servidor | Controlador de domínio e Active Directory |
DNS | Samba Internal ( x ) - BIND ( ) - BIND DLZ ( ) |
IP do Servidor | Fixo ( x ) IP:172.16.0.200/24 - Obs. deve ser feito antes de subir o domínio. |
Qtde. Controladores de Domínio | 1 (um) |
Domínio | BOSON.AULA.NET |
DNS Resolver - Forwarding | 172.16.0.1/24 Obs. neste caso esse é o IP do meu roteador. |
DHCP Server | Não |
Em relação ao provisionamento do servidor, se o samba-tool não estiver declarado na variável PATH é necessário digitar o caminho absoluto “/usr/local/samba/bin/samba-tool” para poder utilizar os recursos da ferramenta.
# /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive
Onde:
- domain provision = para elevar o SAMBA a controlador de domínio;
- --use-rfc2307 = ativa o Network Information Server (NIS);
- --interactive = Modo interativo que permite realizar as configurações do domínio.
Vamos aos passos necessários:
- Realm [BOSON.AULA.NET] : Se o “/etc/hosts” e o “/etc/resolv.conf” estiverem definidos basta pressionar ENTER, caso não estejam configurados digite o nome do domínio desejado. Em nosso caso “BOSON.AULA.NET”;
- Domain : [BOSON] : “pressione enter”;
- Server Role (dc, manber, standalone,) [dc] : Como utilizaremos nosso SAMBA como DC basta pressionar ENTER;
- DNS backend (SAMBA_INTERNAL, BIND9, BIND9_DLZ) [SAMBA_INTERNAL] : O DNS que iremos escolher o SAMBA_INTERNAL que é o padrão da instalação, bastando pressionar “ENTER”;
- DNS forwarder IP address (write ‘none’ to disable forwarding) [172.16.0.200] : Neste caso é mostrado como IP de encaminhamento o definido no “/etc/resolv.conf/” se os arquivos não estiverem configurados, o DNS que ira ser definido para encaminhamento será o primário configurado em seu roteador. E comum a utilização do DNS do Google para está tarefa, mas, em nosso cenário setaremos o nosso gateway como encaminhador “172.16.0.1’;
- Administrator password: Definição da senha de administrador deve conter “letras, números e caracteres especiais” para que não aja erro no processo de provisionamento;
- Retype password: Repita a senha digitada anteriormente.
Após as configurações realizadas o servidor será elevado a controlador de domínio. Vide imagem abaixo:
6) Script de inicialização
Crie o arquivo “/etc/systemd/system/samba4.service” e adicione o conteúdo .serviceabaixo, para que o Unit baseado no systemd seja integrado ao servidor, possibilitando assim, o controle dos processos relativos aos serviços, bem como na inicialização do sistema o SAMBA possa subir automaticamente.
# vim /etc/systemd/system/samba4.service
Configure o arquivo com segue:
[Unit] Description=Samba Active Directory Domain Controller After=network.target remote-fs.target nss-lookup.target [Service] Type=forking ExecStart=/usr/local/samba/sbin/samba -D PIDFile=/usr/local/samba/var/run/samba.pid [Install] WantedBy=multi-user.target
Após criar o arquivo e adicionar o conteúdo, execute os comandos abaixo:
# systemctl daemon-reload # systemctl enable samba4.service
Verificando se daemon encontra-se “enable”
# systemctl is-enabled samba4.service
Seguido estes passos o serviço já pode ser inicializado e verificado adequadamente.
# systemctl start samba4.service
Com o “systemctl” é possível a utilização das opções (stop, restart e status).
# systemctl status samba4.service -l
7) Testes:
Verificando a versão do SAMBA instalado:
# /usr/local/samba/bin/smbclient --version
Pastas compartilhadas:
# /usr/local/samba/bin/smbclient -L localhost -U%
Verificação do usuário Administrador:
# /usr/local/samba/bin/smbclient //localhost/netlogon -Uadministrator%'Senha Cadastrada'
Digite “exit” para voltar ao shell bash
LDAP
host -t SRV _ldap._tcp.BOSON.AULA.NET
KERBEROS
host -t SRV _kerberos._udp.BOSON.AULA.NET
DNS
host -t A Debian.BOSON.AULA.NET
KERBEROS.CONF
# cat /usr/local/samba/private/krb5.conf
KINIT
# kinit administrator@BOSON.AULA.NET
Com a instalação e o provisionamento concluída e sem apresentar erros, devemos instalar o serviço para sincronização de hora (NTP), e configurá-lo para que possamos utilizá-lo no ajuste das máquinas que integram o domínio.
Não é obrigatório a instalação do servidor “NTP” para o funcionamento do SAMBA, mas é uma boa prática sincronizar os hosts que pertencem ao domínio. O Kerberos requer “carimbos” de hora exatos para poder prevenir ataques de repetição bem como o AD utiliza a sincronização para evita replicação.
O AD admite um desvio padrão de até 5 minutos para mais ou para menos, caso haja uma diferença maior que esse padrão o acesso é negado, resultando no não acesso aos diretórios e compartilhamentos.
8) Instalação e configuração do NTP server
Execute os comandos a seguir para instalar o serviço de NTP no servidor:
# apt-get install ntp # cp /etc/ntp.conf /etc/ntp.conf.BK
Feita a cópia do arquivo /etc/ntp.conf devemos realizar algumas configurações, apague o conteúdo do ntp.conf e substitua pelo conteúdo abaixo:
# Local clock. Note that is not the "localhost" address! server 127.127.1.0 fudge 127.127.1.0 stratum 10 # Where to retrieve the time from server 0.pool.ntp.org iburst prefer server 1.pool.ntp.org iburst prefer server 2.pool.ntp.org iburst prefer driftfile /var/lib/ntp/ntp.drift logfile /var/log/ntp ntpsigndsocket /usr/local/samba/var/lib/ntp_signd/ # Access control # Default restriction: Allow clients only to query the time restrict default kod nomodify notrap nopeer mssntp # No restrictions for "localhost" restrict 127.0.0.1 # Enable the time sources to only provide time to this host restrict 0.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery restrict 1.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery restrict 2.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery
Obs: verifique se o diretório “/usr/local/samba/var/lib/ntp_signd/” existe. Em caso negativo, deve ser criado e fornecidas as devidas permissões. Outro ponto importante diz respeito aos arquivos “/var/lib/ntp/ntp.drift” e “var/log/ntp” - caso não tenham sido criados pela instalação você irá criá-los.
Criação do diretório “ntp_singd”:
# mkdir /usr/local/samba/var/lib/ntp_signd
Ajuste de Permissões:
# chown root:ntp /usr/local/samba/var/lib/ntp_signd # chmod 750 /usr/local/samba/var/lib/ntp_signd
Criação dos arquivos “/var/lib/ntp/ntp.drift” e “/var/log/ntp”
# touch /var/lib/ntp/ntp.drift # touch /var/log/ntp
Após as configurações do servidor NTP serem devidamente realizadas, devemos reiniciar o serviço de horas para que ele possa funcionar conforme configurado.
# systemctl restart ntp.service
Processo finalizado com sucesso.
Anterior: SAMBA 4 como Controlador de Domínio
Retirado de: http://www.bosontreinamentos.com.br/linux/samba-4-instalacao-e-provisionamento/
Autor: Djavan Marques dos Santos