Samba Domain Controller - Rocky Linux 8


Introdução: Samba Active Directory

O Samba é um protocolo livre que é utilizado para a comunicação entre servidores Windows e Linux. Principalmente para permitir que os hosts Windows como uma estação de trabalho se agarrem e se comuniquem fora dos hosts Linux. Samba é uma reimplementarão do protocolo SMB (Server Message Block) e está disponível para a maioria dos sistemas baseados em UNIX, incluindo Linux, Solaris, variantes BSD, e AIX. Também está disponível para os sistemas operacionais OpenVMS e IBM. Samba faz uso do Common Internet File System (CIFS) e pode ser usado para realizar ações como:

Neste tutorial vamos realizar a criação do Samba Active Directory no Rocky Linux 8. O Rocky Linux está instalado em uma máquina virtual e usamos uma conexão SSH pra acessá-lo remotamente.

Pré requisitos

Antes de prosseguir faremos o update do sistema:⚠

yum update -y

Passo 1: Configurar um IP estático

Com o comando abaixo verificamos o IP obtido via DHCP para este servidor podemos utilizálo para acesso via SSH:

ip a

Da imagem acima, podemos ver que estamos conectados à interface ens18 com o IP 10.213.101.213 

Usaremos o comando abaixo para especificar o mesmo IP mas com a configuração estática:

nmtui

Use as teclas direcionais do teclado para navegar o menu.

Selecione a primeira opção Edit a connection e pressione enter

Selecione a interface (em nosso caso ens18), precione tab e em seguida selecione <Edit...>  e presione enter.

Navegue até a opção IPv4 Configuration, selecione Show precione enter.

Voce poderrá alterar os parametros conforme o indicado a seguir.

preencha as configurações conforme sua rede de IP, no nosso caso teremos

IP: 10.213.101.231/24

Gatway: 10.213.101.1

DNS: 10.213.101.231 1.1.1.1

também teremos as seguitens opções marcadas:

Automaticaly connect

Avaliable to all users

Com todas as configurações desejadas selecione OK e precione enter

retorne ao nemu  inicial selecionando Back 

em seguida Quit e precione enter para finalizar e retornar à linha de coando.

A primeira etapa para configurar seu controlador de domínio com o samba está completa. ✅

Passo 2: Desabilitar o SELinux

Security-Enhanced Linux (SELinux) é um recurso de segurança presente em várias distribuições Linux que dá aos administradores mais controle sobre os usuários de um sistema. Infelizmente, o SELinux não funciona bem com o Samba, a menos que com configurações adicionais. Para este tutorial em particular, desativaremos o SELinux para evitar qualquer problema futuro. Execute o comando abaixo para verificar o status do SELinux

sestatus

Aqui podemos confirmar que o SELinux está ativo.

Para desativar precisamos editar o arquivo /etc/sysconfig/selinux com um editor de texto.

no nosso caso utilizaremos o vim como root (ou use o sudo caso vc não esteja logado como root)

setenforce 0

vim /etc/sysconfig/selinux

Uma vez aberto o arquivo, pressione a tecle i ou pressione Insert, para entrar em modo de inserção. Procure pela linha que contém SELINUX=enforcing  e troque por SELINUX=disabled.

Depois de mofificar o arquivo, precione Esc, em seguida  digite a sequencia abaixo para salvar as alterações

:wq

Com as mudanças acima deveremos reiniciar o servidor para que as alterçoes tenham efeito.

depois de reinicial confirme se o SELinux foi desativado com sucesso usando o comando

sestatus

Passo 3: Trocar o hostname (update /etc/hosts file)

Para trocar o nome do computador (hostname) deveremos seguir os passos abaixo na linha de comando

hostnamectl set-hostname dc01

Também precisamos editar o arquivo /etc/hosts  para que o DC (controlador de domínio) seja capaz de resolver o nosso Fully Qualified Domain Name (FQDN), que será jbitcore.tec.br.

Usamos o vim para adicionar uma nova linha no arquivo contendo o nosso IP o FNDN do nosso DC (jbitcore-dc.jbitcore.tec.br) e o hostname do DC

