unoh.github.com

5分でできるウェブサーバのセキュリティ向上施策

Fri Aug 24 01:51:47 -0700 2007

こんにちは、naoya です。



先日、ウノウが公開しているサービスの中にいくつかの脆弱性が見つかったため、社内で「脆弱性発見大会」を開催しました。この大会は、二人一チームに分かれてウノウが公開している各サービスの脆弱性を見つけることを目的とした大会です。結果は、いくつか各サービスに脆弱性が見つかり、すぐに修正することができました。



僕のチームは、ウノウのホームページやラボブログなど細かいサービスを担当しました。その中で、いくつかのウェブサーバにセキュリティ上あまい設定がありました。



今日は、ウェブサーバのセキュリティ向上のための設定方法についてエントリします。なお、ウェブサーバはApache 2.2系を前提としています。



サーバ情報の表示しない



ウェブサーバ(Apache)で、404などのエラーページを表示したとき、ヘッダやページの下にApacheやOSのバージョンが表示されます。こういったサーバ情報をわざわざ表示する必要はありません。サーバ情報の表示しないようにするには、Apacheの設定ファイル(httpd.conf)に、次の設定を追加します。



  ServerTokens ProductOnly
  ServerSignature Off


この設定を追加後、Apacheを再起動するとServerヘッダにはApache、エラーページにもサーバの情報は表示されなくなります。


.で始めるディレクトリは公開しないようにする



ウノウでは、すべてのサービスをsvn(Subversion)で管理しています。アップデートもsvnで行っています。そのため、.svnディレクトリが誤って公開されていることがあります。.svnディレクトリには、ソースコードが入っていますので公開しない方がいいです。.svnだけでなく、.で始まるディレクトリを公開しないようにするようには、Apacheの設定ファイル(httpd.conf)に、次の設定を追加します。



.svnディレクトリにはソースコードが入っているので、注意する必要があります。



  <Directory ~ "/\..+/">
        Order Deny,Allow
        Deny from All
  </Directory>



最後に、PHPのセキュリティ向上施策も追記しておきます。



PHPファイルに対してリクエストすると、HTTPヘッダにX-Powered-Byという情報が入っています。X-Powered-Byヘッダには、PHPのバージョンが次のような形で含まれています。



X-Powered-By: PHP/4.3.11


このヘッダを隠すには、PHPの設定ファイル(php.ini)に、次の設定を追加します。



  expose_php = Off



この他にも、ウェブサーバのセキュリティ向上のための情報がありましたら、ぜひ教えてください!