Pular para conteúdo

Samba AD-DC2 Replicador

Samba AD-DC Controlador Domínio (DC2) Replicador DC1

Vamos configurar a Segunda máquina para agir como um Replicador do DC1 (backup).

OBS: Seu DC1 deve neste momento estar operacional e funcionando corretamente. Antes de continuar, faça esta verificação.

Iniciando o processo:

Execute Update e Upgrade do sistema:

Execute um update e um upgrade do sistema com o comando abaixo:

dnf update -y && dnf upgrade -y

Instale o nano e o wget

Instale o editor de textos nano e a ferramenta wget com o comando:

dnf install -y nano wget

Verifique a rede

Verifique sua configuração de rede. O DNS deve ser PREFERENCIALMENTE o IP do Controlador de domínio (DC1), bem como nome de domínio e um IP fixo. Uma das opções para configurar a rede, é executar o comando nmtui que abre uma GUI no terminal:

 nmtui

Selecione Editar uma conexão

Então a opção Editar

Verifique ou altere seu endereço ip, máscara de sub-rede e seu Gateway

Na opção Servidor DNS insira PREFERENCIALMENTE o ip de seu Controlador de Domínio Principal (DC1)

Não esqueça de inserir em Domínios de pesquisa: seu.domínio.

Vá até o fim e selecione OK para salvar.

Selecione Voltar e então no menu, selecionar a opção:

Definir nome de máquina do sistema: dc2.seu.dominio.

Agora selecione a opção: OK para salvar. Novamente selecione OK. Deve retornar para o terminal.


Edite o arquivo /etc/hosts

Com o editor de textos nano edite o arquivo /etc/hosts com o comando:

nano /etc/hosts

Insira os dados referentes ao seu Controlador de Domínio DC2:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
# insira os dados de seu MEMBRO DE DOMÍNIO
10.1.1.38   dc2                             dc2.seu.dominio

Salve o arquivo

Para salvar: control+o e para sair: control+x

Onde:

10.1.1.38 = IP de seu DC2

dc2 = nome curto do host do DC2

dc2.seu.domínio = nome curto de seu host + seu domínio


Algum Samba rodando

Verifique se existe algum processo do samba rodando com o comando:

 ps ax | egrep "samba|smbd|nmbd|winbindd"

Remova qualquer configuração smb.conf que houver, checando com o comando:

smbd -b | grep "CONFIGFILE"
# o resultado deve ser parecido com a linha abaixo:
-bash: smbd: command not found

Remova o arquivo /etc/krb5.conf

Remova o arquivo /etc/krb5.conf se houver, com o comando:

rm /etc/krb5.conf -y

Instale os repositórios de Plugins CRB e Epel

Instale os plugins e habilite o repositório CRB. Instale também o repositório epel release e execute um update com os comandos abaixo:

dnf config-manager --enable crb && dnf install epel-release -y && dnf update -y

Cheque os repositórios adicionados com o comando:

dnf repolist

O resultado deve ser algo como:

alt+text


Setar servidor NTP (horário):

Liste as opções de hora local com o comando:

timedatectl list-timezones

Para setar o timezone desejado, use o comando: 

timedatectl set-timezone America/Sao_Paulo 

Verifique o timezone setado com o comando:

timedatectl

O resultado deve parecer como abaixo:

Local time: qua 2023-04-12 09:04:22 -03
           Universal time: qua 2023-04-12 12:04:22 UTC
                 RTC time: qua 2023-04-12 12:00:16
                Time zone: America/Sao_Paulo (-03, -0300)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no 

Instale dependências necessárias

Instale as dependências necessárias para compilar e instalar o samba. Crie um arquivo do tipo script executável e insira os comandos no arquivo. No terminal, execute o editor de textos nano com o nome desejado do arquivo por exemplo:

nano depende.sh

Copie e Cole as linhas abaixo para o seu arquivo:

set -xueo pipefail

dnf install -y yum-utils
dnf update -y

yum install -y \
gcc.x86_64 \
krb5-workstation.x86_64 \
tar \
bind \
bind-utils \
python3-devel \
wget \
nano \
perl.x86_64 perl-Parse-Yapp.noarch \
libacl.x86_64 \
nfs4-acl-tools.x86_64 \
gnutls-devel.x86_64 \
zlib.x86_64 \
krb5-devel.x86_64 \
krb5-server \
libblkid.x86_64 \
dbus-devel.x86_64 \
jansson-devel.x86_64 \
readline.x86_64 \
bsdtar.x86_64 \
docbook-dtds.noarch \
pam-devel \
cups \
python3-markdown \
patchutils.x86_64 \
gpgme-devel \
flex \
python3-iso8601.noarch \
python3-cryptography.x86_64 \
python3.11-devel.x86_64 \
lmdb.x86_64 \
libarchive-devel \
libacl-devel \
openldap-devel \
python3-dns \
perl-Convert-ASN1.noarch \
rpcgen.x86_64 \
perl-App-cpanminus \
popt-devel.x86_64 \
zlib-devel.x86_64 \
lmdb-devel.x86_64 \
bison-devel.x86_64 \
libtasn1-tools \
bison \
perl-JSON \
bzip2-devel \
openssl-devel \

yum autoremove -y

yum clean all

Salve o arquivo:

Para salvar: control+o e para sair: control+x

Transforme o arquivo criado em um arquivo executável com o comando:

chmod +x depende.sh

Execute o arquivo para que o mesmo instale as dependências necessárias. Utilize o comando:

./depende.sh 

Download do Samba (4.19.5)

Faça o download do samba ou da versão desejada, utilizando o comando:

wget https://download.samba.org/pub/samba/stable/samba-4.19.5.tar.gz

Descompacte o arquivo utilizando o comando:

tar -zxvf samba-nome-arquivo

Mude para o diretório onde o arquivo foi descompactado com o comando:

cd samba-nome-arquivo/

Compilar o Samba

Compile o samba e faça com que o arquivo de configuação (smb.conf) seja gravado no diretório /etc/samba/smb.conf com o comando:

./configure --sysconfdir=/etc/samba/

Aguarde o procedimento terminar.


Comandos make e make install

Execute os comandos make e make install:

make && make install

Este processo pode ser demorado, aguarde até finalizar!

Mude para o diretório /root e edite o arquivo .bash_profile para que o comando samba-tool possa ser executado de qualquer diretório. Execute os comandos:

cd /root
nano .bash_profile

E insira a linha:

# User specific environment and startup programs
PATH=$PATH:$HOME/bin

#ESTA LINHA:
PATH=/usr/local/samba/bin/:/usr/local/samba/sbin/:$PATH

export PATH

Salve o arquivo

Para salvar: control+o e para sair: control+x


Serviço Systemd Samba

Crie um arquivo de serviço systemd para o Samba. Mas antes execute os comandos:

 systemctl mask smbd nmbd winbind
 systemctl disable smbd nmbd winbind

Crie o arquivo de serviço do samba-ad-dc com o editor de texto nano. Execute o comando:

nano /etc/systemd/system/samba-ad-dc.service

Copie e cole o conteúdo para seu arquivo:

[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
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

Salve o arquivo

Para salvar: control+o e para sair: control+x


Recarregue o systemd

Recarregue o systemd com o comando:

systemctl daemon-reload

Habilite o samba-ad-dc para iniciar no boot do sistema:

systemctl enable samba-ad-dc

Configure o Firewall

Adicione os seguintes serviços no firewall, com o comando abaixo:

firewall-cmd --add-service={dns,ldap,ldaps,kerberos}

Abra as portas TCP utilizadas pelo samba:

firewall-cmd --permanent --zone=public --add-port={53/tcp,135/tcp,139/tcp,389/tcp,445/tcp,465/tcp,636/tcp,3268/tcp,3269/tcp,49152-65535/tcp};

Abra as portas UDP utilizadas pelo samba:

firewall-cmd --permanent --zone=public --add-port={88/udp,123/udp,137/udp,138/udp,389/udp,464/udp};

Recarregue o Firewall com o comando:

firewall-cmd --reload

Desabilite o SELinux

Edite o arquivo /etc/selinux/config com o comando:

nano /etc/selinux/config

Encontre a linha e altere para a opção disabled como mostra abaixo:

#  disabled - No SELinux policy is loaded.
SELINUX=disabled

Salve o arquivo:

Para salvar: control+o e para sair control+x


Reboot o sistema

Execute um reboot com o comando:

reboot

Execute o comando samba

Quando o sistema reiniciar execute o comando samba

samba

Junte-se (join AD) ao Controlador de Domínio (AD-DC)

Execute o comando abaixo para juntar-se ao Active Directory (DC1) a partir de seu Controlador de Domínio (DC2). Substitua: seu.domínio para seu cenário:

samba-tool domain join seu.dominio DC -Uadministrator --realm=seu.dominio

Ao final do processo, na última linha deve mostrar: Joined domain seu.dominio como mostra na figura abaixo:

alt + text

Com o comando acima seu Controlador de Domínio DC2 deve juntar-se ao DC1 (Seu Controlador de Domínio PRINCIPAL).