Mostrando postagens com marcador SAMBA. Mostrar todas as postagens
Mostrando postagens com marcador SAMBA. Mostrar todas as postagens

quarta-feira, 2 de novembro de 2016

Controlador de Domínio do SAMBA 4 no Debian GNU/Linux

Olá Pessoal,

Em outro artigo intitulado "Configuração Básica do SAMBA em Servidores Linux" o leitor passou pela experiência básica de como fazer o simples compartilhamento de diretórios e arquivos através do SAMBA para integrar ambientes heterogêneos com máquinas Linux e Windows. No entanto, é importante destacar que o SAMBA 4 vai muito além do simples compartilhamento e permite que o servidor Linux assuma o papel de controlador de domínio (DC). Assim é possível ingressar máquinas Windows no serviço de diretório do servidor Linux para que a gerência dos objetos de um domínio (computadores, contas de usuários, políticas, etc) seja centralizada sem a necessidade do MS Windows Server, o que implica em economia na licença do sistema operacional do servidor e também da quantidade de clientes da rede (CAL).




O objetivo deste artigo é listar as etapas necessárias para instalar o SAMBA 4 (e seus complementos) para transformar um servidor Debian GNU/Linux no controlador do domínio denominado AULA.LOCAL. Nesse exemplo assumiremos que nosso controlador de domínio será configurado com o IP 192.168.221.1/24. Uma etapa preliminar é definir estaticamente no arquivo /etc/hosts o mapeamento do nome do servidor que posteriormente será configurado como controlador de domínio. Nessa etapa criaremos um mapeamento estático (NOME<>IP) em que o nome da máquina já será composto com o sufixo do domínio (FQDN) que será utilizado posteriormente. Por causa desse mapeamento o SAMBA irá sugerir o nome de domínio AULA.LOCAL durante sua instalação. 

###--- em /etc/hosts -------------------------
127.0.0.1       localhost
192.168.221.1   samba-dc   samba-dc.aula.local
###--- fim do arquivo ------------------------

1) Instalação do Servidor SAMBA DC

Assim como nos artigos anteriores, estou considerando que o servidor está instalado com a distribuição Debian GNU/Linux (ou seus derivados, como o Ubuntu). A primeira etapa consiste na instalação do pacote denominado samba para que o Linux possa ser posteriormente configurado como controlador de domínio. Também é necessário instalar vários pacotes com outros serviços, a exemplo do DNS (winbind), do Kerberos (krb5-user), etc. Apesar de ser bastante coisa, essa tarefa é simples e rápida através do APT:

root@samba-dc:/# apt-get update
root@samba-dc:/# apt-get install samba smbclient ntp krb5-user winbind ldap-utils acl attr

Durante a instalação irá aparecer um diálogo (modo texto) solicitando 3 informações:

- Nome do Domínio                               : AULA.LOCAL
- Endereço do Servidor Kerberos de Autenticação : 127.0.0.1
- Endereço do Servidor Administrativo           : 127.0.0.1

2) Configuração do NTP p/ Sincronização do Relógio das Máquinas

A próxima etapa é fazer alguns ajustes no serviço NTP responsável pela sincronização do relógio da máquina que será responsável por sincronizar os relógios de todas as demais máquinas do domínio. Depois de criado o diretório ntp_signd com as devidas permissões, é necessário adicionar algumas linhas ao final do arquivo de configuração localizado em /etc/ntp.conf.

root@samba-dc:/# install -d /var/lib/samba/ntp_signd/
root@samba-dc:/# chown root:ntp /var/lib/samba/ntp_signd
root@samba-dc:/# chmod 750 /var/lib/samba/ntp_signd/

###--- em /etc/ntp.conf ------------------------
(...) Conteúdo Omitido
### Adicionar Configuracoes Abaixo p/ SAMBA 4 DC
ntpsigndsocket /var/lib/samba/ntp_signd/
restrict default mssntp
disable monitor
###--- fim do arquivo --------------------------

Depois desses ajustes, basta reiniciar o serviço NTP:

root@samba-dc:/# service ntp restart

O status do serviço NTP pode ser verificado através dos seguintes comandos:

root@samba-dc:/# service ntp status
root@samba-dc:/# ntpq -p

3) Parada de Serviços em Execução

Antes de fazer a configuração do domínio propriamente dito através do processo de provisionamento do SAMBA, é necessário parar serviços que são automaticamente executados logo depois da instalação dos pacotes, além de "remover" o arquivo original de configuração do SAMBA (/etc/samba/smb.conf):

root@samba-dc:/# service smbd stop
root@samba-dc:/# service nmbd stop
root@samba-dc:/# service winbind stop
root@samba-dc:/# mv /etc/samba/smb.conf /etc/samba/smb.conf.bak

4) Provisionamento do Domínio

Uma das etapas mais importantes é o provisionamento do domínio em que serão utilizadas ferramentas automatizadas do próprio SAMBA para preparar nosso servidor como controlador do domínio AULA.LOCAL. A principal ferramenta é o comando samba-tool que serve como frontend responsável por manipular o OpenLDAP (backend), simplificando muito a tarefa de configuração. 

root@samba-dc:/# samba-tool domain provision --use-rfc2307 --interactive

Ao digitar o comandoo sistema irá indagá-lo e sugerir as seguintes configurações que podem ser aceitas através da tecla <ENTER>:

- Realm                       [AULA.LOCAL] 
- Domain                      [AULA]
- Server Role                 [DC]
- DNS Backend                 [SAMBA_INTERNAL]
- DNS Forwarder IP Address    (IP do DNS da REDE)
- Administrator Password      (SENHA FORTE)

Obs.: Os parâmetros trazidos nas chaves [] são sugeridos pelo samba-tool e podem ser aceitos. O servidor DNS integrado ao controlador de domínio será responsável pelos mapeamentos dos nomes na rede interna, de forma que todas as máquinas Windows a serem ingressadas no domínio devem ser configuradas para apontar seu DNS primário para o IP do servidor SAMBA (192.168.221.1). Caso exista(m) outro(s) servidor(es) DNS na rede (por ex. BIND), responsável por exemplo pelo mapeamento de nomes externos, pode ser feito o apontamento através do DNS Forwarder.

5) Ajustes Finais

É hora de fixar as configurações de DNS do servidor no arquivo /etc/resolv.conf e aplicar a característica de imutabilidade (+i) no mesmo para que seu conteúdo não seja mais dinamicamente atualizado. Também vamos copiar o template do arquivo de configuração do Kerberos que vem com o pacote samba (/var/lib/samba/private/krb5-conf) para o diretório /etc para que a autenticação no domínio possa funcionar. Por fim, vamos reiniciar o serviço do SAMBA como controlador de domínio.

###--- em /etc/resolv.conf ---
search aula.local
nameserver 192.168.221.1
###--- fim do arquivo --------

root@samba-dc:/# chattr +i /etc/resolv.conf
root@samba-dc:/# cp /var/lib/samba/private/krb5.conf /etc
root@samba-dc:/# service samba-ad-dc restart

6) Verificação

A primeira maneira de verificar se o SAMBA está em execução é:

root@samba-dc:/# service samba-ad-dc status
Active: active (running) since (...) 

Para fazer uma verificação mais apurada, vale testar a resolução de nomes internos de alguns registros automaticamente criados pelo controlador de domínio, além de testar a resolução de nomes externos:

root@samba-dc:/# host -t A aula.local
aula.local has address 192.168.221.1

root@samba-dc:/# host -t SRV _kerberos._udp.aula.local
_kerberos._udp.aula.local has SRV record 0 100 88 samba-dc.aula.local

root@samba-dc:/# host -t SRV _ldap._tcp.aula.local
_kerberos._tcp.aula.local has SRV record 0 100 88 samba-dc.aula.local

root@samba-dc:/# host www.debian.org
www.debian.org has address 200.17.202.197
www.debian.org has IPv6 address 2801:82:80ff:8009:e61f:13ff:fe63:8388