vim /etc/hosts

adicionamos a linha:

10.213.101.231 dc01.jbitcore.tec.br dc01

Reiniciamos o servidor para que as alterações tenham efeito

Passo 4: Instalar os pacotes necessários para compilar o Samba

Ao tentar compilar e instalar o Samba a partir da fonte no Rocky Linux 8, você encontrará muitos erros e pacotes ausentes. Além disso, instalar estes pacotes um a um pode ser um processo bastante cansativo e estressante, já que alguns pacotes já estão instalados, mas o Samba não consegue detectá-los (o que pode levar um tempo considerável para encontrar a solução mais adequada). Você pode precisar criar inúmeros links simbólicos para estes pacotes. Vamos deixar no próximo passo o script para a versão que estamos instalando.

Você pode querer dar uma olhada na documentação do Samba onde foram fornecidos pelos desenvolvedores do Samba  scripts de instalação de dependências neste link.

Criar o script de instalação das dependências

Crie o arquivo installDependencies.sh, permita que ele seja um executável

touch installDependencies.sh

chmod +x installDependencies.sh

vim installDependencies.sh

Após abrir o arquivo com o VIM, entre no modo insert pressionando i ou a tecla INSERT, cole o conteúdo abaixo no arquivo e salve.




set -xueo pipefail


yum update -y

yum install -y dnf-plugins-core

yum install -y epel-release


yum -v repolist all

yum config-manager --set-enabled PowerTools -y || \

    yum config-manager --set-enabled powertools -y

yum config-manager --set-enabled Devel -y || \

    yum config-manager --set-enabled devel -y

yum update -y


yum install -y \

    --setopt=install_weak_deps=False \

    "@Development Tools" \

    acl \

    attr \

    autoconf \

    avahi-devel \

    bind-utils \

    binutils \

    bison \

    ccache \

    chrpath \

    cups-devel \

    curl \

    dbus-devel \

    docbook-dtds \

    docbook-style-xsl \

    flex \

    gawk \

    gcc \

    gdb \

    git \

    glib2-devel \

    glibc-common \

    glibc-langpack-en \

    glusterfs-api-devel \

    glusterfs-devel \

    gnutls-devel \

    gpgme-devel \

    gzip \

    hostname \

    htop \

    jansson-devel \

    keyutils-libs-devel \

    krb5-devel \

    krb5-server \

    libacl-devel \

    libarchive-devel \

    libattr-devel \

    libblkid-devel \

    libbsd-devel \

    libcap-devel \

    libcephfs-devel \

    libicu-devel \

    libnsl2-devel \

    libpcap-devel \

    libtasn1-devel \

    libtasn1-tools \

    libtirpc-devel \

    libunwind-devel \

    libuuid-devel \

    libxslt \

    lmdb \

    lmdb-devel \

    make \

    mingw64-gcc \

    ncurses-devel \

    openldap-devel \

    pam-devel \

    patch \

    perl \

    perl-Archive-Tar \

    perl-ExtUtils-MakeMaker \

    perl-JSON \

    perl-Parse-Yapp \

    perl-Test-Simple \

    perl-generators \

    perl-interpreter \

    pkgconfig \

    popt-devel \

    procps-ng \

    psmisc \

    python3 \

    python3-cryptography \

    python3-devel \

    python3-dns \

    python3-gpg \

    python3-iso8601 \

    python3-libsemanage \

    python3-markdown \

    python3-policycoreutils \

    python3-pyasn1 \

    python3-setproctitle \

    quota-devel \

    readline-devel \

    redhat-lsb \

    rng-tools \

    rpcgen \

    rpcsvc-proto-devel \

    rsync \

    sed \

    sudo \

    systemd-devel \

    tar \

    tree \

    wget \

    which \

    xfsprogs-devel \

    yum-utils \

    zlib-devel


yum clean all

Depois de modificar o arquivo, pressione Esc, em seguida  digite a sequencia abaixo para salvar as alterações

:wq

Se, por algum motivo o script falhar ( às vezes o que é copiado aqui do texto pode vir com alguma formatação do site ), baixe  o script do nosso GitHub aqui.

