2008/09/18

Debian Etch + Samba + AD + VPN

Instale o samba padrão com o comando:
debian$ sudo aptitude install samba samba-common samba-client krb5-config krb5-user libkrb53 winbind

Alterações no ambiente
debian$ sudo /etc/hosts

Adicione a linha
ip_do_servidor_samba servidorvpn.DOMINIO.COM.BR servidorvpn

debian$ sudo /etc/resolv.conf

Adicione a linha
search DOMINIO.COM.BR

Faça backup do arquivo original:
debian$ sudo cp /etc/smb.conf /etc/smb.conf.original

E faça essa configuração:
debian$ sudo vi /etc/smb.conf

[global]
# Pode ser igual ao domínio ou não. Pare ter certeza, acesse Meus Locais de rede,
# Rede Windows e veja o nome correto:
workgroup = NOME_DOMINIO

# Nome do Servidor PPTP que estamos configurando no AD agora:
netbios name = SERVIDORVPN

# Nome completo do domínio do AD:
realm = DOMINIO.COM.BR

# Descrição do Servidor que estamos configurando agora:
server string = Servidor VPN

# Diretório dos logs (Padrão):
log file = /var/log/samba/%m.log
max log size = 100

# Tipo de segurança do Samba:
security = ads

# Endereço IP do controlador do domínio:
password server = IP_SERVIDOR

# Habilita criptografia das senhas:
encrypt passwords = yes
# Opções de socket. Adicionar as duas últimas que não estão:
;socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

# Tem que ser no para os dois. Caso deixe true, irá tornar-se o controlador
# do domínio
domain master = no
preferred master = no

# Endereço servidor WINS
wins server = IP_SERVIDOR
dns proxy = no

# Configurações do WINBIND
idmap uid = 50001-550000
idmap gid = 50001-550000
winbind separator = +
winbind nested groups = Yes
winbind enum users=yes
winbind enum groups=yes
template shell = /bin/false
winbind use default domain = no

Faça backup do arquivo original:
debian$ sudo cp /etc/krb5.conf /etc/krb5.conf.original

E faça essa configuração:
debian$ sudo vi /etc/krb5.conf

[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = DOMINIO.COM.BR
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
forwardable = yes

[realms]
DOMINIO.COM.BR = {
kdc = nome_do_server_domínio_master.DOMINIO.COM.BR:88
# admin_server = kerberos.example.com:749
default_domain = DOMINIO.COM.BR
}

[domain_realm]
.examplenet.org = DOMINIO.COM.BR
examplenet.org = DOMINIO.COM.BR

[kdc]
profile = /var/kerberos/krb5kdc/kdc.conf

[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}

Reinicie os serviços

debian$ sudo /etc/init.d/samba stop
debian$ sudo /etc/init.d/samba start

debian$ sudo /etc/init.d/winbind stop
debian$ sudo /etc/init.d/winbind start

Verifique se o winbind carregou

debian$ ps aux | grep winbind

Deve retornar
root 16811 0.0 0.3 9352 3340 ? S 16:12 0:00 /usr/sbin/winbindd
root 16889 0.0 0.0 9048 880 ? S 16:22 0:00 /usr/sbin/winbindd
root 16971 0.0 0.0 2848 696 pts/0 R+ 17:10 0:00 grep winb

Caso retorne somente a última linha, verifique o arquivo de log:

debian$ sudo less /var/log/samba/winbindd.log

Se o erro for este:
nsswitch/winbindd_util.c:init_domain_list(518)
Could not fetch our SID - did we join?
nsswitch/winbindd.c:main(1051)
unable to initalize domain list

Faça:

debian$ sudo vi /etc/nsswitch.conf

Altere as seguintes linhas:

passwd: compat winbind
group: compat winbind
shadow: compat winbind

Reinicie ou inicie o winbind
/etc/init.d/winbind restart

Adicionar o servidor atual ao AD
debian$ sudo net ads join -U administrador@DOMINIO.COM.BR
Deve retornar:
Using short domain name -- DOMINIO
Joined 'SERVIDORVPN' to realm 'DOMINIO.COM.BR'


Já deve estar funcionando o Samba. Para testar:

Teste do Kerberos:
debian$ sudo kinit -V administrador@DOMINIO.COM.BR
Deve retornar:
Authenticated to Kerberos v5

Checar a autenticação
debian$ sudo klist
Irá retornar informações da autenticação

Listar usuários do domínio:

debian$ sudo wbinfo -u

Já tendo o PPTP configurado, adicione as linhas ao final do arquivo:

debian$ sudo vi /etc/ppp/pptpd-options

novj
novjccomp
nologfd

# Responsável pela autenticação
plugin winbind.so
ntlm_auth-helper "/usr/bin/ntlm_auth --helper-protocol=ntlm-server-1"

Reinicie o serviço

debian$ sudo /etc/init.d/pptpd stop
debian$ sudo /etc/init.d/pptpd start

Essa configuração fará com que qualquer usuário do AD autentique na VPN.
Caso queira que somente os participantes de certo grupo autentiquem, coloque ao final da última linha:

--require-membership-of=dominio+GRUPO_HABILITADO_A_USAR_A_VPN"

Ajustando o MTU para evitar lag com windows XP

debian$ sudo vi /etc/ppp/ip-up
Adicione ao final do arquivo:
/sbin/ifconfig $1 mtu 1400

2 comentários:

Anônimo disse...

Olá Marcio, vc sabe como faço para listar todos os clientes conectados no momento ao servidor pptp?

Marcio José Atanásio disse...

Olá Douglas

É possível através do comando "w" ou "who".

Até mais.