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.