[Apache] TRACEメソッドを無効にする - itochif.com
TRACEメソッドが使用できるかどうかを確認する
「サポートしているメソッドを調べる」でTRACEメソッドが有効になっていたとしても、対策方法によってはTRACEメソッドの悪用はできなくなっています。具体的な方法は後述しますが、実際にTRACEメソッドを使用できるかどうかを確認します。
※サーバの応答は青色と赤色。
# telnet 192.168.10.2 80 #telnetで192.168.10.2のTCPポート80番に接続 TRACE / HTTP/1.0 #TRACEでのHTTP/1.0のリクエスト(入力後に改行を1つ入れる) TEST: TRACE_TEST #入力後に改行を2つ入れる HTTP/1.1 200 OK Date: Sun, 10 Aug 2008 10:00:00 GMT Server: Apache Connection: close Content-Type: message/http TRACE / HTTP/1.0 TEST: TRACE_TEST図1.TRACEメソッドが有効になっている様子(HTTP/1.0)
上記の赤色の部分が、このWebサーバでTRACEメソッドがサポートされている様子を示しています。
HTTP/1.0でうまくいかない場合はHTTP/1.1で、HOST名をつけたリクエストを送信して確認します。
※サーバの応答は青色と赤色。
# telnet 192.168.10.2 80 #telnetで192.168.10.2のTCPポート80番に接続 TRACE / HTTP/1.1 #TRACEでのHTTP/1.1のリクエスト(入力後に改行を1つ入れる) HOST: 192.168.10.2 #HOST名も送信(入力後に改行を1つ入れる) TEST: TRACE_TEST #入力後に改行を2つ入れる HTTP/1.1 200 OK Date: Sun, 10 Aug 2008 10:00:00 GMT Server: Apache Connection: close Transfer-Encoding: chunked Content-Type: message/http 3a TRACE / HTTP/1.1 HOST: 192.168.10.2 TEST: TRACE_TEST図2.TRACEメソッドが有効になっている様子(HTTP/1.1)
TRACEメソッドを無効にする
TRACEメソッドを無効にする方法です。
- TraceEnableディレクティブの値を「Off」に設定する。
※Apache 1.3.34、2.0.55以降ならこの設定でTRACEメソッドを無効にできます。
設定ファイル内にこのディレクティブが無い場合、設定ファイルに追記します。 - mod_rewriteを使用する。
※mod_rewiteを有効にします。Apache 1.3.33、2.0.54以前はこちらの方法を使用します。
以下に例を記載します。
# vi /etc/httpd/conf/httpd.conf ------------------------------ 次の行からhttpd.confの中身 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_METHOD} ^TRACE RewriteRule ^.*$ - [F] </IfModule> ------------------------------ httpd.conf終了図3.mod_rewriteでTRACEメソッドを無効にする設定例
TRACEメソッドが無効になっているか再度確認する。
# telnet 192.168.10.2 80 #telnetで192.168.10.2のTCPポート80番に接続 TRACE / HTTP/1.1 #TRACEでのHTTP/1.1のリクエスト(入力後に改行を1つ入れる) HOST: 192.168.10.2 #ホスト名の送信(入力後に改行を1つ入れる) TEST: TRACE_TEST #入力後に改行を2つ入れる HTTP/1.1 403 Forbidden Date: Sun, 10 Aug 2008 10:00:00 GMT Server: Apache Content-Length: 266 Connection: close Content-Type: text/html; charset=iso-8859-1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>403 Forbidden</title> </head><body> <h1>Forbidden</h1> <p>You don't have permission to access / on this server.</p> <hr> <address>Apache Server at 192.168.10.2 Port 80</address> </body></html>図4.TRACEメソッドが無効になっている様子(HTTP/1.1)
サーバからの応答が「HTTP/1.1 403 Forbidden」になり、TRACEメソッドが無効になっています。
掲載日 8/10/2008
WebサーバがTRACEメソッドをサポートしている場合、XST(Cross Site Tracing)という攻撃を行われる可能性があります。TRACEメソッドはWebサーバに対してクライアントが送信した内容をそのまま返すメソッドです。ここでは、TRACEメソッドを無効にする方法を記載します。