Cómo configurar para un servidor proxy de autenticación

8

Mi servidor proxy de trabajo requiere autenticación con las credenciales de usuario del dominio de Microsoft AD. Todo el mundo sabe cómo funciona: si inicia sesión en una estación de trabajo de Windows, sus solicitudes de acceso a Internet basadas en el navegador "Internet Explorer" se autentican (e identifican) automáticamente utilizando sus credenciales de inicio de sesión de dominio.

Descubrí que Firefox también puede autenticarse en estos servidores proxy y durante mucho tiempo asumí que "hacen algo especial". Recientemente, un colega instaló Linux Mint en una máquina virtual y, para mi sorpresa, estaba ocupado recibiendo actualizaciones de Internet. Cuando le pregunté cómo lo consiguió, trabajo se encogió de hombros y dijo "Simplemente funcionó"

Esto me llevó a volver a mirar la configuración del proxy. Ejecuto Kubuntu (con una combinación de aplicaciones G * y K *, pero solo uso las aplicaciones GTK cuando estoy convencido de que son mucho mejores que cualquier otra cosa K *)

Todavía tengo una copia del invitado de Windows ejecutándose en una VM VirtualBox, principalmente para imprimir y para acceder a sitios web internos / corporativos (que requieren autenticación e identificación a través de credenciales de dominio de MS), así como para cambiar la contraseña de mi dominio cada tantos días .

Por lo tanto, sería muy útil si pudiera hacer que [algunas / la mayoría / todas] de mis aplicaciones de Linux funcionen a través del servidor proxy. Mis necesidades más urgentes son que Akregator y Muon puedan trabajar. Otras aplicaciones que pueden beneficiarse son algunas aplicaciones que se actualizan automáticamente (por ejemplo, extensiones de caja virtual) o se ajustan a un navegador (se me ocurren más temas / papeles de pared / etc. y el uso ocasional de wget)

Los clientes SSH / SCP logran trabajar a través del firewall sin autenticación.

¿Cuál es la forma correcta (herramienta y / o procedimiento) para configurar esto, idealmente en una sola ubicación porque tener que mantener mi contraseña en varias ubicaciones es una receta para salir de mi cuenta: - /

Ah, y sería un sueño hecho realidad si pudiera tener el equivalente a la utilidad de activación / desactivación del proxy "Proxy rápido" de Firefox, por ejemplo, un clic para activar o desactivar el uso del proxy, sin necesidad de cerrar y volver a iniciar sesión, dependiendo de en qué red estoy. Realmente pensando en ello, ¡una utilidad debería ser entrenable para mirar su dirección IP y saber cuándo necesita usar el proxy! Pero yo divago.

Me imagino que ejecutar un servidor proxy local que puede agregar dinámicamente la autenticación y reenviarlo a un servidor proxy ascendente cuando sea necesario puede ser la única solución real.

Johan
fuente
¿Qué tipo de proxy es? ¿Basado en Linux o basado en Windows?
midnightsteel
El servidor proxy está basado en Windows.
Johan
Parece que el proxy está en una configuración de paso, y su firewall está permitiendo el tráfico web saliente de todos los hosts. Así es como su colega pudo navegar sin autenticación. ¿El servidor proxy que está utilizando ISA o TMG?
midnightsteel
El firewall no permite la salida de todos los hosts, de lo contrario, simplemente omitiría el servidor proxy. ¿Qué significa "pasar por configuración"? Permítanme aclarar: desde mi estación de trabajo Linux, la única aplicación que puede acceder a Internet es a) Firefox (que usa su propia configuración de proxy y autenticación almacenada en Firefox), así como aplicaciones que se ejecutan en una VM de Windows (Nota: la VM de Windows es un miembro del dominio y el usuario se autentica contra el dominio al iniciar sesión)
Johan
No sé si es ISA o TMG. Si la solución es diferente dependiendo de cuál, estaría interesado en ambas soluciones.
Johan

Respuestas:

2

Desde mi estación de trabajo Linux, las únicas aplicaciones que pueden acceder a Internet son a) Firefox (que usa su propia configuración de proxy y autenticación almacenada en Firefox), así como aplicaciones que se ejecutan en una VM de Windows (Nota: la VM de Windows es un miembro de dominio y el usuario se autentica contra el dominio al iniciar sesión)

Opción de solución : ejecute un proxy web en su máquina virtual de Windows. Configure su sistema para usar esa instancia como su proxy.

Dado que su VM de Windows ya está autenticada y se permite el tráfico a través de ella, la configuración de un proxy SOCKS en esa instancia de VM centralizará sus necesidades de autenticación. Si es solo para usted y sus cajas, esto debería estar bien y probablemente sea bastante sencillo.

Aprovechar esta idea es hacer que un demonio SSHD se ejecute en la VM de Windows para que pueda hacer cosas como túneles SSH SOCKS desde sus otras cajas a través de la VM:

ssh -D 1080 windows-user@windows-vm

Para aquellas aplicaciones que pueden tener problemas o donde no desea reconfigurar las aplicaciones, puede utilizar sshtunnel , que configurará las reglas de iptables para enrutar el tráfico. Funciona para sistemas Linux y Mac.

Si necesita evitar instalar un proxy en la máquina virtual de Windows, puede configurar un cuadro de proxy Squid configurado para autenticarse en Windows AD. Una guía sobre cómo hacerlo ubicada aquí:

Opción de solución : Proxy de calamar autenticado a través de AD / NTLM

http://techmiso.com/1934/howto-install-squid-web-proxy-server-with-active-directory-authentication/( enlace muerto )

Otra solución proxy NTLM, aunque creo que esta realmente se ejecuta en una máquina Windows:

Opción de solución : proxy NTLM http://cntlm.sourceforge.net/

