セキュアなVM環境を作る 3

不必要な起動スクリプトの削除と起動プロセスとポートのチェック

不必要な起動スクリプトの削除〜lsofで調べ、update-rc.dで削除   リスト1を見ると、今回構築するサーバーでは不要と思われるプロセスがいくつかあります。inetd、portmap、rpc.statdなどは、Xenを使うにあたっては不必要なものです。

宮本 久仁男

2006年10月11日 20:00

不必要な起動スクリプトの削除〜lsofで調べ、update-rc.dで削除

   リスト1を見ると、今回構築するサーバーでは不要と思われるプロセスがいくつかあります。inetd、portmap、rpc.statdなどは、Xenを使うにあたっては不必要なものです。

   update-rc.dは、/etc/init.d配下のスクリプトについて、/etc/rcX.d配下にリンクを作成し、プログラムを起動したり終了したりという動作を制御するためのコマンドです。

   一方で、リスト2を見ると、本来必要なSSHの待ち受けに使われる以外のポートでも何かの待ち受けが行われています。ポートとプロセスの関係を見る ためにlsofというコマンドを使いましょう。ポート22番での接続待ちをしているプロセスを特定するためには、以下のようにします(注2)。

# lsof -i TCP:22

※注2: root権限で実行する必要があります。

   結果は、たとえばリスト6のようになります。

リスト6:ポート22番での接続待ちプロセスを調べる


COMMAND PID     USER FD  TYPE DEVICE SIZE NODE NAME
sshd    820     root  3u IPv4    898&nbs
p;      TCP *:ssh (LISTEN)
sshd    887     root  4u IPv4   2666       TCP 192.168.149.240:ssh-
                                              >192.168.149.1:1685 (ESTABLISHED)
sshd    889 wakatono  4u IPv4   2666       TCP 192.168.149.240:ssh-
                                               >192.168.149.1:1685 (ESTABLISHED)

   lsofを用いて、SSH以外のポートを調べると、リスト7のようになります。

リスト7:ssh以外の接続待ちプロセスを調べる

TCP704,UDP698,UDP701:/sbin/rpc.statd
TCP111(sunrpc),UDP111(sunrpc):/sbin/portmap
TCP113(auth):/usr/sbin/inetd

   rpc.statd、portmap、inetdのそれぞれが、どのようなパッケージに属しているのかを調べるには、dpkg-queryコマンドを使います。たとえば、rpc.statdについて調べるには、以下のようにコマンドを実行します。



# dpkg-query -S /sbin/rpc.statd
nfs-common: /sbin/rpc.statd

   このような形で、nfs-commonパッケージに含まれることがわかります。コマンド/sbin/rpc.statdは、/etc/init.dのnfs-commonスクリプトから起動されます(grepなどで調べましょう)。

   同じことを、他の(身に憶えのない)ポート番号についても調査すると、/etc/init.d配下のスクリプトであるinetdおよび portmapによって、それぞれのポート番号を使うプログラムが起動されていることがわかります。これらの起動を止めましょう。ここではじめて、 update-rc.dを使うことになります。具体的には、以下のようなコマンドラインを実行します。



# update-rc.d -f nfs-common remove # update-rc.d -f inetd remove # update-rc.d -f portmap remove

   上記のようにすることで、起動時の当該サービスの自動起動は避けられます。

   例えば、「update-rc.d -f nfs-commonremove」を実行した場合、リスト8のような結果になります。

リスト8:サービスの自動起動を止める

pigeon:~# update-rc.d -f nfs-common remove
update-rc.d: /etc/init.d/nfs-common exists during rc.d purge (continuing)
   Removing any system startup links for /etc/init.d/nfs-common ...
      /etc/rc0.d/K79nfs-common
      /etc/rc1.d/K79nfs-common
      /etc/rc2.d/S21nfs-common
      /etc/rc3.d/S21nfs-common
      /etc/rc4.d/S21nfs-common
      /etc/rc5.d/S21nfs-common
      /etc/rc6.d/K79nfs-common

   なお、ここではパッケージ名を調べ、起動しないようにしていますが、パッケージ名がわかった時点で当該パッケージを削除するということも可能です。 ただし、パッケージ間の依存関係にひきずられて、意図せぬパッケージが削除されてしまうこともありますので、削除の際にはその部分に注意してください。

 

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る