TRACEメソッドの無効化

概要

TRACEメソッドが有効な環境ではクロスサイトトレーシングの手法を用いることでBasic 認証のパスワードを盗むことができます。
この攻撃を防ぐため、TRACEメソッド自体を使用不可能にする設定の手順を説明します。

Apacheの場合(TraceEnable対応バージョン)

Apacheでは1.3.34以降、2.0.55以降、2.2以降ではTRACEメソッドをON/OFF設定できるTraceEnable機能をサポートしているため、以下の設定でTRACEメソッドを無効化できます。

設定

httpd.confにTraceEnableを追加し、apacheを再起動することで反映されます。

TraceEnable Off

TRACEメソッドの確認

TRACEメソッドの有効/無効はOPTIONSメソッドを使用することで確認できます。

  • 手順
    telnetにて80番ポートへ接続し、OPTIONSメソッドにて有効なメソッドを確認
# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.

OPTIONS / HTTP/1.0
  • TRACEメソッドが有効な場合(Allow行の内容を確認)
    HTTP/1.1 200 OK
    Date: Thu, 01 May 2008 09:06:06 GMT
    Server: Apache
    Allow: GET,HEAD,POST,OPTIONS,TRACE
    Content-Length: 0
    Connection: close
    Content-Type: text/html
    
    Connection closed by foreign host.
  • TRACEメソッドが無効な場合(Allow行の内容を確認)
    HTTP/1.1 200 OK
    Date: Thu, 01 May 2008 09:04:37 GMT
    Server: Apache
    Allow: GET,HEAD,POST,OPTIONS
    Content-Length: 0
    Connection: close
    Content-Type: text/html
    
    Connection closed by foreign host.

Apacheの場合(TraceEnable非対応バージョン)

apache 1.3.33、2.0.54以前のバージョンを使用しており、かつバージョンアップが不可能な場合はmod_rewriteを使用してTRACEメソッドを内部的に無効化できます。

設定

httpd.confに以下のmod_rewriteの設定を行い、apacheを再起動することで反映されます。

RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]

確認

telnetにて80番ポートへ接続し、TRACEメソッドの結果を確認します。

# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.

TRACE / HTTP/1.0
Host: www.test.com
  • 設定前
    HTTP/1.1 200 OK
    Date: Thu, 01 May 2008 10:27:15 GMT
    Server: Apache
    Connection: close
    Content-Type: message/http
    
    TRACE / HTTP/1.0
    Host: www.test.com
    
    Connection closed by foreign host.
  • 設定後
    HTTP/1.1 403 Forbidden
    Date: Thu, 01 May 2008 10:30:32 GMT
    Server: Apache
    Content-Length: 202
    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>
    </body></html>
    Connection closed by foreign host.

IISの場合

Microsoftが提供している IIS Lockdown tool に含まれる URL Scan によりTRACEメソッドをブロックすることが可能です。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-08-13 (金) 09:51:24 (5004d)