Finalmente vamos testar a autenticação do Kerberos:

root@samba-dc:/# kinit administrator@AULA.LOCAL
Password for administrator@AULA.LOCAL: <Senha do Administrador do Domínio>
Warning: Your password will expire in 41 days on (...)

root@samba-dc:/# klist
(...) Informações de Validade do Ticket (Kerberos)


7) Administração do Domínio

Pronto, o servidor SAMBA já está em operação como controlador do domínio AULA.LOCAL. A partir deste ponto o domínio pode ser administrador via interface de linha de comando (CLI) através da ferramenta samba-tool. São várias as opções para administração do domínio via samba-tool, por isso é recomendada a leitura do manual da ferramenta (man samba-tool). Abaixo trago uma breve relação de alguns dos comandos mais comuns:

samba-tool user list                  ### exibe todos os usuários do domínio
samba-tool user add <NOME>            ### adiciona um novo usuário
samba-tool user del <NOME>            ### remove um usuário existente
samba-tool user enable <NOME>         ### habilita um usuário desabilitado
samba-tool user disable <NOME>        ### desabilita uma conta de usuário

Caso algum usuário esqueça sua senha, o coomando abaixo pode ser utilizado para resetá-la de forma que o usuário seja obrigado a alterá-la no próximo login:

samba-tool user NOME --newpassword=SENHA --must-change-at-next-login  

Outra opção bastante atrativa é utilizar a ferramenta RSAT (Remote Server Administration Tools) que pode ser baixada gratuitamente na página da Microsoft e instalada em qualquer máquina executando o Windows (versões 7, 8 ou 10). A vantagem dessa abordagem é que a administração do domínio é feita pela mesma interface gráfica das tradicionais Ferramentas Administrativas do Windows Server, aproveitando todo o conhecimento do administrador. O RSAT pode ser baixado através dos links abaixo:

- Windows 7: https://www.microsoft.com/pt-br/download/details.aspx?id=7887 
- Windows 8: https://www.microsoft.com/pt-br/download/details.aspx?id=28972
- Windows X: https://www.microsoft.com/pt-BR/download/details.aspx?id=45520

Obs.: Depois de baixado o RSAT deve ser instalado no Windows e manualmente adicionado como recurso extra. Nos links oficiais da Microsoft onde o RSAT pode ser baixado o leitor encontra as instruções para instalação da ferramenta. 

Façam seus testes...

Samuel.

sexta-feira, 10 de julho de 2015

Configuração Básica do SAMBA em Servidores Linux

Olá Pessoal.

O SAMBA é uma suíte de ferramentas instaladas em um servidor Linux que permite a integração de ambientes heterogêneos através da comunicação entre sistemas Linux e Windows, viabilizando serviços de diretórios no Linux (controlador de domínio), o controle de acesso dos usuários, compartilhamento de arquivos e de impressoras, etc. A integração é possível porque em ambos os sistemas a comunicação é baseada no protocolo SMB/CIFS (Server Message Block / Common Internet File System).


# Configuração do Servidor SAMBA

Assim como nos artigos anteriores, estou considerando que o servidor está instalado com a distribuição Debian GNU/Linux (ou seus derivados, como o Ubuntu). A primeira etapa consiste na instalação do pacote denominado samba para que o Linux possa ser posteriormente configurado como servidor de arquivos para clientes Windows e Linux. Essa tarefa é simples e rápida através do APT:

root@smb-server:/# apt-get install samba

Para exemplificar o processo de compartilhamento de diretórios no servidor com os demais clientes da rede, vamos criar os diretórios "/smb/publico" (acesso total público) e também "/smb/privado" (acesso restrito ao usuário shbbrito):

root@smb-server:/# mkdir -p /smb/publico
root@smb-server:/# chown nobody.nogroup /smb/publico
root@smb-server:/# chmod 777 /smb/publico