Execute o script:

bash installDependencies.sh

O script instalará todos os pacotes necessários para a compilação e instalação do Samba no Rocky Linux 8. 

Este processo pode levar algum tempo, dependendo da velocidade de sua internet e recursos do sistema.

Passo 5: Download e instalação do Samba na versão mais recente

Após a instalação bem sucedida dos pacotes, vamos dar procedimento à instalação do Samba. Navegue até o site do Samba e obtenha o link para o último lançamento do Samba. Use o comando wget para baixar o Samba em seu sistema Rocky Linux. No momento deste tutorial a versão mais recente é 4.17.4.

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

tar -zxvf samba-latest.tar.gz

cd samba-4.17.4

Dentro do diretório do Samba execute o comando abaixo para configurar o pacote a ser compilado

./configure

Se o comando ./configure for executado com sucesso e sem erros; você deve ver uma mensagem semelhante à imagem abaixo.

Agora, execute o comando abaixo para compilar e instalar o Samba Active Directory no Rocky Linux 8. Esta etapa também levará alguns minutos. Por favor, seja paciente.

make -j 3 && make install

Após uma instalação bem sucedida, você deve ver uma mensagem semelhante à imagem abaixo:

Passo 6: Provisionar o Samba Active Directory

Antes de iniciar precisamos configurar as variáveis de sistema.

Use o comando abaixo para  exportar as variáveis  (PATH). Sem  executar o comando abaixo os próximos passos não funcionar

export PATH=/usr/local/samba/bin/:/usr/local/samba/sbin/:$PATH

Agora sim, faremos o provisionamento de domínio. Isso envolve a configuração e a criação de toda a infraestrutura necessária para o Samba AD. Isso inclui LDAP,  servidores DNS, etc. Em nosso caso vamos promover este servidor como Controlador de Domínio primário, siga os passos abaixo:

samba-tool domain provision --use-rfc2307 --interactive

Caso vc receba um erro como abaixo significa que esqueceu de configurar as variáveis. Volte ao início do passo 6 e siga atentamente as instruções.

-bash: samba-tool: command not found

Várias informações deverão ser adicionadas em ordem conforme abaixo:

Seu controlador de domínio será configurado e aparecerá a saída do comando conforme abaixo:

Passo 7: Configurar o serviço Samba DC como systemd service

Agora que o Samba está configurado como o controlador de domínio, deveremos fazer om que o samba seja executado como um serviço para que seja iniciado toda vez que o sistema seja reiniciado. Execute o comando abaixo

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

Com o VIM aberto adicione o seguinte conteúdo e salve o 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

Inicie o serviço e habilite o serviço para ser iniciado automaticamente durante a inicialização do sistema

systemctl daemon-reload

systemctl start samba-ad-dc.service

systemctl enable samba-ad-dc.service

Verifique o status do serviço com o comando abaixo

systemctl status samba-ad-dc.service


É interessante reiniciar o servidor e validar se o serviço iniciou com o sistema, repetindo o comando acima.

Se tudo deu certo vc terá uma longa mensagem com algumas linhas em vermelho no final, mas não se preocupe com isso pois são informações de alerta mas o serviço está sendo executado e não afetará a funcionalidade do serviço.

Passo 8: Configurar o Firewall

Deveremos abrir as portas do firewall e torná-las permanente mesmo depois de uma reinicialização, para que o DC poça receber requisições das máquinas clientes, prossiga com os comandos abaixo:

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

firewall-cmd --add-port={389/udp,135/tcp,135/udp,138/udp,138/tcp,137/tcp,137/udp,139/udp,139/tcp,445/tcp,445/udp,3268/udp,3268/tcp,3269/tcp,3269/udp,49152/tcp} --permanent

firewall-cmd --reload

Confirme se o seu DC está recebendo conexões com o comando abaixo

sudo netstat -tulpn | egrep "samba|smbd"

Note que as portas que liberamos no Firewall estão ativas.

Agora nosso controlador de domínio está pronto. Ingresse uma máquina no domínio para validar o funcionamento do servidor.

Qualquer necessidade, entre em contato conosco no nosso LinkedIn.