(51) 2160.9170
  • Blog SOULinux

    Acompanhe Artigos, Notícias e nossos Casos de Sucesso.
Segunda, 03 Junho 2019

Active Directory com SAMBA 4 - Parte 2

Escrito por

 

 

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 '<DominioIntra>\Domain Admins' SeDiskOperatorPrivilege -U'<DominioIntra>\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'<DominioIntra>\Administrator'
  • Para o GPO funcionar corretamente, deve-se dar permissões completas em sysvol e netlogon.
    chmod 777 -R /usr/intra/samba/var/locks/sysvol/<DominioIntra>/scripts
    chmod 777 -R /usr/intra/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”, intraizado na pasta “/usr/intra/samba/private/” o conteúdo da nova Unidade Organizacional (OU).

 

  • Por segurança, como 'root', faça uma cópia do arquivo “/usr/intra/samba/private/sam.ldb”:
    cp /usr/intra/samba/private/sam.ldb /usr/intra/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/intra/samba/private/sam.ldb << EOF
    dn: ou=<NomeOU>,dc=<Dominio>,dc=intra
    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/intra/samba/private/sam.ldb
    ldbsearch -H /usr/intra/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 intrahost -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/intra/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 intraicado em “/usr/intra/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/intra/samba/etc/smb.conf /usr/intra/samba/etc/smb.conf.ORI 
  • Edite o arquivo “smb.conf”:
    vi /usr/intra/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 intra
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 intra 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
intra1.notice /var/log/auditoria-samba.log

[netlogon]
path = /usr/intra/samba/var/locks/sysvol/<DominioIntra>/scripts
read only = No
browseable = no

[sysvol]
path = /usr/intra/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
# Intraizaçã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.

 

Itens relacionados

Últimos Artigos


Warning: preg_replace(): Unknown modifier 'M' in /var/www/virtual/soulinux.com/htdocs/modules/mod_news_pro_gk5/tmpl/view.php on line 37