Imprimir esta página
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 '<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.