TOMOYO Linuxってなんだ?
TOMOYO Linuxは某CCさんの親友T.Dさんのが名前の由来になっている。元ネタとの関係はLinux「はにゃ~ん♪」化計画を参照、よく考えられてるよ、俺もこんな企画が出来る人になりたいなぁ
名前の由来が漫画だからといって侮る無かれ、TOMOYOはNTTデータがスポンサーについている「強制アクセス制御」の実装だったりする。
「どのプロセスが、どんな資源を使って、何をしようとしているか」を報告させ、場合によっては規制をかけることが出来るという代物。プロセスの動きが見えるのでシステム解析にも使えるらしい。
というわけで、よくわからないので入れてみることにする。
TOMOYO Linuxをインストール
手順はドキュメントをみつつやってみる。まずはマシンの情報を確認
%cat /etc/`ls /etc -F | grep "release$\|version$"` CentOS release 6.2 (Final) %uname -m x86_64物によってはバイナリ版が配布されていたりもするが、Centos 6.2のx86_64版はバイナリ配布はしてないので自前でコンパイルすることに。
まずは必要なパッケージをインストール、まぁ「ncurses-devel」以外はデフォルトで入っていると思うけど・・・
%sudo yum -y install wget patch gcc make ncurses-devel
次にカーネルのソースコードをダウソしてきて展開、展開したフォルダの中に移動する。
%wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.3.4.tar.gz %tar xfvz linux-3.3.4.tar.gz %cd linux-3.3.4続いてカーネルにTOMOYO Linuxのパッチを当てる。
今回使うカーネルは3.3.4なので、パッチのファイル名は「ccs-patch-3.3.diff」
%wget -O ccs-patch-1.8.3-20120401.tar.gz 'http://sourceforge.jp/frs/redir.php?m=jaist&f=/tomoyo/49684/ccs-patch-1.8.3-20120401.tar.gz' %wget -O ccs-patch-1.8.3-20120401.tar.gz.asc 'http://sourceforge.jp/frs/redir.php?m=jaist&f=/tomoyo/49684/ccs-patch-1.8.3-20120401.tar.gz.asc' %gpg ccs-patch-1.8.3-20120401.tar.gz.asc %tar -zxf ccs-patch-1.8.3-20120401.tar.gz %patch -sp1 < patches/ccs-patch-3.3.diff
コンパイル前の初期設定をする。「Security options」内に設定する部分があるが、今回はデフォルト設定でいく。
make -s menuconfig
いよいよコンパイル。
%make -s dep %make -s %make -s modules %sudo make -s modules_install install根気強く待っているとそのうち終わる。
管理ツールのインストールと設定の初期化
TOMOYO Linuxの管理に使う管理ツールを準備する。%wget -O ccs-tools-1.8.3-20120414.tar.gz 'http://sourceforge.jp/frs/redir.php?m=jaist&f=/tomoyo/49693/ccs-tools-1.8.3-20120414.tar.gz' %wget -O ccs-tools-1.8.3-20120414.tar.gz.asc 'http://sourceforge.jp/frs/redir.php?m=jaist&f=/tomoyo/49693/ccs-tools-1.8.3-20120414.tar.gz.asc' %gpg ccs-tools-1.8.3-20120414.tar.gz.asc %tar -zxf ccs-tools-1.8.3-20120414.tar.gz %cd ccs-tools/ %sudo make -s USRLIBDIR=/usr/lib %sudo make -s USRLIBDIR=/usr/lib installこれで「/usr/lib/ccs」以下にTOMOYO Linuxの関連ファイルがインストールされる。
ファイルは揃ったのでとりあえず設定の初期化
%sudo /usr/lib/ccs/init_policy
ブートローダの設定をして再起動
いよいよ再起動のお時間、、、とその前に、起動時にtomoyo linuxが起動するようにブートローダを書き換えます。まずはカーネルのファイル名を確認
ls -l /boot 合計 37981 lrwxrwxrwx 1 root root 22 4月 30 12:05 2012 System.map -> /boot/System.map-3.3.4 -rw-r--r--. 1 root root 2313117 1月 24 12:02 2012 System.map-2.6.32-220.4.1.el6.x86_64 -rw-r--r-- 1 root root 2477173 4月 30 12:05 2012 System.map-3.3.4 -rw-r--r--. 1 root root 100947 1月 24 12:02 2012 config-2.6.32-220.4.1.el6.x86_64 drwxr-xr-x. 3 root root 1024 1月 31 12:27 2012 efi drwxr-xr-x. 2 root root 1024 4月 30 14:20 2012 grub -rw-r--r--. 1 root root 15569772 1月 31 12:29 2012 initramfs-2.6.32-220.4.1.el6.x86_64.img -rw-r--r-- 1 root root 10235246 4月 30 12:06 2012 initramfs-3.3.4.img drwx------. 2 root root 1024 1月 31 12:21 2012 lost+found -rw-r--r--. 1 root root 171175 1月 24 12:02 2012 symvers-2.6.32-220.4.1.el6.x86_64.gz lrwxrwxrwx 1 root root 19 4月 30 12:05 2012 vmlinuz -> /boot/vmlinuz-3.3.4 -rwxr-xr-x. 1 root root 3940016 1月 24 12:02 2012 vmlinuz-2.6.32-220.4.1.el6.x86_64 -rw-r--r-- 1 root root 4070368 4月 30 12:05 2012 vmlinuz-3.3.4日付とバージョン的に考えて、「vmlinuz-3.3.4」が新しいカーネルなんだねきっと。
というわけでGRUBの設定ファイルを確認。
「/boot/grub/grub.conf」を見て「vmlinuz-3.3.4」の設定が増えてるっぽいところを確認、上の方に書かれているので「default=0」としてvmlinuz-3.3.4が起動するように変更。
default=0 timeout=5 #splashimage=(hd0,0)/grub/splash.xpm.gz serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1 terminal --timeout=10 serial console hiddenmenu title CentOS (3.3.4) root (hd0,0) kernel /vmlinuz-3.3.4 ro root=UUID=7e0438cf-9f72-4c99-9e4e-17836e4810ae rd_NO_LUKS rd_NO_MD quiet SYSFONT=latarcyrheb-sun16 rhgb crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=jp106 LANG=C rd_NO_LVM rd_NO_DM nomodeset clocksource=hpet console=tty0 console=ttyS0,115200n8r initrd /initramfs-3.3.4.img title CentOS (2.6.32-220.4.1.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-220.4.1.el6.x86_64 ro root=UUID=7e0438cf-9f72-4c99-9e4e-17836e4810ae rd_NO_LUKS rd_NO_MD quiet SYSFONT=latarcyrheb-sun16 rhgb crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=jp106 LANG=C rd_NO_LVM rd_NO_DM nomodeset clocksource=hpet console=tty0 console=ttyS0,115200n8r initrd /initramfs-2.6.32-220.4.1.el6.x86_64.img
そしていよいよreboot!
%sudo reboot起動したのでカーネルが変わっているか確認してみる。
%uname -s -r Linux 3.3.4よいらしい、なのでさっそく試してみる。
TOMOYO Linuxの起動確認
TOMOYO Linuxの「ccs-editpolicy」という管理ツールを使ってドメインを見てみる%sudo /usr/sbin/ccs-editpolicy「ドメイン」というのは「プロセスの実行履歴」ということらしい。
ということは、これを確認すれば「どういう経路を伝ってだれに呼ばれたのか?」がわかるということだ。
そこでいま起動した「ccs-editpolicy」を探してみたところ、こんな感じらしい。
<kernel> /usr/sbin/sshd /bin/bash /usr/sbin/ccs-editpolicyこの記述によると、呼び出しの順番はこんな感じ。
- kernel
- sshd
- bash
- ccs-editpolicy
このように、実行履歴(TOMOYO用語でドメイン)がわかるので、ドメインに対する権限を調整すると、「sshログインではXXできるが、telnetログインではできない」というようなアクセス制御が出来るらしい。
つまり、「リモートログインのやつにはsuやsudoさせない」とかいうことも可能ってことなのか?。
TOMOYO Linuxの使い道?
ドメイン(実行履歴)がわかるというのはなかなか面白いことだと思う。たとえばなんだか分からないプロセスが動いていたとして、ドメインを確認すればだいたい何をしているのかわかるかもしれない、「こいつがこれを呼ぶのはおかしい、ウィルスじゃね?」とかもわかるわけだ。
設定とかをもろもろした直後の、ウィルスなどに感染する前のドメインをすべて記録して、それ以外をすべて禁止すれば、ウィルスを送り込まれてもビクともしないシステムにできるかもしれない。
システムの振る舞いを調べたい人やセキュリティに興味が有る人は暇な時にためしてみるといいよ〜
0 comments:
コメントを投稿