3 votos

Linux (Ubuntu) variables de entorno, de conchas y de seguridad

Estoy tratando de entender algunos conceptos en torno a la seguridad y las variables de entorno para una aplicación web que se ejecuta bajo Apache en Ubuntu 10.04 Server.

Tengo un par de aplicaciones que me gustaría que se ejecute como un usuario que no tiene shell o contraseña (entiendo que esto es una buena idea, pero yo no soy un experto). Una de las aplicaciones es una aplicación web que se inicia a través de un sistema de script de inicio, los demás son servicios públicos comenzó en una base ad-hoc de la línea de comandos a través de la sudo con la -u del interruptor.

Cada aplicación tiene acceso al mismo conjunto de variables de entorno. Puedo modificar la secuencia de comandos que se inicia cada aplicación, y establecer las variables de entorno, pero yo preferiría que si las variables de entorno se establece de alguna manera por el usuario bajo el que se ejecuta la aplicación.

Mis preguntas son:

Es posible establecer "por usuario" variables de entorno para un usuario que no tiene shell? He leído "la Configuración de variables de entorno para un servicio sin un shell de inicio de sesión en Debian", pero la solución dada es esencialmente la misma que la modificación de cada uno de mis secuencias de comandos de aplicaciones.

Si no puedo establecer las variables de entorno por usuario, ¿cuáles son los riesgos de seguridad asociados con dar al usuario una shell?

¿Cuáles son las alternativas o recomendaciones para este presumiblemente común de la situación?

3voto

psiko.scweek Puntos 23

Usando un archivo de configuración, y la adición de las variables a través de la aplicación de la secuencia de comandos de inicio es realmente la forma correcta de manejar esto. Si usted necesita para proporcionar ciertas variables de entorno no-shell scripts o archivos binarios (como perl, python o java), usted puede llamar a ellos con un shell de contenedor, proporcionar las variables necesarias y, a continuación, exec el real de la secuencia de comandos.

Si sus aplicaciones se inician por medio de algún tipo de script, hay que comenzar por llamar a un shell (el shebang en la parte superior del archivo), incluso si el usuario no tiene shell de inicio de sesión. Podría por ello modificar las variables de entorno a través de la cáscara del rc archivos como lo haría para los usuarios regulares. Creo que aún se necesita insertar la BASH_ENV variable para obtener los archivos rc para activar, ya está llamando a la secuencia de comandos de forma no interactiva.

Voy a recomendar que utilice el método anterior, y crear algún tipo de configuración para las aplicaciones. Será mucho más fácil de gestionar en el largo plazo.

-4voto

Las variables de entorno son un aspecto de la cáscara. Así que estoy bastante seguro de que no shell == ninguna de las variables de entorno.

Como regla general, yo no iba a dar cuentas de servicio privilegios de inicio de sesión. La respuesta corta es que es apenas algo más de que preocuparse. Es solo una más de las posibles intrusiones punto.

Personalmente, esto es donde me gustaría utilizar un archivo de configuración (/etc/myapp.conf). Sólo puede tener el script de inicio que se inicia la aplicación web, fuente el archivo y tener el resto de apps, buscar en una ubicación predeterminada o tomar argumentos en la línea de comandos.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: