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