RHEL9|ApacheでOPTIONSとTRACEを無効化する手順まとめ


1.まず初めに(なぜOPTIONSとTRACEを無効化するのか)

Apache を運用していると、セキュリティ診断で
「OPTIONS メソッドが公開されています」
「TRACE メソッドを無効化してください」
と指摘されるケースがよくあります。

普段の利用ではあまり意識しませんが、

  • サーバーの情報が外部に見える
  • 古い攻撃手法(XST)に悪用される
  • セキュリティ診断で必ずチェックされる

といった理由から、不要なメソッドは無効化しておくことが大切です。

この記事では RHEL9 + Apache 2.4 の環境で、
OPTIONS と TRACE を安全に無効化する方法を、やさしく解説します。

また、ネットに多く残っている古い手法(<Limit> / <LimitExcept>)が
今回の環境では正しく動作しなかったため、
実際に動作した方法(Location + AllowMethods)に絞って紹介します。


2.結論(先に知りたい方向け)

RHEL9 + Apache 2.4で OPTIONS / TRACE を無効化するには、
以下の2つの設定を行います。


① OPTIONS の制御

以下の設定をhttpd.confに記載します。

<Location "/">
    AllowMethods GET POST
</Location>

この設定により、
GET と POST 以外のメソッド(OPTIONS 含む)を無効化できます。


② TRACE を無効化する

以下の設定をhttpd.confに記載します。

TraceEnable off

この設定により、
TRACEのメソッドを無効化できます。


③ 設定を反映する

sudo systemctl restart httpd

④メソッドを確認する

curl -X OPTIONS -I http://localhost/
curl -X TRACE -I http://localhost/

OPTIONS / TRACE が拒否されていれば成功です。


4.つまずいたポイント(Limit 系ではうまく動作しなかった理由)

ネットの記事や古い情報を見ると、

  • <Limit OPTIONS>
  • <LimitExcept GET POST>

といった設定が紹介されていることが多いです。

実際に RHEL9 + Apache 2.4 の環境で試してみましたが、
curl の結果では OPTIONS が無効化されず
セキュリティ診断の指摘が消えないケースがありました。


4-1.Limit 系が効かなかった原因

  • 2.4 では認可モデルが「Require」ベースに変わったため
  • <Limit> / <LimitExcept> は 2.2 時代の書き方
  • 設定は通るが、実際のAllowヘッダには反映されない場合がある
  • <Directory><Location> の評価順序の違いも影響する

つまり、
「設定は合っているのに、動作が一致しない」
という落とし穴にハマりやすい部分です。


4-2.最終的に Location を採用した理由

  • URL単位で確実に制御できる
  • AllowMethods が Apache 2.4 で安定して動く
  • curl の結果でも OPTIONS が除外される
  • セキュリティ診断でも問題なし

そのため、この記事では
実機で効果のあった Location + AllowMethods を結論として採用しました。


5.参考にしたサイト(公式中心)

信頼性確保のため、公式ドキュメントを中心に参照しています。

コメント

タイトルとURLをコピーしました