Your visual how-to guide for SELinux policy enforcement 日本語訳
- ishikawa84g
- 1821
- 0
- 2
- 0
(承前)ポリシーの書き手としては、犬はdog_chowという食べ物を食べる許可があって、猫はcat_chowという食べ物を食べる許可があるべきだと思う。
2014-04-04 15:27:42(承前)allow cat cat_chow:food eat; allow dog dog_chow:food eat;
2014-04-04 15:29:05(承前)これらのルールによってカーネルは猫のプロセスがcat_chowとラベリングされた食べ物を食べることを許可し、犬プロセスがdog_chowとラベリングされた食べ物を食べることを許可する。
2014-04-04 15:30:13(承前)しかし、SELinuxのシステムではデフォルトで全てが拒否される。このことが意味するのは、もし犬プロセスがcat_chowを食べようとしたら、カーネルがそれを防ぐことだ。 (ペンギンが犬を止めてる図)
2014-04-04 15:32:04(承前)現実の世界 Apacheプロセスにhttpd_tというラベルをつけ、Apacheのコンテンツにhttpd_sys_content_tとhttpd_sys_content_rw_tというラベルを付ける。
2014-04-04 15:35:13(承前)mysqld_data_tというラベルのついたMySQLデータベースにクレジットカードのデータが保持されていることを想像してみよう。
2014-04-04 15:35:20(承前)もしApacheプロセスがハックされて、ハッカーがhttpd_tプロセスの制御を奪うことが出来た場合、httpd_sys_content_tファイルを読むことが許可され、httpd_sys_content_rw_tに書き込みが出来る。
2014-04-04 15:36:54(承前)しかし、プロセスがrootとして実行されている場合ですら、ハッカーはクレジットカードのデータ(mysqld_data_t)を読むことは許可されない。この場合、SELinuxは攻撃を最小化している。
2014-04-04 15:38:32(承前)MCS enforcement アナロジー 上で、犬のプロセスと猫のプロセスにタイプ付けをしたが、複数の犬のプロセス、FidoとSpotがある場合には何が起きるだろう。FidoがSpotのdog_chowを食べるのを止めたいとしよう。
2014-04-04 15:40:29(承前)(SPOTと書かれた皿からFidoが食べている図) 一つの解決策は新しいタイプをたくさん作ること、つまり、Fido_dogやFido_dog_chowだ。
2014-04-04 15:41:34(承前)(SPOTと書かれた皿からFidoが食べている図) 一つの解決策は新しいタイプをたくさん作ること、つまり、Fido_dogやFido_dog_chowだ。でも、これはすぐに制御不能になるだろう。なぜなら、全ての犬にはだいたい同じ許可が与えられるからだ。
2014-04-04 15:42:45(承前)これを扱うために、新しい強制の形を開発した。Multi Category Security(MCS)と呼んでいる。
2014-04-04 15:43:48(承前)MCSでは、ラベルに別のセクションを追加して、犬のプロセスとdog_chowという食べ物に適用出来るようにした。つまり、dog:random1(Fido)とdog:random2(Spot)というラベルを犬のプロセスに付与する。
2014-04-04 15:45:43(承前)(FIDOとSPOTの図) 犬の食べ物には、dog_chow:random1(Fido)とdog_chow:random2(Spot)というラベルを付与する。 (DOG_CHOW:RANDOM1の図)
2014-04-04 15:47:06(承前)MCSのルールでは、Type EnforcementのルールがOKで、randomなMCSなラベルが正確に一致する場合にはアクセスが許可され、そうでない場合には拒否される。
2014-04-04 15:49:40(承前)Fido(dog:random1)がcat_chowという食べ物を食べようとして、Type Enforcementによって拒否される。 (TYPE ENFORCEMENTの図)
2014-04-04 15:49:48(承前)Fido (dog:random1)は、dog_chow:random1を食べることは許可される。 (DOG:FIDOの図)
2014-04-04 15:50:45(承前)Fido (dog:random1)がSpotの食べ物(dog_chow:random2)を食べることは拒否される。 (MVC ENFORCEMENTの図)
2014-04-04 15:51:41(承前)現実の世界 コンピュータシステムでは、全てが同じアクセスをする大量のプロセスがあり得るが、それらを区別したいと考える。これはマルチ・テナント環境ではしばしばある。
2014-04-04 15:54:38(訂正)(承前)現実の世界 コンピュータシステムでは、全てが同じアクセスをする大量のプロセスがあり得るが、それらを区別したいと考える。これはしばしばマルチ・テナント環境と呼ばれる。
2014-04-04 15:55:17