gologiusの巣

プログラミング、モデリングなどのメモです。誰かの役に立てるとうれしいです。

XAMMPでWEBサーバーを立てる際に、最低限セキュリティを考慮した設定をしたい

XAMMPでWEBサーバーを立てる機会があったので、 セキュリティについて調べました。

※以下のQiita記事を基に、適用されている作業の中身を独自で調べ直したものになります。

Apacheセキュリティ設定 - Qiita

最低限の知識はあるつもりですが(実は情報セキュリティスペシャリスト所持)、 あくまでネット上の情報をまとめただけです。 以下に記載された情報を基にされた作業に関して一切責任を持ちません。

条件

  • Win10 64bit
  • XAMMP 7.2.7 (PHPのバージョンと同じ)

設定ファイル

超雑に調べた

  • httpd.conf (Apacheのhttp(デフォルトポート80)へのアクセスの設定)
  • httpd-ssl.conf (Apachehttps(デフォルトポート443)へのアクセスの設定)
  • httpd-xammp.conf (PHP関連の設定がされている?PHPのバージョンを変更する際にここを編集するみたい)
  • php.ini (PHP自体の設定)
  • config.inc.phpphpMyAdmin(ブラウザからサーバー設定できるサイト)の設定ファイル)

対策

NW設定

特定のIP、セグメント、ポートからしか見る必要がない場合、設定しておいた方が無難。

httpd.confの設定では、ディレクトリ、ファイル単位で、許可/拒否 制御することが可能。

ファイル一覧出力の禁止

閲覧者(攻撃者含む)に対して余計な情報を与えないようにする。 隠してしまうほうが良い f:id:gologius:20190129120340p:plainf:id:gologius:20190129120401p:plain

バージョン情報の隠ぺい

バージョンが分かると、「この攻撃方法はまだ対策されてないな」と攻撃者に情報を与えてしまう。 隠してしまう方がよいと私は思っています(賛否両論あり) f:id:gologius:20190129120325p:plainf:id:gologius:20190129120428p:plain

httpoxy対策

httpoxy は脆弱性の名前

HTTPリスエストのヘッダの一つにPROXYがある。 脆弱性があるサーバーは、リクエストヘッダの情報を、(環境)変数に入れてしまう。

PROXY情報は通常クライアント側からはアクセスできないが、設定できてしまう。 これにより、不正なプロキシサーバーを設定して、そのサーバーに情報を流し続ける、ということができてしまう

クリックジャギング対策

正常なWEBサイトを、iframeから呼び出す。 さらにそのiframeの上に、透明な悪意のあるリンクをかぶせる これにより、正常なWEBサイトのリンクをクリックしたつもりが、遷移先は別の悪意のあるサイトに飛ばされる

外部から呼び出すことを想定していないサイトについては、ブロックする(特定のWEBサイトのみ、iframe呼び出しを許可する)

XSS対策

XSS=Cross Site Scripting クロスサイトスクリプティング

文字列のエスケープをしていないため、悪意のあるHTMLやJavaScriptが埋め込まれる。

文字入力欄に

名前  「田中 太郎」

とかいれる想定なところに

名前  「田中太郎;<script>alert(`不正なプログラムです`)</script>

などと入力する。

DBにはこの文字列がそのまま登録される。

HTMLとして表示される時に、JSが実行されてしまう。

XST対策

XST=Cross Site Tracing クロスサイトトレーシング

XSSではブラウザ(クライアント)からサーバーへのHTTPリクエストヘッダを取得できない(らしい。なぜ?)。 なので、ヘッダ内に含まれる認証情報(クッキーや認証IDPWなど)は取れない。

話は変わるが、HTTPリクエストメソッド(GET,POST,PUT,DELETE)などの一種にTRACEがある。 TRACEはHTTPリスエストをオウム返しするメソッドである。

なので、XSSを利用して、TRACEメソッドでリクエストを送ると、リクエストヘッダを取得できる。 前述したクッキーや認証情報も取得できてしまう。

なお、攻撃方法としては現役引退(化石化)している。

現在ではすべてのブラウザでXST対策がとられ、XST攻撃を行うことはできなくなっています https://blog.tokumaru.org/2013/01/TRACE-method-is-not-so-dangerous-in-fact.html

DOS攻撃対策

おなじみのF5アタックなどが該当。

パケットを送りまくって、サーバーに異常な負荷をかける攻撃。

slowloris対策

slowloris=ツール名。スローロリスと読むらしい

Apacheサーバーに不完全なリクエストヘッダーを送ると、サーバー側が最後のヘッダーを待ち続ける。 この脆弱性を利用して、slowlorisを用いて不完全なヘッダーを送り続け、Apacheのプロセスを消費させる。

https://www.drk7.jp/MT/archives/001527.html

作業内容

httpd.conf 設定

例のQiita記事の内容を参考に、httpd.confへ適用します。

Apacheセキュリティ設定 - Qiita

Windowsなのでディレクトリのパスだけ変更する必要があります。

  • /var/www/htmlC:\xampp\htdocs
  • /var/www/cgi-binC:\xampp\cgi-binになるはず

httpd-xammp.conf 設定

PHP無効化

httpd-xammp.conf内に「この拡張子ならPHPファイルとして処理しろ」と設定している箇所がある。 これをコメントアウトすればよい

<FilesMatch "\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
    SetHandler application/x-httpd-php-source
</FilesMatch>

コメントアウト後は、何も表示されなくなる(正確には<?php ?>で囲まれた部分が全く処理されなくなる)

CGIスクリプト無効化

httpd.conf内で「この拡張子ならCGIとして認識しろ」と設定している箇所がある これをコメントアウトすればよい

AddHandler cgi-script .cgi .pl .asp

コメントアウト後は下記のようになる(ソースがそのまま表示) f:id:gologius:20190129120447p:plain

まとめと感想

XAMMPは手軽に環境を構築できますが、そのまま使ってセキュリティ的に大丈夫なのかずっと不安だったので、 今回調査しました。