2.0 www.novell.com
02/28/2006 Guía de administración
Guía de administración de Novell AppArmor 2.0
Autores: Leona Beatrice Campbell, Jana Jaeger
Su contenido puede duplicarse, ya sea en su totalidad o en parte, siempre que haya un símbolo de
copyright bien visible en cada copia.
Toda la información recogida en esta publicación se ha compilado prestando toda la atención posible
al más mínimo detalle. Sin embargo, esto no garantiza una precisión total. Ni SUSE LINUX GmbH,
los autores ni los traductores serán responsables de los posibles errores o las consecuencias que de
ellos pudieran derivarse.
Novell, el logotipo de Novell, el logotipo N y SUSE son marcas comerciales registradas de Novell,
Inc. en los Estados Unidos y en otros países. * Linux es una marca registrada de Linus Torvalds. El
resto de marcas comerciales de otros fabricantes pertenecen a sus propietarios respectivos.
1 Inmunización de programas 1
Glosario 123
Acerca de esta guía
Novell® AppArmor está diseñado para ofrecer servicios de seguridad de fácil manejo
a las aplicaciones de los servidores y las estaciones de trabajo. Novell AppArmor es
un sistema de control de acceso que permite especificar qué archivos puede leer, escribir
y ejecutar cada programa. AppArmor protege las aplicaciones mediante la imposición
de buenas prácticas de comportamiento sin basarse en firmas de ataques, de forma que
se puedan prevenir estos ataques incluso si intentan explotar vulnerabilidades anterior-
mente desconocidas.
Inmunización de programas
Describe las operaciones de Novell AppArmor.
Asistencia técnica
Describe las opciones de asistencia para este producto.
Glosario
Ofrece una lista de términos junto a sus definiciones.
1 Comentarios
Nos gustaría recibir sus comentarios o sugerencias acerca de este manual y del resto
de documentación incluida en este producto. Utilice la función de comentarios del
usuario situada en la parte inferior de las páginas de la documentación en línea e intro-
duzca ahí sus comentarios.
2 Convenciones de la documentación
En este manual se utilizan las siguientes convenciones tipográficas:
Novell AppArmor configura una serie de perfiles de aplicación por defecto para proteger
los servicios estándar de Linux. Para proteger otras aplicaciones, utilice las herramientas
de Novell AppArmor a fin de crear perfiles para las aplicaciones que desee proteger.
En este capítulo se describe la filosofía de inmunización de programas. Pase directamente
al Capítulo 3, Creación de perfiles de Novell AppArmor (p. 11) si considera que ya
está preparado para crear y gestionar perfiles de Novell AppArmor.
Inmunización de programas 1
Selección de programas que
inmunizar
Novell® AppArmor pone en cuarentena programas para proteger el resto del sistema
2
de los daños provocados por un proceso afectado. Deberá inspeccionar los puertos para
comprobar para qué programas se deben crear perfiles (consulte la Sección 2.2,
“Inspección de los puertos abiertos para inmunizar programas” (p. 4)) y crear perfiles
para todos los programas que otorguen privilegios (Sección 2.1, “Inmunización de
programas que otorgan privilegios” (p. 3)).
Agentes de red
Programas (de servidores o de clientes) que tienen puertos de red abiertos. Los
clientes del usuario, como los clientes de correo electrónico o los navegadores Web,
aunque parezca sorprendente, otorgan privilegios. Estos programas se ejecutan con
el privilegio de escritura en los directorios personales del usuario y procesan datos
de entrada de fuentes remotas potencialmente hostiles, como sitios Web hostiles o
código dañino enviado por correo electrónico. Para obtener instrucciones sobre
cómo localizar este tipo de programas, consulte la Sección 2.2.3, “Inmunización
de agentes de red” (p. 9).
Por otro lado, no es necesario crear perfiles para los programas que no cuentan con
privilegios. Por ejemplo, un guión de shell puede abrir el programa cp para copiar un
archivo. Puesto que cp no cuenta con su propio perfil, hereda el perfil del guión de
shell superior, de modo que puede copiar cualquier archivo que el perfil del guión de
shell principal permita leer y escribir.
NOTA
La herramienta unconfined no distingue entre una interfaz de red y otra, así que informa
de todos los procesos sin limitación, incluso de los que puedan estar a la escucha de
una interfaz LAN interna.
Las tareas del Root de cron se pueden editar con el comando crontab -e, y es posible
mostrar una lista de las tareas del Root de cron con crontab -l. Para efectuar estas
acciones debe ser el usuario Root.
Tras localizar estos programas, puede utilizar el programa Asistente para añadir perfiles
para crear perfiles para ellos. Consulte la Sección 3.3.1, “Adición de perfiles mediante
el asistente” (p. 18).
Tras localizar estos programas, puede utilizar el Asistente para añadir perfiles de
AppArmor para crear perfiles para ellos. Consulte la Sección 3.3.1, “Adición de perfiles
mediante el asistente” (p. 18).
A la hora de crear perfiles para aplicaciones Web que utilicen mod_perl y mod_php
se requiere una manipulación ligeramente distinta. En este caso, el “programa” es un
guión que interpreta directamente el módulo del proceso de Apache, por lo que no se
produce la opción exec. En su lugar, la versión de Novell AppArmor de Apache llama
al comando change_hat() que da nombre a un subperfil (un “hat”) que se corres-
ponde con el nombre del URI solicitado.
NOTA
El nombre que se presenta para que lo ejecute el guión puede no ser el URI,
según la forma en que se haya configurado dónde debe buscar Apache los
guiones de módulos. Si ha configurado Apache para que coloque los guiones
en un sitio distinto, estos nombres distintos aparecerán en syslog cuando Novell
AppArmor se queje de violaciones de acceso. Consulte el Capítulo 4, Gestión
de aplicaciones con perfiles (p. 71).
Para los guiones mod_perl y mod_php, es el nombre del guión de Perl o de la página
PHP solicitados. Por ejemplo, si se añade este subperfil, se permite que la página
localtime.php se ejecute y acceda a la hora local del sistema:
/usr/sbin/httpd2-prefork^/cgi-bin
localtime.php {
/etc/localtime r,
/srv/www/cgi-bin/localtime.php r,
/usr/lib/locale/** r,
}
Si desea tener un único perfil de Novell AppArmor para todas las páginas Web y los
guiones CGI proporcionados por Apache, un buen enfoque consiste en editar el subperfil
DEFAULT_URI.
El modo más sencillo de explicar en qué consiste un perfil y cómo crear uno es mostrar
los detalles de un perfil de demostración. Por ejemplo, examine el siguiente perfil para
el programa /sbin/klogd:
# perfil para limitar klogd❶
/sbin/klogd ❷
{❸
#include <abstractions/base>❹
capability sys_admin,❺
/boot/* r❻,
/proc/kmsg r,
/sbin/klogd r,
/var/run/klogd.pid lw,
}
❶ Un comentario que indica el nombre del programa limitado por este perfil. Los
comentarios siempre deben estar precedidos por el signo #.
❷ Vía completa al programa limitado.
❸ Las llaves {} sirven como contenedor para incluir declaraciones de otros perfiles,
así como entradas de vía y capacidad.
❹ Esta directiva incorpora componentes de Novell AppArmor para simplificar los
perfiles.
❺ Las declaraciones de entradas de capacidad activan las 29 capacidades del borrador
POSIX.1e.
❻ Entrada de vía que especifica las partes del sistema de archivos a las que puede
acceder el programa. La primera parte de una entrada de vía especifica la vía
completa de un archivo (incluido el englobamiento de expresiones regulares) y
la segunda parte indica los modos de acceso permitidos (r para lectura, w para
escritura y x para ejecución). Un espacio en blanco de cualquier clase (espacio o
tabulación) puede preceder a los nombres de vías o separarlos de los modos de
acceso. El espacio en blanco entre el modo de acceso y la coma final es opcional.
Cuando se crea un perfil para un programa, el programa sólo puede acceder a los
archivos, modos y capacidades POSIX especificadas en el perfil. Estas restricciones
son adiciones a los controles de acceso nativos de Linux.
Los intentos de vulnerar las reglas de Novell AppArmor quedan registrados en syslog.
En muchos casos, las reglas de Novell AppArmor evitan que funcione un ataque porque
impiden el acceso a los archivos necesarios y, en cualquier caso, las limitaciones de
Novell AppArmor reducirían los daños que un atacante pudiera causar en el conjunto
de archivos permitidos por Novell AppArmor.
3.1.2 #include
Las declaraciones #include son directivas que incorporan componentes de otros
perfiles de Novell AppArmor para simplificar la estructura de los perfiles. Los archivos
include recuperan los permisos de acceso de los programas. Utilizando una declaración
include, puede proporcionar al programa acceso a las vías de directorios o archivos que
también necesiten otros programas. Al utilizar este tipo de declaraciones, podrá reducir
el tamaño de los perfiles.
Para que le resulte más sencillo crear los perfiles de sus aplicaciones, Novell AppArmor
proporciona dos clases de declaraciones #include: las abstracciones y las porciones
de programa.
Abstracciones
Las abstracciones son declaraciones #include agrupadas por tareas de aplicación
comunes. Estas tareas incluyen el acceso a mecanismos de autenticación, el acceso a
rutinas de servicios de nombres, requisitos gráficos comunes y contabilidad del sistema.
Los archivos descritos en estas abstracciones son específicos de la tarea nombrada; los
programas que requieren uno de estos archivos suelen requerir otros archivos incluidos
Porciones de programa
Las porciones de programa son controles de acceso para programas específicos que un
administrador del sistema podría necesitar controlar basándose en directivas del sitio
local. Cada porción es utilizada por un único programa. Se proporcionan para facilitar
las modificaciones de directivas del sitio local, así como las actualizaciones de las
directivas proporcionadas por Novell AppArmor. Los administradores pueden modificar
las directivas de estos archivos de modo que se ajusten a sus necesidades en lugar de
modificar los perfiles de los programas, lo que simplifica la tarea de unir las actualiza-
ciones de directivas de Novell AppArmor para aplicar las directivas en cada sitio.
Las restricciones de acceso de las porciones de programas suelen ser muy abiertas y
están diseñadas para que los usuarios puedan acceder a sus archivos del modo menos
intrusivo posible, manteniendo al mismo tiempo la protección de los recursos del sistema.
La excepción a esta regla es la serie de porciones de programa postfix*. Estos
perfiles se utilizan para facilitar la abstracción de la ubicación de los archivos binarios
postfix. No es recomendable reducir los permisos de la serie postfix*. Las porciones
de programa se encuentran en /etc/apparmor.d/program-chunks/.
complain
Establece los perfiles en el modo de queja. Vuelva a definir el modo de aplicación
cuando desee que el sistema comience a aplicar las reglas de los perfiles, en lugar
de limitarse a registrar la información. Para obtener más información acerca de
esta herramienta, consulte “Modo de aprendizaje o de queja” (p. 49).
enforce
Vuelve a definir los perfiles con el modo de aplicación y el sistema empieza a
aplicar las reglas de los perfiles, en lugar de limitarse a registrar información. Para
obtener más información acerca de esta herramienta, consulte “Modo de aplicación”
(p. 50).
unconfined
Lleva a cabo una auditoría del servidor para encontrar procesos que estén ejecu-
tándose y escuchando a la espera de conexiones de red, e informa de si están
incluidos en perfiles.
autodep
Genera un esquema de perfil para un programa y lo carga en el módulo de Novell
AppArmor en el modo de queja.
Haga clic en uno de los siguientes iconos de Novell AppArmor y seguidamente pase a
la sección a la que se hace referencia:
Editar perfil
Edita un perfil de Novell AppArmor existente en el sistema. Para obtener infor-
mación detallada, consulte la Sección 3.3.3, “Edición de perfiles” (p. 30).
Informes de AppArmor
Para obtener información detallada, consulte la Sección 4.3, “Informes” (p. 76).
1 Detenga la aplicación antes de realizar perfiles sobre ella para asegurarse de que
el inicio de la aplicación esté incluido en el perfil. Para ello, asegúrese de que la
aplicación o el daemon no se estén ejecutando antes de realizar el perfil.
6 Lleve a cabo tantas funciones de la aplicación como sea posible para que el modo
de aprendizaje pueda registrar los archivos y directorios a los que el programa
debe acceder para funcionar correctamente.
7 Haga clic en Explorar registro del sistema en busca de entradas que añadir a
los perfiles para procesar los archivos de registro del modo de aprendizaje. De
este modo se generará una serie de preguntas a las que deberá responder para
guiar al asistente durante el proceso de generación del perfil de seguridad.
NOTA
Cada uno de estos casos genera una serie de preguntas a las que deberá responder
para añadir el recurso o el programa al perfil. Las dos figuras siguientes muestran
un ejemplo de cada caso. Los pasos subsiguientes describen las opciones para
responder a estas preguntas.
#include
Sección de un perfil de Novell AppArmor que hace referencia a un
archivo include. Los archivos include obtienen los permisos de acceso
de los programas. Utilizando una declaración include, puede propor-
cionar al programa acceso a las vías de directorios o archivos que
también necesiten otros programas. Al utilizar este tipo de declaraciones,
podrá reducir el tamaño de los perfiles. Es recomendable seleccionar
las entradas include cuando el sistema lo sugiera.
Versión global
Se accede haciendo clic en Global, tal y como se describe en el siguiente
paso. Para obtener más información acerca de la sintaxis global, consulte
la Sección 3.6, “Nombres de vías y englobamiento” (p. 66).
Heredar
Permanece en el mismo perfil de seguridad (perfil principal).
Perfil
Requiere que exista un perfil distinto para el programa ejecutado.
AVISO
9 Después de seleccionar una vía de directorio, deberá procesarla como una entrada
del perfil de Novell AppArmor haciendo clic en Permitir o en Denegar. Si no
está satisfecho con la entrada de vía de directorio tal y como aparece, también
puede utilizar las opciones Global o Editar.
Las opciones disponibles para procesar las entradas del modo de aprendizaje y
crear el perfil son las siguientes:
Permitir
Proporciona acceso al programa a las entradas de vías de directorio especifi-
cadas. El Asistente para añadir perfiles sugiere los permisos de acceso a los
archivos. Para obtener más información acerca de este tema, consulte la
Sección 3.7, “Modos de permiso de acceso a archivos” (p. 67).
Denegar
Haga clic en Denegar para impedir que el programa acceda a las entradas
de vías de directorios especificadas.
Global
Al hacer clic en esta opción se modifica la vía de directorio (empleando
comodines) para que incluya todos los archivos del directorio de entrada
sugerido. Si hace doble clic se proporcionará acceso a todos los archivos y
subdirectorios situados bajo el mostrado.
Editar
Permite editar la línea destacada. La nueva línea (editada) aparecerá al final
de la lista.
Abortar
Cancela logprof, desechando todos los cambios de reglas introducidos hasta
el momento y dejando intactos todos los perfiles, sin modificarlos.
Finalizar
Cierra logprof, guardando todos los cambios de reglas introducidos hasta el
momento y modificando todos los perfiles en consecuencia.
Haga clic en Permitir o en Denegar para cada entrada del modo de aprendizaje.
Esto facilita la creación del perfil de Novell AppArmor.
NOTA
3 Desplácese por el sistema para encontrar la aplicación cuyo perfil desee crear.
Adición de entradas
En esta sección se explica la opción Añadir entrada, que encontrará en la Sección 3.3.2,
“Adición manual de perfiles” (p. 24) o en la Sección 3.3.3, “Edición de perfiles” (p. 30).
Al seleccionar Añadir entrada, aparecerá una lista desplegable que muestra los tipos
de entrada que puede añadir al perfil de Novell AppArmor.
File (Archivo)
En la ventana emergente, especifique la vía completa de un archivo, incluido
el tipo de acceso permitido. Cuando termine, haga clic en Aceptar.
Capacidad
En la ventana emergente, seleccione las capacidades adecuadas. Se trata de
declaraciones que habilitan las 32 capacidades POSIX.1e. Consulte la
Sección 3.1.1, “División de un perfil de Novell AppArmor en las partes que
lo componen” (p. 11) para obtener más información sobre las capacidades.
Al terminar de realizar las selecciones, haga clic en Aceptar.
Para obtener información detallada sobre los englobamientos, consulte la Sección 3.6,
“Nombres de vías y englobamiento” (p. 66). Para obtener información sobre los permisos
de acceso a archivos, consulte la Sección 3.7, “Modos de permiso de acceso a archivos”
(p. 67).
Supresión de entradas
En esta sección se explica la opción Suprimir entrada, que encontrará en la Sección 3.3.2,
“Adición manual de perfiles” (p. 24) o en la Sección 3.3.3, “Edición de perfiles” (p. 30).
Al seleccionar una entrada y luego hacer clic en Suprimir entrada, Novell AppArmor
eliminará la entrada de perfil seleccionada.
2 En Novell AppArmor, haga clic en Editar perfil. Se abrirá la ventana Editar perfil
- Seleccionar perfil para editar.
7 En la ventana emergente que aparecerá, haga clic en Sí para confirmar los cambios
en el perfil.
Cada caso produce una pregunta que deberá responder y que permite añadir el
recurso o programa al perfil. Las dos figuras siguientes muestran un ejemplo de
cada caso. Los pasos subsiguientes describen las opciones para responder a estas
preguntas.
#include
Sección de un perfil de Novell AppArmor que hace referencia a un
archivo include. Los archivos include recuperan los permisos de acceso
de los programas. Utilizando una declaración include, puede propor-
cionar al programa acceso a las vías de directorios o archivos que
también necesiten otros programas. Al utilizar este tipo de declaraciones,
podrá reducir el tamaño de los perfiles. Es recomendable seleccionar
las entradas include cuando el sistema lo sugiera.
Versión global
Se accede haciendo clic en Global, tal y como se describe en el siguiente
paso. Para obtener más información acerca de la sintaxis global, consulte
la Sección 3.6, “Nombres de vías y englobamiento” (p. 66).
Heredar
Permanece en el mismo perfil de seguridad (perfil principal).
Perfil
Requiere que exista un perfil distinto para el programa ejecutado.
AVISO
4 Después de seleccionar una vía de directorio, deberá procesarla como una entrada
del perfil de Novell AppArmor haciendo clic en Permitir o en Denegar. Si no
está satisfecho con la entrada de vía de directorio tal y como aparece, también
puede utilizar las opciones Global o Editar.
Las opciones disponibles para procesar las entradas del modo de aprendizaje y
crear el perfil son las siguientes:
Permitir
Proporciona acceso al programa a las entradas de vías de directorio especifi-
cadas. El asistente para la creación de perfiles sugiere los permisos de acceso
a los archivos. Para obtener más información acerca de este tema, consulte
la Sección 3.7, “Modos de permiso de acceso a archivos” (p. 67).
Denegar
Haga clic en Denegar para impedir que el programa acceda a las entradas
de vías de directorios especificadas.
Global
Al hacer clic en esta opción se modifica la vía de directorio (empleando
comodines) para que incluya todos los archivos del directorio de entrada
sugerido. Si hace doble clic se proporcionará acceso a todos los archivos y
subdirectorios situados bajo el mostrado.
Editar
Permite editar la línea destacada. La nueva línea (editada) aparecerá al final
de la lista.
Abortar
Cancela logprof, desechando todos los cambios de reglas introducidos hasta
el momento y dejando intactos todos los perfiles, sin modificarlos.
Finalizar
Cierra logprof, guardando todos los cambios de reglas introducidos hasta el
momento y modificando todos los perfiles en consecuencia.
Haga clic en Permitir o en Denegar para cada entrada del modo de aprendizaje.
Esto facilita la creación del perfil de Novell AppArmor.
NOTA
NOTA
Descargado
El módulo AppArmor no está cargado en el núcleo.
En ejecución
El módulo AppArmor está cargado en el núcleo y aplica las directivas de programas
de Novell AppArmor.
Puede detectar en cuál de los tres estados se encuentra el módulo AppArmor inspeccio-
nando /sys/kernel/security/apparmor/profiles. Si cat
/sys/kernel/security/apparmor/profiles muestra una lista de perfiles,
Novell AppArmor se está ejecutando. Si está vacío y no muestra ningún resultado,
AppArmor está detenido. Si el archivo no existe, AppArmor está descargado.
rcapparmor start
Tiene un comportamiento distinto dependiendo del estado del módulo AppArmor.
Si estaba descargado, start carga el módulo y lo inicia, colocándolo en el estado
de ejecución. Si estaba detenido, start provoca que el módulo vuelva a explorar
los perfiles de Novell AppArmor, que normalmente se encuentran en /etc/
apparmor.d y hace que el módulo pase al estado de ejecución. Si el módulo ya
se estaba ejecutando, start presenta una advertencia y no lleva a cabo ninguna
acción.
rcapparmor stop
Detiene el módulo AppArmor (si estaba en ejecución) retirando todos los perfiles
de la memoria del núcleo, inhabilitando de forma efectiva todos los controles de
acceso y poniendo el módulo en estado detenido. Si el módulo AppArmor ya estaba
descargado o detenido, stop intenta volver a descargar los perfiles, pero no ocurre
nada.
rcapparmor restart
Hace que el módulo AppArmor vuelva a explorar los perfiles que normalmente se
encuentran en /etc/apparmor.d sin cancelar la limitación de los procesos en
ejecución, añadiendo los nuevos perfiles y eliminando los perfiles que ya no se
encontrarán en /etc/apparmor.d.
rcapparmor kill
Elimina el módulo AppArmor del núcleo de forma incondicional. Esta acción no
es segura porque, en general, la descarga directa de módulos del núcleo no lo es.
NOTA
AVISO
Puede utilizar un editor de texto, como vim, para acceder a estos perfiles y realizar
cambios en ellos. Las siguientes opciones contienen pasos detallados para crear perfiles:
Utilice vim para ver y editar los perfiles, escribiendo vim en una ventana de terminal.
Para habilitar los colores de sintaxis al editar un perfil de Novell AppArmor en vim,
utilice los comandos :syntax on y, a continuación, :set syntax=apparmor.
Para obtener más información acerca de vim y los colores de sintaxis, consulte
“apparmor.vim” (p. 63).
NOTA
Perfiles independientes
Este método es adecuado para crear perfiles de pequeñas aplicaciones con un tiempo
de ejecución finito, como aplicaciones clientes para el usuario (como los clientes
de correo). Consulte la Sección 3.5.1, “Perfiles independientes” (p. 46).
Perfiles sistemáticos
Resulta adecuado para generar perfiles de un gran número de programas al mismo
tiempo y para crear perfiles de aplicaciones que pueden ejecutarse durante días,
semanas o de forma continua en sucesivos reinicios, como las aplicaciones de
servidores de red (por ejemplo, servidores Web o de correo). Consulte la
Sección 3.5.2, “Perfiles sistemáticos” (p. 46).
Hay dos enfoques distintos para la creación de perfiles de Novell AppArmor, así como
herramientas que permiten utilizar ambos métodos.
Perfiles independientes
Este método es adecuado para crear perfiles de pequeñas aplicaciones con un tiempo
de ejecución finito, como aplicaciones clientes para el usuario (como los clientes
de correo). Para obtener más información, consulte la Sección 3.5.1, “Perfiles
independientes” (p. 46).
Perfiles sistemáticos
Este método resulta adecuado para generar perfiles de un gran número de programas
al mismo tiempo y para crear perfiles de aplicaciones que pueden ejecutarse durante
días, semanas o de forma continua en sucesivos reinicios, como las aplicaciones
de servidores de red (por ejemplo, servidores Web o de correo). Para obtener más
información, consulte la Sección 3.5.2, “Perfiles sistemáticos” (p. 46).
El desarrollo automatizado de perfiles resulta más sencillo de gestionar con las herra-
mientas de Novell AppArmor:
Consulte “logprof” (p. 57) para obtener más información sobre la utilización de
logprof.
6 Edite los perfiles. Es posible que desee revisar los perfiles generados. Puede
abrir y editar los perfiles de /etc/apparmor.d/ mediante vim. Para obtener
ayuda acerca de cómo aprovechar vim al máximo, consulte “apparmor.vim”
(p. 63).
Para asegurarse de que todos los perfiles dejan de estar en el modo de queja y
vuelven al de aplicación, escriba el comando enforce
/etc/apparmor.d/*.
8 Vuelva a explorar todos los perfiles. Para hacer que Novell AppArmor
vuelva a explorar todos los perfiles y modifique el modo de aplicación en el
núcleo, escriba el comando /etc/init.d/apparmor restart.
autodep
Crea un perfil aproximado del programa o aplicación con que se utilice. Puede generar
perfiles aproximados para archivos binarios ejecutables y para programas de guiones
interpretados. Los perfiles resultantes se consideran “aproximados” porque no contienen
necesariamente todas las entradas de perfil que el programa necesita para estar
adecuadamente limitado por Novell AppArmor. El perfil aproximado mínimo de autodep
tiene al menos una directiva include básica, que contiene las entradas de perfil básicas
necesarias para la mayoría de los programas. Para algunos tipos de programas, autodep
genera un perfil más amplio. El perfil se genera realizando llamadas repetidas a ldd(1)
en los ejecutables incluidos en la línea de comandos.
Para generar un perfil aproximado, utilice el programa autodep. Los argumentos del
programa pueden ser sencillamente el nombre del programa, que autodep averigua
buscando en la variable path de la shell, o bien una vía completa. El propio programa
puede ser de cualquier tipo (binario ELF, guión de shell, guión Perl, etc.) y autodep
Para empezar a generar perfiles, debe crear perfiles para cada servicio de ejecutable
principal que forme parte de la aplicación (cualquier elemento que pueda iniciarse sin
ser un proceso secundario de otro programa que ya disponga de perfil). El método para
encontrar estos programas dependerá de la aplicación concreta. A continuación se
presentan algunas estrategias para encontrar estos programas:
del volumen
Si todos los programas cuyos perfiles desea generar se encuentran en un directorio
y no hay ningún otro programa en ese directorio, el comando sencillo autodep
/vía/a/los/programas/* crea perfiles nominales para todos los programas
de ese directorio.
Comando ps
Puede ejecutar las aplicaciones y utilizar el comando estándar de Linux ps para
encontrar todos los procesos que se estén ejecutando. A continuación, deberá rastrear
manualmente la ubicación de estos programas y ejecutar el programa autodep para
cada uno de ellos. Si los programas están en la vía del usuario, autodep los encon-
trará automáticamente. Si no lo están, el comando estándar de Linux locate
puede resultar útil para encontrar los programas. Si locate no funciona (no se
instala por defecto en SUSE Linux), utilice find. -name '*foo*' -print.
Los comandos anteriores activan el modo de queja para los perfiles o programas
incluidos. El comando puede incluir programas y perfiles. Si el nombre del programa
no incluye la vía completa, complain buscará el programa en $PATH. De modo que,
por ejemplo, complain /usr/sbin/* encuentra perfiles asociados a todos los
programas de /usr/sbin y los configura en el modo de queja, y complain
/etc/apparmor.d/* configura todos los perfiles de /etc/apparmor.d en el
modo de queja.
Modo de aplicación
La herramienta de modo de aplicación detecta las violaciones de las reglas de los perfiles
de Novell AppArmor, por ejemplo, cuando el programa del perfil accede a archivos no
permitidos por éste. Las violaciones quedan registradas y no se permiten. El modo
activado por defecto es el de aplicación. Active el modo de aplicación cuando desee
Los comandos anteriores activan el modo de aplicación para los perfiles o programas
incluidos.
El argumento puede ser una lista de programas o una lista de perfiles. Si el nombre del
programa no incluye la vía completa, enforce buscará el programa en $PATH. De modo
que, por ejemplo, enforce /usr/sbin/* encuentra perfiles asociados a todos los
programas de /usr/sbin y los configura en el modo de aplicación, y enforce
/etc/apparmor.d/* configura todos los perfiles de /etc/apparmor.d en el
modo de aplicación.
genprof
genprof (abreviatura en inglés de "generador de perfiles";) es la utilidad de generación
de perfiles de Novell AppArmor. Ejecuta autodep para el programa especificado, creando
Por ejemplo, si desea crear un perfil para el programa del servidor Web Apache httpd2-
prefork, lleve a cabo los siguientes pasos desde una shell de usuario Root:
NOTA
4 Entre las siguientes opciones, seleccione las que se podrán utilizar después de
ejecutar las funciones del programa:
• S ejecuta logprof con el registro del sistema a partir del punto en el que se
incluyó la marca al iniciar genprof y vuelve a cargar el perfil.
NOTA
Perfil: /usr/sbin/xinetd
Ejecutar: /usr/sbin/vsftpd
heredar (ix)
El elemento secundario hereda el perfil del principal, ejecutándose con los
mismos controles de acceso que éste. Este modo resulta útil cuando un
programa limitado necesita llamar a otro programa limitado sin obtener los
permisos del perfil del destino o perder los permisos del perfil actual. Este
modo suele utilizarse a menudo cuando el programa secundario es una
aplicación de ayuda, como el cliente /usr/bin/mail, que utiliza el
programa inferior como un programa que divide en páginas o el navegador
Web Mozilla, que utiliza el programa Acrobat para mostrar los archivos
PDF.
perfil (px)
El elemento secundario se ejecuta utilizando su propio perfil, que debe
cargarse en el núcleo. Si el perfil no se encuentra presente, los intentos de
ejecutar el elemento secundario no se efectúan correctamente, ya que se
deniega el permiso. Resulta útil si el programa principal invoca a un servicio
global, como la búsqueda en servidores DNS o el envío por correo mediante
el MTA del sistema.
no limitado (ux)
El elemento secundario se ejecuta completamente sin limitación, sin que se
aplique ningún perfil de Novell AppArmor al recurso ejecutado.
[1 - /etc/hosts.allow]
NOTA
#include
Es la sección del perfil de Novell AppArmor que hace referencia a un archivo
include, que proporciona permisos de acceso a los programas. Utilizando
una declaración include, puede proporcionar al programa acceso a las vías
de directorios o archivos que también necesiten otros programas. Al utilizar
este tipo de declaraciones, podrá reducir el tamaño de los perfiles. Es
recomendable seleccionar las entradas include cuando el sistema lo sugiera.
Versión global
Se accede haciendo clic en Global, tal y como se describe en el siguiente
paso. Para obtener más información acerca de la sintaxis global, consulte la
Sección 3.6, “Nombres de vías y englobamiento” (p. 66).
Las opciones disponibles para procesar las entradas del modo de aprendizaje y
crear el perfil son las siguientes:
Pulse Intro
Permite acceder a la vía de directorio seleccionada.
Permitir
Permite acceder a la vía de directorio seleccionada. Novell AppArmor sugiere
el acceso a los permisos de archivos. Para obtener más información, consulte
la Sección 3.7, “Modos de permiso de acceso a archivos” (p. 67).
Denegar
Impide que el programa acceda a las entradas de vías de directorio especifi-
cadas. Novell AppArmor se mueve a continuación al evento siguiente.
Nuevo
Solicita introducir una regla personalizada para el evento, lo que permite
especificar el tipo de expresión regular que desee. Si la expresión introducida
no se adapta realmente el evento que ha solicitado la pregunta, Novell
AppArmor solicita confirmación y permite volver a introducir la expresión.
Global
Al hacer clic en esta opción se modifica la vía de directorio (empleando
comodines) para que incluya todos los archivos del directorio de entrada
sugerido. Si hace doble clic se proporcionará acceso a todos los archivos y
subdirectorios situados bajo el mostrado.
Abortar
Cancela logprof, desechando todos los cambios de reglas introducidos hasta
el momento y dejando intactos todos los perfiles, sin modificarlos.
Finalizar
Cierra logprof, guardando todos los cambios de reglas introducidos hasta el
momento y modificando todos los perfiles en consecuencia.
logprof
logprof es una herramienta interactiva que se emplea para revisar los resultados del
modo de queja o aprendizaje encontrados en las entradas de syslog y, a continuación,
generar nuevas entradas en los perfiles de seguridad de Novell AppArmor.
Para ejecutar logprof, escriba logprof en una ventana de terminal tras iniciar sesión
como usuario Root. También puede emplear las siguientes opciones con logprof:
logprof -d /vía/a/directorio/perfiles/
Especifica la vía completa a la ubicación de los perfiles, si no están almacenados
en el directorio estándar: /etc/apparmor.d/.
logprof -f /vía/a/archivoregistro/
Especifica la vía completa a la ubicación del archivo de registro, si no se encuentra
en el directorio por defecto: /var/log/messages.
logprof explora el registro, preguntando al usuario cómo desea gestionar cada evento
registrado. Cada pregunta presenta una lista numerada de reglas de Novell AppArmor
que pueden añadirse pulsando el número del elemento en la lista.
[1 - #include <abstractions/nombredelservicio>]
2 - /etc/group
[(P)ermitir] / (D)enegar / (N)uevo / (G)lobal / Global con (e)xt. / A(b)ortar
/ (F)inalizar
Pulse Intro
Permite acceder a la vía de directorio seleccionada.
Permitir
Permite acceder a la vía de directorio seleccionada. Novell AppArmor sugiere el
acceso a los permisos de archivos. Para obtener más información acerca de este
tema, consulte la Sección 3.7, “Modos de permiso de acceso a archivos” (p. 67).
Denegar
Impide que el programa acceda a las entradas de vías de directorio especificadas.
Novell AppArmor se mueve a continuación al evento siguiente.
Nuevo
Solicita introducir una regla personalizada para el evento, lo que permite especificar
el tipo de expresión regular que desee. Si la expresión introducida no se adapta
realmente el evento que ha solicitado la pregunta, Novell AppArmor solicita
confirmación y permite volver a introducir la expresión.
Editar
Permite editar la línea seleccionada. La nueva línea editada aparecerá al final de
la lista.
Abortar
Cancela logprof, desechando todos los cambios de reglas introducidos hasta el
momento y dejando intactos todos los perfiles, sin modificarlos.
Finalizar
Cierra logprof, guardando todos los cambios de reglas introducidos hasta el momento
y modificando todos los perfiles en consecuencia.
logprof (ejemplo 2)
En un ejemplo de generación de perfil para vsftpd, observamos esta pregunta:
Perfil: /usr/sbin/vsftpd
Vía: /y2k.jpg
Nuevo modo: r
[1 - /y2k.jpg]
El segundo elemento de interés es que es posible que desee conceder acceso de lectura
FTP a todos los demás archivos JPEG del directorio, por lo que puede utilizar Global
con ext. y emplear la vía sugerida de /*.jpg. Al hacerlo se contraen las reglas
anteriores, proporcionando acceso a archivos .jpg individuales e impidiendo cualquier
pregunta futura relacionada con el acceso a los archivos .jpg.
Finalmente, es posible que desee proporcionar un acceso más general a los archivos
del FTP. Si selecciona Global en la última entrada, logprof sustituye la vía sugerida de
/y2k.jpg por /*. O bien es posible que desee proporcionar un acceso aún mayor a
todo el árbol de directorios, en cuyo caso podría utilizar la opción de vía Nuevo e
introducir /**.jpg (que normalmente proporcionaría acceso a todos los archivos
.jpg en todo el árbol de directorios) o bien /** (que proporcionaría acceso a todos
los archivos del árbol de directorios).
La gestión de los accesos de ejecución es más compleja. Deberá decidir cuáles de los
tres tipos de permisos de ejecución desea otorgar:
heredar (ix)
El elemento secundario hereda el perfil del principal, ejecutándose con los mismos
controles de acceso que éste. Este modo resulta útil cuando un programa limitado
necesita llamar a otro programa limitado sin obtener los permisos del perfil del
destino o perder los permisos del perfil actual. Este modo suele utilizarse a menudo
cuando el programa secundario es una aplicación de ayuda, como el cliente /usr/
bin/mail, que utiliza el programa inferior como un programa que divide en
páginas o el navegador Web Mozilla, que utiliza el programa Acrobat para mostrar
los archivos PDF.
no limitado (ux)
El elemento secundario se ejecuta completamente sin limitación, sin ningún perfil
de Novell AppArmor aplicado al recurso ejecutado.
SUGERENCIA
SUGERENCIA
No desea que rpm se ejecute automáticamente al leer mensajes de correo (esto conduciría
directamente a ataques de virus similares a los de Microsoft* Outlook, dado que rpm
puede instalar y modificar programas en el sistema) por lo que, en este caso, la mejor
elección es Heredar. De este modo, el programa less se ejecuta en este contexto con el
perfil de /usr/bin/mail. Esto tiene dos consecuencias:
• Podrá evitar añadir las aplicaciones de ayuda, como tar y rpm, al perfil de /usr/
bin/mail, de modo que cuando /usr/bin/mail ejecute /usr/bin/mail/
less en este contexto, el programa less sea menos peligroso de lo que resultaría
sin la protección de Novell AppArmor.
En otras circunstancias, puede que sea preferible emplear la opción Perfil. Esto tiene
dos efectos en logprof:
• La regla escrita en el perfil es px, lo que fuerza la transición al perfil propio del
elemento secundario.
apparmor.vim
Un archivo de coloreado de sintaxis para el editor de texto vim destaca con colores las
distintas funciones de un perfil de Novell AppArmor. Mediante vim y el modo de
sintaxis de Novell AppArmor, podrá ver las implicaciones semánticas de los perfiles
gracias a los colores destacados. Utilice vim para ver y editar los perfiles, escribiendo
vim en una ventana de terminal.
Para habilitar los colores de sintaxis al editar un perfil de Novell AppArmor en vim,
utilice los comandos :syntax on y, a continuación, :set syntax=apparmor.
Si lo desea, puede incluir estas líneas en el archivo ~/.vimrc:
syntax on
set modeline
set modelines=5
Azul
Líneas #include que activan otras reglas y comentarios de Novell AppArmor,
que comienzan por #.
Blanco
Líneas normales de acceso de lectura.
Marrón
Declaraciones de capacidad e indicadores de queja.
Amarillo
Líneas que proporcionan acceso de escritura.
Verde
Líneas que proporcionan permiso de ejecución (ix o px).
Rojo
Líneas que proporcionan acceso sin limitación (ux).
Fondo rojo
Errores de sintaxis que no se cargarían correctamente en los módulos de AppArmor.
NOTA
Utilice las páginas Man sobre apparmor.vim y vim y la sintaxis :help desde el
editor vim para obtener ayuda adicional sobre la función para destacar la sintaxis. La
sintaxis de Novell AppArmor se almacena en /usr/share/vim/current/
syntax/apparmor.vim.
Unconfined
El comando unconfined examina los puertos de red abiertos del sistema, los compara
con el conjunto de perfiles cargados en el sistema y emite un informe sobre los servicios
El comando unconfined debe ejecutarse como usuario Root para recuperar el enlace al
ejecutable del proceso desde el sistema de archivos de procesos. Este programa es
susceptible a las siguientes limitaciones de ejecución:
NOTA
El programa sólo registra los procesos que utilizan los protocolos TCP y UDP.
En resumen, este programa no es adecuado para usos forenses y sólo se
proporciona como ayuda para aplicar perfiles a todos los procesos que acceden
a la red.
Defcon Capture the Flag: Defending Vulnerable Code from Intense Attack (Defcon,
capturar la bandera: defensa de código vulnerable ante ataques intensivos) de Crispin
Cowan, Seth Arnold, Steve Beattie, Chris Wright y John Viega.
Una buena guía para el uso táctico y estratégico de Novell AppArmor para resolver
programas de seguridad serios en un breve período de tiempo. Publicado en las
r modo de lectura
w modo de escritura
l modo de enlace
Este modo resulta útil cuando un programa limitado debe llevar a cabo una operación
con privilegios, como reiniciar el equipo. Al colocar la sección con privilegios en otro
ejecutable y proporcionar derechos de ejecución sin restricciones, es posible omitir las
restricciones obligatorias impuestas a todos los procesos limitados. Para obtener más
información acerca de lo que significan las restricciones, consulte la página Man sobre
apparmor(7).
Al introducir una dirección de correo electrónico, se le notificará por este medio cuando
se produzcan eventos de seguridad de Novell AppArmor. Se pueden activar tres tipos
de notificaciones:
Notificaciones simples
Las notificaciones simples muestran un resumen del número total de eventos sin
ofrecer detalles. Por ejemplo:
dhcp-101.up.wirex.com has had 10 security events since Tue Oct 12 11:10:00
2004
Notificación de resumen
La notificación de resumen muestra los eventos de seguridad de Novell AppArmor
registrados y presenta una lista del número de apariciones individuales, incluida la
fecha de la última aparición. Por ejemplo:
AppArmor: PERMITIENDO acceso a la capacidad 'setgid' (httpd2-prefork(6347)
perfil /usr/sbin/httpd2-prefork activo /usr/sbin/httpd2-prefork) 2 veces,
la última el Sáb 9 Oct 16:05:54 2004.
Notificación detallada
La notificación detallada muestra los eventos de seguridad de Novell AppArmor
registrados sin modificaciones. Informa siempre que ocurre un evento y escribe
una línea nueva en el registro detallado. Estos eventos de seguridad incluyen la
fecha y la hora en la que se produjeron, si el perfil de la aplicación ha permitido o
rechazado el acceso y el tipo de permiso de acceso al archivo que se permite o se
rechaza. La notificación detallada también genera varios mensajes que la herramienta
logprof (consulte “logprof” (p. 57)) utiliza para interpretar los perfiles. Por ejemplo:
NOTA
En SUSE Linux se debe instalar un servidor de correo que pueda enviar correo
saliente mediante el protocolo SMTP (por ejemplo, postfix o exim) para que
funcione la notificación de eventos.
3 Introduzca las direcciones de correo electrónico de los usuarios que deban recibir
las notificaciones en el campo al efecto de cada sección de tipo de notificación
aplicable. Si las notificaciones están habilitadas, deberá introducir una dirección
de correo electrónico. Si no lo hace, recibirá un mensaje de error. Separe las
distintas direcciones con comas.
• Inhabilitado
• 1 minuto
• 5 minutos
• 10 minutos
• 15 minutos
• 30 minutos
• 1 hora
• 1 día
• 1 semana
5 Para cada tipo de notificación seleccionada, elija el nivel de gravedad más bajo
por el que se enviará una notificación. Los eventos de seguridad se registran y
las notificaciones se envían en el momento indicado por el intervalo si los eventos
tienen el nivel de seguridad seleccionado, o uno más alto. Si el intervalo es 1 día,
la notificación se enviará a diario si se producen eventos de seguridad. Consulte
la Sección 4.2.1, “Notificación del nivel de gravedad” (p. 73) para obtener más
información acerca de los niveles de seguridad.
• Exporta informes.
• Filtra datos de informe por otros criterios, como el nombre del programa.
Mediante el uso de informes, es posible leer información importante sobre los eventos
de seguridad de Novell AppArmor incluida en los archivos de registro sin tener que
escudriñar manualmente en la maraña de mensajes que sólo resultan de utilidad para
la herramienta logprof. Se puede reducir el tamaño del informe filtrando por periodo
de tiempo o por nombre de programa. También es posible exportar un archivo html
o csv.
Para utilizar las funciones de creación de informes de Novell AppArmor, siga este
procedimiento:
Ejecutar ahora
Produce una versión instantánea del tipo de informe seleccionado. Si selec-
ciona un informe de incidentes de seguridad, podrá filtrarlo de varias formas.
Para ver instrucciones sobre la opción Ejecutar ahora, diríjase a la
Sección 4.3.2, “Ejecutar ahora: ejecución de informes a petición” (p. 88).
Añadir
Permite crear un informe de incidentes de seguridad programado. Para ver
instrucciones sobre la opción Añadir, diríjase a la Sección 4.3.3, “Adición
de informes nuevos” (p. 91).
Editar
Permite editar un informe de incidentes de seguridad programado.
Suprimir
Suprime un informe de incidentes de seguridad programado. Los informes
bursátiles o empaquetados no se pueden suprimir.
Abortar
Vuelve a la pantalla principal de Novell AppArmor.
Siguiente
Realiza la misma función que el botón Ejecutar ahora.
4 Para ver todos los informes archivados, seleccione Ver todo. Para ver un informe
específico, seleccione un archivo de informe del campo Informe y haga clic en
Ver.
Nombre de programa
Si introduce un nombre de programa o un patrón que coincida con el nombre
del archivo binario ejecutable del programa que le interesa, el informe
mostrará los eventos de seguridad que se hayan producido para ese programa
específico.
Nombre de perfil
Si se introduce el nombre del perfil, el informe mostrará los eventos de
seguridad que se hayan generado para el perfil especificado. Puede utilizarlo
para comprobar qué limita un perfil específico.
Número PID
El Número PID es un número que identifica exclusivamente un proceso
concreto o un programa en ejecución (este número sólo será válido durante
la duración del proceso).
Nivel de gravedad
Seleccione el nivel de gravedad más bajo de los eventos de seguridad que
se deban incluir en el informe. Se incluirán en los informes los eventos del
nivel de gravedad seleccionado y los de gravedad mayor.
Detalles
Un origen al que el perfil ha denegado el acceso, incluidas las capacidades
y los archivos. Se puede utilizar este campo para hacer un informe de los
recursos a los que los perfiles impiden el acceso.
Tipo de acceso
El tipo de acceso describe lo que está ocurriendo en realidad con el evento
de seguridad. Las opciones son: permiso, rechazo o auditoría.
Modo
El Modo es el permiso que el perfil otorga al programa o al proceso al que
se aplica. Las opciones son: r (lectura) w (escritura) l (enlace) x (ejecutar).
8 Para ver el informe, con los filtros oportunos, seleccione Siguiente. Se mostrará
uno de los tres informes.
9 Consulte las secciones siguientes para obtener información detallada sobre cada
tipo de informe.
Host
El equipo protegido por AppArmor sobre cuyos eventos de seguridad se está
informando.
Fecha
La fecha en la que se produjeron los eventos de seguridad.
Programa
El nombre del proceso en ejecución.
Perfil
El nombre completo del perfil de seguridad que se aplica al proceso.
PID
El número PID del proceso es un número que identifica exclusivamente un proceso
concreto o un programa en ejecución (este número sólo será válido durante la
duración del proceso).
Tipo
Este campo indica el tipo de limitación que representa el evento de seguridad:
aplicación o queja. Si la aplicación no está limitada (estado), no se informará de
ningún tipo de limitación.
Excepciones de la directiva
Cuando una aplicación solicita un recurso que no está definido dentro de su perfil,
se activa un evento de seguridad. Se genera un informe que muestra los eventos
de seguridad de interés para los administradores. El SIR informa sobre violaciones
de directivas realizadas por aplicaciones limitadas localmente durante un periodo
concreto de tiempo. Estos informes presentan las excepciones de la directiva y los
cambios de estado del motor de la directiva.
Host
El equipo protegido por AppArmor sobre cuyos eventos de seguridad se está
informando.
Fecha
La fecha en la que se produjeron los eventos de seguridad.
Programa
El nombre del proceso en ejecución.
Perfil
El nombre completo del perfil de seguridad que se aplica al proceso.
PID
El número PID del proceso es un número que identifica exclusivamente un proceso
concreto o un programa en ejecución (este número sólo será válido durante la
duración del proceso).
Gravedad
Los niveles de seguridad de los eventos se toman de la base de datos de gravedad.
En esta base de datos se define la importancia de los eventos potenciales de
Modo
El modo es el permiso que el perfil otorga al programa o al proceso al que se aplica.
Las opciones son: r (lectura) w (escritura) l (enlace) y x (ejecutar).
Detalles
Un origen al que el perfil ha denegado el acceso, incluidas las capacidades y los
archivos. Se puede utilizar este campo para hacer un informe de los recursos a los
que los perfiles impiden el acceso.
Tipo de acceso
El tipo de acceso describe lo que está ocurriendo en realidad con el evento de
seguridad. Las opciones son: permiso, rechazo o auditoría.
Host
El equipo protegido por AppArmor sobre cuyos eventos de seguridad se está
informando.
Fecha de inicio
La fecha de inicio del periodo para el que se está creando el informe de eventos de
seguridad.
Fecha de finalización
La fecha de finalización del periodo para el que se está creando el informe de
eventos de seguridad.
Número de rechazos
En el periodo indicado, el número total de eventos de seguridad consistentes en
intentos de acceso rechazados.
Número de eventos
En el periodo indicado, el número total de eventos de seguridad.
Rango de fechas
Para limitar los informes a un periodo de tiempo concreto, seleccione Filtrar
por intervalo de fechas. Introduzca las fechas de inicio y final que determinen
el alcance del informe.
Nombre de programa
Si introduce un nombre de programa o un patrón que coincida con el nombre
del archivo binario ejecutable del programa que le interesa, el informe
mostrará los eventos de seguridad que se hayan producido sólo para el
programa especificado.
Nombre de perfil
Si se introduce el nombre del perfil, el informe mostrará los eventos de
seguridad que se hayan generado para el perfil especificado. Puede utilizarlo
para comprobar qué limita un perfil específico.
Nivel de gravedad
Seleccione el nivel de gravedad más bajo de los eventos de seguridad que
se deban incluir en el informe. Se incluirán en los informes los eventos del
nivel de gravedad seleccionado y los de gravedad mayor.
Detalles
Un origen al que el perfil ha denegado el acceso, incluidas las capacidades
y los archivos. Se puede utilizar este campo para hacer un informe de los
recursos a los que los perfiles impiden el acceso.
Tipo de acceso
El tipo de acceso describe lo que está ocurriendo en realidad con el evento
de seguridad. Las opciones son: permiso, rechazo o auditoría.
Modo
El modo es el permiso que el perfil otorga al programa o al proceso al que
se aplica. Las opciones son: r (lectura) w (escritura) l (enlace) y x (ejecutar).
Tipo de exportación
Permite exportar un archivo CSV (valores separados por comas) o HTML.
El archivo CSV separa datos de las entradas de registro con comas utilizando
un formato estándar de datos para que se puedan importar en aplicaciones
orientadas a tablas. Se puede introducir una vía para el informe exportado
escribiendo la vía completa en el campo al efecto.
5 Para ver el informe, con los filtros oportunos, seleccione Siguiente. Se mostrará
uno de los tres informes.
6 Consulte las secciones siguientes para obtener información detallada sobre cada
tipo de informe.
Es posible configurar que se genere un informe diario, semanal, mensual o cada hora
durante el periodo de tiempo especificado. Se puede establecer que los informes muestren
los rechazos de niveles de seguridad concretos o que realicen un filtro por nombre de
programa, nombre de perfil, nivel de seguridad o recursos denegados. Este informe se
puede exportar a un archivo HTML (lenguaje de marcas de hipertexto) o CSV (valores
separados por comas).
NOTA
Nombre de informe
Especifique el nombre del informe. Utilice nombres que permitan diferenciar
claramente los informes entre sí.
Día de la semana
Seleccione el día de la semana en el que se efectuarán los informes semanales,
si se desea. Si selecciona Todo, los filtros semanales no se aplicarán. Si
están activados los informes mensuales, este campo estará definido por
defecto en Todo.
Hora y Minuto
Permite seleccionar la hora. De esta forma se indica la hora y el minuto en
los que desea que se efectúe el informe. Si no cambia la hora, los informes
seleccionados se ejecutarán a media noche. Si no se han seleccionado ni
valores de mes ni de semana, el informe se efectuará todos los días a la hora
especificada.
3 Haga clic en Siguiente para continuar a la segunda página del asistente Añadir
SIR programado.
Nombre de programa
Es posible indicar un nombre de programa o un patrón que coincida con el
nombre del archivo binario ejecutable del programa que interese. Este informe
muestra los eventos de seguridad que se hayan producido sólo para el
programa indicado.
Nombre de perfil
Es posible indicar el nombre del perfil para el que se deban mostrar en el
informe los eventos de seguridad. Puede utilizarlo para comprobar qué limita
un perfil específico.
Detalles
Un origen al que el perfil ha denegado el acceso, incluidas las capacidades
y los archivos. Se puede utilizar este campo para crear un informe de los
recursos a los que los perfiles impiden el acceso.
Gravedad
Seleccione el nivel de gravedad más bajo de los eventos de seguridad que
se deban incluir en el informe. Se incluirán en los informes los eventos del
nivel de gravedad seleccionado y los de gravedad mayor.
Tipo de acceso
El tipo de acceso describe lo que está ocurriendo en realidad con el evento
de seguridad. Las opciones son: permiso, rechazo o auditoría.
Modo
El modo es el permiso que el perfil otorga al programa o al proceso al que
se aplica. Las opciones son: r (lectura) w (escritura) l (enlace) y x (ejecutar).
5 Haga clic en Guardar para guardar este informe. Novell AppArmor volverá a la
ventana principal de Programar informes, donde aparecerá el informe recién
programado en la lista de informes.
NOTA
Día de la semana
Seleccione el día de la semana en el que se efectuarán los informes semanales.
Si selecciona Todo, los filtros semanales no se aplicarán. Si están activados
los informes mensuales, este campo estará definido por defecto en Todo.
Hora y Minuto
Permite seleccionar la hora. De esta forma se indica la hora y el minuto en
los que desea que se efectúe el informe. Si no cambia la hora, el informe
seleccionado se ejecutará a media noche. Si no se ha seleccionado ni el mes
ni el día de la semana, el informe se ejecutará todos los días a la hora indicada.
4 Haga clic en Siguiente para continuar a la siguiente página del asistente Editar
SIR programado. Se abrirá la segunda página de Editar SIR programado.
Nombre de programa
Es posible indicar un nombre de programa o un patrón que coincida con el
nombre del archivo binario ejecutable del programa que interese. Este informe
muestra los eventos de seguridad que se hayan producido sólo para el
programa indicado.
Nombre de perfil
Es posible indicar el nombre del perfil para el que se deban mostrar los
eventos de seguridad. Puede utilizarlo para comprobar qué limita un perfil
específico.
Detalles
Un origen al que el perfil ha denegado el acceso, incluidas las capacidades
y los archivos. Se puede utilizar este campo para crear un informe de los
recursos a los que los perfiles impiden el acceso.
Gravedad
Seleccione el nivel de gravedad más bajo de los eventos de seguridad que
se deban incluir en el informe. Se incluirán en los informes los eventos del
nivel de gravedad seleccionado y los de gravedad mayor.
Tipo de acceso
El tipo de acceso describe lo que está ocurriendo en realidad con el evento
de seguridad. Las opciones son: permiso, rechazo o auditoría.
Modo
El modo es el permiso que el perfil otorga al programa o al proceso al que
se aplica. Las opciones son: r (lectura) w (escritura) l (enlace) y x (ejecutar).
6 Seleccione Guardar para guardar los cambios en este informe. Novell AppArmor
volverá a la ventana principal de Programar informes, donde aparecerá el informe
programado en la lista de informes.
Haga copias de seguridad de los perfiles copiando los archivos de perfil en un directorio
específico.
1 Primero se deben archivar los archivos en un archivo de respaldo. Para ello, abra
una ventana de terminal e introduzca lo siguiente como usuario Root:
tar zclpf profiles.tgz /etc/apparmor.d
Esta función requiere que todas las aplicaciones se hagan “compatibles con ChangeHat”,
lo que significa que se modifican para realizar una petición al módulo de Novell
AppArmor para cambiar los dominios de seguridad en momentos arbitrarios durante
la ejecución de la aplicación.
Un perfil puede tener un número arbitrario de subperfiles, pero sólo hay dos niveles:
un subperfil no admite más subperfiles subordinados. Los subperfiles se escriben como
perfiles distintos y reciben un nombre que contiene el nombre del perfil, seguido por
el nombre del subperfil separados por el símbolo ^. Los subperfiles se deben almacenar
en el mismo archivo que su perfil principal.
NOTA
Creación de perfiles para las aplicaciones Web mediante ChangeHat de Apache 103
5.1 Apache ChangeHat
Novell AppArmor incluye el módulo mod-apparmor para el programa Apache. El
módulo mod-apparmor funciona en el sistema SUSE Linux para hacer que el servidor
Web Apache se haga “compatible con ChangeHat”. Se instala si Apache se encuentra
presente en el sistema.
Cuando Apache sea compatible con ChangeHat, buscará los siguientes perfiles de
seguridad personalizados de Novell AppArmor en el orden otorgado para cada solicitud
de URI que reciba.
• DEFAULT_URI
• HANDLING_UNTRUSTED_INPUT
NOTA
En los siguientes pasos se realiza una demostración en la que se añaden hats a un perfil
de Apache mediante YaST. En el Asistente para añadir perfiles, las utilidades de
creación de perfiles de Novell AppArmor solicitan que se creen nuevos hats para
solicitudes de URI distintas. Si se decide crear un hat nuevo, se podrán crear perfiles
individuales para cada URI. De esta forma podrá crear reglas muy estrictas para cada
solicitud.
Creación de perfiles para las aplicaciones Web mediante ChangeHat de Apache 105
2 En Perfil que añadir, indique httpd2-prefork.
3 Haga clic en Crear perfil. Se abrirá la ventana del Asistente de perfiles de Novell
AppArmor.
NOTA
6 Haga clic en Explorar registro del sistema en busca de entradas que añadir a
los perfiles. Novell AppArmor abrirá la herramienta logprof, que explorará toda
la información adquirida en el paso anterior. Empezará a realizar preguntas sobre
el perfil.
7 En nuestra demostración, logprof presenta primero las opciones Añadir hat pedido
o Usar hat por defecto, ya que ha notado que phpsysinfo-dev ha accedido
a un URI. Seleccione Añadir hat pedido.
Creación de perfiles para las aplicaciones Web mediante ChangeHat de Apache 107
8 Haga clic en Permitir
NOTA
9 Las siguientes preguntas le solicitarán que genere nuevos hats y que añada
entradas para el perfil y sus hats. El proceso de adición de entradas a perfiles se
trata de forma detallada en la Sección 3.3.1, “Adición de perfiles mediante el
asistente” (p. 18).
Cuando haya respondido a todas las preguntas, haga clic en Finalizar para guardar
los cambios y salir del asistente.
A continuación se muestra un ejemplo del aspecto que puede tener un hat phpsyinfo-
dev.
Creación de perfiles para las aplicaciones Web mediante ChangeHat de Apache 109
Ejemplo 5.1 Ejemplo de hat phpsysinfo-dev
^phpsysinfo {
#include <program-chunks/base-files>
/bin/df ix,
/bin/bash ix,
/dev/tty rw,
/etc/SuSE-release r,
/etc/fstab r,
/etc/hosts r,
/etc/mtab r,
/proc/** r,
/sbin/lspci ix,
/srv/www/htdocs/sysinfo/** r,
/sys/bus/pci/devices r,
/sys/devices/** r,
/usr/bin/who ix,
/usr/share/pci.ids r,
/var/log/apache2/{access,error}_log w,
/var/run/utmp r,
}
NOTA
2 Introduzca el nombre del hat que desea añadir al perfil de Novell AppArmor. El
nombre es el URI que, cuando se accede a él, recibe los permisos definidos en
el hat.
Creación de perfiles para las aplicaciones Web mediante ChangeHat de Apache 111
NOTA
Cuando llega una solicitud, los siguientes pasos reflejan la secuencia que sigue
mod-apparmor para intentar aplicar los hats.
Creación de perfiles para las aplicaciones Web mediante ChangeHat de Apache 113
<Location "/sysinfo">
ImmHatName sysinfo
</Location>
Sección Categoría
2 Llamadas al sistema
3 Funciones de biblioteca
6 Juegos
Los números de secciones se utilizan para distinguir las páginas Man entre sí. Por
ejemplo, exit(2) describe la llamada de salida del sistema, mientras que exit(3)
describe la función de salida C de la biblioteca.
• unconfined(8)
• autodep(1)
• complain(1)
• enforce(1)
• genprof(1)
• logprof(1)
• change_hat(2)
• logprof.conf(5)
• apparmor.d(5)
• apparmor.vim(5)
• apparmor(7)
• apparmor_parser(8)
Existen listas de correo específicas para AppArmor donde los usuarios pueden enviar
preguntas o suscribirse para comunicarse con los desarrolladores.
apparmor-general@forge.novell.com
Esta es la lista de correo para los usuarios finales de AppArmor. Se trata de un
buen lugar para hacer preguntas sobre cómo usar AppArmor para proteger las
aplicaciones.
apparmor-dev@forge.novell.com
Esta es la lista de correo para desarrolladores de AppArmor y miembros de la
comunidad. Sirve para plantear cuestiones acerca de cómo desarrollar las funciones
del núcleo de AppArmor: el módulo del núcleo y las herramientas de perfiles. Si
está interesado en revisar el código de AppArmor y contribuir con revisiones o
mejoras, ésta podría ser la lista más adecuada.
apparmor-announce@forge.novell.com
Esta lista con poco volumen de mensajes anuncia la disponibilidad de nuevas
versiones o funciones.
Para comprobar los mensajes de rechazo, inicie YaST → Novell AppArmor y diríjase
a Informes de AppArmor. Seleccione Ver archivo y Auditoría de aplicaciones para
ver el informe de auditoría de las aplicaciones. Es posible aplicar filtros de fechas
y horas para reducir los resultados al periodo concreto en el que comenzó el
comportamiento extraño de la aplicación.
No se encuentra apparmor_parser
Si ejecuta logprof como un usuario distinto al Root, por ejemplo como el usuario
tux, es probable que se presente este error:
tux@localhost:~> /usr/sbin/logprof
No se encuentra apparmor_parser.
NOTA
2 Introduzca los datos de su cuenta Novell y haga clic en login (inicio de sesión).
O bien
O bien
Introduzca los datos de otras cuentas Novell que posea para sincronizarlas
todas en una sola cuenta.
9 Tras introducir todos los detalles, haga clic en Submit Report (enviar informe)
para enviar el informe a los desarrolladores.
firma de ataque
Patrón de una actividad del sistema o de la red que indica la presencia de un posible
virus o de un ataque de un pirata informático (hacker). Los sistemas de detección
de intrusiones pueden utilizar firmas de ataque para diferenciar las actividades
legítimas de las potencialmente dañinas.
Dado que no se basa en firmas de ataques, Novell AppArmor ofrece una defensa
preventiva, en lugar de reactiva, ante los ataques. Este enfoque es mejor ya que no
hay un intervalo de tiempo vulnerable durante el cual se ha de definir la firma de
ataque para Novell AppArmor, como ocurre con los productos que utilizan estas
firmas para proteger sus redes.
GUI
Graphical User Interface (Interfaz gráfica del usuario). Hace referencia a un software
de presentación que ofrece una interfaz atractiva y fácil de utilizar entre el usuario
del equipo y la aplicación que utiliza. Algunos de sus elementos son las ventanas,
los iconos, los botones, los cursores y las barras de desplazamiento.
HIP
Host Intrusion Prevention (Prevención de intrusiones en el host). Funciona con el
núcleo del sistema operativo para bloquear comportamientos anormales de aplica-
ciones, considerando que este comportamiento anormal representa un ataque
desconocido. Bloquea paquetes dañinos en el host en el nivel de la red antes de
que puedan “dañar” a la aplicación a la que van dirigidos.
RPM
Gestor de paquetes RPM. Se trata de un sistema abierto de creación de paquetes
disponible para todo el mundo. Funciona con Red Hat Linux, SUSE Linux y otros
sistemas Linux y UNIX. Es capaz de instalar, desinstalar, verificar, consultar y
actualizar paquetes de software informático. Si desea obtener más información,
consulte http://www.rpm.org/.
SSH
Shell segura. Un servicio que le permite acceder a su servidor desde un equipo
remoto y emitir comandos de texto a través de una conexión segura.
URI
Universal Resource Identifier (Identificador universal de recursos). Término
genérico para cualquier tipo de nombre o dirección que haga referencia a objetos
de la World Wide Web. Una URL es un tipo de URI.
URL
Uniform Resource Locator (Localizador uniforme de recursos). La dirección global
de los documentos y otros recursos en la World Wide Web.
Glosario 125