# ls --context /usr/sbin/slapcat
lrwxrwxrwx. root root system_u:object_r:bin_t:s0 /usr/sbin/slapcat -> slapd
slapcatはシンボリックリンク。これはbin_tドメインで動作することを示している。
slapcatはroot権限があると全データが取り出せてしまう。これを防止したい。
やり方としてはSELinuxを適用し、かつslapcat.cをコンパイルしない。
# ps --context ax|grep slapd
1903 system_u:system_r:slapd_t:s0 /usr/sbin/slapd -h ldap:/// ldapi:/// -u ldap
3151 unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 grep slapd
slapdプロセスはslapd_tドメインで動作することを示している。
# semodule -l | grep ldap
ldap 1.10.0
# strings /tmp/ldap.pp
ここから
...
/etc/ldap/slapd\.conf -- system_u:object_r:slapd_etc_t:s0
/etc/openldap/certs(/.*)? system_u:object_r:slapd_cert_t:s0
/etc/openldap/slapd\.d(/.*)? system_u:object_r:slapd_db_t:s0
/etc/rc\.d/init\.d/slapd -- system_u:object_r:slapd_initrc_exec_t:s0
/usr/sbin/slapd -- system_u:object_r:slapd_exec_t:s0
/var/lib/ldap(/.*)? system_u:object_r:slapd_db_t:s0
/var/lib/ldap/replog(/.*)? system_u:object_r:slapd_replog_t:s0
/var/run/ldapi -s system_u:object_r:slapd_var_run_t:s0
/var/run/openldap(/.*)? system_u:object_r:slapd_var_run_t:s0
/var/run/slapd\.args -- system_u:object_r:slapd_var_run_t:s0
/var/run/slapd\.pid -- system_u:object_r:slapd_var_run_t:s0
#/var/run/slapd.* -s gen_context(system_u:object_r:slapd_var_run_t,s0)
ここまで
# semanage fcontext -l|grep slap
/etc/ldap/slapd\.conf regular file system_u:object_r:slapd_etc_t:s0
/etc/openldap/certs(/.*)? all files system_u:object_r:slapd_cert_t:s0
/etc/openldap/slapd\.d(/.*)? all files system_u:object_r:slapd_db_t:s0
/etc/rc\.d/init\.d/slapd regular file system_u:object_r:slapd_initrc_exec_t:s0
/usr/sbin/ns-slapd regular file system_u:object_r:dirsrv_exec_t:s0
/usr/sbin/slapd regular file system_u:object_r:slapd_exec_t:s0
/usr/share/munin/plugins/slapd_.* regular file system_u:object_r:munin_services_plugin_exec_t:s0
/var/lib/ldap(/.*)? all files system_u:object_r:slapd_db_t:s0
/var/lib/ldap/replog(/.*)? all files system_u:object_r:slapd_replog_t:s0
/var/run/ldapi socket system_u:object_r:slapd_var_run_t:s0
/var/run/openldap(/.*)? all files system_u:object_r:slapd_var_run_t:s0
/var/run/slapd.* socket system_u:object_r:dirsrv_var_run_t:s0
/var/run/slapd\.args regular file system_u:object_r:slapd_var_run_t:s0
/var/run/slapd\.pid regular file system_u:object_r:slapd_var_run_t:s0
※/etc/selinux/targeted/contexts/files/file_contextsのファイルの中身の模様。
現時点でモジュールは有効な模様。
この状態でldap_slapcat.teを別モジュールで作る。TEファイルからバイナリ形式のPPファイルという
モジュール・パッケージを作成し、PPファイルをポリシー・ファイルに追加するという手順になる。
# vi ldap_slapcat.te
# cd /usr/share/selinux/devel
# mv /tmp/ldap_slapcat.te .
# make
# semodule -i ldap_slapcat.pp
0 件のコメント:
コメントを投稿