Linuxの勉強しました
今日は会社がお休みだったので近所のカフェでMacとLinuxサーバHacks―プロが使うテクニック&ツール100選を持参してちょっと勉強していました。
サーバーが今何をしているかの手がかりを得るには、単にps ax を実行します。ということで、ためしに、grep -v ^# /etc/inetd.confしたのですが、inetd.confがないとおこられてしまった。
〜中略〜
inetdが接続を待ち受けているプログラムについては、 grep -v ^# /etc/inetd.confか、あるいはもっと端的にnetstat-lpを実行して(P.3)より
以下↓/sbin/chkconfigの実行結果抜粋
nfs 0:off1:off2:off3:off4:off5:off6:off
setuidやsetgidされたバイナリの場合、状況が非常に悪くなることがあります。ディストリビューションの管理者は、基地のsetuidやsetgidされたバイナリの不正利用をすべて確実に解消すべく精を出していますが、1〜2ヶ月ごとに予期していない不正な利用方法が新たに登場しているように思います。(P.27より)とあってfind / -perm +6000 -type f -exec ls -ld {} \;とすることで、setuidビットやsetgidビットがセットされたファイルをすべて検出できるとのことで実行したら
-rwsr-xr-x 1 root root 18252 9月14日 2006 /sbin/unix_chkpwdという感じで出力された。
-rwsr-xr-x 1 root root 11112 9月14日 2006 /sbin/pam_timestamp_check
-rwxr-sr-x 1 root root 3816 11月15日 22:55 /sbin/netreport
〜中略〜
-rwsr-xr-x 1 root root 37648 9月20日 2006 /bin/ping
-rwsr-xr-x 1 root root 30744 6月13日 2006 /bin/su
ちなみに
setuidビットを無効にすると、コマンドはもはや一般ユーザからは使用不可能になりますが、rootユーザではきちんと動作します。(P.27より)ということで、本書でかかれていた不要と思われるものをピックアップ。
/usr/bin/atとかはatコマンドを使う必要がない状況なら無効にしてもよいのかも。無効にするにはchmod a-s /usr/bin/atだそうです。
あとは、pingコマンドだけど、ユーザにこれを使わせるかどうかを検討してみてもよいと思うので、自分のVMWare上のやつでは無効にしました。コマンドはchmod a-s /bin/{ping,ping6}とすることで、/bin/ping,/bin/ping6の両方が無効にできるっぽいです。
あと気になったのが、/usr/bin/write。これはちょっと引用すると
writeは他のユーザの端末に書き込むため、ttyグループにsetgidする必要があります。これは一般的には安全な操作ですが、他のユーザの端末に不正なデータを書き込んだり、大量に書き込んだりする不届きな人に悪用されるおそれがあります。(P.28より)ということで、状況によっては無効にしてもいいのかなぁ。
ここで挙げたことは当然絶対的なものではなく、サーバをたてる時に常にその用途を考えて、用途上不要なものは利用しないというのがまずは大事なのかと。
いづれにしても、知らないことが多いので、まだまだ勉強の余地がとっても多いなぁ。。。
Tags:Linux