[TUTORIAL] Autenticação NTLM no Pfsense 2.2.6-i386

Avatar do usuário
marcelo0786
Global Moderator
Global Moderator
Mensagens: 127
Registrado em: 17 Jun 2013 17:43
Status: Offline

[TUTORIAL] Autenticação NTLM no Pfsense 2.2.6-i386

Mensagem por marcelo0786 »

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.
Editado pela última vez por marcelo0786 em 19 Mai 2016 16:17, em um total de 1 vez.



souza20009
Newbie
Newbie
Mensagens: 3
Registrado em: 02 Set 2014 22:42
Status: Offline

Re: [TUTORIAL] Autenticação NTLM no Pfsense 2.2.6-i386

Mensagem por souza20009 »

Amigo boa tarde, esse pacote pkg install samba41 que esta informado no tutorial ele não funciona.
Sabe informa qual outro pacote instalo no pfsense.


pkg: No packages available to install matching 'samba41' have been found in the repositories

Avatar do usuário
marcelo0786
Global Moderator
Global Moderator
Mensagens: 127
Registrado em: 17 Jun 2013 17:43
Status: Offline

Re: [TUTORIAL] Autenticação NTLM no Pfsense 2.2.6-i386

Mensagem por marcelo0786 »

Boa noite, Souza2009 !!
Desculpe a demora em responder. Ando meio ocupado. 
Grande! Tu pode instalar o pkg install samba4. 
Depois da um feedback..

ivanildogalvao
Newbie
Newbie
Mensagens: 2
Registrado em: 16 Nov 2016 13:23
Status: Offline

Re: [TUTORIAL] Autenticação NTLM no Pfsense 2.2.6-i386

Mensagem por ivanildogalvao »

Olá Marcelo, tudo bem ? Muito bom este seu tutorial, mas veja se pode me ajudar em uma bronca.
Eu fui até o passo 12 tranquilo, mas ao tentar o passo 13 que é o de iniciar o serviço, recebo a mensagem: 
Performing sanity check on Samba configuration: FAILED
Tem ideia do que pode ser ?
Obrigado !

Avatar do usuário
marcelo0786
Global Moderator
Global Moderator
Mensagens: 127
Registrado em: 17 Jun 2013 17:43
Status: Offline

Re: [TUTORIAL] Autenticação NTLM no Pfsense 2.2.6-i386

Mensagem por marcelo0786 »

Boa tarde Ivanildogalvao


Desculpe a demora..
Use o comando testparm /usr/local/etc/smb.conf 
Esse comando vai verificar e apontar o que você precisa corrigir no smb.conf do samba.
Qualquer coisa avisa.

marochavieira
Newbie
Newbie
Mensagens: 2
Registrado em: 04 Dez 2015 11:34
Status: Offline

Re: [TUTORIAL] Autenticação NTLM no Pfsense 2.2.6-i386

Mensagem por marochavieira »

Marcelo
Eu tinha feito essa integração no meu 2.2.6 64 Bits..
Mas infelizmente o site onde tinha o material não existe mais, você tem para 64 bits também?
Atenciosamente, 
Marco Aurélio

Avatar do usuário
marcelo0786
Global Moderator
Global Moderator
Mensagens: 127
Registrado em: 17 Jun 2013 17:43
Status: Offline

Re: [TUTORIAL] Autenticação NTLM no Pfsense 2.2.6-i386

Mensagem por marcelo0786 »

marochavieira escreveu: Marcelo
Eu tinha feito essa integração no meu 2.2.6 64 Bits..
Mas infelizmente o site onde tinha o material não existe mais, você tem para 64 bits também?
Atenciosamente, 
Marco Aurélio

1 passo: instalar o samba e as dependencias através desse script. (obs: a instalação deve ser feita via ssh).
fetch -q -o - http://projetos.mundounix.com.br/pfsens ... 3/samba.sh | sh

2 passo: Instalar as blibliotecas:(obs: a instalação deve ser feita via ssh).

# 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

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.

4 passo: Services -> Samba (AD). Nessa opção vão escolher: Member of Domain; Interface: LAN; Dominio: dominio.local (Dominio dos senhores); Workgroup: dominio; username/password (tem que ser um usuário e senha que tenha permissão para colocar o pfsense no Domain); Clique em OK.

5 passo: Vá em Diagnostics -> Command Prompt. Digite o comando: net ads info e mostra esse resultado, o pfsense já esta integrado com AD: 

$ net ads info
LDAP server: 100.100.100.2
LDAP server name: SRV-01.DOMINIO.LOCAL
Realm: DOMINIO.LOCAL
Bind Path: dc=DOMINIO,dc=LOCAL
LDAP port: 389
Server time: Fri, 06 May 2016 15:32:46 BRT
KDC server: 192.168.20.6
Server time offset: -23

6 passo: Use o camando wbinfo -u e depois o wbinfo -g para listar os usuários e os grupos do seu AD.

7 passo: Vá em Services -> Proxy server. Na aba Local Cache  e clique em salvar.

8 passo: Na aba Geral vamos marca Enable Squid Proxy; Marca Enable Acess Logging; Colocar em Rotate Logs valor 30; Em Error Language colocar pt-br; e clicar em Salvar.

