2006年2月 3日

[selinux-users:01337] segatex_cui1.004.0(fcファイル生成)


藤原@インフルエンザは大丈夫? です

最近は、ポリシを書くのをやめてツールを作っていました。
お正月前にも発表していましたが、fcファイルの生成にこぎつけたので、
また発表したくなりました。おつきあいいただければ幸いです。

segatexという1人プロジェクトを立ち上げて遊んでいます。

GUIとCUIのバージョンを作っています。
GUIには13、CUIには4つのバージョンがあります。

去年SELinuxを勉強して苦労したのは、ログから設定ファイルを作る
という過程でした。時間が無尽蔵にあれば一つ一つ吟味しながら設定するのがいいでしょう。
確かに私はそれをやっていたんです。で、なんとなく法則めいたものがあることに
気づいたような...。あくまで私の能力内の事なので、正しいかどうかわかりません。
でも、その設定で私のサーバは安全に動いているようです。
そこで、
自分のやり方を敷衍(ふえん)するわけではありませんが、プログラム化して
新しい問題に自分なりに対処しようと考えました。万人向けではありません。
私的ツールです。
こうだったらいいのにと思ったことが2つあります。
一つは、エラーログからマクロが出せたらいいな...
二つめは、重大な問題を解決する糸口が欲しい...

一つめはそのものであり既に力業でやっつけてます。
二つめを私は「initrc_tからドメイン遷移していない状態」
ととらえました。完璧でなくていいんです、糸口がつかめれば。
一番欲しいのは、エントリポイントのフルパスです。でも、できませんでした。
そこで、fcファイルの雛型だけ作りました。こんなのは簡単です。
名前なんかどうでもいいんです。それぞれを閉じ込められればいいんです。
たぶん...。

my projects
http://sourceforge.jp/projects/segatex/
http://sourceforge.net/projects/segatex/
SELinx Hack
http://intrajp.no-ip.com/xoops/modules/newbb/
my homepage
http://intrajp.no-ip.com/

今日現在、
segatex_cui1.004.0において、fcファイルの生成を行います。
勉強会でも発表したpapaマシンをFC4にしました。プチ開発に活躍してくれてます。
seeditのdevelを入れています。
エラーがぎょうさんでるので開発にはうってつけ(他意はありません)です。
seeditがフォルダ名をタイプ付けに利用しているためでしょう。

まず、マクロを出したところです。

[root@xxxxx segatex_cui]# ./segatex_cui
[1]audit to macro [2]solve_problem [9]exit
1
This is segate.

