Sempre baixe a versão mais recente do Samba em www.samba.org. Para um máximo de segurança e estabilidade, a equipe do Samba recomenda que você instale apenas a versão mais recente disponível. As versões mais antigas não contêm os bugs e as correções de segurança mais recentes.
Usa o samba é mais do que suficiente para gerenciar empresas sofisticadas que usam o Windows 10/11 com requisitos de conformidade rígidos (incluindo NIST 800-171). Veja: Saiba o que é NIST(National Institute of Standards and Technology) e O que é NIST SP 800-171?
Esta documentação descreve como configurar o Samba como o primeiro DC a construir um novo AD. Se você estiver instalando o Samba em um ambiente de produção, é recomendável executar dois ou mais DCs por motivos de failover(redundância).
Porque Compilar o Samba ao Invés de Instalar?
Em algumas situações podemos compilar ao invés de instalar o Samba. Mas instalar usando ferramentas como yum, dnf, apt traz algumas desvantagens, como:
- Sua distribuição trará pacotes desatualizados ao invés da mais novos.
- poderá não existir nenhum pacote do samba disponível para nossa distro ou sistema operacional. A compilação serve para qualquer distro.
- você terá que depender do desenvolvedor do pacote para aplicar um patch para corrigir um problema antes que uma nova versão seja lançada
Baixando o Samba
Obs.: se o comando wgt não estiver instalado basta executar “apt install wget” ou “dnf install wget“
#1 Essa etapa é opcional. Primeiramente, irei criar uma pasta chamada downloads: mkdir ~/downloads
maria@debian12VM:~$ mkdir ~/downloads
Acesse a pasta criada: cd downloads
maria@debian12VM:~$ cd downloads
#2 Copie o comando abaixo e cole no terminal do Debian para baixarmos o Samba: wget https://download.samba.org/pub/samba/samba-latest.tar.gz
maria@debian12VM:~/downloads$ wget https://download.samba.org/pub/samba/samba-latest.tar.gz
#3 O Samba vem compactado pelo tar. O tar é um empacotador semelhante ao winrar, winzip… Execute o comando abaixo para descompactar o arquivo samba-latest.tar.gz: tar xf samba-latest.tar.gz
maria@debian12VM:~/downloads$ tar xf samba-latest.tar.gz
#4 foi gerada a pasta samba-4.18.3
Instalando os Requisitos para Samab 4.18.3 no Debian 12
Instale os requisitos abaixo.
sudo apt install acl attr autoconf bind9utils bison build-essential \ debhelper dnsutils docbook-xml docbook-xsl flex gdb libjansson-dev krb5-user \ libacl1-dev libaio-dev libarchive-dev libattr1-dev libblkid-dev libbsd-dev \ libcap-dev libcups2-dev libgnutls28-dev libgpgme-dev libjson-perl \ libldap2-dev libncurses5-dev libpam0g-dev libparse-yapp-perl \ libpopt-dev libreadline-dev nettle-dev perl perl-modules pkg-config \ python-dev-is-python3 python3-cryptography python3-dbg python3-dnspython \ python3-dnspython python3-gpg python3-markdown libdbus-1-dev \ xsltproc zlib1g-dev liblmdb-dev lmdb-utils -y
Irá aparecer 3 caixinhas perguntando sobre kerberos. Pode colocar qualquer coisa só para continuar, pois configuraremos de outro modo o kerberos.
Preparando o Debian antes de Compilar
O Debian precisa de alguns ajustes:
- Nome de domínio(domain name): escolha mentalmente um nome que será seu domínio. Ele deverá ser inserido nas configurações a seguir. Esse nome pode ser empresa.interno ou qualquer outro nome não acessível na internet, ou seja, que não funcione se colocado no navegador de internet. Por isso usamos .interno ou .lab ao invés de .com ou .com.br ou .org etc… Seja qual for o nome de domínio que você use, ele deve ser isolado, sem conexão com a Internet, não é uma boa ideia ter qualquer computador de domínio AD conectado diretamente à Internet.
- hostname:Nome de host(hostname) que nunca será alterado.
- endereço IP: Um endereço IP que nunca será alterado no futuro. Para isso coloque um IP estático, ou seja, não recebido via DHCP.
- /etc/hosts: configurar /etc/hosts para apontar o nome do host(hostname) para o ip do computador
- /etc/resolv.conf: edite esse arquivo. Colocaremos o ip e domínio aqui, conforme mais abaixo.
- O horário sempre ajustado: Para isso, configure um programa NTP para receber o horário da internet. Ou, opcionalmente, fique sempre de olho e ajuste manualmente. Ajustar manualmente sem usar NTP não é o recomendado, mas se estiver fazendo testes pode ser uma opção.
Então, os dados do servidor que usarei serão:
hostname: debian12VM
- Domínio: lab.interno
- IP: 192.168.50.2
Veja o conteúdo de cada arquivo relacionado:
Melhores Práticas para Nomes NetBios no Windows e Linux
# HOSTNAME
maria@debian12VM:~/downloads$ cat /etc/hostname debian11VM
Obs.: Não crie um hostname(nome do host) maior que 15 caracteres que comprometa o nome Netbios. Deixe-o sem pontos ou outros caracteres não permitidos, veja: Melhores Práticas para Nomes NetBios no Windows e Linux e esse outro link O que é NetBios(Network Basic Input/Output System) em Informática?
# DOMÍNIO e /ETC/HOSTS
maria@debian12VM:~/downloads$ cat /etc/hosts 127.0.0.1 localhost 192.168.50.2 debian11VM.lab.interno debian12VM
Aqui, o hostname(debian11VM) e o FQDN(nosso debian11VM.lab.local) não devem resolver ou apontar para o endereço IP 127.0.0.1 ou qualquer outro endereço IP diferente daquele usado na interface LAN do DC. Em nosso caso deve apontar para 192.168.50.2, conforme acima.
# IP em /etc/network/interfaces
maria@debian12VM:~/downloads$ cat /etc/network/interfaces source /etc/network/interfaces.d/* auto lo iface lo inet loopback allow-hotplug enp0s3 iface enp0s3 inet static address 192.168.50.2 gateway 192.168.50.1
# DNS em /etc/resolv.conf
maria@debian12VM:~/downloads$ cat /etc/resolv.conf search lab.interno domain lab.interno nameserver 192.168.50.2 nameserver 8.8.8.8
Compilando o Samba 4.18
Depois de configurado horário, nome de domínio, nome de host, fixado o IP, editado o /etc/hosts e o /etc/resolv.conf, chegou a hora de compilarmos o samba.
Compilar significa transformar, converter uma linguagem em linguagem de processador, uma linguagem que o processador entende. Compilar demora um pouco mas a vantagem de pegar um código fonte para compilar é que poderá ser usado em qualquer distro Linux. Evita o problema de ser compatível com uma distro e com outra não. Por exemplo, evita de ser compatível com o Debian e não com o Red Hat ou SUSE. Os programas .exe ou .deb ou .rpm são binários, ou seja, um código fonte já compilado pronto a ser instalado, mas destinado apenas a alguma(s) distro. Por exemplo, rpm funciona apenas no CentOS, Red Hat ou derivados e .deb em Debian, Ubuntu e derivados. A vantagem do binário é que tem instalação rápida.
Para compilar, geralmente, usamos 3 commandos:
- ./configure para preparar o ambiente, verifica se não falta nenhum requisito ou dependência.
- make para compilar
- make install para instalar o programa compilado
Acima, extraímos o conteúdo de samba-latest.tar.gz com o comando tar xf samba-latest.tar.gz e foi gerada a pasta samba-4.18.3
Vamos ao passo a passo
#1 dentro de /home/maria/downloads, entre na pasta samba-4.18.3 com: cd samba-4.18.3
maria@debian12VM:~/downloads$ cd samba-4.18.3
#2 agora, execute o comando ./configure
maria@debian12VM:~/downloads/samba-4.18.3$ sudo ./configure
ao término do configure você verá a mensagem abaixo:
..... Checking if compiler accepts -fstack-clash-protection yes 'configure' finished successfully (1m12.709s)
#3 execute make
maria@debian11VM:~/downloads/samba-4.18.3$ sudo make
Uma mensagem aparecida com a abaixo dirá que tudo ocorreu bem:
Waf: Leaving directory `/root/downloads/samba-4.18.3/bin/default' 'build' finished successfully (19m39.666s)
#4 agora execute make install
maria@debian12VM:~/downloads/samba-4.18.3$ sudo make install
Se ver essa mensagem ao final é porque deu tudo certo:
Waf: Leaving directory `/root/downloads/samba-4.18.3/bin/default' 'install' finished successfully (6m30.813s)
Provisionando o Samba 4.18 no Debian 12
Iremos transformar o servidor debian12Vm em um AD(Active Directory). Para isso temos que provisionar o samba instalado nele.
Veja esses links relacionaos:
- O que é um Servidor Controlador de Domínio?
- Qual Diferença Entre DC e AD em Informática?
- O que é a Pasta SYSVOL em Servidores?
O processo de provisionamento do Samba AD cria os bancos de dados do AD e adiciona registros iniciais, como a conta do administrador do domínio e as entradas DNS necessárias.
O Samba vem com uma ferramenta de linha de comando integrada chamada samba-tool que pode ser usada para configurar automaticamente seu smb.conf quando executado no modo interativo.
#1 acesse a pasta onde o samba foi instalado
maria@debian12VM:~$ cd /usr/local/samba/
#2 execute: ./bin/samba-tool domain provision
Obs.: Se o seu servidor tiver várias interfaces de rede, ou seja, diversas entradas para conectar cabos de rede, use essas opções junto com o samba-tool domain provision para vincular o Samba às interfaces especificadas: –option=”interfaces=lo eth0″ –option=”bind interfaces only=yes”
Execute o comando abaixo para provisionar
maria@debian12VM:/usr/local/samba$ sudo ./bin/samba-tool domain provision
preencha as solicitações. Podemos dar Enter em quase todas, menos no DNS forwarder IP address que colocaremos o dns do google(8.8.8.8). Não se preocupe se deu enter aqui também, pois conseguiremos colocar o dns forwarder depois quando configurarmos o smb.conf
[sudo] senha para maria: Realm [LAB.INTERNO]: Domain [LAB]: Server Role (dc, member, standalone) [dc]: DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: DNS forwarder IP address (write 'none' to disable forwarding) [192.168.50.2]: 8.8.8.8 Administrator password: Retype password:
Obs.: Acima, provisionamos o samba usando apenas samba-tool domain provision, mas é recomendado usar samba-tool domain provision –use-rfc2307. O –use-rfc2307 Ativa as extensões NIS necessárias para a guia ADUC Unix Attributes. Não há desvantagens em habilitar as extensões NIS, mas habilitá-las depois, em um domínio já existente, requer a alteração manual do esquema AD.
Vamos entender parte das solicitações acima que respondemos:
- Realm é o Kerberos realm(reino). A versão em maiúsculas do domínio AD DNS. Por exemplo: LAB.INTERNO. Esse é nome do domínio(proteção) da nossa rede. Um domínio é uma área protegida. Nossa área protegida passa a se chamar LAB.INTERNO e qualquer pc ou dispositivo terá que ter acesso à essa área com senhas, tickers kerberos… Veja: Para que Serve um Domínio?
- Domain Nome de domínio NetBIOS (workgroup). Pode ser qualquer coisa, mas deve ser uma palavra, com no máximo 15 caracteres e sem ponto. Recomenda-se usar a primeira parte do domínio AD DNS. Por exemplo: LAB. Não use o nome do computador!
- Server Role Instalamos a função DC do controlador de domínio. Veja O que é NetBios e Melhores Práticas para Nomes NetBios
- DNS backend usamos um servidor DNS interno(próprio) do Samba. Outra explicação é: Define o back-end do DNS. O primeiro DC em um AD deve ser instalado usando um back-end de DNS.
- DNS forwarder IP address Se o DNS interno do samba não souber(não ser autoridade) traduzir um certo nome em ip qual outro servidor DNS ele deverá entrar em contato? Aqui colocamos o google(8.8.8.8). Essa configuração só está disponível ao usar o back-end DNS SAMBA_INTERNAL, como é o nosso caso.
- Administrator password Cria a senha do administrador do domínio. Se a senha não corresponder aos requisitos de complexidade, o provisionamento falhará. O nome do usuário é administrator.
Poderíamos usar o comando samba-tool de forma não interativa, assim:
samba-tool domain provision –server-role=dc –use-rfc2307 –dns-backend=SAMBA_INTERNAL –realm=LAB.INTERNO –domain=LAB –adminpass=suaSenha
Configurando o Kerberos para o Samba
o Kerberos é usado para autenticar usuários, máquinas e serviços.
Durante o provisionamento, o Samba criou um arquivo de configuração Kerberos para seu controlador de domínio. Precisamos copiar ele para /etc/
cp /usr/local/samba/private/krb5.conf /etc/krb5.conf
Inicie o samba
Para iniciar o samba execute:
sudo /usr/local/samba/sbin/samba
Se quiser parar, execute:
sudo killall samba
Validando a Compilação do Samba
Para validar as configurações realizadas acima posto link para outro artigo; se postasse aqui acabaria ficando um artigo muito longo.
Segue link: Testando e Validando o Samba que Compilamos
Mas você pode fazer um teste simples. Em um pc com Windows, Abra o Windows Explorer e digite o ip do seu servidor. Irá aparecer os compartilhamentos do samba: