Nesta continuação, vamos definir Informações de política de senhas, criação de Unidades Organizacionais (OU), grupos e usuários que serão autenticados no AD, além de ajustes dos parâmetros globais para o SAMBA 4.
Referências
<UsuarioAD>: Usuário básico do AD | <GrupoAD>: grupo básico do AD |
<SenhaUsuarioAD>: Senha do usuário | <Descricao>: Descrição |
<Nome>: Nome do usuário do AD | <OU>: Nome da OU |
<Sobrenome>: Sobrenome do usuário | <Dominio>: Domínio já definido do AD |
Importante:
Tenha as pastas que serão compartilhadas já devidamente criadas, montadas e com permissões ‘700’.
Links:
https://wiki.samba.org/index.php/Adding_users_with_samba_tool
http://www.bitbull.ch/wiki/index.php/CentOS7_Samba4_AD
Políticas de Senhas e GPO
Em nosso caso, deixaremos a política de senha o mais branda possível, mas pode-se definir como desejado.
- Estando logado como root em seu servidor, verifique as configurações de politicas de senha:
samba-tool domain passwordsettings show
- Definir a complexidade das senhas de usuários:
samba-tool domain passwordsettings set --complexity=off
- Desabilitar o histórico de senha:
samba-tool domain passwordsettings set --history-length=0
- Desabilitar idade mínima de senha:
samba-tool domain passwordsettings set --min-pwd-age=0
- Desabilitar idade máxima da senha:
samba-tool domain passwordsettings set --max-pwd-age=0
- Definir o tamanho máximo da senha em caracters:
samba-tool domain passwordsettings set --min-pwd-length=4
- Desabilitar expiração de senha de administrador:
samba-tool user setexpiry Administrator --noexpiry
- Permitir o gerenciamento remoto das pastas compartilhadas. Informe a senha quando solicitado.
net rpc rights grant '<DominioLocal>\Domain Admins' SeDiskOperatorPrivilege -U'<DominioLocal>\Administrator'
- A seguinte mensagem deverá aparecer:
Successfully granted rights.
- Liste as contas do domínio. Informe a senha e uma série de contas deverão ser mostradas.
net rpc rights list accounts -U'<DominioLocal>\Administrator'
- Para o GPO funcionar corretamente, deve-se dar permissões completas em sysvol e netlogon.
chmod 777 -R /usr/local/samba/var/locks/sysvol/<DominioLocal>/scripts
chmod 777 -R /usr/local/samba/var/locks/sysvol
Criação das Unidades Organizacionais (OU) do AD
As unidades organizacionais são úteis quando é preciso implantar um grupo de políticas a um subconjunto de usuários, grupos e computadores dentro de um domínio.
Comumente utiliza-se a ferramenta RSAT do Windows para a criação e gerenciamento de OU, mas nesse caso, a partir da ferramenta “ldbmodify”, vamos adicionar ao arquivo especial “sam.ldb”, localizado na pasta “/usr/local/samba/private/” o conteúdo da nova Unidade Organizacional (OU).
- Por segurança, como 'root', faça uma cópia do arquivo “/usr/local/samba/private/sam.ldb”:
cp /usr/local/samba/private/sam.ldb /usr/local/samba/private/sam.ldb.ORI
- Usaremos a ferramenta “ldbmodify” para inserir o conteúdo desejado ao arquivo. Pode-se inserir o número de Unidades Organizacionais (<NomeOU>) que desejar.
ldbmodify -H /usr/local/samba/private/sam.ldb << EOF
dn: ou=<NomeOU>,dc=<Dominio>,dc=local
changetype: add
objectClass: top
objectClass: organizationalunit
EOF - Após inserido o registro, deverá aparecer a seguinte mensagem:
Modified 1 records successfully
Criação dos grupos e usuários do AD
Os grupos do AD são usados para atribuir permissões aos recursos da empresa. A melhor prática é alocar usuários em grupos e então aplicá-los a uma lista de controle de acesso. É comum ter grupos que reflitam a estrutura hierárquica da empresa, como grupos do financeiro, do marketing, do jurídico e outros.
O SAMBA 4 fornece um conjunto de grupos padrão na instalação. Os grupos padrão, assim como o grupo 'Admins' do Domínio, são grupos de segurança criados automaticamente. Use esses grupos predefinidos para ajudar a controlar o acesso e delegar funções administrativas.
Neste caso, não teremos pastas dos usuários, por isso, não usaremos as opções “--profile-path”, “--home-drive” e “--home-directory”. Utilizaremos a ferramenta “samba-tool”, para gerenciar os grupos e usuários.
- Criação de grupos de usuário. Pode-se criar quantos desejar.
samba-tool group add <GrupoAD> --description="<Descricao>" --groupou=OU=<OU>
- A mensagem de retorno deve ser:
Added group <GrupoAD>
- Criação de usuários. Pode-se criar quantos desejar.
samba-tool user create <UsuarioAD> <SenhaUsuarioAD> --given-name=<Nome> --surname=<Sobrenome> --userou=OU=<OU>
- A mensagem de retorno deve ser:
User '<UsuarioAD>' created successfully
- Adicionar um usuário a um grupo:
samba-tool group addmembers <GrupoAD> <UsuarioAD>
- A mensagem de retorno deve ser:
Added members to group <GrupoAD>
- Adicionar mais de um usuário a um grupo:
samba-tool group addmembers <GrupoAD> “<UsuarioAD1>, <UsuarioAD2>"
- Adicionar um grupo dentro de outro. Esse recurso é bastante utilizado para definir permissões mais abrangente a determinado grupo de usuários.
samba-tool group addmembers Administrators <GrupoAD>
Ex: O grupo hipotético “TI” adicionado ao grupo dos “Administradores”.
- O SAMBA também possui ferramenta para debug do LDAP:
ldbsearch -H /usr/local/samba/private/sam.ldb
ldbsearch -H /usr/local/samba/private/secrets.ldb
Comandos comumente utilizados da ferramenta “samba-tools”
- Por ser de fácil identificação, não colocaremos a identificação da função de cada comando.
samba-tool group list
samba-tool user list
samba-tool gpo listall
samba-tool group listmembers "Domain Users"
samba-tool group listmembers "Domain Admins"
samba-tool group listmembers Administrators
samba-tool group listmembers <GrupoAD>
samba-tool group removemembers <GrupoAD> <UsuarioAD>
samba-tool user disable <UsuarioAD>
samba-tool user delete <UsuarioAD>
samba-tool user setpassword <UsuarioAD>
smbclient -L localhost -U%
Definir acesso às pastas por usuário
Se for necessário que somente usuários tenham acesso a alguma pasta compartilhada, deve-se criar o respectivo usuário no Linux e fazer a respectiva associação no arquivo “smb.conf”, que será visto com mais detalhes na próxima seção.
- Criar o respectivo usuário no Linux e tornar dono da respectiva pasta compartilhada. O usuário/senha Linux devem ser o mesmo que do usuário do AD.
adduser <UsuarioLinux>
passwd <UsuarioLinux>
chown <UsuarioLinux> <PastaCompartilhada>
Obs: Será criada uma pasta com o nome do <UsuarioLinux> em /home - Após, no arquivo “smb.conf” (/usr/local/samba/etc/smb.conf), na respectiva seção da <PastaCompartilhada>, adicione a linha “valid users = <UsuarioLinux>”.
[<PastaCompartilhada>]
comment = Pasta acessivel somente por usuário
path = <PontoMontagem>/<PastaCompartilhada>
...
valid users = <UsuarioLinux>
guest ok = no
vfs objects = acl_xattr recycle
Parâmetros do SAMBA (Arquivo smb.conf)
O arquivo de configuração do SAMBA fica localicado em “/usr/local/samba/etc/smb.conf”, sendo bem documentado e organizado em diferentes seções para facilitar sua configuração. É neste arquivo que são definidos o compartilhamento de pastas, permissões a usuários e/ou grupos, entre outros ajustes.
- Por motivos de segurança, faça uma cópia do arquivo original:
cp /usr/local/samba/etc/smb.conf /usr/local/samba/etc/smb.conf.ORI
- Edite o arquivo “smb.conf”:
vi /usr/local/samba/etc/smb.conf
- Confira a seguir um modelo de configuração do arquivo. Tenha atenção especial aos itens em negrito. Adapte para o seu uso.
[global]
netbios name = <HOSTNAME>
realm = <DOMINIO.LOCAL>
server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbindd, ntp_signd, kcc, dnsupdate
workgroup = <DOMINIO>
server role = active directory domain controller
idmap_ldb:use rfc2307 = yes
# Diz se o servidor samba terá ou não vantagens de ganhar uma eleição local
preferred master = yes
# Endereço IP da máquina na qual está sendo configurado o samba (ex: lo eth1 192.168.9.3/24)
interfaces = lo <ethX> <EnderecoIP>/<Mascara>
# Nome do servidor na rede.
server string = Servidor de Arquivos
security = user
map to guest = bad User
# Caso tenha um encaminhador DNS na rede (ex: 192.168.9.1)
dns forwarder = <DNSFirewall>
ldap server require strong auth = no
vfs objects = dfs_samba4, acl_xattr recycle
map acl inherit = yes
store dos attributes = yes
wins support = yes
hosts allow = ALL
name resolve order = lmhosts host wins bcast
template shell = /bin/bash
template homedir = /home/%U
# Default ID mapping configuration for local BUILTIN accounts and groups on a domain member. The default (*) domain:
# - must not overlap with any domain ID mapping configuration!
# - must use an read-write-enabled back end, such as tdb.
idmap config * : backend = tdb
idmap config * : range = 3000-7999
#############################################################
###### DESABILITA COMPARTILHAMENTO DE IMPRESSORAS #######
printcap name = /dev/null
load printers = no
disable spoolss = yes
printing = bsd
#############################################################
log file = /var/log/samba/log.%m
log level = 1
max log size = 50
#############################################################
######### LIXEIRA #########
vfs objects = recycle crossrename
##Grava arquivos até 2GB, se não houver esta linha, só serão armazenados arquivos de até 20MB.
crossrename:sizelimit = 2000
recycle:directory_mode = 0774
recycle:subdir_mode = 0774
##Cria uma árvore de diretórios, pastas, subpastas e seus arquivos
recycle:keeptree = true
recycle:touch = true
##Cria várias versões de arquivos deletados que contenham o mesmo nome
recycle:versions = true
recycle:exclude = *.tmp, *.log, *.obj, ~*.*, *.bak, *.exe, *.bin
recycle:noversions = *.tmp, *.temp, *.o, *.obj, *.TMP, *.TEMP
recycle:exclude_dir = tmp, temp, cache
##Grava no diretório 'lixeira' com a pasta no nome do usuário que deletou o arquivo
#caminho completo da pasta lixeira. (ex: /mnt/vdisk-srvArquivos/samba/lixeira/%U)
recycle:repository = <PontoMontagem><PastaLixeira>/%U
#############################################################
######### AUDITORIA #########
vfs objects = full_audit
full_audit:success = open, opendir, write, unlink, rename, mkdir, rmdir, chmod, chown
full_audit:prefix = %u|%I|%S
full_audit:failure = none
full_audit:facility = LOCAL1
full_audit:priority = notice
local1.notice /var/log/auditoria-samba.log
[netlogon]
path = /usr/local/samba/var/locks/sysvol/<DominioLocal>/scripts
read only = No
browseable = no
[sysvol]
path = /usr/local/samba/var/locks/sysvol
read only = No
browseable = no
writable = yes
force directory mode = 0777
force create mode = 0777
[Lixeira]
comment = Lixeira
# Caminho completo da pasta lixeira. (ex: /mnt/vdiskStorage/samba/lixeira)
path = <PontoMontagem><PastaLixeira>
valid users = %U
force create mode = 0777
force directory mode = 0777
browseable = yes
writable = yes
public = yes
guest ok = yes
vfs objects = acl_xattr recycle
#========================= Pastas Compartilhadas ==============================#
##############################################################################
[Backup]
comment = Backup
# Localização do ponto de montagem de backup (ex: /mnt/nfs-backup1)
path = <PontoMontagemBackup1>
valid users = @<GrupoAD1>
invalid users = @<GrupoAD2>
read only = no
browseable = yes
writable = yes
#Todo arquivo criado neste compartilhamento será criado com permissão 777
force create mode = 0777
#Toda pasta criada neste compartilhamento será criado com permissão 777
force directory mode = 0777
guest ok = yes
vfs objects = acl_xattr recycle
[Usuario1]
comment = Pasta do Usuário 1
# Caminho completo da pasta do usuário1 (ex: /mnt/vdiskStorage/samba/users/Usuario1)
path = <PontoMontagem><PastaUsuario1>
read only = no
browseable = yes
writable = yes
force create mode = 0777
force directory mode = 0777
# Controle de acesso definido por usuário. Neste caso, somente os usuário 1 e 2 teriam acesso a esse compartilhamento. Conferir instruções informadas anteriormente neste documento
valid users = <UsuarioLinux1> <UsuarioLinux2>
guest ok = no
vfs objects = acl_xattr recycle
[Pasta1]
comment = Pasta 1
# Caminho completo da pasta compartilhada 1 (ex: /mnt/vdiskStorage/samba/shares/pasta1)
path = <PontoMontagem><PastaCompartilhada1>
valid users = @<GrupoAD1>, @<GrupoAD2>
read only = no
browseable = yes
writable = yes
force create mode = 0777
force directory mode = 0777
guest ok = no
vfs objects = acl_xattr recycle
[Pasta2]
comment = Pasta 2
# Caminho completo da pasta compartilhada 2 (ex: /mnt/vdiskStorage/samba/shares/pasta2)
path = <PontoMontagem><PastaCompartilhada2>
valid users = @<GrupoAD1>, @<GrupoAD2>
read only = no
browseable = yes
writable = yes
force create mode = 0777
force directory mode = 0777
# Permitir o acesso a visitantes
guest ok = yes
public = yes
vfs objects = acl_xattr recycle
- Após concluídos os ajustes, confira se os serviços estão executando de forma correta:
systemctl restart samba-ad-dc
systemctl restart named - Se nenhum erro ocorrer, reinicie o sistema:
init 6 - Confira se os principais serviços estão em execução
systemctl status samba-ad-dc
systemctl status named
- Se tudo estiver ok, já é possível ingressar as estações Windows no AD. Utilize o usuário Administrator e a respectiva senha.