Estoy intentando bloquear las escaladas de privilegios de cuentas sin privilegios, como www-data
.
Básicamente, si mi servidor web se ve comprometido, los crackers pueden encontrar formas de escalar (¿vulnerabilidades encontradas en sudo? ¿reutilización de contraseña raíz de otro servidor crackeado?). Quiero encontrar una manera de prohibir esto, y encontré que poner www-data
en el perfil de user_u
selinux tiene este efecto.
Sin embargo, mirando el archivo audit.log
cuando www-data
intenta sudo
o su
muestra esto:
Para sudo:
type=AVC msg=audit(1533818833.807:318): avc: denied { setuid } for pid=1417 comm="sudo" capability=7 scontext=user_u:user_r:user_t:s0 tcontext=user_u:user_r:user_t:s0 tclass=capability
Was caused by:
The boolean selinuxuser_use_ssh_chroot was set incorrectly.
Description:
Allow selinuxuser to use ssh chroot
Allow access by executing:
# setsebool -P selinuxuser_use_ssh_chroot 1
Para su:
type=AVC msg=audit(1533818282.076:263): avc: denied { write } for pid=1354 comm="su" name="btmp" dev="dm-0" ino=8428621 scontext=user_u:user_r:user_t:s0 tcontext=system_u:object_r:faillog_t:s0 tclass=file
Was caused by:
Missing type enforcement (TE) allow rule.
You can use audit2allow to generate a loadable module to allow this access.
Entonces, para sudo
, parece más que un error (¿por qué selinuxuser_use_ssh_chroot ??!) y para su
, el rechazo proviene de derechos insuficientes en /var/log/wtmp
¿Este método es eficaz para bloquear una posible escalada de usuarios no confiables? ¿O se ve más que un hack? ¿Es esto suficiente para evitar que un usuario comprometido con una contraseña de root obtenga acceso de root?