Wing Tang Wong
fuente
Ya estoy investigando cntlm, también está en los repositorios estándar de ubuntu.
Johan
1
La solución cntlm parece ser prometedora. Hasta ahora, permite que funcionen el wget y el cromo. Wget funciona al tener la dirección cntlm: puerto en el archivo .wgetrc. Chromium funciona al configurarse para usar lo que llama la "configuración del proxy del sistema de la computadora", donde he configurado el proxy en la configuración del sistema KDE-> Proxy-> Configuración manual. Chromium usa esto dinámicamente, es decir, si cambio la configuración en KDE, Chromium se ve afectado sin tener que reiniciar el cromo. Por confirmar
Johan el
Hasta ahora esto todavía NO funciona para Konqueror, Muon o Akregator, ninguno de los cuales expone directamente la configuración de Proxy. Creo que Muon usa apt-get en segundo plano, que es configurable de manera similar a wget. No entiendo la diferencia entre las opciones de configuración "Proxy especificado manualmente" de KDE y "Proxy del sistema" de KDE, esto puede ser clave para que funcione en todas las aplicaciones. También noto que la configuración de KDE no se está completando en los scripts de shell, incluso después de cerrar y cerrar sesión, lo cual es decepcionante.
Johan
La solución de proxy a través de MS-Windows no es aceptable para mí. Otros pueden sentirse diferentes, pero ejecutar una instancia adicional de sistema operativo solo para agregar autenticación a los paquetes de red salientes es un exceso de recursos y no elimina mi dependencia de MS Windows.
Johan
1
He resuelto el problema usando cntlm según la sugerencia anterior, y lo recomiendo encarecidamente. El problema que tuve con la mayoría de las aplicaciones de KDE que no usan la configuración global de KDE se debió al formato incorrecto utilizado al especificar el servidor proxy en la configuración del proxy KDE. Por cierto, el cromo parece no ser sensible a esto (lo dejé http://al configurar el proxy)
Johan
8

cntlm proporciona una solución, junto con alguna configuración.

Los pasos básicos a seguir son:

  1. Instalar cntlm.
  2. Edite su archivo de configuración en /etc/cntlm.conf, los comentarios incluidos lo hacen bastante fácil.
  3. Agregue un servidor proxy (o dos).
  4. Especifique su nombre de usuario y nombre de dominio NT en los lugares apropiados y elimine la entrada de contraseña.
  5. Inicie el servicio cntlm, por ejemplo, a través de

    $ sudo /etc/init.d/cntlm start
    
  6. cntlm proporciona una forma de probar el proxy y generar un hash a partir de su contraseña, por ejemplo, mediante el comando (como root)

    $ cntlm -I -M http://www.test.com
    
  7. cntlm le pedirá su contraseña de dominio. Luego probará diferentes mecanismos de autenticación contra el servidor proxy configurado. Cuando se encuentra un método de trabajo, imprime dos líneas que deben ir a su archivo de configuración.

  8. Detenga el servidor cntlm y agregue las líneas obtenidas en el paso 6 anterior a /etc/cntlm.conf.
  9. Reiniciar cntlm

Ahora cntlmestá funcionando y listo para ser utilizado. Se pueden usar varios lugares para configurar varios programas para usarlo. cntlmluego agregará de manera transparente tokens de autenticación de dominio NT a los paquetes salientes y los reenviará al servidor proxy configurado.

Usando Qt / KDE

Para las aplicaciones nativas de Qt / KDE, especifique "Usar servidor proxy configurado manualmente" en Configuración del sistema KDE -> Configuración de red -> Configuración de proxy . El proxy se especifica como http://localhostcon el puerto 3128 (El valor predeterminado paracntlm menos que lo haya cambiado). Estas aplicaciones se actualizan dinámicamente con nuevas configuraciones y no se requiere reiniciar o cerrar sesión / iniciar sesión para actualizar la configuración.

Clientes de Dropbox y Google

Muchas aplicaciones pueden usar variables de entorno de shell. Destacan aquí los clientes de Dropbox y Google Earth. Para estas aplicaciones, use variables de entorno de shell como estas:

no_proxy=localhost,127.0.0.0/8,*.local
NO_PROXY=localhost,127.0.0.0/8,*.local
all_proxy=socks://localhost:3128/
ALL_PROXY=socks://localhost:3128
http_proxy=http://localhost:3128
HTTP_PROXY=http://localhost:3128
ftp_proxy=http://localhost:3128
FTP_PROXY=http://localhost:3128
https_proxy=http://localhost:3128
HTTPS_PROXY=http://localhost:3128

s3cmd, rizo y wget

Nota: Algunas aplicaciones usarán solo los nombres en minúsculas, otras solo en mayúsculas, algunas probarán primero una, luego la otra.

s3cmd(El cliente de Amazon S3), curly wgetse puede configurar adicionalmente a través de sus propios archivos de configuración si lo desea. Esto es útil porque leen sus propios archivos de configuración en cada invocación. Dado que estos programas suelen ser de corta duración (existe una sola invocación después de completar una descarga), eso es muy útil.

El formato para s3cmden ~/.s3cfges:

proxy_host = localhost
proxy_port = 3128

El formato para wget ~/.wgetrces:

https_proxy = http://localhost:3128
http_proxy = http://localhost:3128
ftp_proxy = http://localhost:3128

El formato para curlen ~/.curlrces:

proxy = localhost:3128

Por otro lado, la edición del perfil de shell u otros archivos de configuración del entorno generalmente requieren un reinicio, cierre y cierre de sesión o similar. Vale la pena investigar /etc/environment, ~/.pam_environment,~/.kde/env/proxy.sh etc. ya que estos son lugares estándar para establecer configuraciones de proxy configuradas a través de variables de entorno de shell, particularmente para afectar a todos los usuarios y servicios en el sistema.

También entiendo que es posible cambiar la configuración del entorno por aplicación utilizando sus respectivos .desktoparchivos, pero aún no lo he probado (con éxito).

VirtualBox

VirtualBox se puede configurar para usar un proxy (por ejemplo, para buscar y descargar actualizaciones de software) usando su GUI o usando el comando:

$ VBoxManage setextradata global GUI/ProxySettings \
    "proxyEnabled,localhost,3128,authDisabled,,"

Para completar, para deshabilitarlo, use:

$ VBoxManage setextradata global GUI/ProxySettings \    
    "proxyDisabled,,,authDisabled,,"

Firefox

Para Firefox, uso el complemento QuickProxy. El propio Firefox si está configurado manualmente para usar el servidor proxy en la máquina local, por lo que QuickProxy simplemente habilita / deshabilita la configuración.

APTO

APT (utilizado en segundo plano por synaptic, muon y amigos) utiliza un archivo de configuración /etc/apt/apt.conf.d/, por ejemplo, la 00proxy activación del proxy para APT se realiza mediante líneas como:

Acquire::http::Proxy "http://localhost:3128";
#Acquire::ftp::proxy "ftp://localhost:3128/";
#Acquire::https::proxy "https://localhost:3128/";

Nota: add-apt-repository usa el perfil raíz, o puede configurar sudo para permitir que todas las configuraciones de http * _proxy se caigan.

Un guión para gobernarlos a todos

FWIW Ahora mismo estoy en el proceso de escribir un script modular para habilitar / deshabilitar proxy para numerosos programas. Hasta ahora he escrito los siguientes módulos:

$ ls -lF proxymanager/modules/
total 60
-rwxr-xr-x 1 root root  919 Oct  8 17:27 apt*
-rwxr-xr-x 1 root root 1037 Oct  8 13:10 bashrc*
-rwxr-xr-x 1 root root  391 Oct  8 12:18 cntlm*
-rwxr-xr-x 1 root root  684 Oct  8 12:58 curl*
-rwxr-xr-x 1 root root  609 Oct  8 13:02 dropbox*
-rwxr-xr-x 1 root root  672 Oct  8 12:18 gnome*
-rwxr-xr-x 1 root root  691 Oct  8 12:18 kde*
-rwxr-xr-x 1 root root  689 Oct  8 13:03 root_bashrc*
-rwxr-xr-x 1 root root  691 Oct  8 13:03 root_curl*
-rwxr-xr-x 1 root root  827 Oct  8 13:03 s3cmd*
-rwxr-xr-x 1 root root  454 Oct  8 13:03 survive_reboot*
-rwxr-xr-x 1 root root  860 Oct  8 13:06 suse-sysproxy*
-rwxr-xr-x 1 root root  653 Oct  8 12:46 sysenvironment*
-rwxr-xr-x 1 root root  465 Oct  8 13:04 virtualbox*
-rwxr-xr-x 1 root root  573 Oct  8 13:04 wgetrc*

Así como una aplicación de control. Con suerte, pronto se trasladarán a un github u otro hogar en línea.

Johan
fuente
Desde entonces, esto se trasladó a GitHub, ganó más módulos y se acerca de forma lenta pero segura a la forma utilizable. Los tipos atrevidos y aventureros pueden encontrar esto útil: github.com/Tahaan/proxymanager
Johan
Nueva cosa que aprender. Gracias. ¿Cómo puedo pasar la contraseña a cntlm en la línea de comando ... No quiero que se me solicite ingresar la contraseña?
Thushi
0

La autenticación de proxy con ntlm se explica bien en los enlaces a continuación.

Pero el problema con ntlm es que debe actualizar el cntlmarchivo de configuración muchas veces al día. Considere una situación en la que diferentes usuarios comparten una máquina común y tienen que actualizar su contraseña de AD en el cntlmarchivo de configuración cada vez que inician sesión en el sistema. Quizás haya un método disponible para actualizar automáticamente el cntlmarchivo de configuración cada vez que un usuario inicie sesión.

usuario173141
fuente
Solo actualizo mi archivo de configuración cntlm cuando cambia mi contraseña de proxy NTLM (la contraseña de dominio).
Johan