5月版 「LSM不要論」に揺れるSELinux&AppArmor
上川純一
日本ヒューレット・パッカード株式会社
コンサルティング・インテグレーション統括本部
2006/5/30
LSMなんて要らない!?
Linuxカーネルには、LSM(Linux Security Module)という機構があります。SELinuxなどのセキュリティ機構をカーネルに導入するための仕組みです。
Torok Edwinは、「FireFlier」というLSMモジュールを提案しました。ネットワークのフィルタリングをするためのモジュールです。しかし、「SELinuxのモジュールとして実装して、そっちに統合せよ」という意見が多く出されました。その流れから、「そもそもLSMは使いにくい」という話題になりました。そこからさらに、「LSMのモジュールとして実装されてメインラインに取り込まれているのは現状SELinuxだけなので、LSM自体を削除しよう」という話に展開しました。
すると困るのは、LSMモジュールとして実装されているAppArmorです。AppArmorはSUSE Linuxに取り込まれているセキュリティ機構です。SELinuxに似た機能を実現でき、より簡単に設定できるのが売りのようです。「LSMを利用しているのがSELinuxだけならLSMを削除しよう」という議論をけん制するかのように、AppArmorをメインラインカーネルにマージすることを目標として、ソースコードが公開されました。
メインラインカーネルにマージするには、議論が必要です。コードの書き方についての話もありましたが、さらにAppArmorにおけるセキュリティモデルが議論の対象となりました。AppArmorは設定対象をファイル名で指定するのですが、「それが良くない」という意見も出ているようです。
関連リンク: | |
SELinux http://www.nsa.gov/selinux/ |
|
AppArmor http://www.novell.com/products/apparmor/ |
|
Linux Security Moduleの取り込み http://www.atmarkit.co.jp/flinux/special/kernel26/kernel26_04b.html |
まだまだspliceの開発は続く
先月の「乱立する仮想化技術を統合しよう」で、spliceとteeシステムコールがメインラインに追加されているとお伝えしました。
Jens Axboeは、Nick PigginがメンテナンスしているLockless pagecacheパッチ(注)に関するベンチマーク結果をLKMLに投稿しました。複数のプロセスが全力で/dev/nullに対してspliceするという非現実的な設定ではありますが、Lockless pagecacheパッチを使った方がパフォーマンスは改善するという結果が出たようです。ただ、「Lockless pagecacheのコードは複雑で分かりにくい」とAndrew Mortonが指摘しました。
注:RCUを利用することでメモリ管理機構の中でロックが必要な部分を減らし、メモリ管理の高速化を狙ったパッチ。複雑なことと、ベンチマークの結果大した効果が見られなかったことから、不遇だった。 |
spliceシステムコールはLinux独自の実装であるため、これを利用するアプリケーションはLinux専用になってしまいます。spliceに最適化したとして、それがどれくらい利用されるのかという観点も踏まえて、今後も検討が必要でしょう。
なお、4月26日にリリースされたカーネル2.6.17-rc3では、vmspliceシステムコールが追加されました。spliceはファイルディスクリプタからの転送でしたが、vmspliceはユーザー空間のメモリバッファからパイプにデータを転送するシステムコールです。例えば、オーディオデータを処理した結果をゼロコピーでストリーミングする、といった用途が考えられそうです。
-stableリリースは大忙し
4月は、10の安定版リリースが出ました。セキュリティホールが発見されるたびに慌ただしく新しいリリースが出たので、利用者側は追いかけるのが大変だったのではないでしょうか?
- 2.6.16.2(4月7日)
・32bitシステムで4Gbytes以上メモリを搭載している場合、/proc/vmcoreがオーバフローすることへの対応
・Kconfig: FW_LOADERが必要なドライバに関して、FW_LOADERを選択する
・sysfsのバッファを0で終端させる(CVE-2006-1055)
など、25パッチ
- 2.6.16.3(4月10日)
・Keyを追加する場合にoopsが発生するのを修正(CVE-2006-1522)
- 2.6.16.4(4月11日)
・RCUのsignal handlingのためにBUG_ONを削除
- 2.6.16.5(4月12日)
・Intel EM64Tの例外ハンドリングの差異への対応(CVE-2006-0744)
など、2パッチ
- 2.6.16.6(4月17日)
・shmatが読み込み専用でも書き込み権限を与えてしまうのを修正(CVE-2006-1524)
・RLIMIT_CPU(ulimit -t)が0の場合の挙動を、1の場合と同じに変更
・sysfsのブロックデバイスのシンボリックリンクの名前が/の場合に対処
など、23パッチ
- 2.6.16.7(4月17日)
・MADV_REMOVEの脆弱性を修正(CVE-2006-1524のやり直し)
- 2.6.16.8(4月18日)
・ip_route_inputがpanicするのを修正(CVE-2006-1525)
- 2.6.16.9(4月18日)
・AMD CPUの浮動小数点用レジスタのプロセス間での情報漏えいを修正(CVE-2006-1056)
- 2.6.16.10(4月24日)
・システムコールハンドラがtail-callしている問題の修正
・alim15x3のドライバのIDのアップデート
・ArmadaノートブックでのAPMの挙動の修正
など、22パッチ
- 2.6.16.11(4月24日)
・CIFSのセキュリティホールの修正(CVE-2006-1863)
2/2
|
|
|
||||
|
連載 Linux Kernel Watch |
Linux Squareフォーラム Linuxカーネル関連記事 |
連載:Linux Kernel Watch(連載中) Linuxカーネル開発の現場ではさまざまな提案や議論が交わされています。その中からいくつかのトピックをピックアップしてお伝えします |
|
連載:Linuxファイルシステム技術解説 ファイルシステムにはそれぞれ特性がある。本連載では、基礎技術から各ファイルシステムの特徴、パフォーマンスを検証する |
|
特集:全貌を現したLinuxカーネル2.6[第1章] エンタープライズ向けに刷新されたカーネル・コア ついに全貌が明らかになったカーネル2.6。6月に正式リリースされる予定の次期安定版カーネルの改良点や新機能を詳しく解説する |
|
特集:/procによるLinuxチューニング[前編] /procで理解するOSの状態 Linuxの状態確認や挙動の変更で重要なのが/procファイルシステムである。/procの概念や/procを利用したOSの状態確認方法を解説する |
|
特集:仮想OS「User
Mode Linux」活用法 Linux上で仮想的なLinuxを動かすUMLの仕組みからインストール/管理方法やIPv6などに対応させるカーネル構築までを徹底解説 |
|
Linuxのカーネルメンテナは柔軟なシステム カーネルメンテナが語るコミュニティとIA-64 Linux IA-64 LinuxのカーネルメンテナであるBjorn Helgaas氏。同氏にLinuxカーネルの開発体制などについて伺った |
|
|
- 【 pidof 】コマンド――コマンド名からプロセスIDを探す (2017/7/27)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンド名からプロセスIDを探す「pidof」コマンドです。 - Linuxの「ジョブコントロール」をマスターしよう (2017/7/21)
今回は、コマンドライン環境でのジョブコントロールを試してみましょう。X環境を持たないサーバ管理やリモート接続時に役立つ操作です - 【 pidstat 】コマンド――プロセスのリソース使用量を表示する (2017/7/21)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。 - 【 iostat 】コマンド――I/Oデバイスの使用状況を表示する (2017/7/20)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、I/Oデバイスの使用状況を表示する「iostat」コマンドです。
|
|