2008-08-20 8 views
9

Normalmente, en una red grande, una computadora necesita operar detrás de un proxy autenticado; cualquier conexión con el mundo externo requiere un nombre de usuario/contraseña que a menudo es la contraseña de un usuario utiliza para iniciar sesión en el correo electrónico, estación de trabajo, etc.Obscurecer la contraseña proxy de red en archivos de texto plano en Linux/UNIX-likes

Esto significa tener que poner la contraseña de red en el archivo apt.conf, así como por lo general las variables http_proxy, ftp_proxy y https_proxy entorno definido en ~/.profile

Soy consciente de que con apt.conf que usted podría establecer chmod 600 (que no es por defecto en Ubuntu/Debian!) Pero en nuestro sistema hay personas que necesitan privilegios de raíz.

También se dan cuenta de que es técnicamente imposible obtener una contraseña de alguien que tiene acceso a la raíz, sin embargo, me preguntaba si había una manera de ocultar la contraseña para evitar el descubrimiento accidental. Windows opera con usuarios como administradores pero de alguna manera almacena contraseñas de red (probablemente almacenadas en el fondo oscurecidas de alguna manera) para que en el uso típico no lo encuentres en texto simple

Solo pregunto desde el otro día, Descubrí completamente por casualidad que alguien más usa la contraseña de esta manera al comparar archivos de configuración entre sistemas.

@monjardin - Me temo que la autenticación de clave pública no es una alternativa en esta red. Además, dudo que sea compatible con la mayoría de las herramientas de línea de comandos.

@Neall - No me importa que los otros usuarios tengan acceso a la web, pueden usar mis credenciales para acceder a la web, simplemente no quiero que pasen por mi contraseña en texto plano.

Respuesta

0

¿La autenticación de clave pública es una alternativa válida para usted?

0

Mientras los tres de estas cosas son ciertas, estás de suerte:

  1. Server necesita acceso a la web
  2. Los usuarios necesitan un control absoluto sobre servidor (raíz)
  3. Usted don' t desea que los usuarios tengan acceso web al servidor

Si no puede eliminar el n. ° 2 o n. ° 3, su única opción es eliminar n. ° 1. Configure un servidor interno que aloje todas las actualizaciones de software. Mantenga ese bloqueado de sus otros usuarios y no permita que otros servidores tengan acceso a la web.

Cualquier otra cosa que intente hacer es simplemente engañarse a sí mismo.

3

Prefieren las aplicaciones que se integran con Gnome Keyring. Otra posibilidad es usar un túnel SSH para una máquina externa y ejecutar aplicaciones a través de eso. Eche un vistazo a la opción -D para crear una interfaz de proxy SOCKS local, en lugar de una sola publicación -L hacia adelante.

1

A menos que las herramientas específicas que está utilizando permitan un formato ofuscado, o puede crear algún tipo de flujo de trabajo para pasar de ofuscado a plano bajo demanda, probablemente no tenga suerte.

Una cosa que he visto en casos como este es la creación de credenciales dedicadas por servidor, por usuario o por servidor/por usuario que solo tienen acceso al proxy desde una IP específica.No resuelve el problema de ofuscación principal pero mitiga los efectos de que alguien vea la contraseña porque vale tan poco.

En cuanto a la última opción, se nos ocurrió una codificación de contraseña "crypt inversa" en el trabajo que utilizamos para cosas como esta. Es solo ofuscación porque todos los datos necesarios para decodificar el pw se almacenan en la cadena codificada, pero evita que las personas vean accidentalmente las contraseñas en texto sin formato. Por lo tanto, puede almacenar, por ejemplo, una de las contraseñas anteriores en este formato y luego escribir un contenedor para apt que compila apt.conf dinámicamente, llama al apt real y, al salir, elimina apt.conf. Todavía terminas con el pw en texto plano por un tiempo, pero minimiza la ventana.

2

Hay muchas maneras de ocultar una contraseña: puede almacenar las credenciales en formato rot13, o BASE64, o usar el mismo password-scrambling algorithm que usa CVS. El verdadero truco es hacer que sus aplicaciones sean conscientes del algoritmo de aleatorización.

