Você está na página 1de 26

3° CENTRO DE TELEMÁTICA DE ÁREA

SERVIDOR DE ARQUIVOS UTILIZANDO O


Samba

ENSINO A DISTÂNCIA - 2012


RESUMO

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

NetBIOS, SMB, Samba e Unix


Criado por Andrew Tridgell
Compartilhar arquivos sobre NetBIOS para DOS
Usado posteriormente para conectar uma máquina Windows com seu servidor

3/26
FUNCIONAMENTO

Implementa 4 serviços CIFS


Compartilhamento e Impressão
Autenticação e Autorização
Resolução de Nomes
Anúncio de Serviços (Browsing)

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

Compilação dos fontes


Flexibilidade
Últimas versões
Maior dificuldade de administração
Guia para compilação:
http://www.Samba.org/Samba/docs/man/Samba-HOWTO-Collection/compiling.html

Instalação através dos pacotes fornecidos


Instalar os pacotes do Samba:# apt-get install Samba smbclient
O Samba deverá ser iniciado automaticamente.
Verificar se os serviços estão rodando:# /etc/init.d/Samba status
Também pode-se verificar o funcionamento através da existência dos processos “smbd” e
“nmbd”: # ps -Af|grep -E '(smbd|nmbd)'
Para parar os daemons:/etc/init.d/Samba stop
Para iniciar os daemons:/etc/init.d/Samba start
Para reiniciar os daemons:/etc/init.d/Samba restart

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

account_policy: políticas de de contas


group_mapping: mapeamentos entre SID->grupos UNIX
ntdrivers: informações de drivers de impressoras instalados
ntforms: informações de forms de impressoras instalados
ntprinters: configurações de impressoras instaladas
passdb: armazena informações de contas SambaSAMAccount
registry: esqueleto somente leitura de registro Windows
secrets: armazena SIDs (identificadores), senha do LDAP e dados sensíveis e críticos
para o funcionamento do Samba.
share_info: Armazena ACLs de compartilhamentos
winbindd_idmap: base de mapeamentos de endereço do Winbind

Temporários

brlock: Informações de byte-range locking de arquivos


connections: Cache de informações de conexões em uso para gerenciamento de
número de conexões
eventlog/*tdb: Cache de logs de sistema
gencache: Cache de servidores WINS não-funcionais e dados de domínio
login_cache: Cache de informações de login e tentativas incorretas de senha
messages: Armazena temporariamente mensagens sendo processadas pelo smdb
netsamlogon_cache: Cache de estruturas de dados de logon
perfmon/*.tdb: Informações do contador de performance
printing/*.tdb: Cache das filas de impressão
schannel_store: Informações criptográficas de credenciais de sessões ativas
sessionid: Dados genéricos de sessão
unexpected: Armazena pacotes recebidos que não são para os daemons do Samba)
winbindd_cache: Cache de informações de identidade recebidas pelo Winbind

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

Verificar base e restaurar se corrompida


tdbbackup -v [nome do arquivo]
# tdbbackup /var/lib/Samba/passdb.tdb

Visualizar conteúdo de um TDB (dump)


tdbdump [nome do arquivo]
# tdbdump /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

[Global]: Definições de todo o servidor


Meta serviços
[Homes]: Fornece um diretório pessoal para cada usuário
[Printers]: Fornece filas de impressão
[IPC$]: Utilizado para Browsing e estabelecimento de conexões TCP/IP

[Compartilhamento]

Acessados através de:\\nome\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)

Configuração smb.conf – Modos de Segurança

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

O Samba age como um servidor independente do modo de funcionamento


“security = domain” ou + “domain master = yes” + “domain logons = yes”
“security = domain” ou “security = ADS” + ingresso no 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

testparm: Verifica a validade sintática do arquivo smb.conf

smbclient: Cliente SMB/CIFS em linha de comando

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: \>

Listando o conteúdo do compartilhamento


smb: \> ls
. D 0 Fri Nov 19 13:30:30 2010
.. D 0 Mon Oct 18 21:05:05 2010
virtual-usuario.dC5EVf D 0 Fri Nov 19 09:07:19 2010
arquivo 0 Fri Nov 19 13:42:49 2010
orbit-usuario D 0 Fri Nov 19 13:35:28 2010
.ICE-unix DH 0 Fri Nov 19 09:07:06 2010
.X0-lock HR 11 Fri Nov 19 09:07:00 2010
46103 blocks of size 262144. 24552 blocks available
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

Configuração sem autenticação no modo “share”


Definir “security = share”
Criar um compartilhamento com “public = yes”

Configuração com autenticação em modo “user”


Definir “security = user”
Criar um compartilhamento não-público
Adicionar usuários em uma lista “valid users”
Reiniciar o Samba (ou daemon smbd)
Criar os usuários usando o smbpasswd

Criação de compartilhamento público em modo “user”


Criar um compartilhamento com o parâmetro “guest ok = yes”

[anon]
path = /tmpbrowseable = yesguest ok = yes

15/26
DOMÍNIOS

Estilo NT4 (PDC+BDC)


Samba
Windows NT
Windows 2000 (Modo Emulado)

Estilo Active Directory


Windows 2000 e superiores
Samba (Apenas DMS)

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

Domínios Active Directory


Controladores de domínio hierárquicos
Introdução do Kerberos
Controle refinado de políticas

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

PDC - Primary Domain Controller


Banco inicial de controle do domínio
Security Account Manager – SAM
Responde solicitações netlogon
Quando inexiste BDC
Quando o BDC está sobrecarregado
16/26
BDC - Backup Domain Controller
Responde solicitações de logon
Pode ser promovido à PDC
Automaticamente no Windows
Manualmente, com o Samba
Sincronização do SAM
Automaticamente entre Windows
Possível com backend LDAP entre Sambas

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

passdb backend: Backend de armazenamento de grupos e contas smbpasswd, tdbsam,


ldapsam
Compartilhamento Netlogon
Scripts de Logon
Políticas de Grupo (NTConfig.POL)
Compartilhamento Profiles
Armazenamento de perfis
Um diretório por usuário
Gravação para o dono
Leitura Global

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

Exige replicação de backend


PDC: Master LDAP || BDC: Slave LDAP
PDC: LDAP Central || BDC: LDAP Central
PDC: smbpasswd || BDC: smbpasswd

Exige a obtenção do SID


# net rpc getsid
Diretivas:
domain master = no
domain logons = yes
Pontos de Atenção
SID do domínio PDC = BDC
Base de usuários Unix PDC = BDC
Base de usuários Samba PDC = BDC
Sincronizar Netlogon e Profiles
19/26
DOMÍNIOS

Irá tornar o servidor membro de um contexto de segurança


security = domain
password server = PDC BDC1 BDC2ou
password server = *
net rpc join -U root%senha
Reiniciar o Samba

USUÁRIOS, GRUPOS E ACLs

Controle de Permissões Flexível


Permissões Unix
Definições por Compartilhamento
ACLs de Compartilhamentos
ACLs Windows através de ACLs Posix
Controle a nível de usuário ou grupo

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

UGO – User, Group, Other


Permissionamento padrão
Suportado transparentemente

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

Usuários e Grupos de domínios Windows


Mapeamento de SID → UID e GID
Autenticação via PAM
Estação Unix agirá efetivamente como parte do domínio

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

Após fazer as configurações, reiniciar os serviços:


# /etc/init.d/Samba restart
# /etc/init.d/winbind restart

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

Você também pode gostar