Hardening SELinux
Hardening SELinux
Hardening SELinux
FLISoL:2017
Introducción
Los usuarios nunca debería poner el directorio actual en el path. Algo como
esto:
PATH=./:$PATH
Por ejemplo, la asignación de un usuario de Linux SELinux user_u usuario, da como resultado un usuario de
Linux que no es capaz de ejecutar (menos que se configure de otra manera) la identificación de usuario
(setuid), como sudo y su, así como para prevenir que se ejecuten archivos y aplicaciones en su directorio
personal.
SELinux
Las reglas definidas en la política SELinux es cacheada por el
kernel del sistema en vectores AVC (Access Vector Cache)
que contienen los permisos de cada objeto y sujeto bajo
control.
Proceso de decisión SELinux (Red Hat. Selinux Users and Administrators Guide)
SELinux
system-config-selinux
Modos SELinux
Comando setstatus
Modos SELinux
Cambiando de modos:
Modos SELinux
Hay al menos dos formas diferentes de deshabilitar SELinux:
Archivos de configuración (modo por defecto):
Editar /etc/selinux/config y configurar SELINUX=disabled
Parámetros de kernel:
Agregue selinux=0 a la lista de parámetros del kernel cuando reinicie.
Nota: No se recomienda deshabilitar SELinux en sistemas en
los cuales va a ser habilitado nuevamente, mejor usar el modo
Permissive, para evitar que el sistema de archivos sea
reetiquetado completamente, y consumir bastante tiempo.
Modos SELinux
Contextos SELinux
Los contextos son etiquetas que se aplican a archivos, directorios, puertos y
procesos.
Estas etiquetas se usan para describir reglas de acceso. Existen 4 contextos
de SELinux:
User
Role
Type
Level
Type es el contexto más utilizado comúnmente. La convención de nombres de
etiquetas determina que las etiquetas de contexto type deben terminar con _t,
como el kernet_t
Contextos SELinux
Las etiquetas SELinux siguen el siguiente formato:
user:role:type:level(sensibilidad:categoría)
La etiqueta user identifica el usuario selinux, un concepto diferente el usuario
Linux.
La etiqueta role, es la parte del modelo basado en roles (RBAC) utilizada
también por SELinux.
La etiqueta type, define el tipo de restricción. En caso de un proceso se
denomina dominio y en el caso de un fichero se denomina tipo. Las reglas de
la política SELinux determinan como pueden acceder tipos entre sí, dominios
con tipos , o accesos entre dominios
Políticas SELinux
En el mismo archivo de configuración generalmente se configuran las
políticas SELinux.
Se permite múltiples políticas, pero solo una puede estar activada a la
vez. Cambiar la política puede requerir reiniciar el sistema y
reetiquetado del sistema de archivos, lo cual es lento. Cada política
tiene archivos que deben ser instalados bajo
/etc/selinux/[SELINUXTYPE].
Podemos conocer
nuestro contexto actual:
Diagnostico SELinux
Herencia y preservación del contexto:
Diagnostico SELinux
45
Anexos: Tips
46
Tips
Seguridad física
Configurar el BIOS para desactivar el arranque desde CD / DVD, dispositivos
externos, etc. A continuación, habilite la contraseña del BIOS y también en su
gestor de arranque (GRUB).
[root@uasb ~]# grub-md5-crypt
[root@uasb ~]# grub-mkpasswd-pbkdf2
Lockdown Cronjobs
/etc/cron.allow
/etc/cron.deny
Se puede deshabilitar todo:
Usar Secure Shell(SSH)
En lo posible no iniciar una sesión como root
También es recomendable cambiar el puerto por
defecto =22
Tips
Supervisar las actividades del usuario.
Hay dos herramientas útiles llamados 'psacct' y 'acct '
Tips
Cambiar el hostname
Admin cuentas de
usuarios
El archivo /etc/login.defs
también contiene los
valores que se aplicarán
por defecto a los nuevos
usuarios que se crean con
el comando useradd
Admin cuentas de
usuarios
Planificar la creación de las
cuentas de usuarios. Tome en
cuenta lo que es por defecto.
La opción -D del comando
useradd le permitirá visualizar o
cambiar algunos de los valores
por defecto.
useradd –f
useradd –e
useradd -s
useradd -k
Admin cuentas de
usuarios
Planificar la creación de las cuentas de
usuarios.
El comando passwd (-l bloqueo y –u
desbloqueo)
O el bloqueo se realiza mediante la
sustitución de contraseña cifrada con una
cadena (!).
Otros comandos:
usermod –L “username” (-U para desbloquear)
chage –E 2015-09-11 “username”
Caducidad de la
contraseña
Nota: Para las cuentas altamente
En el archivo '/etc/shadow sensibles, se recomienda cambiar las
contraseñas con mayor frecuencia, por
ejemplo, cada 30 días. Por otro lado, para
las cuentas que no son críticas sin ningún
acceso a información sensible, hay menos
necesidad de cambios frecuentes. Para las
cuentas con un riesgo mínimo, que tiene
una duración de 90 días se considera más
razonable.
name:password:last change:min:max:warn:inactive:expire:reserved
Por ejemplo, un mín: máx de 5:60 significa que el usuario debe cambiar su contraseña cada 60 días y, después de cambiarlo, el usuario debe esperar 5 días antes de que
puedan cambiar su contraseña de nuevo (Nunca = 99999 días es de aproximadamente 274 años).
Admin cuentas de
usuarios
Para comprobar la caducidad de las
contraseñas de los usuarios, es necesario
utilizar el comando “chage".
Parámetros:
1. -E fecha de expiración
2. -d LAST_DAY
3. -I INACTIVE
4. -M Establece el número máximo de días
5. -m Establece el número mínimo de días
6. -W Ajusta el número de días de advertencia
Admin cuentas de
usuarios
Cuidado con las contraseñas débiles y blandas.
Su contraseña podría ser hackeado con un
ataque basado en diccionario o fuerza bruta.
El módulo 'pam_cracklib' está disponible en PAM
(Pluggable Authentication Modules) pila de
módulos que obligará al usuario para establecer
contraseñas seguras. Edite el siguiente archivo.
Y añadir la línea de crédito utilizando parámetros como (lcredit, ucredit, lcredit y/o
ocredit, respectivamente, lower-case, upper-case, digit y otros)
substitute user do
Minimizar los riesgos.
/etc/sudoers
Usar el comando sudo.
Esta es la entrada por defecto …
Tiene dos modos: enforce y complain Los perfiles /sbin/dhclient, /usr/sbin/, y /usr/sbin/tcpdump estan
en modo enforce (esto es por defecto en Ubuntu).
Módulo de Seguridad
AppArmor
Cambiar de modo