¿Cómo completar la información del proxy en el archivo de configuración cntlm?

80

Cntlm es un proxy HTTP de autenticación NTLM / NTLM Session Response / NTLMv2 destinado a ayudarlo a liberarse de las cadenas del mundo propietario de Microsoft.

Tengo mi URL de proxy en el siguiente formato:

http://user:passwords@my_proxy_server.com:80

Y tengo que proporcionar esta información a cntlm. Su archivo de configuración cntlm.initiene la siguiente estructura y parámetros:

Username 
Domain
Password    
Proxy   

No estoy seguro, ¿cómo dividir mi propiedad de proxy original para llenar estas cuatro opciones?

Dilawar
fuente

Respuestas:

111

Actualice su información de usuario, dominio y proxy en cntlm.ini, luego pruebe su proxy con este comando (ejecútelo en su carpeta de instalación de Cntlm):

cntlm -c cntlm.ini -I -M http://google.ro

Le pedirá su contraseña y, con suerte, imprimirá la información de autenticación requerida, que debe guardarse en su cntlm.ini

Muestra cntlm.ini:

Username            user
Domain              domain

# provide actual value if autodetection fails
# Workstation         pc-name

Proxy               my_proxy_server.com:80
NoProxy             127.0.0.*, 192.168.*

Listen              127.0.0.1:54321
Listen              192.168.1.42:8080
Gateway             no

SOCKS5Proxy         5000
# provide socks auth info if you want it
# SOCKS5User          socks-user:socks-password

# printed authentication info from the previous step
Auth            NTLMv2
PassNTLMv2      98D6986BCFA9886E41698C1686B58A09

Nota: en Linux, el archivo de configuración escntlm.conf

alexandrul
fuente
¿Puedo averiguar el dominio http://user:passwords@my_proxy_server.com:80o debo preguntarle al administrador del sistema?
Dilawar
Intente comentar la Domain domainlínea y ejecute la prueba, podría funcionar.
alexandrul
También puedes intentar agregar una Password my-passwordlínea. Lamentablemente, no puedo replicar tu configuración aquí.
alexandrul
2
Tenga en cuenta que en Linux (Mint) el archivo de configuración es cntlm.conf y este comando funciona (sin la parte .exe)
Carl Pritchett
1
Interesante. Para la posteridad, lo acabo de encontrar en /etc/cntlm.confUbuntu 14.04.
weberc2
54

¡La solución requiere dos pasos!

Primero, complete los campos de usuario, dominio y proxy en cntlm.ini. El nombre de usuario y el dominio probablemente deberían ser los que utilice para iniciar sesión en Windows en su oficina, por ejemplo.

Username            employee1730
Domain              corporate
Proxy               proxy.infosys.corp:8080

Luego pruebe cntlm con un comando como

cntlm.exe -c cntlm.ini -I -M http://www.bbc.co.uk

Le pedirá su contraseña (de nuevo, la que utilice para iniciar sesión en Windows_). Con suerte, imprimirá 'http 200 ok' en algún lugar e imprimirá su información de autenticación de tokens crípticos. Ahora agregue estos a cntlm.ini, por ejemplo:

Auth            NTLM
PassNT          A2A7104B1CE00000000000000007E1E1
PassLM          C66000000000000000000000008060C8

Finalmente, configure la http_proxyvariable de entorno en Windows (asumiendo que no cambió con el Listencampo que por defecto está configurado en 3128) a lo siguiente

http://localhost:3128
Coronel Panic
fuente
15

Sin ninguna configuración, simplemente puede emitir el siguiente comando (modificando myusernamey mydomaincon su propia información):

cntlm -u myusername -d mydomain -H

o

cntlm -u myusername@mydomain -H

Le pedirá la contraseña de myusernamey le dará el siguiente resultado:

PassLM          1AD35398BE6565DDB5C4EF70C0593492
PassNT          77B9081511704EE852F94227CF48A793
PassNTLMv2      A8FC9092D566461E6BEA971931EF1AEC    # Only for user 'myusername', domain 'mydomain'

Luego cree el archivo cntlm.ini(o cntlm.confen Linux usando la ruta predeterminada) con el siguiente contenido (reemplazando su myusername, mydomainy A8FC9092D566461E6BEA971931EF1AECcon su información y el resultado del comando anterior):

Username    myusername
Domain      mydomain

Proxy       my_proxy_server.com:80
NoProxy     127.0.0.*, 192.168.*

Listen      127.0.0.1:5865
Gateway     yes

SOCKS5Proxy 5866

Auth        NTLMv2
PassNTLMv2  A8FC9092D566461E6BEA971931EF1AEC

Luego, tendrá un proxy abierto local en el puerto local 5865y otro que comprenderá el protocolo SOCKS5 en el puerto local 5866.

Anthony O.
fuente
3

Aquí hay una guía sobre cómo usar cntlm

¿Qué es cntlm?

cntlm es un proxy HTTP de autenticación NTLM / NTLMv2

Toma la dirección de su proxy y abre un socket de escucha, reenviando cada solicitud al proxy principal

¿Por qué cntlm?

Usando cntlm hacemos posible ejecutar herramientas como choro, pip3, apt-getdesde una línea de comando

pip3 install requests
choco install git

La principal ventaja de cntlm es la protección con contraseña.

Con cntlm puede utilizar hash de contraseña.

Entonces, NO HAY CONTRASEÑA EN PLAINTEXT en %HTTP_PROXY%y %HTTPS_PROXY%variables de entorno

