Inicialmente encontré información para poder acceder desde la línea de comandos a páginas web a través del proxy de la empresa estableciendo unas variables de entorno:

export http_proxy=http://usuario:contraseña@proxy.dominio:80
export https_proxy=http://usuario:contraseña@proxy.dominio:443

Esto basta para que desde la línea de comandos se pueda hacer un wget hacia Internet utilizando el proxy de la empresa.

Sin embargo, esto no sirve para que yum pueda acceder a repositorios de paquetes en Internet. Para indicar a yum el proxy a utilizar hay que hacerlo en su propio fichero de configuración yum.conf, pero la autenticación no funciona.

Buscando en Google se encuentra rápidamente este hilo de los foros de CentOS, que da la solución exacta y detallada que copio vilmente a continuación para facilitarme la vida y sin ningún mérito por mi parte. Únicamente puedo aportar que las variables de entorno http_proxy y https_proxy deben establecerse ~/.bashrc, en lugar de en ~/.bash_profile, haciendo que estén disponibles en cualquier ventana de terminal y no solo en los inicios de sesión por SSH o en la terminal local.

En primer lugar se debe instalar el paquete cntlm que según la descripción es un rápido y eficiente proxy NTLM. Este paquete se encuentra en el repositorio EPEL, y se puede obtener desde aquí. Con este paquete se despliega un proxy local que puede redirigir las peticiones hacia el proxy del dominio Active Directory, delegando en este proxy local la correspondiente autenticación en el proxy del dominio.

Una vez instalado se proporcionan en el fichero /etc/cntlm.conf los datos del proxy del dominio y de autenticación del usuario y listo.

# cat /etc/cntlm.conf
...
Username    usuario
Domain      dominio
Password   contraseña

Proxy       proxy.dominio:puerto

Listen      3128

Desde luego, dejar la contraseña de acceso al dominio en claro en el fichero no es la mejor opción, por eso, se puede en su lugar poner los hashes que el propio cntlm puede generar:

$ cntlm -H -u usuario@DOMINIO
Password:
PassLM 0D82DC2C16C3CE23E4270BBC86ED9BC3
PassNT B07470DAF522DE3F7D8F61212417D5ED
PassNTLMv2 EBA9CA50AC426D4EF5ECC65C6591F198 # Only for user 'usuario', domain 'DOMINIO'

Si el proxy utiliza autenticación por el método NTLMv2 será necesario especificar correctamente el usuario y el dominio, teniendo en cuenta que el dominio será el nombre de dominio NetBIOS (DOMINIO), y no el nombre de dominio Active Directory (dominio.tld).

Una vez obtenidos los hashes se comenta la línea Password y se pegan estos en /etc/cntlm.conf.

Username usuario
Domain dominio
#Password 
PassLM 0D82DC2C16C3CE23E4270BBC86ED9BC3
PassNT B07470DAF522DE3F7D8F61212417D5ED
PassNTLMv2 EBA9CA50AC426D4EF5ECC65C6591F198

Para ejecutar el servicio correspondiente basta con lanzar el ejecutable cntlm. Una vez disponible, podemos cambiar nuestro proxy en las variables de entorno para utilizar el ofrecido por cntlm.

export http_proxy=http://localhost:3128
export https_proxy=${http_proxy}

Nótese que el proxy HTTPS sigue utilizando HTTP como protocolo, ya que, al menos por defecto, cntlm no soporta peticiones por HTTPS. Esto no es ningún problema para acceder a páginas por HTTPS, simplemente afecta a la conexión con el proxy local de cntlm.

$ wget https://uatek.com/
--2018-01-17 15:52:48-- https://uatek.com/
Resolving localhost (localhost)... ::1, 127.0.0.1
Connecting to localhost (localhost)|::1|:3128... failed: Connection refused.
Connecting to localhost (localhost)|127.0.0.1|:3128... connected.
Proxy request sent, awaiting response... 200 OK
Length: 209 [text/html]
Saving to: ‘index.html.2’

100%[====================================================================================================================================>] 209 --.-K/s in 0s

2018-01-17 15:52:49 (10.8 MB/s) - ‘index.html.2’ saved [209/209]

Viendo la salida de wget se observa que la resolución de localhost proporciona en primer lugar la dirección IPv6 ::1, en la que no está escuchando cntlm, por tanto, es mejor proporcionar directamente la dirección IP local 127.0.0.1 y evitar el intento fallido de acceso a la dirección ::1:3128.

export http_proxy=http://127.0.0.1:3128

El uso de cntlm evita además la exposición de la contraseña de usuario del dominio, ya que no es necesario establecerlas en las variables de entorno y están protegidas contra lecturas de usuarios que no sean root en el fichero /etc/cntlm.conf.

Con cntlm corriendo ya solo queda indicarle a yum que el proxy a utilizar es el proporcionado por cntlm en el fichero /etc/yum.conf.

$ cat /etc/yum.conf
...
proxy=http://127.0.0.1:3128

Y listo.

 

Dejar una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Puedes utilizar estas etiquetas y atributos HTML:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.