Since 12/1/2007
Home > Security > Apache > TRACEメソッドを無効にする

[Apache] TRACEメソッドを無効にする - itochif.com

WebサーバがTRACEメソッドをサポートしている場合、XST(Cross Site Tracing)という攻撃を行われる可能性があります。TRACEメソッドはWebサーバに対してクライアントが送信した内容をそのまま返すメソッドです。ここでは、TRACEメソッドを無効にする方法を記載します。

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