Protección de archivos (tareas)
Enviado por • 22 de Julio de 2013 • Informes • 2.323 Palabras (10 Páginas) • 259 Visitas
Protección de archivos (tareas)
Los siguientes procedimientos protegen archivos con permisos UNIX, identifican archivos con riesgos de seguridad y evitan que el sistema se ponga en riesgo por estos archivos.
Protección de archivos con permisos UNIX (mapa de tareas)
El siguiente mapa de tareas indica procedimientos que enumeran permisos de archivo, cambian permisos de archivo y protegen archivos con permisos de archivo especiales.
Tarea
Para obtener instrucciones
Visualizar información de archivos.
Cómo visualizar información de archivos
Cambiar la propiedad de archivo local.
Cómo cambiar el propietario de un archivo
Cómo cambiar la propiedad de grupo de un archivo
Cambiar permisos de archivo local.
Cómo cambiar los permisos de archivo en modo simbólico
Cómo cambiar permisos de archivo en modo absoluto
Cómo cambiar permisos de archivo especiales en modo absoluto
Cómo visualizar información de archivos
Visualice información sobre todos los archivos en un directorio mediante el comando ls.
Escriba el siguiente comando para mostrar un listado largo de todos los archivos en el directorio actual.
% ls -la
-l
Muestra el formato largo que incluye la propiedad de usuario, la propiedad de grupo y los permisos de archivo.
-a
Muestra todos los archivos, incluidos los archivos ocultos que empiezan con un punto (.).
Ejemplo 7-1 Visualización de información de archivos
En el siguiente ejemplo, se muestra una lista parcial de los archivos en el directorio /sbin.
% cd /sbin
% ls -la
total 4960
drwxr-xr-x 2 root sys 64 Dec 8 11:57 ./
drwxr-xr-x 39 root root 41 Dec 8 15:20 ../
-r-xr-xr-x 1 root bin 21492 Dec 1 20:55 autopush*
-r-xr-xr-x 1 root bin 33680 Oct 1 11:36 beadm*
-r-xr-xr-x 1 root bin 184360 Dec 1 20:55 bootadm*
lrwxrwxrwx 1 root root 21 Jun 7 2010 bpgetfile -> ...
-r-xr-xr-x 1 root bin 86048 Dec 1 20:55 cryptoadm*
-r-xr-xr-x 1 root bin 12828 Dec 1 20:55 devprop*
-r-xr-xr-x 1 root bin 130132 Dec 1 20:55 dhcpagent*
-r-xr-xr-x 1 root bin 13076 Dec 1 20:55 dhcpinfo*
.
.
.
Cada una de las líneas muestra información sobre un archivo en el siguiente orden:
Tipo de archivo, por ejemplo, d. Para obtener una lista de tipos de archivo, consulte Propiedad de archivos y directorios.
Permisos, por ejemplo, r-xr-xr-x. Para obtener una descripción, consulte Propiedad de archivos y directorios.
Número de enlaces físicos, por ejemplo, 2.
Propietario del archivo, por ejemplo, root.
Grupo del archivo, por ejemplo, bin.
Tamaño del archivo, en bytes, por ejemplo, 21308.
Fecha de creación del archivo o la última fecha en la que el archivo se modificó, por ejemplo, Diciembre 9 15:55.
Nombre del archivo, por ejemplo, dhcpinfo.
Cómo cambiar el propietario de un archivo
Antes de empezar
Si no es el propietario del archivo o directorio, debe tener asignado el perfil de derechos de gestión de acceso a objetos. Para cambiar un archivo que es un objeto público, debe ser superusuario.
Visualice los permisos en un archivo.
% ls -l example-file
-rw-r--r-- 1 janedoe staff 112640 May 24 10:49 example-file
Conviértase en administrador con los atributos de seguridad necesarios.
Para obtener más información, consulte Cómo obtener derechos administrativos.
Cambie el propietario del archivo.
# chown stacey example-file
Verifique que el propietario del archivo haya cambiado.
# ls -l example-file
-rw-r--r-- 1 stacey staff 112640 May 26 08:50 example-file
Los sistemas de archivos montados en NFS tienen más restricciones para cambiar la propiedad y los grupos. Para obtener más información, consulte el Capítulo 6, Acceso a los sistemas de archivos de red (referencia) de Oracle Administración Solaris: Servicios de red.
Ejemplo 7-2 Cómo permitir que los usuarios cambien la propiedad de sus propios archivos
Consideración de seguridad: necesita una buena razón para cambiar el valor de la variable rstchown a cero. El valor predeterminado evita que los usuarios enumeren sus archivos como pertenecientes a otros para omitir las cuotas de espacio.
En este ejemplo, el valor de la variable rstchown se define en cero, en el archivo /etc/system. Este valor permite al propietario de un archivo utilizar el comando chown para cambiar la propiedad del archivo a otro usuario. Este valor también permite al propietario utilizar el comando chgrp para establecer la propiedad de grupo de un archivo en un grupo al que el propietario no pertenece. El cambio entra en vigor cuando se reinicia el sistema.
set rstchown = 0
Para obtener más información, consulte las páginas del comando man chown(1) y chgrp(1).
Cómo cambiar la propiedad de grupo de un archivo
Antes de empezar
Si no es el propietario del archivo o directorio, debe tener asignado el perfil de derechos de gestión de acceso a objetos. Para cambiar un archivo que es un objeto público, debe ser superusuario.
Conviértase en administrador con los atributos de seguridad necesarios.
Para obtener más información, consulte Cómo obtener derechos administrativos.
Cambie la propiedad de grupo de un archivo.
$ chgrp scifi example-file
Para obtener información sobre la configuración de grupos, consulte el Capítulo 2, Gestión de grupos y cuentas de usuario (descripción general) de Administración de Oracle Solaris: tareas comunes.
Verifique que la propiedad de grupo del archivo haya cambiado.
$ ls -l example-file
-rw-r--r-- 1 stacey scifi 112640 June 20 08:55 example-file
Consulte también el Ejemplo 7-2.
Cómo cambiar los permisos de archivo en modo simbólico
En el siguiente procedimiento, un usuario cambia permisos en un archivo que el usuario posee.
Cambie permisos en modo simbólico.
% chmod who operator permissions filename
quién
Especifica los permisos de qué usuarios se van a cambiar.
operador
Especifica la operación que se va a realizar.
permisos
Especifica qué permisos se van a cambiar. Para obtener la lista de símbolos válidos, consulte la Tabla 7-5.
nombre_archivo
Especifica el archivo o directorio.
Verifique que los permisos del archivo hayan cambiado.
% ls -l filename
Nota - Si no es el propietario del archivo o directorio, debe tener asignado el perfil de derechos de gestión de acceso a objetos. Para cambiar un archivo que es un objeto público, debe ser superusuario.
Ejemplo 7-3 Cambio de permisos en modo simbólico
En el siguiente ejemplo, el permiso de lectura se quita de otros.
% chmod o-r example-file1
En el siguiente ejemplo, los permisos de lectura y ejecución se agregan a un archivo local para usuario, grupo y otros.
$ chmod a+rx example-file2
En el siguiente ejemplo, los permisos de lectura, escritura y ejecución para un grupo se asignan a un archivo local.
$ chmod g=rwx example-file3
Cómo cambiar permisos de archivo en modo absoluto
En el siguiente procedimiento, un usuario cambia permisos en un archivo que el usuario posee.
Cambie permisos en modo absoluto.
% chmod nnn filename
nnn
Especifica los valores octales que representan los permisos para el propietario de archivo, el grupo de archivos y otros, en ese orden. Para obtener la lista de valores octales válidos, consulte la Tabla 7-4.
nombre_archivo
Especifica el archivo o directorio.
Nota - Al utilizar el comando chmod para cambiar los permisos de grupo de archivos en un archivo con entradas de ACL, tanto los permisos de grupo de archivos como la máscara de la ACL se cambian a los nuevos permisos. Tenga en cuenta que los nuevos permisos de la máscara de la ACL pueden cambiar los permisos para otros usuarios y grupos que tienen entradas de ACL en el archivo. Utilice el comando getfacl para asegurarse de que los permisos adecuados se establezcan para todas las entradas de la ACL. Para obtener más información, consulte la página del comando man getfacl(1).
Verifique que los permisos del archivo hayan cambiado.
% ls -l filename
Nota - Si no es el propietario del archivo o directorio, debe tener asignado el perfil de derechos de gestión de acceso a objetos. Para cambiar un archivo que es un objeto público, debe ser superusuario.
Ejemplo 7-4 Cambio de permisos en modo absoluto
En el siguiente ejemplo, los permisos de un directorio público se cambian de 744 (lectura, escritura, ejecución; sólo lectura; y sólo lectura) a 755 (lectura, escritura, ejecución; lectura y ejecución; y lectura y ejecución).
# ls -ld public_dir
drwxr--r-- 1 jdoe staff 6023 Aug 5 12:06 public_dir
# chmod 755 public_dir
# ls -ld public_dir
drwxr-xr-x 1 jdoe staff 6023 Aug 5 12:06 public_dir
En el siguiente ejemplo, los permisos de una secuencia de comandos de shell ejecutable se cambian de lectura y escritura a lectura, escritura y ejecución.
% ls -l my_script
-rw------- 1 jdoe staff 6023 Aug 5 12:06 my_script
% chmod 700 my_script
% ls -l my_script
-rwx------ 1 jdoe staff 6023 Aug 5 12:06 my_script
Cómo cambiar permisos de archivo especiales en modo absoluto
Antes de empezar
Si no es el propietario del archivo o directorio, debe tener asignado el perfil de derechos de gestión de acceso a objetos. Para cambiar un archivo que es un objeto público, debe ser superusuario.
Conviértase en administrador con los atributos de seguridad necesarios.
Para obtener más información, consulte Cómo obtener derechos administrativos.
Cambie permisos especiales en modo absoluto.
% chmod nnnn filename
nnnn
Especifica los valores octales que cambian los permisos en el archivo o directorio. El valor octal que se encuentra más a la izquierda establece los permisos especiales en el archivo. Para obtener la lista de valores octales válidos para permisos especiales, consulte la Tabla 7-6.
nombre_archivo
Especifica el archivo o directorio.
Nota - Al utilizar el comando chmod para cambiar los permisos de grupo de archivos en un archivo con entradas de ACL, tanto los permisos de grupo de archivos como la máscara de la ACL se cambian a los nuevos permisos. Tenga en cuenta que los nuevos permisos de la máscara de ACL pueden cambiar los permisos para otros usuarios y grupos que tienen entradas de ACL en el archivo. Utilice el comando getfacl para asegurarse de que los permisos adecuados se establezcan para todas las entradas de la ACL. Para obtener más información, consulte la página del comando man getfacl(1).
Verifique que los permisos del archivo hayan cambiado.
% ls -l filename
Ejemplo 7-5 Establecimiento de permisos de archivo especiales en modo absoluto
En el ejemplo siguiente, el permiso setuid está establecido en el archivo dbprog.
# chmod 4555 dbprog
# ls -l dbprog
-r-sr-xr-x 1 db staff 12095 May 6 09:29 dbprog
En el ejemplo siguiente, el permiso setgid está establecido en el archivo dbprog2.
# chmod 2551 dbprog2
# ls -l dbprog2
-r-xr-s--x 1 db staff 24576 May 6 09:30 dbprog2
En el siguiente ejemplo, el permiso de bit de permanencia está establecido en el directorio public_dir.
# chmod 1777 public_dir
# ls -ld public_dir
drwxrwxrwt 2 jdoe staff 512 May 15 15:27 public_dir
Protección contra programas con riesgo de seguridad (mapa de tareas)
El siguiente mapa de tareas indica procedimientos que buscan ejecutables riesgosos en el sistema y que impiden que los programas se aprovechen de una pila ejecutable.
Tarea
Descripción
Para obtener instrucciones
Buscar archivos con permisos especiales.
Localiza archivos con el bit setuid establecido, pero que no son propiedad del usuario root.
Cómo buscar archivos con permisos de archivo especiales
Evitar que pilas ejecutables se desborden.
Impide que los programas se aprovechen de una pila ejecutable.
Cómo impedir que programas usen pilas ejecutables
Evitar el registro de mensajes de pilas ejecutables.
Desactiva el registro de mensajes de pilas ejecutables.
Ejemplo 7-7
Cómo buscar archivos con permisos de archivo especiales
Este procedimiento ubica el uso potencialmente no autorizado de permisos setuid y setgid en programas. Un archivo ejecutable sospechoso concede propiedad a un usuario en lugar de a root o bin.
Antes de empezar
Debe tener el rol root.
Busque archivos con permisos setuid mediante el comando find.
# find directory -user root -perm -4000 -exec ls -ldb {} \; >/tmp/filename
find directorio
Comprueba todas las rutas montadas a partir del directorio especificado, que puede ser root (/), sys, bin o mail.
-user root
Muestra archivos que sólo son propiedad de root.
-perm -4000
Muestra archivos sólo con permisos establecidos en 4000.
-exec ls -ldb
Muestra el resultado del comando find en formato ls -ldb.
/tmp/nombre_archivo
Es el archivo que contiene los resultados del comando find.
Muestra los resultados en /tmp/nombre_archivo.
# more /tmp/filename
Para obtener más información sobre los permisos setuid, consulte Permiso setuid.
Ejemplo 7-6 Búsqueda de archivos con permisos setuid
El resultado del siguiente ejemplo muestra que un usuario en un grupo denominado rar ha realizado una copia personal de /usr/bin/sh y ha establecido los permisos como setuid en root. Como resultado, el programa /usr/rar/bin/sh se ejecuta con permisos root.
Esta salida se ha guardado para referencia futura moviendo el directorio /var/tmp/chkprm a un archivo.
# find / -user root -perm -4000 -exec ls -ldb {} \; > /var/tmp/ckprm
# cat /var/tmp/ckprm
-r-sr-xr-x 1 root bin 38836 Aug 10 16:16 /usr/bin/at
-r-sr-xr-x 1 root bin 19812 Aug 10 16:16 /usr/bin/crontab
---s--x--x 1 root sys 46040 Aug 10 15:18 /usr/bin/ct
-r-sr-xr-x 1 root sys 12092 Aug 11 01:29 /usr/lib/mv_dir
-r-sr-sr-x 1 root bin 33208 Aug 10 15:55 /usr/lib/lpadmin
-r-sr-sr-x 1 root bin 38696 Aug 10 15:55 /usr/lib/lpsched
---s--x--- 1 root rar 45376 Aug 18 15:11 /usr/rar/bin/sh
-r-sr-xr-x 1 root bin 12524 Aug 11 01:27 /usr/bin/df
-rwsr-xr-x 1 root sys 21780 Aug 11 01:27 /usr/bin/newgrp
-r-sr-sr-x 1 root sys 23000 Aug 11 01:27 /usr/bin/passwd
-r-sr-xr-x 1 root sys 23824 Aug 11 01:27 /usr/bin/su
# mv /var/tmp/ckprm /export/sysreports/ckprm
Cómo impedir que programas usen pilas ejecutables
Para obtener una descripción de los riesgos de seguridad de las pilas ejecutables de 32 bits, consulte Cómo evitar que los archivos ejecutables pongan en riesgo la seguridad.
Antes de empezar
Debe tener el rol root.
Edite el archivo /etc/ y agregue la siguiente línea:
set noexec_user_stack=1
Reinicie el sistema.
# reboot
Ejemplo 7-7 Deshabilitación del registro de mensajes de pilas ejecutables
En este ejemplo, el registro de mensajes de pilas ejecutables se deshabilita y el sistema se reinicia.
# cat /etc/system
set noexec_user_stack=1
set noexec_user_stack_log=0
# reboot
Véase también
Para obtener más información, lea lo siguiente:
http://blogs.oracle.com/gbrunett/entry/solaris_non_executable_stack_overview
http://blogs.oracle.com/gbrunett/entry/solaris_non_executable_stack_continued
http://blogs.oracle.com/gbrunett/entry/solaris_non_executable_stack_concluded
...