Instalando Samba 4 com Domínio no CentOS 7

Neste trabalho vamos criar um servidor de domínio utilizando o CentOS 7. Instalaremos o serviço Samba na versão 4, que substitui o conhecido Active Directory® do Windows. Também será utilizado para autenticação do Windows instalado nas máquinas clientes.

[ Hits: 14.092 ]

Por: Osias em 21/10/2019


Introdução



Configuração

Instale o repositório EPEL mais atualizado possível:

# rpm -ivh http://mirror.globo.com/epel/7/x86_64/e/epel-release-7-10.noarch.rpm

Atualize o sistema:

# yum -y update

Instale os pacotes necessários do sistema:

# yum -y install wget vim net-tools open-vm-tools
# yum -y groupinstall 'Development Tools'

Configuração do nome da máquina:

# vim /etc/hostname

nomedamaquina

Configurando o sysconfig/network:

# vim /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=nomedamaquina

Desabilitando o SElinux e IPtables

Para não complicar muito as coisas nesse momento e como estamos fazendo em um ambiente de controle e de teste, vamos desabilitar o SELinux e o Firewall.

# vim /etc/selinux/config

SELINUX=disabled

# systemctl stop firewalld
# systemctl disable firewalld

Reinicie a máquina:

# init 6

Preparando para a instalação do Samba4

Nesta seção, iremos preparar o ambiente para que o Samba4 seja instalado como controle de configuração do CentOS 7. Instale o repositório EPEL, mais atualizado possível:

# rpm -ivh http://mirror.globo.com/epel/7/x86_64/e/epel-release-7-10.noarch.rpm

Atualize o sistema:

# yum -y update

Instale os pacotes necessários do sistema:

# yum -y install wget vim net-tools open-vm-tools
# yum -y groupinstall 'Development Tools'

Configuração do nome da máquina:

# vim /etc/hostname

nomedamaquina

Configurando o sysconfig/network:

# vim /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=nomedamaquina

Para não complicar muito as coisas nesse momento e como estamos fazendo em um ambiente controla e de teste, vamos desabilitar o SELinux e o Firewall.

# vim /etc/selinux/config

SELINUX=disabled

# systemctl stop firewalld
# systemctl disable firewalld

Reinicie a máquina:

# init 6

O CentOS 7 não possui todos os pacotes necessários para compilação do Samba4 com suporte a Active Directory, por isso devemos baixar os pacotes.

Instalando pacotes necessários para a instalação do Samba4:

# yum install -y openldap-devel pam-devel git gcc make wget libacl-devel libblkid-devel gnutls-devel readline-devel python-devel cups-devel libaio-devel quota-devel ctdb-devel krb5-devel krb5-workstation acl setroubleshoot-server setroubleshoot-plugins policycoreutils-python libsemanage-python setools-libs-python setools-libs popt-devel libpcap-devel libidn-devel libxml2-devel libacl-devel libsepol-devel libattr-devel keyutils-libs-devel cyrus-sasl-devel cups-devel bind-utils bind-sdb bind-devel bind-libs bind avahi-devel mingw32-iconv gamin libcap-devel rpc2-devel glusterfs-devel python-dns pkgconfig gdb e2fsprogs-devel zlib-devel sqlite-devel perl attr acl krb5-user ntp bind bind-sdb attr bind-utils docbook-style-xsl gcc gdb krb5-workstation libsemanage-python libxslt perl perl-ExtUtils-MakeMaker perl-Parse-Yapp perl-Test-Base pkgconfig policycoreutils-python python-crypto gnutls-devel libattr-devel keyutils-libs-devel libacl-devel libaio-devel libblkid-devel libxml2-devel openldap-devel pam-devel popt-devel python-devel readline-devel zlib-devel systemd-devel tdb-tools

Configurando o arquivo "hosts":

# vim /etc/hosts

192.168.40.70 inf.infstorage.local inf

Configurando "fstab":

# vim /etc/fstab

defaults,acl,user_xattr

# mount -o remount /

Configurando NTP

O NTP (Network Time Protocol) é um protocolo de rede baseado no TCP/IP. Ele é usado para sincronizar o relógio dos computadores conectados a uma rede de dados de maneira precisa. A real necessidade disso é superar aos problemas causados pela latência, os quais colocam quaisquer registros sob desconfiança.

# vim /etc/ntp.conf

server a.ntp.br
server b.ntp.br
server c.ntp.br
server a.st1.ntp.br
server b.st1.ntp.br
server c.st1.ntp.br

