現在位置: ホーム / セキュリティ ブログ / SELinuxのCIL (Part2)

SELinuxのCIL (Part2)

前回から引き続き、SELinuxのCILについて説明します。今回はReferencePolicyの作成になります。

こんにちは。SIOS OSSエバンジェリスト/セキュリティ担当の面です。

前回から少し時間が経ってしまいましたが、SELinuxのCILについての説明を行います。

(前回からの間に、SELinux CILリファレンスガイドの翻訳を行っていましたので、興味のある方は是非目を通してみてください。)

今回から、前回で作成したサービス"send_config"に専用のSELinuxドメイン"sendconfig_t"を用意するようなモジュールを、Reference PolicyとCILの双方を用いて作成してみます。まず今回は、Reference Policyを用いて作る方法を紹介します。


Reference Policyを用いて独自ドメイン用のポリシを作成する

 

Reference Policyを用いて独自ドメインを作成するのは、RedHat系(Fedora, CentOSなどを含む)の場合には雛形を用意してくれるツールが充実しているため、比較的簡単です。そもそも、Reference Policyを作成しているという気さえしなくなっています。

  1. まず、 「SELinux Management Tool」を起動します。これは、GUIでアプリケーションの中から起動するか、コンソールで"system-config-firewall"で起動できます。

    もしメニューに「SELinux Management Tool」が見つからなかったり、"system-config-firewall"コマンドがない場合には、パッケージ"policycoreutils-gui"をyumコマンドなどを用いてインストールして下さい。

    SELinux Policy Management Tool GUI

  2. GUIツールが起動したら、左ペインで「ポリシモジュール」を選択し、右ペインで「新規」をクリックします。「SELinuxポリシー生成ツール」が起動します。今回は「標準的なinitデーモン」を選択します。

    SELinux_Policy_2

  3. 「名前」「実行ファイル」「initスクリプト」を入力する画面が出てきます。今回は、名前は"sendconfig"、実行ファイルは"/opt/test_dir/bin/send_config"、Initスクリプトは"/opt/test_dir/scripts/run_send_config.sh"を入力します。

    SELinux_Policy_3

  4. "sendconfig"のバインド先となるネットワークポートを指定する画面が出てきます。この"sendconfig"は、Port80/TCPで待ち受けるため、ここで"TCPポート"の"全て"をチェックし、Por番号として80を選択します。

    SELinux_Policy_4

  5. "sendconfig"の接続先のポートの選択画面になります。特に指定はしないので、ここではTCPで"全て"をチェックします。

    SELinux_Policy_5

  6. "sendconfig"の一般的な特性の選択画面になります。今回の場合、ここにある項目には特に当てはまらないので、ここでは何もチェックしません。

    SELinux_Policy_6

  7. "sendconfig"の管理するファイル・ディレクトリの選択画面になります。今回の場合、send_configは

    • /etc/fstabにある情報
    • と、
    • /proc/cpuinfoにある情報

    のみにREADでアクセスを掛けに行きますので、ここで上記2ファイルを指定します。

    SELinux_Policy_7

  8. "sendconfig"のブーリアンの指定画面になります。今回の場合、ブーリアンは設定しませんので、ここでは何も指定しません。

    SELinux_Policy_8

  9. "sendconfig"ドメインのファイル類の雛形を、どこに出力するかの指定を行います。今回は、/root/sendconfigというディレクトリを作成して、そこに吐き出すようにします。

    「適用」を押すと、雛形が出力されます(画面上は何も変わらないので、雛形が出力されたかどうかは別途ディレクトリ内を見てみないとわかりません)。

    ここで雛形作成は終わりになりますので「キャンセル」をクリックします。

    SELinux_Policy_9

  10. rootユーザでターミナルを開いて、/root/sendconfigディレクトリ内を見てみると、雛形が出力されているのがわかります。/usr/share/selinux/devel/Makefileをこのディレクトリにコピーします
    [root@fedora23 sendconfig]# pwd
    /root/sendconfig
    [root@fedora23 sendconfig]# ls
    sendconfig.fc  sendconfig.if  sendconfig.te  sendconfig_selinux.spec
    [root@fedora23 sendconfig]# cp /usr/share/selinux/devel/Makefile .
    [root@fedora23 sendconfig]# ls
    Makefile  sendconfig.fc  sendconfig.if  sendconfig.te  sendconfig_selinux.spec
    [root@fedora23 sendconfig]# 
    
  11. rootユーザで"make"を実行すると、sendconfig.ppというバイナリポリシが作成されるので、"semodule -i sendconfig.pp"を実行してモジュールをロードします。

    [root@fedora23 sendconfig]# make
    Compiling targeted sendconfig module
    /usr/bin/checkmodule:  loading policy configuration from tmp/sendconfig.tmp
    /usr/bin/checkmodule:  policy configuration loaded
    /usr/bin/checkmodule:  writing binary representation (version 17) to tmp/sendconfig.mod
    Creating targeted sendconfig.pp policy package
    rm tmp/sendconfig.mod.fc tmp/sendconfig.mod
    [root@fedora23 sendconfig]# ls
    Makefile       sendconfig.if  sendconfig.te            tmp
    sendconfig.fc  sendconfig.pp  sendconfig_selinux.spec
    [root@fedora23 sendconfig]# semodule -i sendconfig.pp 
    
    • systemctl stop send_config
    • systemctl start send_config

    を実行して、send_configを再起動します。"ps axZ"で確認すると、send_configのプロセスがsendconfig_tドメインで動作していることがわかります。

    [root@fedora23 sendconfig]# ps axZ|grep send
    system_u:system_r:sendconfig_t:s0 718 ?        Ss     0:00 /bin/sh /opt/test_dir/scripts/run_send_config.sh
    system_u:system_r:sendconfig_t:s0 727 ?        S      0:00 /opt/test_dir/bin/send_config
    

