quarta-feira, 23 de outubro de 2019

Instalando Samba 4 com Domínio no CentOS 7

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