2016年2月14日日曜日

SELinux(slapd)

# 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 件のコメント:

コメントを投稿