março 04, 2020

Instalando e configurando o CNTLM no Windows

Por várias vezes houve a necessidade de uma aplicação precisar de acesso à Internet em nosso ambiente de desenvolvimento, porém, por não ser capaz de se autenticar em nosso servidor proxy, acabamos por não poder utilizar a mesma em todo seu potencial.

O CNTLM vem para resolver isso. Ele funciona como um proxy local que faz o trabalho de autenticação no proxy de desenvolvimento. Aqui você verá o passo-a-passo para sua instalação e configuração em sua estação de trabalho.

Você pode baixar a versão 0.92.3 para Windows neste link, e neste outro poderá ver todas as outras versões, caso queira. Baixe e instale em sua estação de trabalho.

Após instalar, vá até o diretório em que instalou o CNTLM (se usou as configurações padrão, o diretório de instalação deverá ser “C:\Program Files (x86)\Cntlm”) e edite o arquivo “cntlm.ini”. As propriedades que deve se atentar neste arquivo são:

  • Username: seu nome de usuário na rede corporativa
  • Domain: nome de domínio do seu usuário
  • PassNTLMv2: credencial (senha) que será usada para fazer a autenticação. Ela é gerada por uma ferramenta que acompanha o CNTLM. Veremos como gerar essa credencial mais adiante.
  • Proxy: endereço e porta do proxy corporativo
  • NoProxy: lista de endereços / domínios que as requisições não devem passar por este proxy
  • Listen: IP e porta local que o serviço CNTLM deve usar para atender as requisições
  • Gateway: especifica se o CNTLM deve atender requisições de outros computadores que não o que ele está instalado (cuidado para não deixar o proxy com livre acesso)
  • Allow: IPs ou máscaras de rede permitidas à acessar seu serviço CNTLM
  • Deny: IPs ou máscaras de rede proibidas de acessar seu serviço CNTLM
  • Header: user agent a ser utilizado nas requisições que usarem o CNTLM

Todos os campos acima tem valores que devem ser informados diretamente por você, menos o campo PassNTLMv2. Este deve ser gerado através de uma chamada parametrizada ao próprio CNTLM. Para isso, você precisa abrir um prompt de comando no diretório de instalação do CNTLM e entrar com o comando abaixo:

cntlm -H -d <dominio> -u <usuario>

Onde:
- dominio: nome de domínio do seu usuário
- usuario: seu nome de usuário na rede corporativa

A execução deste comando vai lhe pedir que digite sua senha e irá retornar uma resultado parecido com este:

PassLM FA7DF47717E70894072FCB3CE22C6972PassNT 
1FD530CC1DC2D2FE7CEF002B231388FCPassNTLMv2 
E9B2B3437DC6DF4558A145E6855A22A7 # Only for user ‘usuario’, domain ‘dominio.com.br’

Copie o valor do resultado da linha “PassNTLMv2” e insira ele no campo de mesmo nome no arquivo “cntlm.ini”. Este procedimento precisará ser realizado todas as vezes que houver alteração de sua senha.

Exemplo 01: Vamos simular uma configuração para um usuário fictício de nome José da Silva. O nome de usuário dele será “jsilva”, o endereço do proxy corporativo é “proxy.empresa.com.br” e ele responde na porta 80. Queremos que o CNTLM responda somente a requisições locais e que ignore todas as requisições pertencentes à subrede 172.16.*. Vamos ver como ficaria o arquivo de configuração.

  • Username jsilva
  • Domain scopus.com.br
  • PassNTLMv2 (gerar usando o procedimento citado anteriormente e inserir aqui)
  • Proxy iwacorp.scopus.com.br:80
  • NoProxy 172.16.*
  • Listen 127.0.0.1:3128
  • Gateway no
  • Allow 127.0.0.1
  • Header User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)

Pronto. Agora é só salvar o arquivo e reiniciar o serviço “Cntlm Authentication Proxy” nos serviços do Windows. Você precisa dizer para sua aplicação que ela poderá usar o proxy local nos IPs 127.0.0.1 e 192.168.*, porta 3128.

ATENÇÃO: O Serviço do CNTLM no Windows inicia de forma automática. Como ele precisa se autenticar no proxy corporativo para poder atuar como proxy local, ele usará suas credenciais para isso. É muito importante manter essas credenciais atualizadas no CNTLM para evitar que sua conta de usuário seja bloqueada por tentativas de autenticação com senha expirada. Fique atento.