TOPサーバ構築・運用> 不必要な起動スクリプトの削除〜lsofで調べ、update-rc.dで削除
仮想化技術 完全攻略ガイド
セキュアなVM環境を作る

第3回:不必要な起動スクリプトの削除と起動プロセスとポートのチェック
著者:宮本 久仁男   2006/10/11
1   2  次のページ
不必要な起動スクリプトの削除〜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

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

1   2  次のページ

宮本 久仁男
著者プロフィール
宮本 久仁男
某大手SIerに勤務。OSおよびミドルウェア、アプリケーション開発、インターネットサーバの運用管理、社内技術支援などを経て、現在は動向調査業務に従事する。業務の傍ら、大学にも所属(博士後期課程)し、研究生活を送る。あらゆる分野に興味を持ち、それらについて自学自習で学びつつ、成果をコミュニティにフィードバックしたり、研究/検証テーマを模索したりという日々。Microsoft MVP (Windows - Security)というアワードも受賞しているものの、どこにでもいそうなエンジニア風。


INDEX
第3回:不必要な起動スクリプトの削除と起動プロセスとポートのチェック
不必要な起動スクリプトの削除〜lsofで調べ、update-rc.dで削除
  起動設定を削除して再起動した後は?〜起動プロセスとポートをチェック