TOPサーバー構築・運用> lsofでプロセスを調べ、yumでパッケージを特定、削除する
仮想化技術 完全攻略ガイド
セキュアなVM環境を作る

第5回:不要なモノの削除〜CentOS編
著者:宮本 久仁男   2006/10/24
前のページ  1  2
lsofでプロセスを調べ、yumでパッケージを特定、削除する

   特定のポートで待ち受けているプロセスが何かは、lsofコマンドを用いることで調査できます。ポート25番で待ち受けているプロセスと、そのプロセスが何のパッケージに依存しているか? を調べてみましょう。

   root権限で「lsof -i [ポート番号]」と実行することで、どのプロセスがそのポート番号を使っているかを特定できます。また、ポート番号の前に「TCP:」や「UDP:」と付加することで、TCPもしくはUDPに限定して調べることもできます。ここではTCPのポート番号25を使っているプロセスということで、リスト16のような結果が得られました。これで、sendmailコマンドが当該ポートで待ち受けを行っていることがわかります。

リスト16:ポート25番での接続待ちプロセスを調べる
ポート25番での接続待ちプロセスを調べる
(画像をクリックすると別ウィンドウに拡大図を表示します)

   それでは次に、sendmailコマンドは何のパッケージに属してるのかを調べましょう。これは、yumコマンドのwhatprovidesサブコマンドを使うことで特定可能です。出力結果はいささか冗長なので、インストールされているパッケージを特定するために、grepで「installed」という文字列を探してみましょう(リスト17)。

リスト17:sendmailが属するパッケージを調べる
sendmailが属するパッケージを調べる
(画像をクリックすると別ウィンドウに拡大図を表示します)

   logwatch.noarchは、出力されたログを監視するためのパッケージなので、はずさなくても外部待ち受けを行うものを何とかするという観点からは支障はありません。このため、sendmail.i386のみを削除する対象とします。

   このようにして、すべてのポートについて関連するパッケージまでを調査していくと、今回除外するものは以下のようになります。

  • sendmail.i386
  • portmap.i386
  • nfs-utils.i386
  • cups.i386

表12:除外するもの

   上記の作業において、dhclient.i386も特定されますが、環境によってはこのパッケージが必要なこともあるので、あえて削除はしません。

   それでは、これらのパッケージを削除してみましょう。これには、yumのremoveサブコマンドを用います。例えば、sendmail.i386を削除する際には、「yum remove sendmail.i386」として実行します。パッケージ名には、複数パッケージを指定することも可能です。ここでは、上記のパッケージをすべて指定して削除してみましょう(リスト18)。

リスト18:パッケージを削除
パッケージを削除
(画像をクリックすると別ウィンドウに拡大図を表示します)

   最終的に、削除されるパッケージおよび、依存関係上削除されるパッケージの両方が表示されます。問題なければ、「y」と指定して削除しましょう。削除した後のプロセスの状態は、リスト19のとおりになります。

リスト19:パッケージを削除した後のプロセス
パッケージを削除した後のプロセス
(画像をクリックすると別ウィンドウに拡大図を表示します)

   基本的にこれで問題ないと思えばそれでいいのですが、いくつか「これ何?」というようなプロセスもあります。そういうものの中からさらに、明らかに不要と思われるものを消していきます。筆者の場合は、以下のような感じで不要と思えるものを特定しています。

   上記プロセスの中で、筆者の主観ではありますが、「XenのDomain-0上で動作するもの」として、明らかに不要と思えるものは以下のとおりです。

  • ネットワークサービスは使わないので、xinetdは不要
  • Xは使わないので、xfsは不要
  • マウスは使わないので、gpmは不要
  • 電力制御は使わないので、acpidは不要

表13:Domain-0上で動作するもので不要なもの

   その他は、以下のようになります。

  • 固定IPアドレスを割り当てれば、dhclientも不要

表14:他に不要なもの

   なお、D-BUS関連のパッケージは、削除した際に影響が大きいと判断したため、削除はしていません。

   とはいえ、これだけ削れば充分か? と言われると、そうともいえません。ほかに(不要でも)インストールされているものは多くあります。例えば、ここでは動作していませんが、Sambaがインストールされています。こういったものも(必要に応じて)削除していくとよいでしょう。

   ここまでの作業を実施することで、「最小限のネットワークサービス」および「最小限のプロセス」が動作している状態を作り出すことが可能になります。


SSHサーバーとiptablesの設定を実施する

   SSHサーバーは、設定を確認の上で、sargeで掲げたのと同様のポリシーで動作するようにします。iptablesについては、インストール時の設定だけだと細かい制限ができません。このため、/etc/sysconfig/iptablesファイルに対して自分で手を入れる必要があります。

   sargeの節で提示したルールを適用するか、インストール時に自動的に作成されたルール(/etc/sysconfig/iptablesファイルに保存されている)について、ICMPプロトコルの部分を細かく設定してやる必要があります。もちろん、sargeのところで述べたルールをそのまま適用してもかまいません。

前のページ  1  2


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


INDEX
第5回:不要なモノの削除〜CentOS編
  CentOSにおける不要なモノの削除方法とその結果
lsofでプロセスを調べ、yumでパッケージを特定、削除する