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:
Arquivo e serviços de impressão
Resolução do nome
Permite que o Windows compartilhe arquivos e impressoras no host Unix
Autorização
Autenticação
Anúncio de serviço
Neste tutorial vamos realizar a criação do Samba Active Directory no Oracle Linux 8. O Oracle Linux está instalado em uma máquina virtual e usamos uma conexão SSH pra acessá-lo remotamente.
Pré requisitos
Oracle Linux 8 instalado
Conexão com internet
IP estático configurado
Conexão SSH com o servidor
Privilégios root
Sistema atualizado
Saber como editar um arquivo com o VIM, NANO ou outro editor de texto de sua preferência
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 Oracle 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 ol8_codeready_builder -y || \
yum config-manager --set-enabled ol8_codeready_builder -y
yum update -y
yum install -y \
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
Execute o script:
bash installDependencies.sh
O script instalará todos os pacotes necessários para a compilação e instalação do Samba no Oracle 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 Oracle Linux. No momento deste tutorial a versão mais recente é 4.17.4.
wget https://download.samba.org/pub/samba/samba-4.19.5.tar.gz
tar -zxvf samba-4.19.5.tar.gz
cd samba-4.19.5
Caso você queira instalar uma versão diferente do samba, diversas versões podem ser encontradas no site abaixo:
https://download.samba.org/pub/samba/
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 Oracle 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:
Realm: Informe o Realm Name (nome do domínio em letras maiúsculas (JBITCORE.TEC.BR) e pressione Enter para confirmar.
Domain: Digite o nome do domínio em letras maiúsculas (JBITCORE)
Server Role: Para definir que esta máquina será o controlador de domínio digite dc e pressione Enter
DNS backend: Vamos especificar que o Samba configure o próprio DNS e os arquivos de zona. Digite SAMBA_INTERNAL e pressione Enter
DNS forwarder: Especificamos o provedor de DNS para resolução de nomes externos ao nosso ambiente. Neste caso podemos colocar o Google, Cloudflare ou outro serviço DNS de sua preferencia. Em nosso caso usamos o DNS interno de nosso Lab.
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.