root@smb-server:/# mkdir -p /smb/privado
root@smb-server:/# chown shbbrito.shbbrito /smb/privado
root@smb-server:/# chmod 750 /smb/privado

O arquivo de configuração do SAMBA fica lozalicado em "/etc/samba/smb.conf", sendo bem documentado e organizado em diferentes seções para facilitar sua configuração. O simples compartilhamento de diretórios (objeto deste artigo) é realizado através da inserção de novos diretórios entre colchetes na seção denominada "Share Definitions", como pode ser observado no exemplo abaixo.

###--- em /etc/samba/smb.conf

(...) Conteúdo Omitido

workgroup = SAMBA
interfaces 192.168.221.11/24 ethX
bind interfaces only = yes
server role = standalone server
passdb backend = smbpasswd

######### Share Definitions

[smb-publico]
   comment = "Diretorio Publico"
   path = /smb/publico
   public = yes
   only guest = yes
   writable = yes
   printable = no

[smb-privado]
   comment = "Diretorio Privado (shbbrito)"
   path = /smb/privado
   public = no
   only guest = no
   valid users = shbbrito
   valid users = @shbbrito
   writable = yes
   printable= no

Obs.: Caso não haja integração do SAMBA com nenhum serviço de diretórios para fins de autenticação dos usuários, como é o caso deste exemplo em que o servidor é standalone, é necessário: (1) criar o arquivo de usuários reconhecidos pelo serviço, (2) limitar seu acesso para somente leitura e (3) adicionar os usuários que também devem existir previamente no servidor Linux.

root@smb-server:/# touch /etc/samba/smbpasswd
root@smb-server:/# chmod 644 /etc/samba/smbpasswd
root@smb-server:/# smbpasswd -a nome_do_usuario
Password: *****
Re-Type Password: *****

Depois de realizadas as configurações, basta (re)iniciar o serviço SAMBA:

root@smb-server:/# service smbd restart

# Configuração do Cliente Windows

Na realidade não há nenhum segredo a ser detalhado nessa seção. O acesso aos compartilhamentos do servidor SAMBA através de estações clientes que estejam executando alguma versão do Windows pode ser feito através da execução (atalho Windows+R) do endereço ou nome do servidor (\\192.168.221.11). Também é possível fazer o acesso direto a um diretório específico (\\192.168.221.11\smb-publico\) e mapear unidades de rede para facilitar o acesso do usuário.

# Configuração do Cliente Linux

De forma muito similar aos clientes Windows, em clientes Linux que tenham um ambiente gráfico é possível localizar os compartilhamentos através da simples navegação na rede ou mesmo através da navegação manual ao servidor, por ex.: smb://192.168.221.11. Na ocasião do acesso através de clientes que não tenham uma interface gráfica, o acesso pode ser realizado através da ferramenta smbclient.

01. apt-get install smbclient
02. smbclient -L 192.168.221.11
03. smbclient //192.168.221.11/smb-publico -U nome_usuario

Na linha 01 estamos instalando o cliente SAMBA (smbclient), caso não haja nenhum instalado na máquina. O comando da linha 02 (parâmetro -L) pode ser utilizado para visualizar os compartilhamentos disponibilizados pelo servidor que responde por um determinado nome ou IP. O acesso ao diretório propriamente dito é realizado na linha 03, sendo que na sequência o usuário será direcionado para um prompt SMB similar ao prompt do FTP. No prompt SMB o comando get é utilizado para baixar um arquivo remoto na máquina local, enquanto que o comando put é utilizado para subir um arquivo local no servidor remoto. Para obter mais detalhes dos outros comandos e da ferramenta smbclient, recomendo a leitura do seu manual através do comando "man smbclient".

Uma alternativa à manipualação dos arquivos compartilhados através do smbclient é montar localmente na máquina cliente o diretório remoto compartilhado pelo servidor. Esse procedimento pode ser realizado através do seguinte comando:

mount -t cifs //192.168.221.11/smb-publico /home/shbbrito/smb-publico -o username=shbbrito

Façam seus testes...

Samuel.