Protección de los usuarios y los procesos en Oracle® Solaris 11.2

Salir de la Vista de impresión

Actualización: Julio de 2014
 
 

Bloqueo de las aplicaciones por parte de los usuarios que las ejecutan

Los usuarios pueden eliminar privilegios básicos de las aplicaciones mediante la política de privilegio extendido. La política impide el acceso a directorios a los que las aplicaciones no deberían acceder.


Notas -  El orden es importante. Los privilegios más amplios para directorios, como $HOME/Download* se deben asignar después de privilegios más limitados para la mayoría de los directorios $HOME/.*.
Ejemplo 4-4  Ejecución de un explorador en un entorno protegido

En este ejemplo, se muestra cómo los usuarios pueden ejecutar el explorador Firefox en un entorno protegido. En esta configuración, el directorio del usuario está oculto en Firefox Documents.

Mediante el siguiente comando, el usuario elimina privilegios básicos del comando /usr/bin/firefox. Los argumentos del privilegio extendido para el comando ppriv -r limitan el explorador para la lectura y la escritura solamente en los directorios que especifica el usuario. La opción –e y sus argumentos abren el explorador con la política de privilegio extendido.

% ppriv -r "\
{file_read}:/dev/*,\
{file_read}:/etc/*,\
{file_read}:/lib/*,\
{file_read}:/usr/*,\
{file_read}:/var/*,\
{file_read}:/proc,\
{file_read}:/proc/*,\
{file_read}:/system/volatile/*,\
{file_write}:$HOME,\
{file_read}:$HOME/.*,\
{file_read,file_write}:$HOME/.mozill*,\
{file_read,file_write}:$HOME/.gnome*,\
{file_read,file_write}:$HOME/Downloa*,\
{file_read,file_write}:/tmp,\
{file_read,file_write}:/tmp/*,\
{file_read,file_write}:/var/tmp,\
{file_read,file_write}:/var/tmp/*,\
{proc_exec}:/usr/*\
" -e /usr/bin/firefox file:///$HOME/Desktop

Cuando los privilegios file_read y file_write , se utilizan en una política extendida, debe otorgar acceso explícito a cada archivo que se debe leer o escribir. El uso del carácter comodín, *, es esencial en tales políticas.

Para gestionar directorios principales de montaje automático, el usuario debe agregar una entrada explícita para la ruta de acceso de montaje automático, por ejemplo:

{file_read,file_write}:/export/home/$USER

Si el sitio no está utilizando la utilidad automount, la lista inicial de directorios protegidos es suficiente.

Los usuarios pueden automatizar esta línea de comandos shell Explorador protegida mediante la creación de una secuencia de comandos. A continuación, para iniciar un explorador, el usuario llama a la secuencia de comandos, no al comando /usr/bin/firefox.

Ejemplo 4-5  Protección de los directorios de su sistema contra los procesos de aplicación

En este ejemplo, un usuario común crea un sandbox para las aplicaciones mediante un envoltorio de secuencia de comandos de shell. La primera parte de la secuencia de comandos limita las aplicaciones a determinados directorios. Las excepciones, como Firefox, se gestionan más tarde en la secuencia de comandos. La secuencia de comandos está seguida de comentarios sobre partes de la secuencia de comandos.

1 #!/bin/bash
2 
3 # Using bash because ksh misinterprets extended policy syntax
4 
5 PATH=/usr/bin:/usr/sbin:/usr/gnu/bin
6 
7 DENY=file_read,file_write,proc_exec,proc_info
8 
9 SANDBOX="\
10 {file_read}:/dev/*,\
11 {file_read}:/etc/*,\
12 {file_read}:/lib/*,\
13 {file_read,file_write}:/usr/*,\
14 {file_read}:/proc,\
15 {file_read,file_write}:/proc/*,\
16 {file_read}:/system/volatile/*,\
17 {file_read,file_write}:/tmp,\
18 {file_read,file_write}:/tmp/*,\
19 {file_read,file_write}:/var/*,\
20 {file_write}:$HOME,\
21 {file_read}:$HOME/.*,\
22 {file_read,file_write}:$PWD,\
23 {file_read,file_write}:$PWD/*,\
24 {proc_exec}:/usr/*\
25 "
26 
27 # Default program is restricted bash shell
28 
29 if [[ ! -n $1 ]]; then
30     program="/usr/bin/bash --login --noprofile
        --restricted"
31 else
32     program="$@"
33 fi
34 
35 
36 # Firefox needs more file and network access
37 if [[ "$program" =~ firefox ]]; then
38     SANDBOX+=",\
39 {file_read,file_write}:$HOME/.gnome*,\
40 {file_read,file_write}:$HOME/.mozill*,\
41 {file_read,file_write}:$HOME/.dbu*,\
42 {file_read,file_write}:$HOME/.puls*\
43 "
44 
45 else
46     DENY+=",net_access"
47 fi
48 
49 echo Starting $program in sandbox
50 ppriv -s I-$DENY -r $SANDBOX -De $program

La política se puede ajustar para permitir aplicaciones específicas de más o menos acceso. Un ajuste se realiza en las líneas 38-42, donde se otorgado a Firefox acceso de escritura a varios archivos dot que mantienen la información de la sesión en el directorio principal del usuario. Además, Firefox no está sujeto a la línea 46, que elimina el acceso a la red. Sin embargo, Firefox aún está restringido para leer archivos arbitrarios en el directorio principal del usuario, y puede guardar archivos sólo en su directorio actual.

Como nivel extra de protección, el programa predeterminado, en la línea 30, es un shell Bash restringido. Un shell restringido no puede cambiar su directorio actual o ejecutar los archivos dot del usuario. Por lo tanto, los comandos que se iniciaron desde este shell se bloquean de manera similar en el sandbox.

En la última línea de la secuencia de comandos, se transfieren al comando ppriv dos conjuntos de privilegios como las variables de shell, $DENY y $SANDBOX.

El primer conjunto, $DENY, impide que el proceso lea o escriba cualquier archivo, ejecute cualquier subproceso, observe otros procesos del usuario y acceda (de forma condicional) a la red. Estas restricciones son demasiado graves; por lo tanto, en el segundo conjunto $SANDBOX, la política de lectura se acota mediante la enumeración de los directorios que están disponibles para lectura, escritura y ejecución.

Además, en la línea 50, se especifica la opción de depuración –D. Los fallos de acceso se muestran en la ventana de terminal, en tiempo real, e incluyen el objeto denominado y el privilegio correspondiente privilegios que se requiere para que el proceso se realice correctamente. Esta información de depuración puede ayudar al usuario personalizar la política para otras aplicaciones.