[TUTORIAL] Autenticação NTLM no Pfsense 2.2.6-i386
Enviado: 17 Mai 2016 23:44
Boa noite senhores e senhoras!
Recentemente tive que fazer a configuração da autenticação NTLM num Pfsense 2.2.6-i386 e tive muita dificuldade para encontrar materias sobre o assunto. Então resolvi fazer esse poster com a solução do problema.
Segue a solução:
1 passo: instalar o samba41 e Kbr5 através do comando: pkg install samba41 kbr5 (através do putty). Depois na parte gráfica os senhores devem instalar o squid3, o squidguard e o Shellcmd.
2 passo: Vamos editar o arquivo hosts. Nesse arquivo iremos acrescentar o ip e nome do Dominio.
comando: vi /etc/hosts (através do putty)
3 passo: Em System -> General Setup. Iremos em DNS servers e colocaremos apenas o IP do AD. Se tiver mais algum ip remova. E na Opção Use gateway deixe todos como "NONE". Iremos marca a opção "Do not use the DNS Forwarder or Resolver as a DNS server for the firewall " e depois clicar em SAVE (parte gráfica).
4 passo: Vamos editar o arquivo krb5.conf. Comando: vi /etc/krb5.conf (através do putty)
Nesse arquivo iremos colocar as seguintes informações:
[libdefaults]
default_realm = DOMINIO.LOCAL
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = yes
5 passo: Vamos editar o arquivo smb4.conf. Comando: vi /usr/local/etc/smb4.conf (através do putty). Nesse arquivo iremos colocar as seguintes informações:
[global]
workgroup = DOMINO
realm = DOMINIO.LOCAL
server string = Domain Proxy Server
security = ADS
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 S0_SNDBUF=131072
use sendfile = true
idmap config *:backend =tdb
idmap config *:range = 100000-299999
idmap config DOMINIO : backend = rid
idmap config DOMINIO : range = 10000-99999
winbind separator = +
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
winbind refresh tickets = yes
restrict anonymous = 2
log file = /var/log/samba4/log.%m
max log size = 50
6 passo: Vamos editar o arquivo rc.conf.local. Comando: vi /etc/rc.conf.local (através do putty). Nesse arquivo iremos colocar as seguintes informações:
winbindd_enable="YES"
samba_server_enable="YES"
7 passo: Vamos estart o serviço do samba. comando /usr/local/etc/rc.d/samba_server start
8 passo: Depois de inicializar o serviço do samba, vamos adicionar o pfsense no domínio. Usaremos o comando: net ads join -U nome_do_usá[email protected].
9 passo: Para verificar se ocorreu tudo bem os senhores podem usar o comando: net ads testjoin. O resultado será:
$ net ads testjoin
Join is OK
10 passo: Para verificar se ocorreu tudo bem os senhores podem usar o comando: net ads info. O resultado será:
$ net ads info
LDAP server: 192.168.21.6
LDAP server name: SRV-01.DOMIINIO.LOCAL
Realm: DOMIINO.LOCAL
Bind Path: dc=DOMINIO,dc=LOCAL
LDAP port: 389
Server time: Tue, 17 May 2016 22:43:04 BRT
KDC server: 192.168.21.6
Server time offset: -24
11 passo: Agora vamos pegar o ticket com krb5. Vamos usar o comando: kinit [email protected]
12 passo: Para verificar se ocorreu tudo bem, os senhores podem usar o comando: klist.
13 passo: Vamos restart o serviço do samba. comando /usr/local/etc/rc.d/samba_server restart
14 passo: Iremos usar o wbinfo para verificar se o pfsense esta puxando os usuários e os grupos do AD. Comando: wbinfo -u (mostra os usuários) e wbinfo -g (mostra os grupos)
15 passo: Iremos fazer com que o grupo "proxy" tenha acesso aos dados do winbindd_privileged. Iremos utilizar o comando: chgrp proxy /var/db/samba4/winbindd_privileged
16 passo:Iremos instalar essas blibliotecas:(obs: a instalação deve ser feita via ssh ou putty).
# Fix Libs in SquidGuard
ln -s /usr/lib/libldap-2.4.so.2 /usr/pbi/squidguard-amd64/local/lib/libldap-2.4.so.2
ln -s /usr/lib/libdb-5.3.so.0 /usr/pbi/squidguard-amd64/local/lib/libdb-5.3.so
ln -s /usr/local/lib/libpopt.so.0.0.0 /usr/pbi/squidguard-amd64/local/lib/libpopt.so.0
# Fix Libs in Squid3
ln -s /usr/local/lib/libpopt.so.0.0.0 /usr/pbi/squid-amd64/local/lib/libpopt.so.0
ln -s /usr/local/lib/libgssapi_krb5.so.2.2 /usr/pbi/squid-amd64/local/lib/libgssapi_krb5.so.2.2
ln -s /usr/local/lib/libkrb5.so.3.3 /usr/pbi/squid-amd64/local/lib/libkrb5.so.3.3
ln -s /usr/local/lib/libk5crypto.so.3.1 /usr/pbi/squid-amd64/local/lib/libk5crypto.so.3.1
ln -s /usr/local/lib/libcom_err.so.3.0 /usr/pbi/squid-amd64/local/lib/libcom_err.so.3.0
ln -s /usr/local/lib/libtalloc.so.2 /usr/pbi/squid-amd64/local/lib/libtalloc.so.2
ln -s /usr/local/lib/libtevent.so.0 /usr/pbi/squid-amd64/local/lib/libtevent.so.0
ln -s /usr/local/lib/libtdb.so.1 /usr/pbi/squid-amd64/local/lib/libtdb.so.1
ln -s /usr/local/lib/libwbclient.so.0 /usr/pbi/squid-amd64/local/lib/libwbclient.so.0
ln -s /usr/local/lib/libkrb5support.so.0.1 /usr/pbi/squid-amd64/local/lib/libkrb5support.so.0.1
ln -s /usr/local/lib/libintl.so.8 /usr/pbi/squid-amd64/local/lib/libintl.so.8
17 passo: Depois de instalar as bibliotecas, iremos criar um link das bibliotecas do samba4 na pasta lib. Usaremos o comando: ln -s /usr/local/lib samba/* /usr/local/lib/
18 passo: Agora criar o link do smb4.conf dentro da past lib. Usaremos o comando: ln -s /usr/local/etc/smb4.conf /usr/pbi/squid-i386/local/etc/
19 passo: Agora iremos utilizar o ntlm do próprio samba4. Iremos utilizar o comando: cp /usr/local/bin/ntlm_auth /usr/pbi/squid-i386/local/libexec/squid/ntlm_auth
20 passo: Iremos configurar o squid3 e iniciar o serviço. Depois de iniciado o serviço, iremos em squid proxy server -> geral -> Advanced features -> Integrations. Nessa opção iremos colocar a seguinte informação:
auth_param ntlm program /usr/pbi/squid-i386/local/libexec/squid/ntlm_auth --configfile=/usr/pbi/squid-i386/etc/smb4.conf --helper-protocol=squid-2.5-ntlmssp;auth_param basic program /usr/pbi/squid-i386/local/libexec/squid/ntlm_auth --configfile=/usr/pbi/squid-i386/etc/smb4.conf --helper-protocol=squid-2.5-basic;auth_param ntlm children 10;auth_param ntlm keep_alive on;acl password proxy_auth REQUIRED; http_access allow password
21 passo: Agora iremos configurar o proxy no navegador e tentaremos navegar na internet. Se aparecer uma caixa pedindo usuário e senha, tem algo errado na autenticação NTLM. Ai nesse casso iremos acessar o pfsense pelo putty e usaremos o comando: tail -f /var/squid/logs/cache.log. Com esse comando poderemos ver qual é o erro. Se o pfsense estiver acusando a falta de alguma LIB basta usar o seguinte comando: ln -s /usr/local/lib/nome_da_lib /usr/pbi/squid-i386/local/lib/nome_da_lib (obs: depois disso de ENTER e rode o comando tail -f /var/squid/logs/cache.log novamente para ver se ainda tem algum erro)
22 passo: Depois de resolver todos os erros do passo21 rode o comando: tail -f /var/squid/logs/access.log, vá no navegador e tente acessar qualquer página. Esse comando mostrar se o pfsense o que os usuários do Ad estão acessando na internet.
23 passo: Depois que tiver rodando tudo diretinho. Iremos em em Service -> shellcmd. Nessa opção iremos adicionar o comando para pfsense iniciar o serviço do sambam quando o mesmo estiver iniciando. Iremos colocar na opção Command: /usr/local/etc/rc.d/samba_server start e na opção Shellcmd Type colocaremos: shellcmd. Se quiser verificar se funcionou bastar reniciiar o pfsense e na hora que ele tiver iniciando, o mesmo ira start o serviço do samba.
24 passo: Agora é só aproveitar.
Recentemente tive que fazer a configuração da autenticação NTLM num Pfsense 2.2.6-i386 e tive muita dificuldade para encontrar materias sobre o assunto. Então resolvi fazer esse poster com a solução do problema.
Segue a solução:
1 passo: instalar o samba41 e Kbr5 através do comando: pkg install samba41 kbr5 (através do putty). Depois na parte gráfica os senhores devem instalar o squid3, o squidguard e o Shellcmd.
2 passo: Vamos editar o arquivo hosts. Nesse arquivo iremos acrescentar o ip e nome do Dominio.
comando: vi /etc/hosts (através do putty)
3 passo: Em System -> General Setup. Iremos em DNS servers e colocaremos apenas o IP do AD. Se tiver mais algum ip remova. E na Opção Use gateway deixe todos como "NONE". Iremos marca a opção "Do not use the DNS Forwarder or Resolver as a DNS server for the firewall " e depois clicar em SAVE (parte gráfica).
4 passo: Vamos editar o arquivo krb5.conf. Comando: vi /etc/krb5.conf (através do putty)
Nesse arquivo iremos colocar as seguintes informações:
[libdefaults]
default_realm = DOMINIO.LOCAL
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = yes
5 passo: Vamos editar o arquivo smb4.conf. Comando: vi /usr/local/etc/smb4.conf (através do putty). Nesse arquivo iremos colocar as seguintes informações:
[global]
workgroup = DOMINO
realm = DOMINIO.LOCAL
server string = Domain Proxy Server
security = ADS
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 S0_SNDBUF=131072
use sendfile = true
idmap config *:backend =tdb
idmap config *:range = 100000-299999
idmap config DOMINIO : backend = rid
idmap config DOMINIO : range = 10000-99999
winbind separator = +
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
winbind refresh tickets = yes
restrict anonymous = 2
log file = /var/log/samba4/log.%m
max log size = 50
6 passo: Vamos editar o arquivo rc.conf.local. Comando: vi /etc/rc.conf.local (através do putty). Nesse arquivo iremos colocar as seguintes informações:
winbindd_enable="YES"
samba_server_enable="YES"
7 passo: Vamos estart o serviço do samba. comando /usr/local/etc/rc.d/samba_server start
8 passo: Depois de inicializar o serviço do samba, vamos adicionar o pfsense no domínio. Usaremos o comando: net ads join -U nome_do_usá[email protected].
9 passo: Para verificar se ocorreu tudo bem os senhores podem usar o comando: net ads testjoin. O resultado será:
$ net ads testjoin
Join is OK
10 passo: Para verificar se ocorreu tudo bem os senhores podem usar o comando: net ads info. O resultado será:
$ net ads info
LDAP server: 192.168.21.6
LDAP server name: SRV-01.DOMIINIO.LOCAL
Realm: DOMIINO.LOCAL
Bind Path: dc=DOMINIO,dc=LOCAL
LDAP port: 389
Server time: Tue, 17 May 2016 22:43:04 BRT
KDC server: 192.168.21.6
Server time offset: -24
11 passo: Agora vamos pegar o ticket com krb5. Vamos usar o comando: kinit [email protected]
12 passo: Para verificar se ocorreu tudo bem, os senhores podem usar o comando: klist.
13 passo: Vamos restart o serviço do samba. comando /usr/local/etc/rc.d/samba_server restart
14 passo: Iremos usar o wbinfo para verificar se o pfsense esta puxando os usuários e os grupos do AD. Comando: wbinfo -u (mostra os usuários) e wbinfo -g (mostra os grupos)
15 passo: Iremos fazer com que o grupo "proxy" tenha acesso aos dados do winbindd_privileged. Iremos utilizar o comando: chgrp proxy /var/db/samba4/winbindd_privileged
16 passo:Iremos instalar essas blibliotecas:(obs: a instalação deve ser feita via ssh ou putty).
# Fix Libs in SquidGuard
ln -s /usr/lib/libldap-2.4.so.2 /usr/pbi/squidguard-amd64/local/lib/libldap-2.4.so.2
ln -s /usr/lib/libdb-5.3.so.0 /usr/pbi/squidguard-amd64/local/lib/libdb-5.3.so
ln -s /usr/local/lib/libpopt.so.0.0.0 /usr/pbi/squidguard-amd64/local/lib/libpopt.so.0
# Fix Libs in Squid3
ln -s /usr/local/lib/libpopt.so.0.0.0 /usr/pbi/squid-amd64/local/lib/libpopt.so.0
ln -s /usr/local/lib/libgssapi_krb5.so.2.2 /usr/pbi/squid-amd64/local/lib/libgssapi_krb5.so.2.2
ln -s /usr/local/lib/libkrb5.so.3.3 /usr/pbi/squid-amd64/local/lib/libkrb5.so.3.3
ln -s /usr/local/lib/libk5crypto.so.3.1 /usr/pbi/squid-amd64/local/lib/libk5crypto.so.3.1
ln -s /usr/local/lib/libcom_err.so.3.0 /usr/pbi/squid-amd64/local/lib/libcom_err.so.3.0
ln -s /usr/local/lib/libtalloc.so.2 /usr/pbi/squid-amd64/local/lib/libtalloc.so.2
ln -s /usr/local/lib/libtevent.so.0 /usr/pbi/squid-amd64/local/lib/libtevent.so.0
ln -s /usr/local/lib/libtdb.so.1 /usr/pbi/squid-amd64/local/lib/libtdb.so.1
ln -s /usr/local/lib/libwbclient.so.0 /usr/pbi/squid-amd64/local/lib/libwbclient.so.0
ln -s /usr/local/lib/libkrb5support.so.0.1 /usr/pbi/squid-amd64/local/lib/libkrb5support.so.0.1
ln -s /usr/local/lib/libintl.so.8 /usr/pbi/squid-amd64/local/lib/libintl.so.8
17 passo: Depois de instalar as bibliotecas, iremos criar um link das bibliotecas do samba4 na pasta lib. Usaremos o comando: ln -s /usr/local/lib samba/* /usr/local/lib/
18 passo: Agora criar o link do smb4.conf dentro da past lib. Usaremos o comando: ln -s /usr/local/etc/smb4.conf /usr/pbi/squid-i386/local/etc/
19 passo: Agora iremos utilizar o ntlm do próprio samba4. Iremos utilizar o comando: cp /usr/local/bin/ntlm_auth /usr/pbi/squid-i386/local/libexec/squid/ntlm_auth
20 passo: Iremos configurar o squid3 e iniciar o serviço. Depois de iniciado o serviço, iremos em squid proxy server -> geral -> Advanced features -> Integrations. Nessa opção iremos colocar a seguinte informação:
auth_param ntlm program /usr/pbi/squid-i386/local/libexec/squid/ntlm_auth --configfile=/usr/pbi/squid-i386/etc/smb4.conf --helper-protocol=squid-2.5-ntlmssp;auth_param basic program /usr/pbi/squid-i386/local/libexec/squid/ntlm_auth --configfile=/usr/pbi/squid-i386/etc/smb4.conf --helper-protocol=squid-2.5-basic;auth_param ntlm children 10;auth_param ntlm keep_alive on;acl password proxy_auth REQUIRED; http_access allow password
21 passo: Agora iremos configurar o proxy no navegador e tentaremos navegar na internet. Se aparecer uma caixa pedindo usuário e senha, tem algo errado na autenticação NTLM. Ai nesse casso iremos acessar o pfsense pelo putty e usaremos o comando: tail -f /var/squid/logs/cache.log. Com esse comando poderemos ver qual é o erro. Se o pfsense estiver acusando a falta de alguma LIB basta usar o seguinte comando: ln -s /usr/local/lib/nome_da_lib /usr/pbi/squid-i386/local/lib/nome_da_lib (obs: depois disso de ENTER e rode o comando tail -f /var/squid/logs/cache.log novamente para ver se ainda tem algum erro)
22 passo: Depois de resolver todos os erros do passo21 rode o comando: tail -f /var/squid/logs/access.log, vá no navegador e tente acessar qualquer página. Esse comando mostrar se o pfsense o que os usuários do Ad estão acessando na internet.
23 passo: Depois que tiver rodando tudo diretinho. Iremos em em Service -> shellcmd. Nessa opção iremos adicionar o comando para pfsense iniciar o serviço do sambam quando o mesmo estiver iniciando. Iremos colocar na opção Command: /usr/local/etc/rc.d/samba_server start e na opção Shellcmd Type colocaremos: shellcmd. Se quiser verificar se funcionou bastar reniciiar o pfsense e na hora que ele tiver iniciando, o mesmo ira start o serviço do samba.
24 passo: Agora é só aproveitar.