I am trying to block privileges escalations from unprivileged accounts such as www-data
.
Basically, if my web server is getting compromised, crackers may find ways to escalate (vulnerabilities found in sudo? root password reuse from another cracked server ?). I want to find a way to forbid this, and I found that putting www-data
into user_u
selinux profile has this effect.
However, looking at the audit.log
file when www-data
tries to sudo
or su
shows this:
For 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
For 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.
So, for sudo
, it looks like more than a bug (why selinuxuser_use_ssh_chroot ??!) and for su
, the deny comes from insufficient rights on /var/log/wtmp
Is this method efficient to block possible escalation from untrusted users ? Or does it look more than a hack ? Is this sufficient to prevent compromised user with root password to get root access ?
Many thanks!