8 passo: Na aba Authentication. Iremos em Authentication Method e vamos escolher: winbind NTLM; no item Authentication Prompt colocamos: Please enter your credentials to access the proxy; no item Authentication Processes colocamos: 5; no item Authentication Processes colocamos: 5; Marcamos a opção  NTLMSSP Negotiate; e no item NTLMSSP Negotiate colocamos: 1000000; e clicamos em salvar.

9 passo: Os senhores(as) podem colocar o proxy no navegador e testar. 

marochavieira
Newbie
Newbie
Mensagens: 2
Registrado em: 04 Dez 2015 11:34
Status: Offline

Re: [TUTORIAL] Autenticação NTLM no Pfsense 2.2.6-i386

Mensagem por marochavieira »

Marcelo
Eu ainda não tinha testado, fui testar agora aqui.
Fiz via SSH 
1º 
fetch -q -o - 
[/url] | sh
---------------------------------------------------------------------------------------------------------------------
2º 
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
---------------------------------------------------------------------------------------------------------------------
3º 
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
---------------------------------------------------------------------------------------------------------------------

[/size][/color][/font][/size][/color]
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.
[color][size][font][color][size]
---------------------------------------------------------------------------------------------------------------------

Services -> Samba (AD). Nessa opção vão escolher: Member of Domain; Interface: LAN; Dominio: dominio.local (Dominio dos senhores); Workgroup: dominio; username/password (tem que ser um usuário e senha que tenha permissão para colocar o pfsense no Domain); Clique em OK.
---------------------------------------------------------------------------------------------------------------------

Vá em Diagnostics -> Command Prompt. Digite o comando: net ads info e mostra esse resultado, o pfsense já esta integrado com AD: 

Então, creio o patch nao ter instalado todas as dependências do pacote.. pois o net ads info não funciona, command not found.. o mesmo para wbinfo -p e demais.

Abaixo está toda a execução do fetch
fetch -q -o - [/url] | sh
pkg already bootstrapped at /usr/local/sbin/pkg
/usr/local/lib/libpkg.so.4: Undefined symbol "openat"
/usr/local/lib/libpkg.so.4: Undefined symbol "openat"
ln: samba.sh: File exists
Reversed (or previously applied) patch detected!  Assuming -R.Hunk #1 succeeded at 150 with fuzz 2.

Starting the pfSense developer shell....

Installing package "squidGuard-devel"...
Trying to fetch package info... Done.

Beginning package installation for squidGuard-devel . 100%
Installing squidGuard-devel and its dependencies. 100% 100% 100%
Warning: file_put_contents(/usr/pbi/squidguard-devel-amd64/etc/squidGuard/squidguard_conf.xml): failed to open stream: No such file or directory in /usr/local/pkg/squidguard.inc on line 1044

Done.
/usr/local/lib/libpkg.so.4: Undefined symbol "openat"
/usr/local/lib/libpkg.so.4: Undefined symbol "openat"
Hmm...  Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|diff -r 82c0f4c5429e squidguard_configurator.inc
|--- squidguard_configurator.inc        Tue Aug 11 13:27:06 2015 -0300
|+++ squidguard_configurator.inc        Tue Aug 11 18:21:13 2015 -0300
--------------------------
Patching file squidguard_configurator.inc using Plan A...
Hunk #1 succeeded at 859.
done
cp: /usr/local/lib/db48: No such file or directory
cp: /usr/local/lib/libdb*: No such file or directory
cp: /usr/local/lib/db48: No such file or directory
cp: /usr/local/lib/libdb*: No such file or directory
cp: /usr/local/bin/ntlm_auth: No such file or directory
ELF ldconfig path: /lib /usr/lib /usr/lib/compat /usr/local/lib

32-bit compatibility ldconfig path: /usr/lib32

E agora?

Abraço

Marco Aurélio[/size][/color][/font][/size][/color]
[font="Trebuchet MS", Verdana, Helvetica, Arial, sans-serif]
Re: NTLM Para 2.2.6 para 64bits
[/url][/font][/size][/color]
[/color][/font][/size][/color]
  • [font="Open Sans", "Droid Sans", Verdana, Arial, Helvetica]Citação marochavieira[/font]
    [/url]
[color][size][font][color]
 Enviado: Sex Mar 31, 2017 05:37 
por 
marochavieira
[/url][/size][/color]
Muito obrigado Marcelo
Mas me tira umas dúvidas!!
No primeiro passo.. o fetch .. o endereço é do 2.2.5 .. executo esse mesmo?? ou o da 2.2.6 ??
A outra dúvida..  Você sabe a versão correta a usar do squid e do squidguard?
Pergunto isso pq nessa versão creio que o Luiz Gustavo usava o Squidguard-devel.. quanto ao squid eu nao me lembro se era o 2.7 ou o 3

No mais.. muitíssimo obrigado... tentei usar a nova versão .. a 2.3.3_1 .. mas tem muita coisa chata... as regras não funcionam bem.. limiter não funciona..  visualmente é bem melhor... mas... o 2.2.6 me atende muito mais!!

Abraço

Marco Aurélio
[/color][/font][/size][/color]

Responder

Voltar para “Dicas”