allow cannaserver_t etc_runtime_t:file r_file_perms;
allow dhclient_t autofs_t:dir r_dir_perms;
allow dhclient_t bin_bash_t:file { entrypoint };
allow dhclient_t bin_bash_t:unix_stream_socket connected_socket_perms;
allow dhclient_t default_t:dir r_dir_perms;
allow dhclient_t dev_t:chr_file rw_file_perms;
allow dhclient_t dev_t:sock_file rw_file_perms;
allow dhclient_t dev_t:unix_dgram_socket { sendto };
allow dhclient_t dhclient_tmp_t:file x_file_perms;
allow dhclient_t etc_X11_xdm_Xsession_t:file { entrypoint };
allow dhclient_t etc_cronddaily_t:dir r_dir_perms;
allow dhclient_t etc_cronddaily_t:file rx_file_perms;
allow dhclient_t etc_cronddaily_t:lnk_file r_file_perms;
allow dhclient_t etc_crondhourly_t:dir r_dir_perms;
allow dhclient_t etc_crondmonthly_t:dir r_dir_perms;
allow dhclient_t etc_crondweekly_t:dir r_dir_perms;
allow dhclient_t etc_crondweekly_t:file rx_file_perms;
allow dhclient_t etc_krb5dconf_t:file rw_file_perms;
allow dhclient_t etc_rcdd_rcdlocal_t:file link_file_perms;
allow dhclient_t etc_runtime_t:file { relabelfrom };
allow dhclient_t etc_samba_t:dir r_dir_perms;
allow dhclient_t etc_samba_t:file r_file_perms;
allow dhclient_t etc_selinux_seedit_t:dir r_dir_perms;
allow dhclient_t etc_selinux_seedit_t:file r_file_perms;
allow dhclient_t etc_shadow_t:file r_file_perms;
allow dhclient_t etc_t:file link_file_perms;
allow dhclient_t etc_t:lnk_file link_file_perms;
allow dhclient_t gdm_tmp_t:dir rw_dir_perms;
allow dhclient_t gdm_tmp_t:sock_file create_file_perms;
allow dhclient_t home_t:dir ra_dir_perms;
allow dhclient_t home_t:file create_file_perms;
allow dhclient_t port_t:tcp_socket rw_socket_perms;
allow dhclient_t root_t:dir rw_dir_perms;
allow dhclient_t root_t:file create_file_perms;
allow dhclient_t root_t:lnk_file create_file_perms;
allow dhclient_t root_t:sock_file create_file_perms;
allow dhclient_t security_t:dir r_dir_perms;
allow dhclient_t security_t:file rw_file_perms;
allow dhclient_t security_t:security { compute_av };
allow dhclient_t system_cron_spool_t:dir r_dir_perms;
allow dhclient_t tcp110_port_t:tcp_socket rw_socket_perms;
allow dhclient_t tcp22_port_t:tcp_socket rw_socket_perms;
allow dhclient_t tcp25_port_t:tcp_socket rw_socket_perms;
allow dhclient_t tcp80_port_t:tcp_socket rw_socket_perms;
allow dhclient_t tmp_t:dir create_dir_perms;
allow dhclient_t tmp_t:sock_file rw_file_perms;
allow dhclient_t tmp_t:unix_stream_socket { connectto };
allow dhclient_t usr_t:dir create_dir_perms;
allow dhclient_t usr_t:file create_file_perms;
allow dhclient_t var_lib_t:dir create_dir_perms;
allow dhclient_t var_lib_t:file create_file_perms;
allow dhclient_t var_lock_t:dir rw_dir_perms;
allow dhclient_t var_lock_t:file create_file_perms;
allow dhclient_t var_log_audit_t:dir r_dir_perms;
allow dhclient_t var_log_audit_t:file r_file_perms;
allow dhclient_t var_log_samba_t:dir r_dir_perms;
allow dhclient_t var_log_t:dir rw_dir_perms;
allow dhclient_t var_log_t:file create_file_perms;
allow dhclient_t var_log_t:process { signal };
allow dhclient_t var_log_wtmp_t:file create_file_perms;
allow dhclient_t var_named_t:dir r_dir_perms;
allow dhclient_t var_run_iiim_t:sock_file rw_file_perms;
allow dhclient_t var_run_t:file rw_file_perms;
allow dhclient_t var_spool_anacron_t:dir r_dir_perms;
allow dhclient_t var_spool_anacron_t:file create_file_perms;
allow dhclient_t var_t:dir create_dir_perms;
allow dhclient_t var_t:file create_file_perms;
allow dhclient_t well_known_tcp_port_t:tcp_socket rw_socket_perms;
allow initrc_t dhclient_tmp_t:file x_file_perms;
allow initrc_t etc_t:dir create_dir_perms;
allow initrc_t etc_t:file create_file_perms;
allow initrc_t etc_t:unix_stream_socket connected_socket_perms;
allow initrc_t root_t:file create_file_perms;
allow initrc_t root_t:unix_stream_socket connected_socket_perms;
allow initrc_t var_gdm_t:fifo_file rw_file_perms;
allow initrc_t var_t:dir create_dir_perms;
allow initrc_t var_t:file create_file_perms;
allow initrc_t var_t:unix_stream_socket connected_socket_perms;
allow initrc_t well_known_tcp_port_t:capability { net_bind_service };
allow initrc_t well_known_tcp_port_t:tcp_socket connected_socket_perms;
allow initrc_t well_known_udp_port_t:udp_socket connected_socket_perms;
allow kernel_t autofs_t:dir r_dir_perms;
allow kernel_t dhclient_tmpfs_t:file rw_file_perms;
allow kernel_t dhclient_tmpfs_t:shm r_shm_perms;
allow kernel_t etc_krb5dconf_t:file rw_file_perms;
allow kernel_t etc_runtime_t:file link_file_perms;
allow kernel_t etc_shadow_t:file r_file_perms;
allow kernel_t etc_t:dir rw_dir_perms;
allow kernel_t etc_t:file create_file_perms;
allow kernel_t gdm_tmp_t:dir create_dir_perms;
allow kernel_t netif_t:netif { tcp_recv tcp_send udp_recv udp_send };
allow kernel_t node_t:node { tcp_recv tcp_send udp_recv udp_send };
allow kernel_t port_t:tcp_socket { recv_msg send_msg };
allow kernel_t proc_t:file rw_file_perms;
allow kernel_t ramfs_t:dir rw_dir_perms;
allow kernel_t ramfs_t:fifo_file link_file_perms;
allow kernel_t ramfs_t:file link_file_perms;
allow kernel_t ramfs_t:sock_file link_file_perms;
allow kernel_t root_t:dir rw_dir_perms;
allow kernel_t root_t:file create_file_perms;
allow kernel_t rootdir_t:file create_file_perms;
allow kernel_t security_t:capability { sys_nice };
allow kernel_t security_t:dir { search };
allow kernel_t security_t:file r_file_perms;
allow kernel_t security_t:security { check_context compute_av compute_user };
allow kernel_t staff_tmp_t:dir { getattr search };
allow kernel_t staff_tmp_t:file r_file_perms;
allow kernel_t system_cron_spool_t:dir { getattr };
allow kernel_t system_cron_spool_t:file r_file_perms;
allow kernel_t tcp22_port_t:tcp_socket connected_socket_perms;
allow kernel_t tmp_dfontmunix_t:dir rw_dir_perms;
allow kernel_t tmp_dfontmunix_t:sock_file create_file_perms;
allow kernel_t tmp_t:dir create_dir_perms;
allow kernel_t tmp_t:file create_file_perms;
allow kernel_t tmp_t:sock_file create_file_perms;
allow kernel_t udp53_port_t:udp_socket { recv_msg send_msg };
allow kernel_t usr_X11R6_lib_X11_fonts_t:dir rw_dir_perms;
allow kernel_t usr_X11R6_lib_X11_fonts_t:file create_file_perms;
allow kernel_t usr_share_fonts_t:dir rw_dir_perms;
allow kernel_t usr_share_fonts_t:file create_file_perms;
allow kernel_t var_gdm_t:dir create_dir_perms;
allow kernel_t var_gdm_t:fifo_file create_file_perms;
allow kernel_t var_gdm_t:file create_file_perms;
allow kernel_t var_lib_canna_t:file rw_file_perms;
allow kernel_t var_lib_xkb_t:dir rw_dir_perms;
allow kernel_t var_lib_xkb_t:file create_file_perms;
allow kernel_t var_lock_subsys_t:dir rw_dir_perms;
allow kernel_t var_lock_subsys_t:file link_file_perms;
allow kernel_t var_lock_t:dir rw_dir_perms;
allow kernel_t var_lock_t:file create_file_perms;
allow kernel_t var_log_audit_t:file ra_file_perms;
allow kernel_t var_log_gdm_t:dir rw_dir_perms;
allow kernel_t var_log_gdm_t:file create_file_perms;
allow kernel_t var_log_t:dir rw_dir_perms;
allow kernel_t var_log_t:file create_file_perms;
allow kernel_t var_log_t:shm rw_shm_perms;
allow kernel_t var_run_diroha_unix_t:dir rw_dir_perms;
allow kernel_t var_run_diroha_unix_t:file stat_file_perms;
allow kernel_t var_run_diroha_unix_t:lnk_file r_file_perms;
allow kernel_t var_run_diroha_unix_t:sock_file create_file_perms;
allow kernel_t var_run_iiim_t:dir create_dir_perms;
allow kernel_t var_run_iiim_t:sock_file create_file_perms;
allow kernel_t var_run_t:dir rw_dir_perms;
allow kernel_t var_run_t:file create_file_perms;
allow kernel_t var_spool_anacron_t:file create_file_perms;
allow klogd_t var_t:unix_dgram_socket { sendto };
allow mail_t bin_bash_t:file { entrypoint };
allow mail_t dev_initctl_t:fifo_file rw_file_perms;
allow mail_t dev_log_t:sock_file rw_file_perms;
allow mail_t dev_log_t:unix_dgram_socket { sendto };
allow mail_t etc_runtime_t:file r_file_perms;
allow mail_t etc_t:dir rw_dir_perms;
allow mail_t etc_t:file create_file_perms;
allow mail_t root_t:dir r_dir_perms;
allow mail_t root_t:file r_file_perms;
allow mail_t var_run_t:dir rw_dir_perms;
allow mail_t var_run_t:file create_file_perms;
allow sshd_t etc_krb5dconf_t:file rw_file_perms;
allow staff_bonobo_t staff_tmp_t:dir create_dir_perms;
allow staff_bonobo_t staff_tmp_t:sock_file create_file_perms;
allow staff_gconfd_t default_t:dir rw_dir_perms;
allow staff_gconfd_t default_t:file create_file_perms;
allow staff_gconfd_t staff_tmp_t:dir rw_dir_perms;
allow staff_gconfd_t staff_tmp_t:sock_file link_file_perms;
allow staff_gnome_vfs_t default_t:dir { search };
allow staff_gnome_vfs_t staff_tmp_t:capability { setgid setuid };
allow staff_gnome_vfs_t staff_tmp_t:dir create_dir_perms;
allow staff_gnome_vfs_t staff_tmp_t:file create_file_perms;
allow staff_gnome_vfs_t staff_tmp_t:sock_file create_file_perms;
allow staff_mozilla_t alsa_etc_rw_t:file r_file_perms;
allow staff_mozilla_t default_t:capability { sys_nice };
allow staff_mozilla_t default_t:dir create_dir_perms;
allow staff_mozilla_t default_t:file create_file_perms;
allow staff_mozilla_t default_t:lnk_file create_file_perms;
allow staff_mozilla_t default_t:process { execmem execstack };
allow staff_mozilla_t default_t:sock_file create_file_perms;
allow staff_mozilla_t i18n_input_var_run_t:sock_file rw_file_perms;
allow staff_mozilla_t i18n_input_var_run_t:unix_stream_socket { connectto };
allow staff_mozilla_t lib_t:file x_file_perms;
allow staff_mozilla_t reserved_port_t:capability { setgid setuid };
allow staff_mozilla_t reserved_port_t:tcp_socket rw_socket_perms;
allow staff_mozilla_t samba_etc_t:file r_file_perms;
allow staff_mozilla_t staff_tmp_t:sock_file create_file_perms;
allow staff_mozilla_t tmp_t:dir rw_dir_perms;
allow staff_mozilla_t tmp_t:file create_file_perms;
allow staff_t auditd_log_t:dir r_dir_perms;
allow staff_t auditd_log_t:file r_file_perms;
allow staff_t cert_t:dir r_dir_perms;
allow staff_t default_t:capability { setuid };
allow staff_t default_t:dir rw_dir_perms;
allow staff_t default_t:file create_file_perms;
allow staff_t default_t:process { execmem };
allow staff_t default_t:sock_file create_file_perms;
allow staff_t default_t:unix_stream_socket { connectto };
allow staff_t etc_krb5dconf_t:file rw_file_perms;
allow staff_t initctl_t:fifo_file rw_file_perms;
allow staff_t root_t:dir rw_dir_perms;
allow staff_t root_t:file create_file_perms;
allow staff_t selinux_config_t:dir rw_dir_perms;
allow staff_t selinux_config_t:file create_file_perms;
allow staff_t staff_tmp_t:capability { dac_override };
allow staff_t usr_t:file { entrypoint };
allow staff_t var_run_t:dir rw_dir_perms;
allow staff_t var_run_t:file create_file_perms;
allow staff_t var_t:dir ra_dir_perms;
allow staff_t xdm_var_run_t:file rw_file_perms;
allow su_t root_t:dir rw_dir_perms;
allow su_t root_t:file create_file_perms;
allow udev_t var_run_t:unix_dgram_socket { sendto };
allow user_t autofs_t:dir { getattr };
allow user_t autofs_t:unix_stream_socket { connectto };
allow user_t bin_su_t:file rx_file_perms;
allow user_t dev_log_t:sock_file rw_file_perms;
allow user_t dev_log_t:unix_dgram_socket { sendto };
allow user_t dev_t:chr_file rw_file_perms;
allow user_t dev_t:netlink_route_socket create_socket_perms;
allow user_t etc_runtime_t:unix_stream_socket { connectto };
allow user_t etc_shadow_t:file r_file_perms;
allow user_t etc_shadow_t:netlink_audit_socket create_socket_perms;
allow user_t gdm_tmp_t:dir rw_dir_perms;
allow user_t gdm_tmp_t:netlink_route_socket create_socket_perms;
allow user_t gdm_tmp_t:sock_file create_file_perms;
allow user_t gdm_tmp_t:unix_stream_socket { connectto };
allow user_t root_t:dir { search };
allow user_t root_t:file r_file_perms;
allow user_t security_t:dir { getattr search };
allow user_t security_t:file rw_file_perms;
allow user_t security_t:netlink_selinux_socket create_socket_perms;
allow user_t security_t:security { compute_av compute_relabel compute_user };
allow user_t security_t:unix_stream_socket { connectto };
allow user_t user_devpts_t:chr_file { relabelfrom relabelto };
allow user_t user_devpts_t:file rw_file_perms;
allow user_t var_run_iiim_t:sock_file rw_file_perms;
allow user_t var_run_iiim_t:unix_stream_socket { connectto };
allow user_t var_t:dir rw_dir_perms;
allow user_t var_t:file create_file_perms;
allow xdm_t default_t:dir rw_dir_perms;
allow xdm_t default_t:file create_file_perms;
allow xdm_xserver_t default_t:dir { search };
allow xdm_xserver_t default_t:file r_file_perms;
allow xserver_t home_t:file r_file_perms;

