現在位置: ホーム / セキュリティ ブログ / SELinuxの現在の動向

SELinuxの現在の動向

前回に引き続き、LSMに含まれるモジュールの現在の動向を紹介します。まず最初に、SELinuxの現在の動向について紹介します。

こんにちは。SIOS OSSエバンジェリストの面です。

前回のお話に引き続き、今回からLinux Security Modules(LSM)の中のモジュールを一つずつ取り上げて動向を説明していきます。


今回は、一番有名なLSMモジュールである「SELinux」の現在の動向について説明します。

 


  • SELinuxとは

SELinuxは広く知られている通り、NSAが開発したセキュリティモジュールです。Type Enforcemntモデルとリファレンスモニタのコンセプトを用いることにより、Linuxに強制アクセス制御を導入することが可能になります。

SELinuxは特にRedHat系の様々なディストリビューションで組み入れられているため、RedHatやCentOS、Oracle Linuxなどをインストールするとデフォルトで組み入れられています。これにより、SELinuxを有効にすることでroot特権を縛ることが出来たり、アプリケーションに与える権限を最小化することが出来るため、アプリケーションに脆弱性が発見されて悪用された場合にも被害を局所化することができます。

SELinuxは前述したとおりTypeEnforcementモデルでセキュリティを制御しています。このモデルでは、全てのサブジェクト(動作主体・主にプロセス)とオブジェクト(アクセスリソース・主にファイル・デバイス・ソケット・プロセスなど)に、通常のrwxやUID/GIDとは別に、SELinux独自の「コンテキスト(contexts)」を付与します。このコンテキストは

・ユーザ(user)
・ロール(role)
・タイプ(type)
・MLS(MLS)

によって"ユーザ:ロール:タイプ:MLSレベル"のように構成されています。

この中でも、ロールとユーザはオブジェクトを限定する際などに使われる物で、SELinuxでは>、大部分はタイプ/ドメインに関して記載されたポリシ(アクセス制御の設定ファイル)に基づいてアクセス制御が行われています。そのため、"Type Enforcement"モデルと呼ばれています。このアクセス制御は、システム上の全ての挙動に対して確実に行われており(リファレンスモニタ)、これによりrootを含む全てのユーザのアクセスを細かく制限することが可能になっています。

ここではSELinuxの動向についてお話したいため、SELinuxの詳しい説明は省略させていただきます。SELinuxに関しての詳しい説明は、数多のWebサイトや書籍などを参考にして下さい。 また、LPIからダウンロードできる「Linuxセキュリティ標準教科書(Ver1.0.0)」にも記載されています。


  • 各ディストリビューションでのSELinuxの状況について

まず、現状のディストリビューションに含まれているSELinuxのバージョンを比較してみました。各ディストリビューションは、現時点(2015/09/15)で最新のパッケージにアップデートしたバージョンで比較しています。

ディストロ名 ディストロバージョン カーネルバージョン ポリシバージョン selinux-utilsバージョン policycoreutilsバージョン
Fedora Linux 23(Alpha) linux-4.2.0 3.13.1(2.20130424) 2.4-1 2.4-7
RedHat Enterprise Linux/CentOS 7.1/7.1.1503 linux-3.10 3.13.1(2.20130424) 2.2.2 2.2.5
OracleLinux(RHCK/UEKr3) 7.1 linux-3.10/linux-3.8 3.13.1(2.20130424) 2.2.2 2.2.5
Ubuntu Server 15.04 linux-3.19 2.20091117 2.3-2 2.3-1

UbuntuはデフォルトでAppArmorを採用しているため、SELinuxをインストール・有効にする際にはAppArmorをアンインストールする必要が有ります。その辺りはaptitudeツールでケアしてくれます。

 root@ubuntu:~# aptitude install selinux 以下の新規パッケージがインストールされます: checkpolicy{a} libapol4{a} libauparse0{a} libqpol1{a} policycoreutils{a} python-audit{a} python-ipy{a} python-selinux{a} python-semanage{a} python-sepolgen{a} python-sepolicy{a} python-setools{a} selinux{b} selinux-policy-default{a} selinux-policy-ubuntu{ab} selinux-utils{a} setools{a} 0 個のパッケージを更新、 17 個を新たにインストール、 0 個を削除予定、0 個が更新 されていない。 9,050 k バイトのアーカイブを取得する必要があります。 展開後に 58.4 M バイトのデ ィスク領域が新たに消費されます。 以下のパッケージには満たされていない依存関係があります: selinux : 競合: apparmor [2.9.1-0ubuntu9 が既にインストール済みです] selinux-policy-ubuntu : 競合: selinux-policy-default [2:2.20140421-9 がインストール予定となっています] 以下のアクションでこれらの依存関係の問題は解決されます: 以下のパッケージを削除する: 1) apparmor 以下のパッケージを現在のバージョンに一時固定する: 2) selinux-policy-default [インストールされていません] 以下の依存関係を未解決のままにする: 3) ubuntu-standard が apparmor を推奨 この解決方法を受け入れますか? [Y/n/q/?] 

SELinux自体は、メインラインのKernelに組み込まれているため、各ディストリビューションでの対応状況は、そのまま各ディストリビューションで用意されているKernelのバージョンに紐付いています。

そのため、各ディストリビューションでのバージョンを単純に比較するのは難しいのですが、比較する目処としてSELinuxのポリシ(refpolicy)のバージョンがあります。

