Differences

This shows you the differences between two versions of the page.

Link to this comparison view

instalando_e_configurando_samba_com_autenticacao_em_ad_no_debian_squeeze_pt_br [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== Instalando e Configurando Samba com autenticação em AD no Debian Squeeze ======
 +
 +
 +Qual a ideia principal desse HOW TO demostrar a instalação do samba e configurar ele para trabalhar integrado com o AD, pois geralmente trabalhamos com ambientes heterogéneos ou seja, trabalhando com um ambiente multi-plataforma e é o que eu vou mostrar nesse HOW TO. **OBS:** Não vou mostrar como criar um grupo e inserir usuários no AD 
 +
 +Prepare o seu sistema com o seguinte script http://​wiki.douglasqsantos.com.br/​doku.php/​confinicialsqueeze_en para que não falte nenhum pacote ou configuração.
 +
 +
 +Vamos primeiro setar essas duas variáveis do ambiente para não ficar nos questionando sobre a configuração inicial dos pacotes por que vamos efetuar todas manualmente.
 +<sxh bash>
 +
 +export DEBIAN_PRIORITY=critical
 +export DEBIAN_FRONTEND=noninteractive
 +</​sxh>​
 +
 +Agora vamos fazer a instalação dos pacotes necessários.
 +<sxh bash>
 +
 +aptitude update && aptitude dist-upgrade -y
 +aptitude install -y samba samba-common smbclient winbind krb5-config libpam-krb5 cifs-utils
 +</​sxh>​
 +
 +Agora vamos voltar as variáveis do sistema ao normal
 +<sxh bash>
 +
 +unset DEBIAN_PRIORITY
 +unset DEBIAN_FRONTEND
 +</​sxh>​
 +
 +Agora vamos efetuar backup do resolv.conf
 +<sxh bash>
 +
 +cp -Rfa /​etc/​resolv.conf{,​.bkp}
 +</​sxh>​
 +
 +Agora vamos configurar o /​etc/​resolv.conf deixe ele como no exemplo
 +<sxh bash>
 +
 +#Domínio e Ip do servidor Windows Server 2008
 +search douglasqsantos.com.br
 +nameserver 192.168.0.254
 +</​sxh>​
 +
 +Agora vamos testar o nslookup
 +<sxh bash>
 +
 +nslookup douglasqsantos.com.br
 +Server: ​        ​192.168.0.254
 +Address: ​       192.168.0.254#​53
 +
 +Name:   ​douglasqsantos.com.br
 +Address: 192.168.0.254
 +</​sxh>​
 +
 +Agora vamos efetuar o ajuste do relógio dos sistema
 +<sxh bash>
 +
 +ntpdate -u ntp.usp.br
 +28 Jul 12:02:01 ntpdate[14281]:​ adjust time server 143.107.255.15 offset 0.034858 sec
 +</​sxh>​
 +
 +Agora vamos fazer backup do arquivo de configuração do cliente kerberos
 +<sxh bash>
 +
 +cp -Rfa /​etc/​krb5.conf{,​.bkp}
 +</​sxh>​
 +
 +Agora vamos configurar o arquivo /​etc/​krb5.conf do cliente kerberos que vai gerenciar os ticktes das senhas
 +<sxh bash>
 +
 +vim /​etc/​krb5.conf
 +[libdefaults]
 +default_realm = douglasqsantos.com.br
 +krb4_config = /​etc/​krb.conf
 +krb4_realms = /​etc/​krb.realms
 +kdc_timesync = 1
 +ccache_type = 4
 +forwardable = true
 +proxiable = true
 +v4_instance_resolve = false
 +v4_name_convert = {
 +host = {
 +rcmd = host
 +ftp = ftp
 +}
 +plain = {
 +something = something-else
 +}
 +}
 +fcc-mit-ticketflags = true
 +[realms]
 +douglasqsantos.com.br = {
 +kdc = 192.168.0.254
 +admin_server = 192.168.0.254:​749
 +default_server = 192.168.0.254
 +}
 +[domain_realm]
 +.douglasqsantos.com.br=douglasqsantos.com.br
 +douglasqsantos.com.br=douglasqsantos.com.br
 +[login]
 +krb4_convert = true
 +krb4_get_tickets = false
 +[kdc]
 +profile = /​etc/​krb5kdc/​kdc.conf
 +[appdefaults]
 +pam = {
 +debug = false
 +ticket_lifetime = 36000
 +renew_lifetime = 36000
 +forwardable = true
 +krb4_convert = false
 +}
 +[logging]
 +default = file:/​var/​log/​krb5libs.log
 +kdc = file:/​var/​log/​krb5kdc.log
 +admin_server = file:/​var/​log/​kadmind.log
 +</​sxh>​
 +
 +Agora vamos acertar o arquivo /​etc/​security/​limits.conf para não ficar mostrando erro no samba
 +<sxh bash>
 +
 +vim /​etc/​security/​limits.conf
 +#colocar no final do arquivo
 +root hard nofile 131072
 +root soft nofile 65536
 +mioutente hard nofile 32768
 +mioutente soft nofile 16384
 +</​sxh>​
 +
 +Agora vamos fazer um backup do arquivo de configuração do samba
 +<sxh bash>
 +
 +cp -Rfa /​etc/​samba/​smb.conf{,​.bkp}
 +</​sxh>​
 +
 +Agora vamos a configuração do samba /​etc/​samba/​smb.conf deixe o arquivo como no exemplo
 +<sxh bash>
 +
 +vim /​etc/​samba/​smb.conf
 +[global]
 +        workgroup = DOUGLASQSANTOS
 +        realm = douglasqsantos.com.br
 +        server string = Samba Server
 +        security = ADS
 +        auth methods = winbind
 +        password server = 192.168.0.254
 +        log level = 1
 +        log file = /​var/​log/​samba/​samba.log
 +        log file = /​var/​log/​samba/​%D.%U.%m.log
 +        max log size = 1000
 +        follow symlinks = yes
 +        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
 +        getwd cache = yes
 +        dead time = 15
 +        wide links = no
 +        debug level = 0
 +        acl compatibility = Auto
 +        aio read size = 16384
 +        max xmit = 65535
 +        read raw = no
 +        write raw = no
 +        large readwrite = yes
 +        strict locking = yes
 +        oplocks = yes
 +        level2 oplocks = yes
 +        load printers = No
 +        printcap name = cups
 +        disable spoolss = Yes
 +        guest account = nobody
 +        local master = No
 +        domain master = No
 +        idmap uid = 10000-30000
 +        idmap gid = 10000-30000
 +        winbind cache time = 15
 +        winbind enum users = Yes
 +        winbind enum groups = Yes
 +        winbind use default domain = Yes
 +        #Arquivos proibidos em qualquer compartilhamento
 +        veto files = /​*.mp3/​*.mp4/​*.wma/​*.avi/​*.divx/​*.mpg/​*.mpeg/​*.rmvb/​*.wmv/​*.scr/​*.inf/​*.ogg/​*.pif
 +        vfs objects = full_audit, recycle
 +        #Auditoria
 +        full_audit:​facility = LOCAL5
 +        full_audit:​priority = NOTICE
 +        full_audit:​success = write, unlink, rename, mkdir, rmdir, chmod, chown
 +        full_audit:​prefix = %P|%U|%I|%m
 +        full_audit:​failure = none
 +        #Controle da Lixeira
 +        recycle:​facility = LOCAL1
 +        recycle:​priority = NOTICE
 +        recycle:​maxsize = 0
 +        recycle:​repository = .recycle/%U
 +        recycle:​directory_mode = 0777
 +        recycle:​subdir_mode = 0777
 +        recycle:​keeptree = True
 +        recycle:​touch = False
 +        recycle:​maxsize = 0
 +        recycle:​versions = True
 +        recycle:​noversions = .doc|.xls|.ppt|.pdf
 +        recycle:​exclude = *.tmp, *.temp, *.log, *.ldb, *.o, *.obj, ~*.*, *.bak, *.iso
 +        recycle:​exclude_dir = tmp, temp, cache
 +
 +[programas]
 +        path = /​srv/​programas
 +        browsable = yes
 +        writable = yes
 +        public = no
 +        guest ok = no
 +        create mask = 0666
 +        directory mask = 0777
 +        force create mode = 0644
 +        force directory mode = 0775
 +        locking = no
 +        vfs objects = recycle, full_audit
 +        #force user = douglas
 +        #force group = @"​%D\ti-admin"​
 +        valid users =  @"​%D\ti-admin",​ @"​%D\ti-estagiarios"​
 +</​sxh>​
 +
 +Agora vamos configurar o rsyslog para gerenciar os logs de auditoria do samba no arquivo /​etc/​rsyslog.conf
 +<sxh bash>
 +
 +echo "​local5.notice /​var/​log/​samba/​auditoria.log"​ >> /​etc/​rsyslog.conf
 +</​sxh>​
 +
 +Agora já podemos reiniciar o rsyslog
 +<sxh bash>
 +
 +/​etc/​init.d/​rsyslog restart
 +</​sxh>​
 +
 +Agora vamos criar os diretórios dos compartilhamentos e acertar as permissões
 +
 +Tenho que deixar as permissões iniciais como 777 para que o sistema consiga criar as pastas iniciais.
 +<sxh bash>
 +
 +mkdir -p /​srv/​programas
 +chmod 777 /​srv/​programas
 +</​sxh>​
 +
 +No samba criamos 1 compartilhamento para os programas e este esta atribuído permissão para o grupo %D\ti-admins e %D\ti-estagiarios a variável %D vai ser o domínio
 +
 +Então temos que criar esse grupo admins no AD caso não exista e atribuir usuários a ele para que possamos acessar esse compartilhamento,​ este compartilhamento criei somente para exemplificar como vai ser criado compartilhamentos usando grupos do AD 
 +
 +Agora vamos acertar o arquivo de inicialização do winbind /​etc/​init.d/​winbind para ele não ficar fazendo cache das consultas no AD
 +<sxh bash>
 +
 +#linha 36 deixar como abaixo
 +start-stop-daemon --start --quiet --oknodo --exec $DAEMON -- no-caching #​\$WINBINDD_OPTS"​
 +</​sxh>​
 +
 +Vamos fazer um backup do arquivo /​etc/​nsswitch.conf
 +<sxh bash>
 +
 +cp /​etc/​nsswitch.conf{,​.bkp}
 +</​sxh>​
 +
 +Agora temos que acertar o arquivo /​etc/​nsswitch.conf que controla aonde vai ser consultado usuários e senhas deixe o arquivo como abaixo.
 +
 +<sxh bash>
 +
 +passwd: ​        ​compat winbind
 +group: ​         compat winbind
 +shadow: ​        ​compat
 +
 +hosts: ​         files dns
 +networks: ​      files
 +
 +protocols: ​     db files
 +services: ​      db files
 +ethers: ​        db files
 +rpc:            db files
 +
 +netgroup: ​      nis
 +</​sxh>​
 +
 +Agora vamos reiniciar o samba e o winbind para eles pegarem a nova configuração
 +<sxh bash>
 +
 +/​etc/​init.d/​samba restart
 +/​etc/​init.d/​winbind restart
 +</​sxh>​
 +
 +Agora temos que inserir a maquina no domínio AD
 +<sxh bash>
 +
 +net ads join douglasqsantos.com.br -U administrador
 +Enter administrador'​s password: senha
 +Using short domain name -- DOUGLASQSANTOS
 +Joined '​DEBIAN'​ to realm '​douglasqsantos.com.br'​
 +</​sxh>​
 +
 +Agora temos que reiniciar os serviços novamente
 +<sxh bash>
 +
 +/​etc/​init.d/​samba restart
 +/​etc/​init.d/​winbind restart
 +</​sxh>​
 +
 +Agora já podemos testar a conexão do samba com o AD
 +<sxh bash>
 +
 +wbinfo -t
 +checking the trust secret for domain DOUGLASQSANTOS via RPC calls succeeded
 +</​sxh>​
 +
 +Agora vamos checar os grupos que temos no domínio.
 +<sxh bash>
 +
 +wbinfo -g
 +computadores do domínio
 +controladores de domínio
 +administradores de esquema
 +administradores de empresa
 +editores de certificados
 +admins. do domínio
 +usuários do domínio
 +convidados domínio
 +proprietários criadores de diretiva de grupo
 +servidores ras e ias
 +grupo de replicação de senha rodc permitido
 +grupo de replicação de senha rodc negado
 +controladores de domínio somente leitura
 +controladores de domínio de empresa somente leitura
 +dnsadmins
 +dnsupdateproxy
 +</​sxh>​
 +
 +Agora vamos chegar os usuários do domínio
 +<sxh bash>
 +
 +wbinfo -u
 +DEBIAN\nobody
 +DEBIAN\douglas
 +administrador
 +convidado
 +krbtgt
 +douglas
 +</​sxh>​
 +
 +Fazendo backup dos arquivos da pam
 +<sxh bash>
 +
 +cp -Rfa /​etc/​pam.d{,​.bkp}
 +</​sxh>​
 +
 +Vamos agora acertar a pam para que o sistema pegue primeiro o usuário e senha local e depois do AD caso precisarmos utilizar os usuários locais arquivo da pam /​etc/​pam.d/​common-password ​
 +<sxh bash>
 +
 +vim /​etc/​pam.d/​common-password
 +password ​       sufficient ​                     pam_unix.so
 +password ​       requisite ​                      ​pam_krb5.so minimum_uid=1000
 +password ​       [success=2 default=ignore] ​     pam_unix.so obscure use_authtok try_first_pass sha512
 +password ​       [success=1 default=ignore] ​     pam_winbind.so use_authtok try_first_pass
 +password ​       requisite ​                      ​pam_deny.so
 +password ​       required ​                       pam_permit.so
 +</​sxh>​
 +
 +Outra opção interessante que podemos utilizar é que podemos logar via ssh utilizando os usuários do AD porém temos que fazer mais um acerto na pam em /​etc/​pam.d/​common-session
 +<sxh bash>
 +
 +vim /​etc/​pam.d/​common-session
 +session [default=1] ​                    ​pam_permit.so
 +session requisite ​                      ​pam_deny.so
 +session required ​                       pam_permit.so
 +session required ​                       pam_unix.so ​
 +session optional ​                       pam_winbind.so ​
 +session optional ​                       pam_mkhomedir.so skel=/​etc/​skel umask=0027
 +</​sxh>​
 +
 +Agora vou abordar alguns comandos para manipulação dos compartilhamentos
 +
 +Aqui vamos fazer a listagem o dos compartilhamentos no servidor com o usuário douglas
 +<sxh bash>
 +
 +smbclient -L //​192.168.0.253 -U DOUGLASQSANTOS/​douglas
 +Enter DOUGLASQSANTOS/​douglas'​s password: senha
 +Domain=[DOUGLASQSANTOS] OS=[Unix] Server=[Samba 3.5.6]
 +
 +  Sharename ​      ​Type ​     Comment
 +  --------- ​      ​---- ​     -------
 +  IPC$            IPC       IPC Service (Samba Server)
 +  programas ​      ​Disk ​     Programas
 +        [...]
 +
 +Domain=[DOUGLASQSANTOS] OS=[Unix] Server=[Samba 3.5.6]
 +
 +  Server ​              ​Comment
 +  --------- ​           -------
 +  DEBIAN ​               Samba Server
 +
 +  Workgroup ​           Master
 +  --------- ​           -------
 +  DOUGLASQSANTOS ​             SERVER-PC
 +
 +</​sxh>​
 +
 +Agora vamos logar no servidor samba como se fosse um servidor FTP
 +
 +<sxh bash>
 +
 +smbclient //​192.168.0.253/​programas -U DOUGLASQSANTOS/​douglas
 +Enter DOUGLASQSANTOS/​douglas'​s password: ​
 +Domain=[DOUGLASQSANTOS] OS=[Unix] Server=[Samba 3.5.6]
 +smb: \> 
 +</​sxh>​
 +
 +Agora vamos logar novamente no servidor como se fosse um servidor FTP porem informando a senha no prompt
 +<sxh bash>
 +
 +smbclient //​192.168.0.253/​programas -U DOUGLASQSANTOS/​douglas%senha
 +Domain=[DOUGLASQSANTOS] OS=[Unix] Server=[Samba 3.5.6]
 +smb: \> 
 +</​sxh>​
 +
 +Agora vamos efetuar a montagem de um compartilhamento via linha de comando
 +<sxh bash>
 +
 +mkdir /mnt/samba
 +mount.smbfs -o user=DOUGLASQSANTOS/​douglas,​password=senha //​192.168.0.253/​programas /mnt/samba
 +</​sxh>​
 +
 +Agora vamos verificar se obtivemos sucesso
 +<sxh bash>
 +
 +df -Th
 +Sist. Arq.    Tipo    Size  Used Avail Use% Montado em
 +/​dev/​xvda3 ​    ​xfs ​    ​19G ​ 2,6G   ​17G ​ 14% /
 +tmpfs        tmpfs   ​1003M ​    0 1003M   0% /​lib/​init/​rw
 +udev         ​tmpfs ​   990M   ​80K ​ 990M   1% /dev
 +tmpfs        tmpfs   ​1003M ​    0 1003M   0% /dev/shm
 +/​dev/​xvda1 ​   ext3    184M   ​23M ​ 153M  13% /boot
 +/​dev/​xvdb1 ​    ​xfs ​   400G   ​59G ​ 342G  15% /srv
 +//​192.168.0.253/​programas/​ cifs    400G   ​59G ​ 342G  15% /mnt/samba
 +</​sxh>​
 +
 +Podemos efetuar a montagem também da seguinte forma vamos obter o mesmo resultado
 +<sxh bash>
 +
 +mount -t cifs //​192.168.0.254/​programas /mnt/samba -o user=DOUGLASQSANTOS/​douglas,​password=senha
 +</​sxh>​
 +
 +Montando no /etc/fstab
 +<sxh bash>
 +//​192.168.0.254/​programas /mnt/samba cifs auto,​credentials=/​etc/​smbcredentials,​workgroup=DOUGLASQSANTOS,​gid=douglas,​uid=douglas,​rw,​noserverino 0 0
 +</​sxh>​
 +
 +Agora precisamos criar o smbcredentials para armazenar as informações de usuário e senha
 +<sxh bash>
 +vim /​etc/​smbcredentials
 +username=douglas
 +password=senha
 +</​sxh>​
 +
 +Agora vamos ajustar as permissões do arquivo
 +<sxh bash>
 +chmod 640 /​etc/​smbcredentials
 +</​sxh>​
 +
 +
 +Agora pra testar é só executar o seguinte comando
 +<sxh bash>
 +mount -a
 +</​sxh>​
 +
 +
 +====== Referências ======
 +
 +  - http://​www.samba.org/​
 +  - http://​www.samba.org/​samba/​docs/​man/​Samba-HOWTO-Collection/​domain-member.html#​ads-member