次に、問題を解決するところです。
[1]audit to macro [2]solve_problem [9]exit
2
This is segate.

Checking problems on this machine.Please wait...

Found SELinux problems.These should be domain-transed from initrc_t.

S20avupdater::fullpath is unnkown.
You should find / -type f -name "S20avupdater " on console...
antivir::fullpath is:/root/Desktop/antivir-workstation-pers-2.1.5-24/bin/antivir
antivir::fullpath is unnkown.
You should find / -type f -name "antivir " on console...
cupsd::fullpath is unnkown.
You should find / -type f -name "cupsd " on console...
gs::fullpath is unnkown.
You should find / -type f -name "gs " on console...

fc file(s) are created in this folder. Please check.

終了します。
[1]audit to macro [2]solve_problem [9]exit
9
Thank you for using segate

では、生成されたfcファイルの一つを見てみましょう。
[root@xxxxx segatex_cui]#less antivir.fc

#fc file for antivir generated by segatex.
#[...'s_bin_directory's_files] should be written .../bin(/.*)?
#[...'s_data_directory_and_their_files] should be written .../data(/.*)?
/path/to/antivir's_home_directory -d system_u:object_r:antivir_home_t
/path/to/antivir's_bin_directory -d system_u:object_r:antivir_bin_t
/path/to/antivir's_bin_directory's_files -- system_u:object_r:antivir_exec_t
/path/to/antivir's_data_directory_and_their_files system_u:object_r:antivir_data_t
/path/to/antivir's_doc_directory_and_their_files system_u:object_r:antivir_doc_t
/path/to/antivir's_include_directory_and_their_files system_u:object_r:antivir_include_t
/path/to/antivir's_lib_directory_and_their_files system_u:object_r:antivir_lib_t
/path/to/antivir's_man_directory_and_their_files system_u:object_r:antivir_man_t
/path/to/antivir's_share_directory_and_their_files system_u:object_r:antivir_share_t
antivir.fc (END)

もちろんこれ通りにいくわけありませんが、ヒントにはなるのではないでしょうか。
ソースコードを見ていただければわかりますが、クラスにしています。
インスタンスを作成してメソッドを呼び出すだけです。
main関数は数行しかありません。
ちなみにGUIバージョンはQTで作ってまして、fcファイルはまだですがほぼ同じです。

FC5になると使えないかもしれませんが、そうなればなったで又勉強させていただきます。
FC5の方がもっとエキサイティングですよね。
じゃ又、

投稿者 xml-rpc : 2006年2月 3日 01:21
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/30827
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。