Control de Acceso Basado en Conjuntos de Reglas (RSBAC) para Linux - Guía de Inicio Rápido
1.
Introducción
Esta guía le ayudará a instalar RSBAC en Gentoo Linux. Se asume que
los lectores ya han leído la Introducción
y la Vista general, así que ya conocen
RSBAC y sus conceptos principales.
2.
Instalación de un núcleo con soporte RSBAC
Instalación de un núcleo RSBAC
Este paso es bastante simple gracias al sistema de instalación de
núcleos de Gentoo. Empiece por hacer un emerge del núcleo
rsbac-sources.
Nota:
Hay dos núcleos rsbac-sources disponibles: uno pertenece a la rama del
núcleo 2.4 y el otro a la nueva rama 2.6.
|
Listado de Código 2.1: Instalación del nucleo RSBAC (usando el perfil 'default' y un núcleo 2.6) |
# emerge rsbac-sources
|
Listado de Código 2.2: Instalación del nucleo RSBAC (usando un núcleo 2.4, en el perfil Gentoo 2005.0) |
# rm /etc/make.profile
# ln -s /usr/portage/profiles/default-linux/x86/2005.0/2.4/ /etc/make.profile
# echo "sys-kernel/hardened-sources rsbac" >> /etc/portage/package.use
# emerge hardened-sources
|
Importante:
Se aconseja habilitar el modo softmode en el primer núcleo RSBAC que
compile. Esto le permitirá deshabilitar la aplicación de RSBAC
reiniciando la máquina, por si quiere probarlo o en caso de que algo
haya ido mal. Desactive este modo sólo cuando esté seguro de lo que
está haciendo o, por supuesto, en un núcleo en producción.
|
Configuración del núcleo RSBAC
Ahora vamos a configurar el núcleo. Se recomienda que habilite la
siguientes opciones en la categoría "Rule Set Based Access Control
(RSBAC)":
Listado de Código 2.3: Configurar y compilar el núcleo RSBAC |
[*] RSBAC proc support
[*] Check on init
[*] Support transactions
[*] Randomize transaction numbers
[*] RSBAC debugging support
(400) RSBAC default security officer user ID
[*] User management
[*] Use Crypto API Digest SHA1 (NEW)
[*] RSBAC network support
[*] Net device control
[ ] Treat virtual devices as individuals
[*] Individual network device logging
[*] Net object control (sockets)
[*] Control UNIX address family
[*] Also intercept network object read and write
[*] Individual network object logging
[*] Support for Registration of decision modules (REG)
[*] Build REG sample modules
----------------------------
[*] RSBAC support for DAZuko policy
DAZ Policy Options --->
(604800) Scanning result lifetime in seconds
[*] RSBAC support for FF policy
[*] RSBAC support for RC policy
[*] RSBAC support for AUTH policy
AUTH Policy Options --->
[*] AUTH learning mode support
[*] RSBAC support for ACL policy
[*] RSBAC support for Linux Caps (CAP) policy
[*] RSBAC support for JAIL policy
[*] RSBAC support for PAX policy
[*] RSBAC support for System Resources (RES) policy
[ ] RSBAC policies switchable
[*] RSBAC soft mode
[*] Individual module softmode support
[*] RSBAC symlink redirection
[*] Add remote IP address
[*] Add user ID number
[*] Add RC role number
[*] Intercept sys_read and sys_write
[*] Intercept Semaphore IPC operations
[*] Control DAC process owner (seteuid, setfsuid)
[*] Hide processes in /proc
[*] Support freezing of RSBAC configuration
[*] RSBAC check sys_syslog
|
Nota:
Si tiene pensado ejecutar un servidor gráfico (p.e. X.org o XFree86),
habilite también, "[*] X support (normal user MODIFY_PERM access to
ST_ioports)". Por favor, lea también Usando Xorg en Gentoo
Hardened.
|
Ahora configuraremos PaX que es un complemento del núcleo RSBAC. Se
recomienda que habilite las siguientes opciones en la sección
"Security options ---> PaX":
Listado de Código 2.4: Configurar las opciones PaX del núcleo |
[*] Enable various PaX features
PaX Control --->
[*] Support soft mode
[ ] Use legacy ELF header marking
[ ] Use ELF program header marking
Use ELF program header marking MAC system integration (direct) --->
(X) hook
Non-executable pages --->
[*] Enforce non-executable pages (NEW)
[*] Paging based non-executable pages
[*] Segmentation based non-executable pages (NEW)
[*] Restrict mprotect()
[ ] Disallow ELF text relocations
Address Space Layout Randomization --->
[*] Address Space Layout Randomization
[*] Randomize user stack base
[*] Randomize mmap() base
|
Nota:
Visite el sitio de PaX
para más información.
|
Nota:
Debe usar las herramientas de administración de RSBAC para manejar PaX
en lugar de chpax o paxctl en su núcleo RSBAC. Con estas herramientas
podrá cambiar los objetos PaX y configurar las banderas PaX.
|
Listado de Código 2.5: Manejar las banderas PaX |
# rsbac_fd_menu /ruta/al/objeto
o
# attr_set_file_dir FILE /ruta/al/objeto pax_flags [pmerxs]
|
Ahora puede compilar e instalar el núcleo cómo lo haría con uno normal
tras configurar el resto de opciones.
Importante:
Se aconseja encarecidamente compilar un segundo kernel sin las
opciones softmode y AUTH para usarlo en un ambiente en
producción. Sólo haga esto cuando haya terminado de probar y
configurar las políticas, ya que elimina la posibilidad de desactivar
el sistema de control de acceso.
|
3.
Instalación de las utilidades de administración de RSBAC
Se necesitan algunas utilidades de espacio de usuario para administrar
su Gentoo RSBAC. Éstas se incluyen en el paquete rsbac-admin y es
necesario instalarlas.
Listado de Código 3.1: Insatalar las utilidades de administración de RSBAC |
# emerge rsbac-admin
|
Una vez instaladas, el paquete habrá creado una nueva cuenta de
usuario en su sistema (secoff, con uid 400). Él será el administrador
de seguridad durante el primer arranque. Éste es el único usuario que
puede cambiar la configuración de RSBAC. Normalmente se le llama
Oficial de Seguridad.
Importante:
Por favor, cree una contraseña segura para el usuario secoff.
|
Listado de Código 3.2: Crear contraseña para el Oficial de Seguridad |
# passwd secoff
|
4.
Primer arranque
Durante el primer arranque no se puede entrar en el sistema ya que el
módulo AUTH restringe los privilegios de los programas. Para
solventar este problema arranque, por favor, en softmode usando el
siguiente parámetro del núcleo (en su configuración de lilo o grub):
Listado de Código 4.1: Softmode kernel parameter |
rsbac_softmode
|
La aplicación login controla la entrada de usuarios al
sistema. Necesita derechos para usar setuid, y ahora se los daremos:
Entre como Oficial de Seguridad (secoff) y permita las entradas al
sistema usando la siguiente orden:
Listado de Código 4.2: Permitir la entrada a los usuarios |
# rsbac_fd_menu /bin/login
o
# attr_set_fd AUTH FILE auth_may_setuid 1 /bin/login
|
Como alternativa, si no está habilitado softmode, puede usar el
siguiente parámetro del kernel para permitir la entrada al sistema
durante el arranque:
Listado de Código 4.3: Permitir la entrada de usuarios con un parámetro del kernel |
rsbac_auth_enable_login
|
5.
El módulo AUTH y su modo de aprendizaje
Crear una política para OpenSSH
Como no hay ninguna política configurada todavía (excepto las
generadas durante el primer arranque), el módulo AUTH no permite los
cambios de uid.
Gracias al inteligente modo de aprendizaje hay una manera sencilla de
paliar este nuevo problema: el módulo AUTH puede generar mágicamente
y de forma automática la política necesaria vigilando los servicios
durante el arranque y anotando los uids a los que intentan cambiar.
Por ejemplo, para enseñar al módulo AUTH sobre los uids que necesita
sshd (el demonio OpenSSH), haga lo siguiente:
Importante:
Asegúrese de que el demonio sshd o el que quiera que use el modo
de aprendizaje no se está ejecutando antes de habilitar el modo de
aprendizaje.
|
Listado de Código 5.1: Crear una política para sshd usando el modo de aprendizaje |
# attr_set_file_dir AUTH FILE `which sshd` auth_learn 1
# /etc/init.d/sshd start
# attr_set_file_dir AUTH FILE `which sshd` auth_learn 0
|
Nota:
Debe entrar en el sistema antes de deshabilitar el modo de aprendizaje
ya que sshd intentará cambiar su uid cuando entre el usuario.
|
Ahora sshd ya funciona otra vez como se esperaba, felicidades,
acaba de crear su primera política :) Se puede usar el mismo
procedimiento con los demás demonios que necesite.
Nota:
Como alternativa a habilitar el modo de aprendizaje para cada demonio
o aplicación que vaya a necesitar, también puede habilitar el modo de
aprendizaje global (que aprende de cualquier cosa que se ejecute
globalmente, como su nombre indica).
|
Puede habilitar el modo de aprendizaje global mediante este parámetro del
kernel durante el arranque:
Listado de Código 5.2: Habilitar el modo de aprendizaje global |
rsbac_auth_learn
|
6.
Información adicional
También se recomienda encarecidamente que se suscriba a la lista de correo de gentoo-hardened.
Es una lista con poco tráfico y los anuncios RSBAC para Gentoo se
hacen aquí. También le recomendamos suscribirse a la
lista de correo de RSBAC. Por favor, consulte también la
FAQ de hardened
ya que sus preguntas pueden haber sido resueltas en este documento.
El contenido de este documento, a no ser que se especifique
expresamente, está registrado bajo los términos de la licencia
CC-BY-SA-2.5. Se aplican las
Pautas de
Utilización del logotipo y nombre de Gentoo.
|