Para las variables de entorno en ~/.profile podríamos guardarlo codificados y luego decodificarlos antes de ajustar las variables, por ejemplo:

encodedcreds="sbbone:cnffjbeq" 
creds=`echo "$encodedcreds" | tr n-za-mN-ZA-M a-zA-Z` 

que establecerá creds-foobar:password, que luego se puede incrustar en http_proxy etc.

Supongo que usted sabe esto, pero vale la pena repetirlo: esto no agrega ningún tipo de seguridad. Simplemente protege contra ver involuntariamente la contraseña de otro usuario.

0

hemos resuelto este problema al no solicitar contraseñas de proxy en rpm, apt u otras actualizaciones similares (bases de datos de virus, cosas de Windows, etc.) Es una pequeña lista blanca de repositorios conocidos para agregar al proxy.

+0

Por desgracia, no tienen nada que decir sobre la política de proxy en la red. He tenido la misma situación en ambas universidades en las que he trabajado. – Brendan

0

Supongo que podría crear un proxy local, señalar estas herramientas a través de eso, y luego hacer que el proxy local solicite interactivamente al usuario la contraseña del proxy externo que luego se aplicaría. Opcionalmente, podría recordar esto durante unos minutos en el almacenamiento interno ofuscado.

Un vector de ataque obvio sería que un usuario privilegiado modifique este proxy local para hacer algo más con la contraseña introducida (como podría hacerlo con cualquier otro cliente de correo electrónico que lo solicite o el propio sistema de ventanas), pero al menos estaría a salvo de la visión inadvertida.

6

Con el siguiente enfoque, nunca tendrá que guardar su contraseña de proxy en texto sin formato. Sólo tienes que escribir una contraseña de forma interactiva tan pronto como sea necesario el acceso HTTP/HTTPS/FTP:

  • uso de OpenSSL para cifrar la contraseña del proxy de texto sin formato en un archivo, por ejemplo, con cifrado AES256:

openssl enc -aes-256-cbc -en pw.txt salida privado pw.bin

  • utilizar una contraseña (diferente) para proteger el archivo codificado
  • Eliminar texto sin formato pw.txt
  • Crear un alias en, por ejemplo ~ /.alias para establecer sus http_proxy/https_proxy/ftp_proxy variables de entorno (establecen valores apropiados de $ USER/proxy/$ PORT)

alias MyProxy = 'PW = `openssl AES-256-CBC -d -en PW .bin`; PROXY = "http: // $ USER: $ PW @ proxy: $ PORT"; exportar http_proxy = $ PROXY; exportar https_proxy = $ PROXY; exportación ftp_proxy = $ PROXY'

  • que poner source este archivo en su entorno normal del shell (en algunos sistemas esto se hace automáticamente)
  • tipo 'myproxy' e introduzca su contraseña OpenSSL se utiliza para cifrar el archivo
  • hecho.

Nota: la contraseña está disponible (y legible) dentro del entorno de los usuarios durante la duración de la sesión de shell. Si desea limpiarlo del entorno después de usarlo, puede usar otro alias:

alias clearproxy = 'exportar http_proxy =; exportar https_proxy =; exportación ftp_proxy ='

+2

tenga en cuenta que puede usar 'read -s PW' en" myproxy "para obtener resultados similares (solo lea la contraseña desde la línea de comandos cada vez que la necesite) – FabienAndre

0

hice una solución modificada:

editar y añadir /etc/bash.bashrc siguientes líneas:

alias myproxy='read -p "Username: " USER;read -s -p "Password: " PW 
PROXY="$USER:[email protected]:80"; 
export http_proxy=http://$PROXY;export Proxy=$http_proxy;export https_proxy=https://$PROXY;export ftp_proxy=ftp://$PROXY' 

A partir del próximo inicio de sesión entro myproxy e introduzca su usuario/contraseña combinación! Ahora trabajar con sudo -E

-E, --preserve-env Indica a la política de seguridad que el usuario desea reservar sus variables de entorno existentes.

e.g. sudo -E apt-get update

Observación: configuración de proxy válidas sólo durante la sesión de shell

Cuestiones relacionadas