2012年2月27日月曜日

iノード番号で find

findコマンドには、inode 番号を指定するオプション '-inum' がある。


find /root/ -inum 261232
/root/.bash_history

このオプションは、今日「SELINUXシステム管理」という本を読んで知った(アクセス拒否の際 audit.log に対象のファイルのinode番号が出力されるので、inode番号からファイルを検索できると便利だよ、との文脈で)。


2012年2月20日月曜日

SEAndroid - security-enhanced version of Android

先月(2012年1月)、"SEAndroid"というのがリリースされたらしい。SELinuxの機能をAndroidでも使えるようにしようという話なので、開発はNSA関係の人が中心に行っている模様。WikiサイトからダウンロードできるPDFに、いろいろと例が載っていた。


このニュースで初めて知ったけれど、Kernel の LSM(Linux Security Module)でAndroidをセキュアOS化する試みはすでにスマートフォンメーカーによって行われているらしい。たとえばSHAPR製のIS01に導入された "Deckard LSM" が一つの例(IS01は、root化に対して確かにセキュアだけど、LSM自体を無効にする方法が発見されてしまったらしい。。。)


今後SEAndroidが普及したら、SELinuxとおなじ効果が享受できるだろうか。ポリシーがきちんと書けていれば侵入攻撃を防御できるので、IDS的な機能を入れなくて済む、セキュリティホールにパッチやアップデートを急いで適用しなくて済む、など(ただしLSM無効化は無しの前提で)。


2012年2月19日日曜日

ethtoolコマンドでNICの調査と設定

システムの性能が思ったより出ないときなどに、原因の切り分けに使えるツール。


NICの状態を調べるコマンド
# ethtool eth0
Settings for eth0:
       Supported ports: [ TP ]
       Supported link modes:   10baseT/Half 10baseT/Full
                               100baseT/Half 100baseT/Full
                               1000baseT/Full
       Supports auto-negotiation: Yes
       Advertised link modes:  10baseT/Half 10baseT/Full
                               100baseT/Half 100baseT/Full
                               1000baseT/Full
       Advertised pause frame use: No
       Advertised auto-negotiation: Yes
       Speed: 1000Mb/s
(略)
設定を変更するコマンド
# ethtool -s eth1 speed 100 duplex full autoneg off

ethtoolで調べてみると、LinuxホストのNICが 1Gbps まで対応しているのに、古いスイッチングハプを使っているせいで Speed: 100Mbps で通信している、なんてことがごくまれだけどある。

ちなみにWindowsの場合はコマンドプロンプト(cmd)で調べたり設定したりするのはかえって手間がかかるみたい。素直にNICを右クリックしてプロパティを開いてください、と。


Perlの 'x' オペレータ(repetition operator)

たとえば Ruby や Python で "4444" という文字列を出力したいときは、'*'演算子を使って次のように書く。

$ ruby -e 'p "4" * 4'
"4444"
$ python -c 'print "4" * 4'
4444

一方、Perlの場合は'x'演算子(アルファベットのx)を使う。

$ perl -e 'print "4" x 4, "\n"'
4444

さらに、リストコンテキストで使った場合はリスト内の要素を複製できる。

perl -e '@a = (1, 2) x 4; print join (":", @a), "\n"'
1:2:1:2:1:2:1:2

ちなみに、この演算子は"perldoc perlop"によると"repetition operator"と呼ばれている。

2012年2月13日月曜日

sesearchコマンドの例(SELinux)

"sesearch" は、SELinuxが動いている環境でポリシー設定を調査するときに使うコマンド。CentOS-6.0の場合は "setools-console" というパッケージに入っている。

コマンドの使用例が "man sesearch" しても出てこないので、ちょっと探してみた。


Redhat Enterprise Linux 6 の User Guide から

ポリシーファイルを指定して、"role allow rule"を検索
# sesearch --role_allow -t httpd_sys_content_t /etc/selinux/targeted/policy/policy.24
※"role allow rule"についてはNSAのドキュメント Policy Language and the Example Policy Configuration に書いてある。
※"-t httpd_sys_content_t"の部分がちょっと謎。"--role_allow"と一緒に指定する意味がわからない。現実的には、ソースやターゲットのロールを指定することが多いと思われる('--role_source', '--role_target')。
# sesearch --role_allow --role_source unconfined_r
Found 1 role allow rules:
  allow unconfined_r system_r;
# sesearch --role_allow --role_target sysadm_r
Found 2 role allow rules:
  allow system_r sysadm_r;
  allow staff_r sysadm_r;
"allow"ルールの総数を調べる
# sesearch --allow | wc -l
"dontaudit" ルールの総数を調べる
# sesearch --dontaudit | wc -l

Gentoo Linux の マニュアル から

shadow_t タイプのファイルへの書き込みが許可されているドメインを調べる
# sesearch -t shadow_t -c file -p write -A
file_type 属性への書き込みが許可されているドメインを調べる('-d' で direct search)
# sesearch -t file_type -c file -p write -A -d
"global_ssp"というSELinux boolean に関連するポリシーを調べる
# sesearch -b global_ssp -A -C -d

日本セキュアOSユーザ会のかたの資料から

httpd_t の httpd_sys_content_t に対する定義を確認する
# sesearch -A -C -s httpd_t -t httpd_sys_content_t