Escolar Documentos
Profissional Documentos
Cultura Documentos
1º SGT ANCELMO
1/26
SUMÁRIO
Samba: Visão geral e Histórico
Grupos de Trabalho x Domínios
Conceitos, Arquitetura e Design
Configuração do Samba
Samba em Grupos de Trabalho
Servidores PDCs, BDCs e Domain Members
Configuração de um servidor PDC
Manipulação de Usuários e Grupos
ACLs
PDC com Autenticação Centralizada
Winbind
2/26
HISTÓRICO
NetBIOS
Endereçamento de estações por nome
Co-Desenvolvido pela IBM e Sytec
Interface entre programas e hardware de rede
Redirecionamento de I/O adicionado pela Microsoft e criação do SMB (CIFS)
Posteriormente foi adicionado o serviço de anúncio (Browsing) e de autorização e
autenticação central
3/26
FUNCIONAMENTO
Daemons Distintos
Smbd e Nmbd
SMBD
Autorização e Autenticação
Compartilhamentos
Acesso aos compartilhamentos
Portas: 139 e 445 (TCP)
139: SMB sobre NetBIOS sobre TCP
445: SMB sobre TCP (sem encapsulamento)
NMBD
Resolução de Nomes
Broadcast
Ponto-a-ponto
Browsing
Portas: 137 e 138 (UDP)
137: Browsing, replicação de informações de diretório, netlogon, relações de confiança,
canal de comunicação seguro (WinNT Secure Channel)
138: Comunicação de datagramas NetBIOS
Resolução de Nomes
Broadcast
Mecanismo Original
Envio de solicitações para a rede
Ponto-a-Ponto
Estações se registram com um servidor NBNS (NetBIOS Name Service)
Registro de Nome → Endereço
4/26
Browsing
Eleição de um LMB (Local Master Browser)
LMB mantém uma lista de serviços oferecidos
Além de LMBs, podem existir DMBs (Domain Master Browsers)
DMBs coordenam LMBs em redes e domínios diferentes
WINS
Configurado manualmente
Mantém lista de serviços
5/26
FUNCIONAMENTO NetBIOS
Modos de Funcionamento
b-node (tipo 0x01): Apenas broadcast NetBIOS através de UDP
p-node (tipo 0x02): Apenas Unicast NetBIOS (Ponto-a-Ponto) direcionado a um WINS
m-node (tipo 0x04): Broadcast + Wins
h-node (tipo 0x05): Wins + Broadcast
Padrão: b-node
Nomes NetBIOS
16 caracteres, 16 bytes
15 caracteres ASCII
1 caractere como sufixo NetBIOS (MS)
Eleições LMB
Maior OS Level
Opção Preferred Master
Uptime (tempo online)
Nome NetBIOS (ordem alfabética)
Grupos de Trabalho
Autenticação Descentralizada
Estações contém listas próprias de autenticação e autorização
Configuração simples
Difícil manutenção em redes maiores
Domínios
Servidor centralizado de autenticação e autorização
6/26
INSTALAÇÃO
Arquivos principais
/etc/Samba/smb.conf: Arquivo de configuração principal
/var/lib/Samba/*.tdb: Bases de armazenamento de dados do Samba
O Samba armazena os dados em bases .tdb, o “Trivial Database”, que aceitam múltiplas
escritas simultaneamente
7/26
ARQUIVOS TDB
Persistentes
Temporários
8/26
Gerenciamento
Pacote tdb-tools
tdbbackup
Backup das bases .tdb
tdbdump
Mostra o conteúdo de um .tdb
tdbtool
Permite a edição de bases, verificação de integridade e realização de testes
Efetuar backup
tdbbackup [nome do arquivo]
# tdbbackup /var/lib/Samba/passdb.tdb
Visualizando Pacotes
Pode-se visualizar o tráfego NetBIOS capturando-se o tráfego UDP:# tcpdump -nvvi eth0
udp and not port 53
9/26
CONFIGURAÇÃO
smb.conf
Arquivo de configuração principal
Dividido em seções (stanzas)
Seções representam compartilhamentos ou meta-serviços
Pode ser editado manualmente ou através de ferramentas como o SWAT
Sintaxe análoga aos arquivos .ini do Windows
[Compartilhamento]
[global]
workgroup = GRUPO
netbios name = MAQUINA
[compartilhamento]
path = /tmp
Tipos de Servidor
Controlador de Domínio
Primary Domain Controller (PDC)
Backup Domain Controller (BDC)
Active Directory Server Domain Controller
Membro de Domínio
AD Domain Server
NT4 Domain Server
Servidor Standalone
10/26
Modos de Segurança
Negociado no estabelecimento da sessão
Servidor informa modos suportados
Cliente seleciona o modo
Implementações Disponíveis
User (padrão)
Share
Domain (variação de User)
ADS (variação de User)
security = user
Cliente envia usuário e senha
Servidor verifica credenciais e nome da máquina cliente
Cliente monta compartilhamentos sem enviar novamente usuário e senha
Não é feita nova autenticação para acessar recursos
security = share
Cliente se autentica a cada solicitação (montagem de compartilhamento)
Cliente envia a senha
Usuário não é explicitamente informado
O servidor verifica a senha recebida contra cada usuário definido no compartilhamento
Atualmente “deprecated”
security = domain
Baseado em segurança a nível de usuário
Fornece autenticação centralizada
Servidor possui uma relação de confiança
Samba participará de um domínio como:
• PDC – Primary Domain Controller
• BDC – Backup Domain Controller
• DMS – Domain Member Server
É necessário ingressar no domínio
11/26
security = ADS
Baseado em segurança a nível de usuário
Permite que o Samba ingresse em domínios Active Directory rodando em modo nativo
Necessária a utilização de Kerberos
security = server
Baseado em segurança a nível de usuário
Samba tenta efetuar log in no password server com as credenciais recebidas
Altamente recomendado não utilizar este modo
Possibilidade de lockout de senha
Não há garantia quanto ao password server
Causa conexões persistentes
Outras diretivas:
workgroup: Nome do grupo de trabalho ou domínio
netbios name: Nome NetBIOS do servidor
security: Altera como os clientes se conectam ao servidor
domain master: Configura o smbd para agir como master browser
preferred master: Faz com que o nmbd force eleições para master browser
domain logons: Configura o Samba para fornecer serviços de netlogon, agindo como um
controlador de domínio
12/26
CONFIGURAÇÃO
Macros (Variáveis)
Valores especiais que são preenchidos em tempo de execução
Úteis para definições de ACLs
Ferramentas
Configuração simples
Fazer backup do Samba
Criar um novo /etc/Samba/smb.conf
Testar a configuração com o testparm
Reiniciar os daemons smbd e nmbd
Verificar se os daemons estão rodando e escutando nas portas esperadas:
# ps -Af | grep -E '(smbd|nmbd)'# netstat -ntpul | grep mbd
13/26
USANDO O SMBCLIENT
Listar compartilhamentos
$ smbclient -L localhost
Enter usuario's password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.5.6]
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
tmp Disk temporary path
IPC$ IPC IPC Service (Ubunbox server (Samba, Ubuntu))
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.5.6]
Server Comment
--------- -------
UBUNBOX Ubunbox server (Samba, Ubuntu)
Workgroup Master
--------- -------
WORKGROUP
Acessando um compartilhamento
$ smbclient '\\ubunbox\tmp'
Enter usuario's password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.5.6]
smb: \>
Obtendo um arquivo
smb: \> get arquivo
getting file \arquivo of size 6 as arquivo (0,4 KiloBytes/sec) (average 0,3 KiloBytes/sec)
Enviando um arquivo
smb: \> put arquivo2
putting file arquivo2 as \arquivo2 (0,7 kb/s) (average 0,7 kb/s)
14/26
Samba STANDALONE
Vantagens
Flexível
Configuração Simples
Desvantagens
Autenticação local
Visão Geral
Autenticação e Controle de Acesso Local
Recursos disponibilizados em modo “share” ou “user”
Não fornecem serviço netlogon
Autenticação Local
2 usuários: Samba + sistema
Database de usuários local:/var/lib/Samba/passdb.tdb
[anon]
path = /tmpbrowseable = yesguest ok = yes
15/26
DOMÍNIOS
Domínios NT4
SSO – Single Sign On
Identificados por SIDsS-1-5-21-726309263-4128913605-1168186429
Objetos possuem RIDsRID do usuário Administrador: 500
ACLs baseadas em SID+RIDS-1-5-21-726309263-4128913605-1168186429-500
Limitações do Samba
Não suporta replicação de SAM com controladores Windows
Não age como controlador de domínios AD
Não pode ser gerenciado através do MMC
Para replicação PDC-BDC entre Samba é necessário utilizar o LDAP como backend
Tipos de Controlador
Domain Member
Possuem um registro na base do domínio (Trust Account)
Criada pelo administrador
Conta machine account
Chave definida automaticamente
Características de um Controlador
Registra-se e Informa que é o Controlador
Broadcast NetBIOS
WINS
DNS + AD
Fornece serviços de netlogon
Fornece um compartilhamento especial chamado “netlogon”
PDC
[global]
workgroup = 3CTA
netbios name = %h
server string = Servidor Samba %h
security = user
client lanman auth = yes
passdb backend = tdbsam:/var/lib/Samba/passdb.tdb
log level = 0 auth:10
domain logons = yes
domain master = yes
add machine script = /usr/sbin/useradd -g nogroup -c "Estacao %u" -d /tmp -s /bin/false
"%u" logon path = \\%N\profiles\%U
[netlogon]
path = /var/lib/Samba/netlogon
guest ok = yes
browseable = no
17/26
[profiles]
path = /var/lib/Samba/profiles
read only = no
create mask = 0600
directory mask = 0700
Checklist PDC
smb.conf configurado
Usuário root adicionado
Diretórios netlogon e profiles* criados
*Scripts de logon preparados
*Passos Opcionais
18/26
PDC – Configuração Completa
[global]
workgroup = 3CTA
netbios name = DEBIANXX
passdb backend = tdbsam:/var/lib/Samba/passdb.tdb
os level = 33
preferred master = auto
domain master = yes
local master = yes
add machine script = /usr/sbin/useradd -g nogroup -c "Estacao %u" -d /tmp -s
/bin/false "%u"
security = user
domain logons = yes
logon path = \\%N\profiles\%U
logon drive = H:
logon home = \\homeserver\%U\winprofile
logon script = logon.cmd
[netlogon]
path = /var/lib/Samba/netlogon
read only = yes
[profiles]
path = /var/lib/Samba/profiles
read only = no
create mask = 0600
directory mask = 0700
Controle de Grupos
Grupos Unix (posixGroup)
Mapeamento unix → SID
net groupmap
Usuários adicionados ao grupo Unix
Definições de Compartilhamento
[myshare] path = /tmp write list = usuario valid users = @usuarios
[secure] path = /opt hosts allow = 127.0.0.1 hosts deny = all
[mynet] path = /home hosts allow = 192.168.4.224/24 hosts deny = all
20/26
ACLs POSIX
Necessário ativação de suporte ACL no filesystem e instalação de ferramentas
Maior flexibilidade
Permissionamento semelhante ao nativo Windows
UGO
Criar um compartilhamento publico apontando para /tmp
Criar um diretório com permissão 750# mkdir /tmp/pub# chown usuario:usuarios
/tmp/pub# chmod 750 /tmp/pub
Acessar utilizando o dono e gravar um arquivo
Acessar utilizando outro usuário do mesmo grupo e tentar gravar
Tentar acessar usuário de outro grupo
ACLs
Instalar pacote acl# apt-get install acl
Ativar suporte a ACLs no FS# mount -o remount,acl /
Definindo uma ACL:# setfacl -m [user|group]:nome:perms alvo# setfacl -m
user:usuario:rwx /home/usuario
Lendo ACLs:# getfacl alvo
Adicionando um mapeamento
# groupadd estudo
# net groupmap add ntgroup="estudo" unixgroup=estudo
Listando Mapeamentos
# net groupmap list
Removendo Mapeamentos
# net groupmap delete ntgroup=”estudo”
21/26
GERENCIAMENTO
Pdbedit
Gerencia o passdb
Contas de sistema
Políticas de domínio
Visualiza contas# pdbedit -Lv atirador
Exporta e Importa databases entre backends
Gerencia diferentes backends
Políticas do domínio
pdbedit -P [política] -C [valor]
Políticas disponíveis
maximum password age
minimum password age
min password length
password history
reset count minutes
bad lockout attempt
disconnect time
lockout duration
user must logon to change password
refuse machine password change
Gerenciamento de Usuários
Adicionar contas:
# pdbedit -a conta
Deletar contas:
# pdbedit -x conta
Alterar contas:
# pdbedit -r –fullname="Atirador Principal” Atirador
Forçar troca de senha:
# pdbedit --pwd-must-change-time=0 Atirador ou # net sam set pwdmustchangenow
Atirador yes
Desabilitar conta
# pdbedit -r -c “[D]” Atirador
Resetar flags da conta para o padrão# pdbedit -r -c “[]” Atirador
22/26
Flags de Contas
-D Conta Desabilitada
-H Um diretório home é necessário
-I Relação de confiança inter-domínio
-L Conta bloqueada automaticamente
-M Conta de logon MNS (Microsoft network service)
-N Senha não obrigatória
-S Conta de confiança de servidor
-T Duplicata temporária de conta
-U Conta de usuário normal
-W Conta de confiança de estação de trabalho
-X Senha não expira
23/26
WINBIND
Instalar o Winbind
Configurar o domínio no Samba
Adicionar diretivas de mapeamento do Winbind
Reiniciar Winbind e Samba
Ingressar no domínio
Validar o funcionamento com o wbinfo
Configurar o PAM para utilizar Winbind
24/26
INGRESSANDO EM UM AD
Configurar o Samba
Security = ADS
Realm = DOMINIO
client use spnego = yes
Configurar o Winbind
Instalar o Kerberos# apt-get install krb5-config krb5-user
Configurar o Kerberos
/etc/krb5.conf
Smb.conf
[global]
security = ADS
realm = 3CTA.LOCAL
workgroup = 3CTA
password server = winstrutor.3CTA.local
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
loglevel = 2
Krb5.conf
[libdefaults]
default_realm = MYCOMPANY.LOCAL
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
[realms]
3CTA.LOCAL = { kdc = winstrutor.3CTA.local admin_server = winstrutor.3CTA.local}
[domain_realm]
.3CTA.local = 3CTA.LOCAL
3CTA.local = 3CTA.LOCAL
[login]
krb4_convert = true
krb4_get_tickets = true
25/26
INGRESSANDO EM UM AD
Ingressar no domínio
# net ads join -U administrator
Testar a configuração
# kinit atirador@3CTA.LOCAL
# wbinfo -u
# wbinfo -g
# getent passwd
# getent group
26/26