第4回 Apacheセキュリティチェック、PCI DSSの場合


川島 祐樹
NTTデータ・セキュリティ株式会社
コンサルティング本部 PCI推進室
CISSP

2008/12/1
PCI DSSはペイメントカード業界だけではなく、セキュリティのチェックリストにも使える、というのがこの連載の趣旨でした。では、具体的にどのようにチェックを行っているのでしょうか。今回は身近な「Apache」を題材に、セキュリティ評価ベンダがなにをチェックしているのかを解説します(編集部)

 セキュリティ評価ベンダ(QSA)によるPCI DSSの訪問審査では、文書調査やインタビューのほかに、実際のOSやアプリケーションの設定を、画面上で目視確認することで、PCI DSSの要件に対応しているかどうかを調査します。今回は、QSAとして訪問審査を実施する際に確認するシステム上のポイントを、「QSAの視点」と称して、実際のアプリケーションを例に取って解説したいと思います。

【注】
アプリケーションの稼働するシステムやその周辺の物理的/論理的環境、運用方法などに依存しますし、審査を行うQSAによっては、調査の手法に差異がみられるといった可能性もあります。本記事はあくまでご参考にとどめていただき、実際の環境に照らし合わせたときにどうすべきかは、皆さまの環境で確認していただく必要があります。

 UNIX系OSを使用している環境において、WebサーバアプリケーションとしてApacheが一般的に利用されています。対象環境にApacheがあった場合に、PCI DSSの12要件の順序ではなく、どのような点を注意深く確認するのかをご紹介したいと思います。ここで使用する環境は、Linux+Apache 2.2.8です。

 稼働プロセスの確認

 対象範囲内のOSについては、まずネットワーク接続状況と稼働するプロセスを確認しますが、Apache httpdの存在はnetstatやpsで確認することができます。通常、インタビューや文書確認を先に行っており、Apacheが稼働していること自体はすでに分かっています。

 しかし、この時点で“稼働していないはずのApache”を発見することもあります。そういった場合は、PCI DSSの訪問審査の観点では指摘事項となるため、非準拠になります。例えば、データベースやそのほかのツールのWeb管理コンソールが、使用されていないにもかかわらず稼働しているようなケースがよく見受けられます。

 つまり、この作業が、要件2.2.2の「システムコンポーネントのサンプルを選択し、有効なシステムサービス、デーモン、プロトコルを調査する」の一部であるといえます。ここではpsコマンドでの確認方法を挙げてみたいと思います。

tsuji@suse:~> ps -ef | more
UID PID PPID C STIME TTY TIME CMD

〜(略)〜

root 2614 1 0 Sep22 ? 00:00:02 /usr/sbin/cron
root 2620 1 0 Sep22 ? 00:00:53 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
wwwrun 2621 2620 0 Sep22 ? 00:00:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
wwwrun 2622 2620 0 Sep22 ? 00:00:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
wwwrun 2623 2620 0 Sep22 ? 00:00:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
wwwrun 2624 2620 0 Sep22 ? 00:00:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
wwwrun 2625 2620 0 Sep22 ? 00:00:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
root 2627 1 0 Sep22 ? 00:00:00 /usr/sbin/smartd

〜(略)〜

tsuji 2761 2478 0 02:44 pts/1 00:00:00 ps -ef
リスト1 対象のシステムでのpsコマンド結果

 ここでApacheについて確認できるのは3点、実行ユーザー、実行バイナリ、および使用されている設定ファイルのパスです。

wwwrun 2624 2620 0 Sep22 ? 00:00:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf

リスト2 Apacheのプロセス情報

 なぜこのプロセス情報を確認するのでしょうか。それはRPMでインストールしていようと、ソースからコンパイルしていようと、稼働しているプロセスをもとにしてこれらの情報を確認しなければ、関係のないファイルを見てしまっている可能性があるためです。例えばRPMでインストールされているパッケージは存在するものの稼働しておらず、ソースからコンパイルされたバイナリが動作している、というようなことも考えられるためです。

 httpdプロセスの実行ユーザーもここで確認できます。forkされたhttpdプロセスもすべてrootで動作していた場合、指摘対象となるでしょう。つまり、Apacheは実際のHTTPリクエストを受け付けるために子プロセスを生成するため、これらのプロセスの親プロセス1だけがrootユーザーで実行されており、それ以外の子プロセスはApache専用のユーザー、もしくはnobodyなどで起動されていることが必要です。この部分は、要件2.2.3.cの「システムコンポーネントのサンプルを選択し、一般的なセキュリティパラメータが適切に設定されていることを確認する」という項目の確認作業の1つであるといえます。

 バージョン、バイナリの確認

 起動プロセスのバイナリに-Vオプションを指定して、コンパイルオプションなどを確認します。

tsuji@suse:~> /usr/sbin/httpd2-prefork -V
Server version: Apache/2.2.8 (Linux/SUSE)
Server built: Jun 6 2008 23:42:07
Server's Module Magic Number: 20051115:11
Server loaded: APR 1.2.12, APR-Util 1.2.12
Compiled using: APR 1.2.12, APR-Util 1.2.12
Architecture: 32-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT="/srv/www"
-D SUEXEC_BIN="/usr/sbin/suexec2"
-D DEFAULT_PIDLOG="/var/run/httpd2.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="/var/run/accept.lock"
-D DEFAULT_ERRORLOG="/var/log/apache2/error_log"
-D AP_TYPES_CONFIG_FILE="/etc/apache2/mime.types"
-D SERVER_CONFIG_FILE="/etc/apache2/httpd.conf"
リスト3 -Vオプションでコンパイルオプションを確認する

 これらの値はあくまでコンパイル時に指定された静的なものですので、実行時オプションやhttpd.confの内容によって変化する可能性もありますが、後半の調査のためにもコンパイルオプションを確認しておきます。通常、確認する基本的なポイントは緑色の部分となります。

1/3

Index
Apacheセキュリティチェック、PCI DSSの場合
Page1
稼働プロセスの確認
バージョン、バイナリの確認
  Page2
サーバ全体設定の確認
実行ユーザーの設定を見る
ロードモジュールを確認する
  Page3
コンテンツ関連の設定を見る
ログ設定を確認する
環境に合ったセキュリティ対策を


オール・ザッツ・PCI DSS 連載インデックス


Security&Trust フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Security & Trust 記事ランキング

本日 月間