Instalar cntlm

Puede obtener la última versión de cntlm de sourceforge

¡Nota! Nombre de usuario y dominio

Mi nombre de usuario es zezulinsky

Mi dominio es local

Cuando ejecuto comandos, uso zezulinsky@local

Coloque su nombre de usuario cuando ejecute comandos

Generar hash de contraseña

Ejecutar un comando

cntlm -u zezulinsky@local -H

Ingresa tu contraseña:

Password:

Como resultado, obtiene una contraseña hash:

PassLM          AB7D42F42QQQQ407552C4BCA4AEBFB11
PassNT          PE78D847E35FA7FA59710D1231AAAF99
PassNTLMv2      46738B2E607F9093296AA4C319C3A259

Verifique que su hash generado sea válido

Ejecutar un comando

cntlm -u zezulinsky@local -M http://google.com

Ingresa tu contraseña

Password:

La salida de resultados

Config profile  1/4... OK (HTTP code: 301)
----------------------------[ Profile  0 ]------
Auth            NTLMv2
PassNTLMv2      46738B2E607F9093296AA4C319C3A259
------------------------------------------------

¡Nota! compruebe que el hash PassNTLMv2 es el mismo El hash resultante es el mismo para ambos comandos

PassNTLMv2      46738B2E607F9093296AA4C319C3A259

Cambiar archivo de configuración

Coloque los hash generados en el cntlm.iniarchivo de configuración

C:\Program Files (x86)\Cntlm\cntlm.ini

Así es como cntlm.inidebería verse tu

Username    zezulinsky
Domain      local
PassLM      AB7D42F42QQQQ407552C4BCA4AEBFB11
PassNT      PE78D847E35FA7FA59710D1231AAAF99
PassNTLMv2  46738B2E607F9093296AA4C319C3A259

Proxy       PROXYSERVER:8080
NoProxy     localhost, 127.0.0.*
Listen      3128

¡Nota! nueva línea al final de cntlm.ini

Es importante agregar una nueva línea al final del cntlm.iniarchivo de configuración

Configura tus variables de entorno

HTTPS_PROXY=http://localhost:3128
HTTP_PROXY=http://localhost:3128

Comprueba que tu cntlm funciona

Detenga todos los procesos nombrados cntlm.execon el explorador de procesos

Ejecuta el comando

cntlm -u zezulinsky@local -H

La salida parece

cygwin warning:
  MS-DOS style path detected: C:\Program Files (x86)\Cntlm\cntlm.ini
  Preferred POSIX equivalent is: /Cntlm/cntlm.ini
  CYGWIN environment variable option "nodosfilewarning" turns off this warning.
  Consult the user's guide for more details about POSIX paths:
    http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
section: local, Username = 'zezulinsky'
section: local, Domain = 'local'
section: local, PassLM = 'AB7D42F42QQQQ407552C4BCA4AEBFB11'
section: local, PassNT = 'PE78D847E35FA7FA59710D1231AAAF99'
section: local, PassNTLMv2 = '46738B2E607F9093296AA4C319C3A259'
section: local, Proxy = 'PROXYSERVER:8080'
section: local, NoProxy = 'localhost, 10.*, 127.0.0.*
section: local, Listen = '3128'
Default config file opened successfully
cntlm: Proxy listening on 127.0.0.1:3128
Adding no-proxy for: 'localhost'
Adding no-proxy for: '10.*'
Adding no-proxy for: '127.0.0.*'
cntlm: Workstation name used: MYWORKSTATION
cntlm: Using following NTLM hashes: NTLMv2(1) NT(0) LM(0)
cntlm: PID 1234: Cntlm ready, staying in the foreground

Abra un nuevo cmd y ejecute un comando:

pip3 install requests

Deberías tener el paquete de solicitudes Python instalado

Reinicia tu máquina

Felicidades, ahora tiene cntlm instalado y configurado

Sasha Zezulinsky
fuente
1

Solo para agregar, si está realizando una operación "pip", es posible que deba agregar un "--proxy = localhost: port_number" adicional

p.ej pip install --proxy=localhost:3128 matplotlib

Visite este enlace para ver todos los detalles.

Arindam Roychowdhury
fuente
0

Una vez que generó el archivo y cambió su contraseña, puede ejecutar lo siguiente:

cntlm -H

El nombre de usuario será el mismo. le pedirá una contraseña, la proporcione, luego copie el PassNTLMv2, edite el cntlm.ini, luego simplemente ejecute lo siguiente

cntlm -v
Jobin Mathew
fuente
-3

Para mí, el simple hecho de usar cntlm -Hno estaba generando el hash correcto, pero lo hace con el siguiente comando que proporciona el nombre de usuario.

Si necesita generar un nuevo hash de contraseña para cntlm, porque lo ha cambiado o se ha visto obligado a actualizarlo, puede simplemente escribir el siguiente comando y actualizar su archivo de configuración cntlm.conf con el resultado:

$ cntlm -u test -H
Password: 
PassLM          D2AABAF8828482D5552C4BCA4AEBFB11
PassNT          83AC305A1582F064C469755F04AE5C0A
PassNTLMv2      4B80D9370D353EE006D714E39715A5CB    # Only for user 'test', domain ''
jairelee
fuente
A esta publicación le falta por completo la información, ese dominio y nombre de usuario deben configurarse para que el hash NTLMv2 funcione correctamente, y también cómo y dónde almacenar esta información.
Petr