Contedo do Curso
Samba: Viso geral e Histria Grupos de Trabalho x Domnios Conceitos, Arquitetura e Design Configurao do Samba Samba em Grupos de Trabalho Servidores PDCs, BDCs e Domain Members Configurao de um servidor PDC Manipulao de Usurios e Grupos ACLs PDC com Autenticao Centralizada Winbind
Histria
NetBIOS
Endereamento de estaes por nome Co-Desenvolvido pela IBM e Sytec Interface entre programas e hardware de rede Redirecionamento de I/O adicionado pela Microsoft e criao do SMB (CIFS) Posteriormente foi adicionado o servio de anncio (Browsing) e de autorizao e autenticao central
Histria
Criado por Andrew Tridgell Compartilhar arquivos sobre NetBIOS para DOS Usado posteriormente para conectar uma mquina Windows com seu servidor
Funcionamento
Compartilhamento e Impresso Autenticao e Autorizao Resoluo de Nomes Anncio de Servios (Browsing) Smbd Nmbd
Daemons Distintos
Funcionamento
SMBD
Autorizao e Autenticao Compartilhamentos Acesso aos compartilhamentos Portas: 139 e 445 (TCP)
139: SMB sobre NetBIOS sobre TCP 445: SMB sobre TCP (sem encapsulamento)
Funcionamento
NMBD
Resoluo de Nomes
Broadcast Ponto-a-ponto
137: Browsing, replicao de informaes de diretrio, netlogon, relaes de confiana, canal de comunicao seguro (WinNT Secure Channel) 138: Comunicao de datagramas NetBIOS
Funcionamento
Resoluo de Nomes
Broadcast
Mecanismo Original Envio de solicitaes para a rede Scooby, aonde est voc?
Ponto-a-Ponto
Estaes se registram com um servidor NBNS (NetBIOS Name Service) Registro de Nome Endereo
Funcionamento
Browsing
Eleio de um LMB (Local Master Browser) LMB mantm uma lista de servios oferecidos Alm de LMBs, podem existir DMBs (Domain Master Browsers) DMBs coordenam LMBs em redes e domnios diferentes Configurado manualmente Mantm lista de servios
WINS
10
Funcionamento
NetBIOS
Modos de Funcionamento
b-node (tipo 0x01): Apenas broadcast NetBIOS atravs 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
Padro: b-node
11
Funcionamento
NetBIOS
Nomes NetBIOS
16 caracteres, 16 bytes
Eleies LMB
Maior OS Level Opo Preferred Master Uptime (tempo online) Nome NetBIOS (ordem alfabtica)
12
Funcionamento
13
Funcionamento
Grupos de Trabalho
Autenticao Descentralizada Estaes contm listas prprias de autenticao e autorizao Configurao simples Difcil manuteno em redes maiores Servidor centralizado de autenticao e autorizao
Domnios
14
Instalao
Compilao dos fontes
http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/compiling.html
15
Instalao
Instalar os pacotes do Samba: # apt-get install samba smbclient
O samba dever ser iniciado automaticamente. Verificar se os servios esto rodando: # /etc/init.d/samba status
16
Instalao
Tambm pode-se verificar o funcionamento atravs da existncia dos processos smbd e nmbd # ps -Af|grep -E '(smbd|nmbd)'
17
Instalao
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
18
Instalao
Arquivos principais
O samba armazena os dados em bases .tdb, o Trivial Database, que aceitam mltiplas escritas simultaneamente
19
Arquivos TDB
Persistentes
account_policy: polticas de de contas group_mapping: mapeamentos entre SID->grupos UNIX ntdrivers: informaes de drivers de impressoras instalados ntforms: informaes de forms de impressoras instalados ntprinters: configuraes de impressoras instaladas passdb: armazena informaes de contas SambaSAMAccount registry: esqueleto somente leitura de registro Windows secrets: armazena SIDs (identificadores), senha do LDAP e dados sensveis e crticos para o funcionamento do Samba. share_info: Armazena ACLs de compartilhamentos winbindd_idmap: base de mapementos de endereo do Winbind
20
Arquivos TDB
Temporrios
brlock: Informaes de byte-range locking de arquivos connections: Cache de informaes de conexes em uso para gerenciamento de nmero de conexes eventlog/*tdb: Cache de logs de sistema gencache: Cache de servidores WINS no-funcionais e dados de domnio login_cache: Cache de informaes 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: Informaes do contador de performance printing/*.tdb: Cache das filas de impresso schannel_store: Informaes criptogrficas de credenciais de sesses ativas sessionid: Dados genricos de sesso unexpected: Armazena pacotes recebidos que no so para os daemons do Samba) winbindd_cache: Cache de informaes de identidade recebidas pelo Winbind
21
Arquivos TDB
Gerenciamento
Pacote tdb-tools
22
Arquivos TDB
Efetuar backup
23
Arquivos TDB
Visualizar contedo de um TDB (dump)
24
Visualizando Pacotes
Pode-se visualizar o trfego NetBIOS capturando-se o trfego UDP: # tcpdump -nvvi eth0 udp and not port 53
25
Exerccio
Faa uma captura dos pacotes do Samba, reiniciando os servios
26
Configurao
smb.conf
Arquivo de configurao principal Dividido em sees (stanzas) Sees representam compartilhamentos ou meta-servios Pode ser editado manualmente ou atravs de ferramentas como o SWAT Sintaxe anloga aos arquivos .ini do Windows
27
Configurao
smb.conf
[Homes]: Fornece um diretrio pessoal para cada usurio [Printers]: Fornece filas de impresso [IPC$]: Utilizado para Browsing e estabelecimento de conexes TCP/IP Acessados atravs de: \\nome\compartilhamento
[Compartilhamento]
28
Configurao
smb.conf
29
Configurao
smb.conf
Tipos de Servidor
Controlador de Domnio
Primary Domain Controller (PDC) Backup Domain Controller (BDC) Active Directory Server Domain Controller AD Domain Server NT4 Domain Server
Membro de Domnio
Servidor Standalone
30
Configurao
smb.conf
Modos de Segurana
Servidor informa modos suportados Cliente seleciona o modo User Share Domain ADS (variao de User) (variao de User) (padro)
Implementaes Disponveis
31
Configurao
security = user
Cliente envia usurio e senha Servidor verifica credenciais e nome da mquina cliente Cliente monta compartilhamentos sem enviar novamente usurio e senha No feita nova autenticao para acessar recursos
32
Configurao
security = share
Cliente se autentica a cada solicitao (montagem de compartilhamento) Cliente envia a senha Usurio no explicitamente informado O servidor verifica a senha recebida contra cada usurio definido no compartilhamento Atualmente deprecated
33
Configurao
security = domain
Baseado em segurana a nvel de usurio Fornece autenticao centralizada Servidor possui uma relao de confiana Samba participar de um domnio como:
PDC Primary Domain Controller BDC Backup Domain Controller DMS Domain Member Server
34
Configurao
security = ADS
Baseado em segurana a nvel de usurio Permite que o Samba ingresse em domnios Active Directory rodando em modo nativo. Necessria a utilizao de Kerberos
35
Configurao
security = server
Baseado em segurana a nvel de usurio Samba tenta efetuar log in no password server com as credenciais recebidas Altamente recomendado no utilizar este modo
Possibilidade de lockout de senha No h garantia quanto ao password server Causa conexes persistentes
36
Configurao
smb.conf
Outras diretivas:
workgroup: Nome do grupo de trabalho ou domnio 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 eleies para master browser domain logons: Configura o Samba para fornecer servios de netlogon, agindo como um controlador de domnio
37
Configurao
smb.conf
O qu torna o Samba um servidor? O qu torna o Samba um controlador de Domnio? O qu torna o Samba membro de um Domnio?
38
Configurao
smb.conf
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 domnio
39
Configurao
Macros (Variveis)
Valores especiais que so preenchidos em tempo de execuo teis para definies de ACLs
Ferramentas
testparm: Verifica a validade sinttica do arquivo smb.conf smbclient: Cliente SMB/CIFS em linha de comando
40
Configurao
Configurao simples
Fazer backup do Samba Criar um novo /etc/samba/smb.conf Testar a configurao com o testparm Reiniciar os daemons smbd e nmbd Verificar se os daemons esto rodando e escutando nas portas esperadas
# ps -Af | grep -E '(smbd|nmbd)' # netstat -ntpul | grep mbd
41
Usando o smbclient
Listar compartilhamentos
$ smbclient -L localhost
Enter diego's password: Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.5.4] 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.4] Server --------UBUNBOX Comment ------Ubunbox server (Samba, Ubuntu)
42
Usando o smbclient
Acessando um compartilhamento
$ smbclient '\\ubunbox\tmp'
Enter diego's password: Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.5.4] smb: \>
43
Usando o smbclient
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)
44
Samba Standalone
Vantagens
Desvantagens
Autenticao local
45
Samba Standalone
Viso Geral
Autenticao e Controle de Acesso Local Recursos disponibilizados em modo share ou user No fornecem servio netlogon
46
Samba Standalone
Autenticao Local
47
Samba Standalone
Laboratrio
48
Samba Standalone
Laboratrio
Definir security = user Criar um compartilhamento no-pblico Adicionar usurios em uma lista valid users Reiniciar o Samba (ou daemon smbd) Criar os usurios usando o smbpasswd
49
Samba Standalone
Laboratrio
Criar um compartilhamento com o parmetro guest ok = yes [anon] path = /tmp browseable = yes guest ok = yes
50
Exerccio
Crie um script simples de backup das configuraes do Samba
51
Exerccio
Configure seu servidor em modo de compartilhamento por pasta Crie um compartilhamento pblico Acesse e envie um arquivo usando o Windows
52
Domnios
Estilo NT4 (PDC+BDC)
Samba Windows NT Windows 2000 (Modo Emulado) Windows 2000 e superiores Samba (Apenas DMS)
53
Domnios
Domnios NT4
54
Domnios
Domnios Active Directory
55
Domnios
Limitaes do Samba
No suporta replicao de SAM com controladores Windows No age como controlador de domnios AD No pode ser gerenciado atravs do MMC Para replicao PDC-BDC entre Samba necessrio utilizar o LDAP como backend
56
Domnios
Tipos de Controlador
Banco inicial de controle do domnio Security Account Manager SAM Responde solicitaes netlogon
57
Domnios
Tipos de Controlador
Automaticamente no Windows Manualmente, com o Samba Automaticamente entre Windows Possvel com backend LDAP entre Sambas
Sincronizao do SAM
58
Domnios
Domain Member
59
Domnios
Caractersticas de um Controlador
60
Domnios
Configurao do Samba PDC
PDC
[global] workgroup = 4LINUX 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 [profiles] path = /var/lib/samba/profiles read only = no create mask = 0600 directory mask = 0700
61
Domnios
Configurao do Samba PDC
passdb backend: Backend de armazenamento de grupos e contas smbpasswd, tdbsam, ldapsam Compartilhamento Netlogon
Scripts de Logon Polticas de Grupo (NTConfig.POL) Armazenamento de perfis Um diretrio por usurio
Compartilhamento Profiles
62
Domnios
Configurao do Samba PDC
Checklist PDC
smb.conf configurado Usurio root adicionado Diretrios netlogon e profiles* criados *Scripts de logon preparados
*Passos Opcionais
63
Exerccio
Configurar o servidor como PDC
Domnio: SeuNome
64
Domnios
Configurao do Samba PDC
[global] workgroup = 4LINUX 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
65
Domnios
Configurao do Samba BDC
PDC: Master LDAP || BDC: Slave LDAP PDC: LDAP Central || BDC: LDAP Central PDC: smbpasswd || BDC: smbpasswd
Diretivas:
66
Domnios
Configurao do Samba BDC
Pontos de Ateno
SID do domnio PDC = BDC Base de usurios Unix PDC = BDC Base de usurios Samba PDC = BDC Sincronizar Netlogon e Profiles
67
Exerccio
Em dupla
68
Domnios
Configurao do Samba DMS
security = domain password server = PDC BDC1 BDC2 ou password server = * net rpc join -U root%senha Reiniciar o samba
69
Permisses Unix Definies por Compartilhamento ACLs de Compartilhamentos ACLs Windows atravs de ACLs Posix Controle a nvel de usurio ou grupo
70
net groupmap
71
72
Exerccio
Crie 2 grupos: empire e rebels Crie os usurios nos grupos:
luke, solo: rebels vader, palpatine: empire Hoth: leitura para grupo rebels, escrita para luke Coruscant: leitura para grupo empire, escrita para vader e palpatine Mandalore: leitura para rebels e empire, sem escrita Kamino: acessvel apenas do prprio servidor
73
Exerccio
[hoth] path = /tmp write list = luke valid users = @rebels [coruscant] path = /tmp write list = vader, palpatine valid users = @empire [mandalore] path = /tmp read only = yes valid users = @empire, @rebels [kamino] path = /tmp hosts allow = 127.0.0.1
74
Permissionamento padro Suportado transparentemente Necessrio ativao de suporte ACL no filesystem e instalao de ferramentas Maior flexibilidade Permissionamento semelhante ao nativo Windows
ACLs POSIX
75
Criar um compartilhamento publico apontando para /tmp Criar um diretrio com permiso 750
# mkdir /tmp/pub # chown diego:usuarios /tmp/pub # chmod 750 /tmp/pub
Acessar utilizando o dono e gravar um arquivo Acessar utilizando outro usurio do mesmo grupo e tentar gravar Tentar acessar usurio de outro grupo
76
Lendo ACLs:
# getfacl alvo
77
Listando Mapeamentos
# net groupmap list
Removendo Mapeamentos
# net groupmap delete ntgroup=Orcs
78
Exerccio
Crie um compartilhamento lotr apontando um diretrio /tmp/lotr Crie trs grupos: orcs, elves e hobbits Crie e adicione os seguintes usurios nos grupos:
Shagrat, Grishnakh: grupo orcs Legolas, Galadriel: grupo elves Frodo, Samwise: grupo hobbits Shire: Completo para hobbits, Leitura para elves Rivendell: Completo para elves, completo para hobbits Mordor: Completo para orcs, nenhum acesso para os outros
Teste os acessos
79
Exerccio
# groupadd hobbits # groupadd elves # groupadd orcs # # # # mkdir mkdir mkdir mkdir /tmp/lotr /tmp/lotr/shire /tmp/lotr/rivendell /tmp/lotr/mordor
# chgrp hobbits /tmp/lotr/shire # chgrp elves /tmp/lotr/rivendell # chgrp orcs /tmp/lotr/mordor # # # # setfacl -m group:hobbits:rwx -m group:elves:rx /tmp/lotr/shire setfacl -m group:hobbits:rwx -m group:elves:rwx /tmp/lotr/rivendell chmod 770 /tmp/lotr/mordor chmod o-rwx /tmp/lotr/shire /tmp/lotr/rivendell
80
Exerccio
Crie agora um usurio Sauron no Samba Acesse o compartilhamento usando o root e faa, usando a interface do Windows, o usurio Sauron ter acesso completo a todos os diretrios criados
81
Gerenciamento
Pdbedit
Gerencia o passdb
Visualiza contas
# pdbedit -Lv luke
82
Gerenciamento
Polticas do domnio
pdbedit -P [poltica] -C [valor]
Polticas disponveis
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
83
Gerenciamento
Gerenciamento de usurios
Adicionar contas
# pdbedit -a conta
Deletar contas
# pdbedit -x conta
Alterar contas
# pdbedit -r --fullname="Luke Skywalker luke
Desabilitar conta
# pdbedit -r -c [D] luke
84
Gerenciamento
Flags de Contas
D H I L M N S T U W X
Conta Desabilitada Um diretrio home necessrio Relao de confiana inter-domnio Conta bloqueada automaticamente Conta de logon MNS (Microsoft network service) Senha no obrigatria Conta de confiana de servidor Duplicata temporria de conta Conta de usurio normal Conta de confiana de estao de trabalho Senha no expira
85
Exerccio
Configure as polticas no domnio
Senhas possuem no mnimo 6 caracteres Contas sero bloqueadas aps 5 tentativas Faa com que tenha que trocar a senha no logon Faa logoff e tente uma senha errada at que a conta seja bloqueada Desbloqueie a conta
86
Backend LDAP
Base centralizada de autenticao Flexibilidade como backend Integrao com PAM e NSS (usurios de sistema)
87
Backend LDAP
Instalao OpenLDAP
# apt-get install slapd ldap-utils smbldap-tools
Configurar o sufixo da base para dc=4linux,dc=com,dc=br Habilitar o schema do Samba Configurar ndices de atributos do Samba Configurar ACL de acesso a senha do Samba Recriar a base
88
Backend LDAP
Configurando o smb.conf
add user script = /usr/sbin/smbldap-useradd -m %u delete user script = /usr/sbin/smbldap-userdel %u add group script = /usr/sbin/smbldap-groupadd -p %g delete group script = /usr/sbin/smbldap-groupdel %g add user to group script = /usr/sbin/smbldap-groupmod -m %u %g delete user from group script = /usr/sbin/smbldap-groupmod -x %u %g set primary group script = /usr/sbin/smbldap-usermod -g %g %u add machine script = /usr/sbin/smbldap-useradd -w %u passdb backend = ldapsam:ldap://localhost ldap suffix = dc=4linux,dc=com,dc=br ldap machine suffix = ou=Usuarios ldap user suffix = ou=Usuarios ldap group suffix = ou=Grupos ldap admin dn = cn=admin,dc=4linux,dc=com,dc=br
89
Backend LDAP
Configurar o smbldap-tools Armazenar a senha do administrador do LDAP no Samba
# smbpasswd -w [senha]
90
Backend LDAP
Configurao NSS e PAM
NSS
apt-get install libnss-ldap /etc/nsswitch.conf /etc/libnss-ldap.conf getent passwd install libpam-ldap /etc/pam.d/common-account /etc/pam.d/common-auth /etc/pam.d/common-password /etc/pam.d/common-session /etc/pam_ldap.conf
PAM
91
Backend LDAP
Atributos de objetos Samba
SambaLMPassword: LanMan password (16-byte hash) SambaNTPassword: The NT password (16-byte hash) SambaPwdLastSet: Hora Unix da ltima modificao de senha sambaAcctFlagsString: Flags da conta SambaLogonTime: No utilizado atualmente SambaLogoffTime: No utilizado atualmente SambaKickoffTime: Define quando a conta expirar. SambaPwdCanChange: Quando o usurio poder alterar a senha (hora unix) sambaPwdMustChangeSpecifies: Quando o usurio ser forado a alterar a senha (hora unix)
92
Backend LDAP
SambaHomeDrive: Letra do sambaHomePath do usurio SambaLogonScript: Logon script SambaProfilePath: Caminho para o perfil remoto SambaHomePath: Caminho de rede para o home do usurio SambaUserWorkstations: Estaes no qual o usurio pode efetuar log in. SambaSID: SID (identificao) do usurio. SambaPrimaryGroupSID: SID do grupo primrio do usurio. SambaDomainName: Nome do domnio que o usurio faz parte
93
Winbind
Usurios e Grupos de domnios Windows
Autenticao via PAM Estao Unix agir efetivamente como parte do domnio
94
Winbind
Instalar o Winbind Configurar o domnio no Samba Adicionar diretivas de mapeamento do Winbind Reiniciar Winbind e Samba Ingressar no domnio
95
Ingressando em um AD
Configurar o Samba
Configurar o Kerberos
/etc/krb5.conf
96
Ingressando em um AD
Smb.conf
[global] security = ADS realm = 4LINUX.LOCAL workgroup = 4LINUX password server = winstrutor.4LINUX.local idmap uid = 10000-20000 idmap gid = 10000-20000 loglevel = 2
97
Ingressando em um AD
Krb5.conf
[libdefaults] default_realm = MYCOMPANY.LOCAL kdc_timesync = 1 ccache_type = 4 forwardable = true proxiable = true [realms] 4LINUX.LOCAL = { kdc = winstrutor.4linux.local admin_server = winstrutor.4linux.local } [domain_realm] .4linux.local = 4LINUX.LOCAL 4linux.local = 4LINUX.LOCAL [login] krb4_convert = true krb4_get_tickets = true
98
Ingressando em um AD
Aps fazer as configuraes, reiniciar os servios:
# /etc/init.d/samba restart # /etc/init.d/winbind restart
Ingressar no domnio
# net ads join -U administrator
Testar a configurao
# # # # # kinit luke@4LINUX.LOCAL wbinfo -u wbinfo -g getent passwd getent group
99
Obrigado
Diego Alencar Alves de Lima diego.lima@4linux.com.br www.4linux.com.br www.hackerteen.com twitter.com/4LinuxBR Tel: +55-11-2125-4747