このように、Reference Policyの場合には、殆どSELinuxの知識がなくても一通りのポリシを作成することが可能になっています。

まとめ

今回はReference PolicyでのSELinuxドメインの作成(殆どGUIの説明ですが。。。)について説明しました。

次回はいよいよ、CILを用いてのSELinuxドメインの作成について説明します。


[参考]
OSSよろず相談室

サイオスOSSよろず相談室(2)

問い合わせボタン

最新の記事
Sambaに共有以外のファイルにアクセスされる脆弱性(CVE-2017-2619) 2017年03月24日
Subscription-managerの脆弱性( CVE-2017-2663 ) 2017年03月22日
binutilsに複数の脆弱性( CVE-2017-6965, CVE-2017-6966, CVE-2017-6969, CVE-2017-7209 , CVE-2017-7210 , CVE-2017-7223, CVE-2017-7224, CVE-2017-7225, CVE-2017-7226, CVE-2017-7227 ) 2017年03月22日
linux kernelの脆弱性( CVE-2017-7187 ) 2017年03月21日
linux kernelの脆弱性( CVE-2017-6353 , CVE-2017-5986 ) 2017年03月21日
Ubuntu 16.10のkernelの脆弱性( CVE-2017-7184 ) 2017年03月20日
pcreの脆弱性( CVE-2017-7186 ) 2017年03月20日
binutilsの脆弱性( CVE-2017-6965 , CVE-2017-6966 , CVE-2017-6969 ) 2017年03月19日
MySQL(MariaDB) 5.5/5.6のmysql clientの脆弱性( Riddle : CVE-2017-3305 ) 2017年03月18日
linux kernelの脆弱性( CVE-2017-6951 ) 2017年03月17日
Apache Struts2の脆弱性 ( CVE-2017-5638 ) 2017年03月15日
linux kernelの脆弱性( CVE-2017-6874 ) 2017年03月15日
tomcatに情報漏えいの脆弱性( CVE-2016-8747 ) 2017年03月14日
QEMUの脆弱性( CVE-2016-9603 ) (Xen: XSA-211) 2017年03月14日
lxcの脆弱性(CVE-2017-5985) 2017年03月10日
wgetの脆弱性(CVE-2017-6508) 2017年03月08日
linux kernelに特権昇格の脆弱性( CVE-2017-2636 ) 2017年03月08日
( PoC ) linux kernel特権昇格脆弱性( CVE-2017-6074 ) の暫定回避策の確認 2017年03月06日
linux kernelの脆弱性( CVE-2016-9083 , CVE-2016-9084 ) 2017年03月03日
linux kernelに複数の脆弱性( CVE-2017-6345 , CVE-2017-6346 , CVE-2017-6347 , CVE-2017-6348 ) 2017年03月01日
Katello/Foremanによる運用管理 (Part4) 2017年02月28日
util-linux / coreutils の脆弱性(CVE-2017-2616) 2017年02月24日
linux kernelの脆弱性( CVE-2017-6214 ) 2017年02月24日
linux kernelに特権昇格の脆弱性( CVE-2017-6074 ) 2017年02月23日
curlの脆弱性 ( CVE-2017-2629 ) 2017年02月22日
QEMUの脆弱性( CVE-2017-2620 ) (Xen: XSA-209) 2017年02月22日
Tomcatの脆弱性 ( CVE-2017-6056 ) 2017年02月21日
Katello/Foremanによる運用管理 (Part3) 2017年02月21日
OpenSSLの脆弱性 ( CVE-2017-3733 ) 2017年02月16日
linux kernelの脆弱性( CVE-2017-6001 , (was CVE-2016-6786) ) 2017年02月16日
QEMUの脆弱性( CVE-2017-2630 ) 2017年02月15日
glibcの脆弱性(CVE-2015-8982, CVE-2015-8983, CVE-2015-8984) 2017年02月15日
vimの脆弱性 ( CVE-2017-5953 ) 2017年02月14日
Oracle Javaの脆弱性(Oracle Critical Patch Update Advisory - January 2017) 2017年02月14日
libxml2の脆弱性(CVE-2017-5969) 2017年02月13日
「linux kernel-4.9」でのLSMモジュールについて 2017年02月13日
linux kernelの脆弱性( CVE-2017-5970 ) 2017年02月13日
linux kernelの脆弱性( CVE-2016-8636 ) 2017年02月12日
bind 9 に設定依存の脆弱性 ( CVE-2017-3135 ) 2017年02月09日
bashの自動補完機能の脆弱性( CVE-2017-5932 ) 2017年02月08日
spiceの脆弱性( CVE-2016-9577 , CVE-2016-9578 ) 2017年02月08日
QEMUの脆弱性( CVE-2017-5898 ) 2017年02月08日
linux kernelの脆弱性( CVE-2017-5897 ) 2017年02月08日
linux kernelの脆弱性( CVE-2016-10208 ) 2017年02月06日
ntfs-3gの脆弱性(CVE-2017-0358) 2017年02月02日
QEMUの脆弱性( CVE-2017-2615 ) 2017年02月02日
tcpdumpに複数の脆弱性(CVE-2016-7922 等) 2017年01月30日
libgdに複数の脆弱性情報 (CVE-2016-9317, CVE-2016-6912, CVE-2016-10167, CVE-2016-10168, CVE-2016-10169) 2017年01月29日
OpenSSLに複数の脆弱性 ( CVE-2017-3730 , CVE-2017-3731 , CVE-2017-3732 ) 2017年01月27日
RunCに関しての脆弱性( CVE-2016-9962 )のPoCとSELinuxによるリスクの軽減 2017年01月26日
systemdの重要な脆弱性( CVE-2016-10156 ) 2017年01月25日
linux kernelの複数の脆弱性( CVE-2016-10153, CVE-2016-10154, CVE-2017-5547, CVE-2017-5548, CVE-2017-5549, CVE-2017-5550, CVE-2017-5551) 2017年01月25日
Katello/Foremanによる運用管理 (Part2) 2017年01月24日
linux kernel(KVMを有効にしている場合)で複数の脆弱性( CVE-2016-10150, CVE-2017-2583 ) 2017年01月21日
OpenSCAP 1.2.13のリリース情報 2017年01月16日
Oracle Javaの脆弱性(CVE-2016-5542, CVE-2016-5554, CVE-2016-5582, CVE-2016-5597, CVE-2016-5573) 2017年01月13日
bind に複数の脆弱性 ( CVE-2016-9131 , CVE-2016-9147 , CVE-2016-9444 , CVE-2016-9778 ) 2017年01月12日
Dockerに特権昇格の脆弱性 ( CVE-2016-9962 ) 2017年01月11日
GnuTLS の 脆弱性 (GNUTLS-SA-2017-1 : CVE-2017-5334 , GNUTLS-SA-2017-2 : CVE-2017-5335 , CVE-2017-5336 , CVE-2017-5337 ) 2017年01月11日
OpenSSLの脆弱性(CVE-2016-7056 ) 2017年01月11日
最新の記事 - もっと...