Centos 8 + AD-DC
August 25, 2020 Centos samba active directory ldap
O que é o Samba?
O Samba 4.x compreende um servidor de diretório LDAP, um servidor de autenticação Heimdal Kerberos, um servidor DNS dinâmico e implementações de todas as chamadas de procedimento remoto necessários para o Active Directory.
Para quem vem do mundo Windows está acostumando com o conceito de Active Directory e com o Samba 4 isso é possível, gerenciar todos os logins e polices de estações windows a partir de um servidor central.
Para iniciar os trabalhos vamos adicionar o repositório EPEL no Centos:
yum -y install epel-release
E depois temos que ativar o repositório PowerTools
yum config-manager –set-enabled PowerTools
E rodamos a atualização do servidor
yum update -y
Depois disso é recomendado você reiniciar o servidor.
De volta ao sistema agora vamos instalar as dependências para podermos compilar o samba 4 com role AD-DC:
yum install docbook-style-xsl gcc gdb gnutls-devel gpgme-devel jansson-devel keyutils-libs-devel krb5-workstation libacl-devel libaio-devel libarchive-devel libattr-devel libblkid-devel libtasn1 libtasn1-tools libxml2-devel libxslt lmdb-devel openldap-devel pam-devel perl perl-ExtUtils-MakeMaker perl-Parse-Yapp popt-devel python3-cryptography python3-dns python3-gpg python36-devel readline-devel rpcgen systemd-devel tar zlib-devel cups-devel wget -y
Em seguida, vamos editar o arquivo hosts
vim /etc/hosts
192.168.2.7 srvdc01.home.local srvdc01
Obs.: Ajuste o IP e o nome conforme a sua configuração.
Depois a gente configura a resolução de nomes do servidor, vai ser importante mais pra frente:
vim /etc/resolv.conf
domain home.local
nameserver 192.168.2.22
search srvdc01.home.local
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
Até aqui apenas ajustamos o sistema para receber o samba, agora vamos baixar o samba e começar a trabalhar nele :D
wget https://ftp.samba.org/pub/samba/samba-latest.tar.gz
Descompactar os arquivos
tar -xzvf samba-latest.tar.gz
Entrar na pasta
cd samba-4.12.6
E rodar o “./configure”
./configure
Nesse ponto ele vai verificar se o sistema atende todos os requisitos para compilar o samba 4, caso tudo esteja certo ele vai apresentar a mensagem abaixo:
‘configure’ finished successfully (1m23.880s)
Agora é a vez do “Make”
make
E por último o “Install” pra colocar tudo no lugar correto dentro do sistema.
make install
Se tudo terminar bem o resultado será esse:
‘build’ finished successfully (20m34.783s)
Pra facilitar criamos um script que ajusta PATH para os comandos do samba:
vim /etc/profile.d/samba4.sh
if [ $(id -u) -eq 0 ]
then
PATH="/usr/local/samba/sbin:$PATH"
fi
PATH="/usr/local/samba/bin:$PATH"
export PATH
Damos permissão com:
chmod +x /etc/profile.d/samba4.sh
Agora vem a parte mais importante do processo: Provisionamento do Domínio
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.
Ele vai solicitar algumas informações nesse ponto pois escolhemos a opção interativa no provisionamento, são elas:
Realm [HOME.LOCAL] : 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.
Domain : [HOME] : “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) [192.168.2.22] : Aqui onde definimos o servidor que vai fazer a resolução de nomes externos, pois os nomes de máquina internos vão ser resolvidos pelo SAMBA_INTERNAL
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.
Existem mais alguns passos para colocarmos nosso samba a funcionar a todo vapor :D
Copiar o krb5.conf para o local correto:
cp /usr/local/samba/private/krb5.conf /etc/
Criar alguns links para funcionando do winbind:
ln -s /usr/local/samba/lib/libnss_winbind.so.2 /lib/libnss_winbind.so
ln -s /lib/libnss_winbind.so /lib/libnss_winbind.so.2
ln -s /usr/local/samba/lib/libnss_winbind.so.2 /lib64/libnss_winbind.so
ln -s /lib/libnss_winbind.so /lib64/libnss_winbind.so.2
E ajustarmos o mecanismo de autenticação do Linux (CentOS) para usar as contas do samba também:
vim /etc/nsswitch.conf
Vai ficar assim:
passwd: files sss winbind
group: files sss winbind
Agora só precisamos fazer um script para manejar o samba através do SystemD
vim /lib/systemd/system/samba-dc.service
[Unit]
Description= Samba 4 Active Directory
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
LimitNOFILE=16384
ExecStart=/usr/local/samba/sbin/samba -D
ExecReload=/usr/bin/kill -HUP $MAINPID
PIDFile=/usr/local/samba/var/run/samba.pid
[Install]
WantedBy=multi-user.target
Agora podemos habilitar ele na inicialização do sistema:
systemctl enable samba-dc
E por fim iniciar o serviço:
systemctl start samba-dc
Bônus:
Se você não quer desativar o Selinux e o Firewall segue os passos abaixo pra não ser atrapalhado pelos dois:
Firewall:
firewall-cmd –permanent –add-service=samba
firewall-cmd –reload
Selinux:
- instalar o pacote policycoreutils-python-utils
yum install policycoreutils-python-utils
- executar os comandos abaixo:
setenforce 0
cd /tmp
grep denied /var/log/audit/audit.log > selinuxloginfails
audit2allow -M samba4 -i selinuxloginfails
semodule -i samba4.pp
setenforce 1
Era isso por enquanto pessoal, deixe nos comentários sugestões, correções ou opiniões sobre esse tutorial, quem sabe sai um vídeo mostrando como eu fiz ele aqui pra vocês :P