Sto tentando di bloccare le escalation dei privilegi da account non privilegiati come www-data
.
In sostanza, se il mio server web viene compromesso, i cracker possono trovare dei modi per aumentare il livello (le vulnerabilità si trovano in sudo? riutilizzo della password di root da un altro server incrinato?). Voglio trovare un modo per proibirlo e ho scoperto che mettere www-data
nel profilo user_u
selinux ha questo effetto.
Tuttavia, guardando il file audit.log
quando www-data
tenta di sudo
o su
mostra questo:
Per 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
Per 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.
Quindi, per sudo
, sembra più di un bug (perché selinuxuser_use_ssh_chroot ??!) e per su
, la negazione deriva da diritti insufficienti su /var/log/wtmp
Questo metodo è efficace per bloccare possibili escalation di utenti non fidati? O sembra più di un trucco? È sufficiente per impedire all'utente compromesso con password di root di ottenere l'accesso root?