SELinuxのポリシ(Refpolicy)はTresysのGitHubからダウンロードできますが、最新バージョンは2.20141203になっています。この事から、相変わらずですがSELinuxのポリシなど最新バージョンを使う場合には、Fedoraが一番最新に近い環境を得ることが出来ると言うことが言えます。

 


  • SELinux自体の開発状況

SELinuxはTypeEnforcementのモデル自身も、実装も既に枯れたものになるため、根本部分を大きく変えるというものは中々ありません。そのため、上で記載したようなSELinuxの原理部分に関しては引き続き同じ状態です。

しかし、SELinuxポリシの記述方法やテスト環境、応用範囲など、SELinuxをうまく使おうとする部分に関しては精力的に開発が続けられています。

2015年にシアトルで開催されたLinux Security Summit 2015の中でSELinuxに関しての開発状況がRed HatのPaul Mooreにより発表されていますが、その資料「State of SELinuxによると、以下のプロジェクトが主だった動きになります。

CILは、現時点で提供されているポリシの上に位置し、よりポリシを簡単に記載するためのものです。このCILを使うことにより、ポリシの開発が50-70%早くなると言われています。CILに関しては、Fedora23から取り込まれています。

SELinux TestSuiteは、Linux Test Project(Linuxの信頼性、堅牢性、安定性を検証するプロジェクト)の中の一部分として作成されています。このSELinux TestSuiteでもいくつかのテストが追加・更新されているようです。

SELinuxをAndroidに適用する試みです。SELinuxはOS上で動作するアプリケーションが増えるたびにポリシの追加が必要になるため、動作するアプリケーションが制限されているAndroid端末などの組み込み機器にベストなセキュリティソリューションです。このSE-Androidも精力的に開発がされています。

  • 次回予告

 

次回から、更に踏み込んでSELinuxのCILを見ていきます。

[参考]
Linux Security Summit 2015

Linux Test Project

SE-Android
OSSよろず相談室

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

問い合わせボタン

最新の記事
linux kernelの脆弱性( CVE-2017-7477 ) 2017年04月25日
linux kernelの脆弱性( CVE-2017-8106 ) 2017年04月25日
MySQLの脆弱性情報(Oracle Critical Patch Update Advisory April) 2017年04月24日
QEMUの脆弱性( CVE-2017-7980 ) 2017年04月24日
Oracle Javaの脆弱性(Oracle Critical Patch Update Advisory - April 2017) 2017年04月22日
Nessusの脆弱性(CVE-2017-7849, CVE-2017-7850) 2017年04月20日
OpenIDMに複数の脆弱性情報(CVE-2017-7589, CVE-2017-7590, CVE-2017-7591) 2017年04月19日
linux kernelの脆弱性( CVE-2017-7645 ) 2017年04月19日
LightDMに特権昇格の脆弱性 (CVE-2017-7358 ) 2017年04月19日
linux kernelの脆弱性( CVE-2017-7889 ) 2017年04月17日
GnuTLS の 脆弱性 (GNUTLS-SA-2017-3 : CVE-2017-7869 ) 2017年04月14日
wiresharkに複数の脆弱性(CVE-2017-7700, CVE-2017-7701, CVE-2017-7702, CVE-2017-7703, CVE-2017-7704, CVE-2017-7705, CVE-2017-7745, CVE-2017-7746, CVE-2017-7747, CVE-2017-7748 ) 2017年04月14日
linux kernelの脆弱性( CVE-2017-2618 ) 2017年04月14日
bind 9 に複数の脆弱性 ( CVE-2017-3136 , CVE-2017-3137 , CVE-2017-3138 ) 2017年04月13日
linux kernelの脆弱性( CVE-2017-7616, CVE-2017-7618 ) 2017年04月11日
Tomcatに複数の脆弱性 ( CVE-2017-5647, CVE-2017-5648, CVE-2017-5650, CVE-2017-5651 ) 2017年04月11日
linux kernelの脆弱性( CVE-2017-7286, CVE-2017-7319 ) 2017年04月11日
binutilsの脆弱性( CVE-2017-7614 ) 2017年04月10日
elfutilsに複数の脆弱性(CVE-2017-7607, CVE-2017-7608, CVE-2017-7609, CVE-2017-7610, CVE-2017-7611, CVE-2017-7612, CVE-2017-7613 ) 2017年04月10日
linux kernelの脆弱性( CVE-2017-2671 ) 2017年04月05日
Xenの脆弱性 ( XSA-212: CVE-2017-7228 ) 2017年04月05日
linux kernelの脆弱性( CVE-2016-10229 ) 2017年04月04日
linux kernelの脆弱性( CVE-2017-7374 ) 2017年04月01日
linux kernelの脆弱性( CVE-2017-2647 ) 2017年04月01日
linux kernelの脆弱性( CVE-2017-7308 ) 2017年03月30日
curlの脆弱性 ( CVE-2017-2628 ) 2017年03月30日
linux kernelの脆弱性( CVE-2017-7277 ) 2017年03月29日
ntpに複数の脆弱性(CVE-2017-6451, CVE-2017-6452, CVE-2017-6455, CVE-2017-6458, CVE-2017-6459, CVE-2017-6460, CVE-2017-6462, CVE-2017-6463, CVE-2017-6464 ) 2017年03月28日
linux kernelの脆弱性( CVE-2017-7273 ) 2017年03月28日
AppArmorの脆弱性( CVE-2017-6507 ) 2017年03月26日
linux kernelの脆弱性( CVE-2017-7261 ) 2017年03月25日
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日
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日
最新の記事 - もっと...