(51) 2160.9170
  • Blog SOULinux

    Acompanhe Artigos, Notícias e nossos Casos de Sucesso.

Mostrando itens por marcador: SAMBA4

 

O objetivo principal deste tutorial é para complementar o artigo que descreve a configuração de rede em um servidor AD com SAMBA4. O artigo pode ser visto em: http://soulinux.com/blog/item/7-active-directory-com-samba-4-parte-1

 

REFERÊNCIAS

<ethX>: Interface IP nativa (ex: ens18) <DNS3>: IP de um DNS público (ex: 8.8.8.8)
<MascaraRede>: Máscara de rede utilizada (ex: 255.255.255.0 ou /24) <DNS4>: IP de um DNS público (8.8.4.4)
<DominioLocal>: Nome de seu domínio (ex: soulinux.local) <UUID>: UUID da interface de rede
<Gateway>: Endereço IP do seu gateway (ex: 192.168.9.1) <MACAddress>: Endereço MAC da interface de rede
<DNS1>: Endereço IP do Servidor AD (192.168.9.3) <Hostname>: Nome do Servidor AD (ex: srvArquivos)
<DNS2>: Endereço IP do DNS principal da rede (ex: 192.168.9.1)  

 


Configuração de Rede

O Guia de administração RHEL7 indica que o NetworkManager (Gerenciador de Rede) não suporta redes bridging, recurso que é utilizado em máquinas virtuais. Caso então, esteja fazendo esta configuração em uma máquina virtual, desinstale o NetworkManager.

  • Logado como usuário root, pare e desative o NetworkManager da inicialização padrão do Redhat/CentOS:

systemctl stop NetworkManager

chkconfig NetworkManager off

  • Agora remova o NetworkManager:

yum remove NetworkManager

  • Instale o pacote net-tools, a fim de termos os comandos tradicionais de configuração de rede. Caso precise configurar as interfaces antes de instalar o “net-tools” ou não tenha internet disponível nessa máquina, confira a última seção deste guia.

yum install net-tools

  • Faça uma cópia do arquivo de configurações da respectiva interface de rede (ex: ens18):

cp /etc/sysconfig/network-scripts/ifcfg-<ethX> /etc/sysconfig/network-scripts/ifcfg-<ethX>.ORI

  • Edite o arquivo de configurações da respectiva interface de rede (ex: eth1):

vi /etc/sysconfig/network-scripts/ifcfg-<ethX>

  •  Altere o arquivo para que fique com as configurações desejadas. Segue abaixo um exemplo:

    TYPE="Ethernet"
    BOOTPROTO="static"
    DEFROUTE="yes"
    IPV4_FAILURE_FATAL="no"
    IPV6INIT="yes"
    IPV6_AUTOCONF="yes"
    IPV6_DEFROUTE="yes"
    IPV6_FAILURE_FATAL="no"
    IPV6_ADDR_GEN_MODE="stable-privacy"
    NAME="<ethX>
    UUID="c0dd071c-8b47-47d3-8c1d-99a18a92ad9b" #ID variável de acordo com a interface
    DEVICE="<ethX>"
    ONBOOT="yes"
    IPADDR="<EnderecoIP>"
    PREFIX="24"
    GATEWAY="<Gateway>"
    DNS1="<DNS1>" #Se a rede possuir SAMBA4 e DNS no mesmo servidor, coloque o endereço IP do SAMBA4
    DNS2="<DNS2>"
    DNS3="<DNS3>"
    DNS4="<DNS4>"
    DOMAIN="<DominioLocal>" # Domínio da Rede
    IPV6_PEERDNS="yes"
    IPV6_PEERROUTES="yes"
    IPV6_PRIVACY="no"

  • Reinicie o serviço de rede:

systemctl restart network

  • Para iniciar a rede automaticamente na inicialização:

chkconfig network on

  • Para listar inicialização dos daemons do Redhat/CentOS faça:

chkconfig --list

 

Configuração de Hostname

  • Faça uma cópia do arquivo de configurações do hostname:
    cp /etc/hostname /etc/hostname.ORI

  • Edite o arquivo de configurações do hostname:
    vi /etc/hostname

  • Altere o arquivo para que fique com as configurações desejadas (ex: srvarquivos.soulinux.local):
    <Hostname>.<DominioLocal>

  • Faça uma cópia do arquivo “/etc/hosts”:
    cp /etc/hosts /etc/hosts.ORI

  • Edite o arquivo “/etc/hosts”:
    vi /etc/hosts

  • Adicione a seguinte linha no final do arquivo “/etc/hosts”:
    <EnderecoIP> <Hostname>.<DominioLocal> <Hostname>

 

 

Configuração de DNS

  • Faça uma cópia do arquivo de configurações do DNS:
    cp /etc/resolv.conf /etc/resolv.conf.ORI

  • Edite o arquivo de configurações do DNS:
    vi /etc/resolv.conf

  • Deixe o arquivo com o seguinte conteúdo:
    search <DominioLocal>
    domain <DominioLocal>
    nameserver <DNS1> #Se a rede possuir SAMBA4 e DNS no mesmo servidor, coloque o endereço IP do SAMBA4
    nameserver <DNS2>
    nameserver <DNS3>
    nameserver <DNS4>

  • Caso seja uma VM, o melhor é desativar o serviço de firewall, bem como, desabilitar da inicialização:
    systemctl stop firewalld
    systemctl disable firewalld

 

 

Servidor NTP (Chrony)

Sincronização de tempo é essencial para o bom funcionamento muitos serviços e aplicativos. O CentOS 7 utiliza como padrão o Chrony, que é uma implementação do protocolo NTP e que atualiza mesmo estando com problemas de rede (caso consiga fazer algumas conexões periódicas).

  • Caso não esteja instalado, instale o Chrony:
    yum install chrony

  • Edite o arquivo de configuração do Chrony:
    vi /etc/chrony.conf

  • Comente as linhas que se referem ao pool CentOS (centos.pool.ntp.org) e adicione os servidores NTP do registro.br:
    # These servers were defined in the installation:
    #server 0.centos.pool.ntp.org iburst
    #server 1.centos.pool.ntp.org iburst
    #server 2.centos.pool.ntp.org iburst
    #server 3.centos.pool.ntp.org iburst
    server a.ntp.br iburst
    server b.ntp.br iburst
    server c.ntp.br iburst
    # Use public servers from the pool.ntp.org project.
    ...

    # Allow NTP client access from local network.
    #allow 192.168/16
    ...


  • Após os ajustes, reinicie o serviço:
    systemctl restart chronyd

  • Para monitorar a correção do tempo, os comandos a seguir podem ser utilizados:
    chronyc tracking
    chronyc sources

 


Configuração de Rede nativo do CentOS 7 (ipaddr)

Os comandos mostrados nesta seção são para o caso de precisar configurar alguma Interface de rede antes de instalar o pacote "net-tools", que não é mais nativo do CentOS.

  • Ver status das Interfaces:
    ip addr show

  • Adicionar o endereço IP e máscara à interface (ex: ip addr add 192.168.9.3/24 dev eth1):
    ip addr add <EnderecoIP>/<Mascara> dev <ethX>

  • Adicionar o gateway (ex: 192.168.9.1) como rota padrão:
    ip route add default via <Gateway> dev <ethX>

  • Mostrar as rotas:
    ip r

  • Adicionar Alias de rede:
    ip address add dev <ethX> <EnderecoIP>/<Mascara> label <ethX>:0

 

 

 

Marcado sob

 

 

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.

 

Marcado sob