Your visual how-to guide for SELinux policy enforcement 日本語訳

@rioriostさんが@rhatdanさん(SELinux神)の記事「Your visual how-to guide for SELinux policy enforcement」を訳してくれました。
4
衛星経由で監視されてるハムスター🐹 @rioriost

(承前)ポリシーの書き手としては、犬はdog_chowという食べ物を食べる許可があって、猫はcat_chowという食べ物を食べる許可があるべきだと思う。

2014-04-04 15:27:42
衛星経由で監視されてるハムスター🐹 @rioriost

(承前)SELinuxではこのルールをポリシーに書く。

2014-04-04 15:28:19
衛星経由で監視されてるハムスター🐹 @rioriost

(承前)allow cat cat_chow:food eat; allow dog dog_chow:food eat;

2014-04-04 15:29:05
衛星経由で監視されてるハムスター🐹 @rioriost

(承前)これらのルールによってカーネルは猫のプロセスがcat_chowとラベリングされた食べ物を食べることを許可し、犬プロセスがdog_chowとラベリングされた食べ物を食べることを許可する。

2014-04-04 15:30:13
衛星経由で監視されてるハムスター🐹 @rioriost

(承前)しかし、SELinuxのシステムではデフォルトで全てが拒否される。このことが意味するのは、もし犬プロセスがcat_chowを食べようとしたら、カーネルがそれを防ぐことだ。 (ペンギンが犬を止めてる図)

2014-04-04 15:32:04
衛星経由で監視されてるハムスター🐹 @rioriost

(承前)同様に猫が犬の食べ物を触れることも許可されない。 (ペンギンが「だめ!このクソ猫!」の図)

2014-04-04 15:33:05
衛星経由で監視されてるハムスター🐹 @rioriost

(承前)mysqld_data_tというラベルのついたMySQLデータベースにクレジットカードのデータが保持されていることを想像してみよう。

2014-04-04 15:35:20
衛星経由で監視されてるハムスター🐹 @rioriost

(承前)もしApacheプロセスがハックされて、ハッカーがhttpd_tプロセスの制御を奪うことが出来た場合、httpd_sys_content_tファイルを読むことが許可され、httpd_sys_content_rw_tに書き込みが出来る。

2014-04-04 15:36:54
衛星経由で監視されてるハムスター🐹 @rioriost

(承前)しかし、プロセスがrootとして実行されている場合ですら、ハッカーはクレジットカードのデータ(mysqld_data_t)を読むことは許可されない。この場合、SELinuxは攻撃を最小化している。

2014-04-04 15:38:32
衛星経由で監視されてるハムスター🐹 @rioriost

(承前)MCS enforcement アナロジー 上で、犬のプロセスと猫のプロセスにタイプ付けをしたが、複数の犬のプロセス、FidoとSpotがある場合には何が起きるだろう。FidoがSpotのdog_chowを食べるのを止めたいとしよう。

2014-04-04 15:40:29
衛星経由で監視されてるハムスター🐹 @rioriost

(承前)(SPOTと書かれた皿からFidoが食べている図) 一つの解決策は新しいタイプをたくさん作ること、つまり、Fido_dogやFido_dog_chowだ。

2014-04-04 15:41:34
衛星経由で監視されてるハムスター🐹 @rioriost

(承前)(SPOTと書かれた皿からFidoが食べている図) 一つの解決策は新しいタイプをたくさん作ること、つまり、Fido_dogやFido_dog_chowだ。でも、これはすぐに制御不能になるだろう。なぜなら、全ての犬にはだいたい同じ許可が与えられるからだ。

2014-04-04 15:42:45
衛星経由で監視されてるハムスター🐹 @rioriost

(承前)これを扱うために、新しい強制の形を開発した。Multi Category Security(MCS)と呼んでいる。

2014-04-04 15:43:48
衛星経由で監視されてるハムスター🐹 @rioriost

(承前)MCSでは、ラベルに別のセクションを追加して、犬のプロセスとdog_chowという食べ物に適用出来るようにした。つまり、dog:random1(Fido)とdog:random2(Spot)というラベルを犬のプロセスに付与する。

2014-04-04 15:45:43
衛星経由で監視されてるハムスター🐹 @rioriost

(承前)(FIDOとSPOTの図) 犬の食べ物には、dog_chow:random1(Fido)とdog_chow:random2(Spot)というラベルを付与する。 (DOG_CHOW:RANDOM1の図)

2014-04-04 15:47:06
衛星経由で監視されてるハムスター🐹 @rioriost

(承前)MCSのルールでは、Type EnforcementのルールがOKで、randomなMCSなラベルが正確に一致する場合にはアクセスが許可され、そうでない場合には拒否される。

2014-04-04 15:49:40
衛星経由で監視されてるハムスター🐹 @rioriost

(承前)Fido(dog:random1)がcat_chowという食べ物を食べようとして、Type Enforcementによって拒否される。 (TYPE ENFORCEMENTの図)

2014-04-04 15:49:48
衛星経由で監視されてるハムスター🐹 @rioriost

(承前)Fido (dog:random1)は、dog_chow:random1を食べることは許可される。 (DOG:FIDOの図)

2014-04-04 15:50:45
衛星経由で監視されてるハムスター🐹 @rioriost

(承前)Fido (dog:random1)がSpotの食べ物(dog_chow:random2)を食べることは拒否される。 (MVC ENFORCEMENTの図)

2014-04-04 15:51:41
衛星経由で監視されてるハムスター🐹 @rioriost

(承前)現実の世界 コンピュータシステムでは、全てが同じアクセスをする大量のプロセスがあり得るが、それらを区別したいと考える。これはマルチ・テナント環境ではしばしばある。

2014-04-04 15:54:38
衛星経由で監視されてるハムスター🐹 @rioriost

(訂正)(承前)現実の世界 コンピュータシステムでは、全てが同じアクセスをする大量のプロセスがあり得るが、それらを区別したいと考える。これはしばしばマルチ・テナント環境と呼ばれる。

2014-04-04 15:55:17