Am 09.09.2018 um 16:19 schrieb Daniel Walsh <dwa...@redhat.com>: > > On 09/09/2018 09:43 AM, Leon Fauster via CentOS wrote: >> Am 09.09.2018 um 14:49 schrieb Daniel Walsh <dwa...@redhat.com>: >>> On 09/08/2018 09:50 PM, Leon Fauster via CentOS wrote: >>>> Any SElinux expert here - briefly: >>>> >>>> # getenforce >>>> Enforcing >>>> >>>> # sesearch -ACR -s httpd_t -c file -p read |grep system_conf_t >>>> <no output> >>>> >>>> # sesearch -ACR -s httpd_t -c file -p read |grep syslog_conf_t >>>> <no output> >>>> >>>> # ls -laZ /etc/sysctl.conf /etc/rsyslog.conf >>>> -rw-r--r--. root root system_u:object_r:syslog_conf_t:s0 /etc/rsyslog.conf >>>> -rw-r--r--. root root system_u:object_r:system_conf_t:s0 /etc/sysctl.conf >>>> >>>> # ausearch -m avc --start recent >>>> type=SYSCALL msg=audit(1536457230.922:85): arch=c000003e syscall=6 >>>> success=no exit=-13 a0=7fff6460dcf0 a1=7fff6460dbe0 a2=7fff6460dbe0 a3=11 >>>> items=0 ppid=1362 pid=1364 auid=4294967295 uid=48 gid=48 euid=48 suid=48 >>>> fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="php-fpm" >>>> exe="/usr/sbin/php-fpm" subj=system_u:system_r:httpd_t:s0 key=(null) >>>> type=AVC msg=audit(1536457230.922:85): avc: denied { getattr } for >>>> pid=1364 comm="php-fpm" path="/etc/rsyslog.conf" dev=dm-0 ino=138287 >>>> scontext=system_u:system_r:httpd_t:s0 >>>> tcontext=system_u:object_r:syslog_conf_t:s0 tclass=file >>>> >>>> >>>> My test PHP script can read /etc/sysctl.conf but not /etc/rsyslog.conf. >>>> For both >>>> no rule are found (sesearch above). So, why the script can read >>>> sysctl.conf? >>>> >>> Because almost no apache servers would normally be walking through /etc >>> reading >>> configuration files. Do you scripts actually need to read these config >>> files? >> >> >> Normally, sure - but a malicious developer (or attacker) will do. So, I'm >> evaluating different >> approaches to secure our platform. Its possible to limit fs access in PHP >> but this comes with >> a massive performance penalty. >> >> Well, I do not want to discuss that all "etc_t" files can be read but why >> sysctl.conf with "system_conf_t" type can be read where it shouldn't?? >> >> Any pointer would be greatly appreciated. >> > > We allow apache and all domains to read all of what we define as > base_ro_file_type types. > > sesearch -A -s httpd_t -t system_conf_t -p read > allow domain base_ro_file_type:dir { getattr ioctl lock open read search }; > allow domain base_ro_file_type:file { getattr ioctl lock open read }; > allow domain base_ro_file_type:lnk_file { getattr read }; > allow httpd_t base_ro_file_type:file { execute execute_no_trans getattr ioctl > lock map open read }; > > > The base_ro_file_types are files executables that we consider part of the OS. > So reading them should not reveal secrets.
Thanks for the pointer. Puuh, this gets very layered but the big picture on the other side gets more clear So, to get a list of files that are allowed to be read, the masking attributes must be resolved: # sesearch -ACR -s httpd_t -p read | grep -v "_t " | head -7 Found 694 semantic av rules: allow domain tmpfile : file { ioctl read getattr lock append } ; allow domain configfile : file { ioctl read getattr lock open } ; allow domain configfile : dir { ioctl read getattr lock search open } ; allow domain configfile : lnk_file { read getattr } ; allow domain rpm_transition_domain : fifo_file { ioctl read write getattr lock append } ; allow domain base_ro_file_type : file { ioctl read getattr lock open } ; Looking for sysctl.conf's type : # for m in tmpfile configfile rpm_transition_domain base_ro_file_type ; do echo ${m}:$(seinfo -a${m} -x |grep system_conf_t) ; done tmpfile: configfile: system_conf_t rpm_transition_domain: base_ro_file_type: system_conf_t If the output of sesearch shows the preferred order then the "configfile" attribute allows actually the access ?? > If you feel that these files should not be part of the base_ro_files then we > should open that for discussion. Despite this concrete case, a good practice is the one that follows the "need to known" principle. I will "disable" some read access here locally and accumulate some experiences with this approach. -- LF _______________________________________________ CentOS mailing list CentOS@centos.org https://lists.centos.org/mailman/listinfo/centos