# systemctl enable ntpd
# systemctl restart ntpd

Baixando o pacote do Samba4:

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

Configurando o "resolv.conf":

# vim /etc/resolv.conf

search infstorage.local
domain infstorage.local
nameserver 127.0.0.1

Configurando o krb5.conf

Kerberos é um protocolo desenvolvido para fornecer poderosa autenticação em aplicações usuário/servidor, onde ele funciona como a terceira parte neste processo, oferendo autenticação ao usuário.

# mv /etc/krb5.conf /etc/krb5.conf.old
# vim /etc/krb5.conf

[libdefaults]
        default_realm = INFSTORAGE.LOCAL
        dns_lookup_realm = false
        dns_lookup_kdc = true

Extraindo e copilando o pacote:

# tar zxvf samba-4.8.2.tar.gz
# cd samba-4.8.2
# ./configure
# make
# make install

Provisionando o Samba4

Provisionamento do domínio em que serão utilizadas ferramentas automatizadas do próprio Samba para preparar nosso servidor como controlador do domínio. A principal ferramenta é o comando "samba-tool", que serve como frontend responsável por manipular o OpenLDAP.

# /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 -interactive
Realm [INFSTORAGE.LOCAL]
Domain [INFSTORGE]:
Server Role (dc, member, standalone) [dc]:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_DLZ
Administrator password:
Retype password:


Verificar se o Samba subiu normalmente:

# /usr/local/samba/sbin/samba
# ps uax | grep samba

Script de inicialização do Samba4

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 e o Samba possa subir automaticamente.

# vim /etc/systemd/system/samba.service

[Unit]
Description=Samba AD Daemon
After=syslog.target network.target
[Service]
Type=forking
NotifyAccess=all
PIDFile=/usr/local/samba/var/run/samba.pid
LimitNOFILE=16384
EnvironmentFile=-/etc/sysconfig/samba
ExecStart=/usr/local/samba/sbin/samba -D
ExecReload=/usr/bin/kill -HUP $MAINPID
ExecStop=/usr/bin/killall samba
Restart=on-failure
[Install]
WantedBy=multi-user.target

Configurando o DNS

Um Active Directory funcional baseia-se fortemente em um DNS funcional. Não é apenas para resolver endereços IP em nomes e vice-versa. Os clientes encontram seus controladores de domínio e outros serviços importantes do AD por meio de consultas DNS, isso significa que seus clientes devem usar seus controladores de domínio como seus servidores de nomes.

Acessando o "named.conf", altere ou insira:

# vim /etc/named.conf

options{
   tkey-gssapi-keytab "/usr/local/samba/private/dns.keytab";
      listen-on port 53 { 127.0.0.1; 192.168.40.70;};
      forwarders {
                200.175.182.139;
                8.8.8.8;
        };
}

include "/usr/local/samba/bind-dns/named.conf";
zone "70.168.192.in-addr.arpa" {
    type master;
    file "/var/named/192.168.70.rev";
    allow-update {
     none;
        };
                };

Verificar a versão do "named":

# named -v
# vim /usr/local/samba/bind-dns/named.conf

Retire a opção # da versão do named.

Reinicie o "named":

# systemctl restart named

Testando o Samba4:

# host -t SRV _ldap._tcp.infstorage.local.
# host -t SRV _kerberos._udp. infstorage.local.
# host -t A infstorage.local

Gerando chave do Kerberos:

# kinit administrator

Verificando a chave:

# klist -e

Atualizando o DNS:

# /usr/local/samba/sbin/samba_dnsupdate –verbose

Referências


   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

Virtual Host no CentOS 7

Leitura recomendada

Serviço alternativo de baixo custo: Samba + Windows XP + registros de bloqueio

Enrolado para configurar o Samba? Chame o SWAT

Compartilhando pastas com Samba no Slackware - muito simples!

Solução para Samba e Fedora 5 com HD serial ATA

Samba 4 - Configurado para reportar a diferentes redes

  
Comentários
[1] Comentário enviado por l0g1in em 22/10/2019 - 16:39h

Boa tarde amigo, utilizou como backend de dns o bind9_dlz ele está atualizando os registros dinamicamente colocando já adicionando os computador nas zonas dns.

[2] Comentário enviado por luafeitosa em 12/03/2020 - 19:59h

Estou com um erro dnsupdate na hora de start do samba
systemctl status samba.service


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts