パッケージ(アプリケーション)の整理

前回までの設定で、管理用の端末から SSH で安全にアクセスできる状態になり、不要なアクセスは iptables/ip6tables で拒否するようにした。しかし、不要なパッケージ(アプリケーション)を含んでいたり、アップデートされていなかったりすると、サーバーはセキュアとはいえない。今回は、パッケージ(アプリケーション)の整理を行う。

作業はすべてsu で root になって実施している。

対象
内部用サーバー
外部用サーバー
OS
CentOS release 5.10

不要なサービスの停止・パッケージの削除

通常は最初に行う作業だが、VPS は root でログインできる状態で提供されているので、最初に SSH と iptables/ip6tables の設定を行った。不要なサービスの停止・パッケージの削除を行おうと思ったのは、主に権限昇格攻撃(分類を参照)を防ぎたかったからだ。

さくらインターネットの VPS の場合、不要なサービスやパッケージはなかったので、実際には調査だけを行った。調査の過程を記録として残し、停止や削除を行う方法を記述する。

不要なサービスの停止

不要なサービスを洗い出すために、chkconfig や netstat を利用した。

netstat

netstat は、ネットワーク接続や、ルーティングテーブル、インターフェースの表示を行うためのツールだ。今回は、通信で待ち受けを行うサービスを調べるために「-l」オプションを使った。「-n」は、アドレスやポート番号を数値で表示するためのオプション、「-p」は、プログラムの名前と PID を表示するためのオプションだ。「-p」オプションは、root 権限が必要になる。

[root@server ~]# netstat -lnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address  Foreign Address State  PID/Program name
tcp        0      0 0.0.0.0:[port] 0.0.0.0:*       LISTEN 1676/sshd
tcp        0      0 :::[port]      :::*            LISTEN 1676/sshd
udp        0      0 [ip]:123       0.0.0.0:*              1687/ntpd
udp        0      0 127.0.0.1:123  0.0.0.0:*              1687/ntpd
udp        0      0 0.0.0.0:123    0.0.0.0:*              1687/ntpd
udp        0      0 ::1:123        :::*                   1687/ntpd
udp        0      0 [ipv6]:123     :::*                   1687/ntpd
udp        0      0 :::123         :::*                   1687/ntpd
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node PID/Program name Path
...

[port] と記述している箇所は、sshd の待ち受けポートだ。「123」は、ntpd が待ち受けを行っている。ntpd は時間を合わせるためのデーモンなので、動作させている。今回の環境では不要なサービスは存在しなかったが、意図していないサービスの待ち受けがある場合は、chkconfig で停止する必要がある。

chkconfig

chkconfig は、システムサービスの情報を表示したり更新するプログラムだ。表示は、「–list」オプションをつけて実行する。0~6の数字は、UNIX のランレベルを示す。

[root@server ~]# chkconfig --list
NetworkManager  0:off   1:off   2:off   3:off   4:off   5:off   6:off
acpid           0:off   1:off   2:on    3:on    4:on    5:on    6:off
anacron         0:off   1:off   2:off   3:off   4:off   5:off   6:off
atd             0:off   1:off   2:off   3:on    4:on    5:on    6:off
...

今回は不要なサービスが見つからなかったが、不要なサービスがあれば chkconfig にサービス名と「off」という引数を渡して実行する。問題なく設定できた場合、実行結果は特に表示されない。

[root@server ~]# chkconfig NetworkManager off

不要なパッケージの削除

インストールされているパッケージを確認するには、rpm コマンドを使う。「-q」オプションはパッケージを検索することを意味し、「-a」オプションはすべてのパッケージを対象にすることを意味する。非常に長いリストなので、ファイルに保存した。

[root@server ~]# rpm -qa > packages.txt

不要なパッケージを削除する方法は、yum コマンドを使う方法と、rpm コマンドを使う方法がある。
yum コマンドの場合、引数に remove とパッケージ名を渡す。注意が必要なのは、依存するパッケージも削除してしまうこと。つまり、パッケージ「群」を削除することになる。
rpm コマンドの場合は「-e」オプションとパッケージ名を指定する。yum コマンドと異なり、指定したパッケージのみ削除する。また、削除しようとしているパッケージが、他のパッケージに依存されている場合、動作を強制するオプションをつけない限り削除できない。

今回は、不要なパッケージは特になかったので削除しなかった。

[root@server ~]# rpm -e nmap

パッケージの更新

不要なサービスやパッケージはないことがわかったので、最後にインストールしているパッケージを更新して再起動した。

[root@server ~]# yum update
...
[root@server ~]# reboot

ここまでの設定で、とりあえずサーバーはセキュアな状態になったのではないだろうか。次回は、アップデートを自動化を行って初期設定を終える。


1 thoughts on “パッケージ(アプリケーション)の整理

  1. ピンバック: 運用時のパッケージのアップデート | UB Lab.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.