mod_securityがまったく機能しない

mod_securityがまったく機能しない

私はmod_securityを動作させようとしています。ウェブでたくさん検索し、このチュートリアルmod_securityを設定する(すべての設定ファイルはチュートリアルと同じです)そして実行するとhttpd -M | grep -Ei '(evasive|security)'出力されます

 security2_module (shared)
 evasive20_module (shared)

拡張機能は読み込まれていますが、何もブロックされず、ログ ファイルにも何も書き込まれません。 をSecDebugLogLevel9 に設定しても、デバッグ ログは空白のままです。

他のモジュールより前、後、途中のどのモジュールもロードしようとし、Apache を何度か再起動してみましたが、何も起こりませんでした。

私は Amazon Linux (CentOS に似ています) と Apache 2.4 Prefork を使用しています。

答え1

支援するには、さらに情報が必要です (httpd.conf および modsecurity.conf からの関連するすべての Apache 構成)。

ただし、問題を自分で解決するのに役立つヒントをいくつか示します。

正しい IfModule コマンドを使用していますか? 私は mod_security2.c を使用していますが、それが重要かどうかはわかりません。

<IfModule mod_security2.c>
    Include conf/modsecurity.conf
</IfModule>

Apache を完全に停止して起動してみましたか (正常な再起動ではありません)?

完全に停止して再起動した後、エラー ログに何かありますか。次のような [:notice] エントリがいくつかあるはずです。

ModSecurity for Apache/2.9.0 (http://www.modsecurity.org/) configured.
ModSecurity: APR compiled version="1.5.0"; loaded version="1.5.0"
...etc.

これは ModSecurity が読み込まれたことを示しています。

エラー ログ ファイルに PCRE エラーがありますか (ModSecurity が Apache とは異なるバージョンの PRCE でコンパイルされた場合に発生する可能性があります)? httpd と mod_security.so に対して ldd コマンドを実行して、それらが一致していることを確認します。参考までに、私の作業バージョンで "httpd -M" コマンドを実行しても、セキュリティ モジュールは表示されません。これは、Include が実行されない限りロードされないためだと思います。

デバッグ ログは作成されていますが、空ですか? 作成されている場合は、ModSecurity 自体がロードされていることを示しています。

Apache の設定はすべて、使用したガイドで示されているように /etc/httpd/conf ディレクトリにありますか? 複数のバージョンの Apache がインストールされていて、編集している設定が使用されているものではないことは珍しくありません :-)

Ivan Ristic の ModSecurity ハンドブックをお勧めします。試読版は無料で入手できます。https://www.feistyduck.com/library/modsecurity-handbook-free/インストールについてはここで説明します。ModSecurity はもともと Ivan が書いたものなので、この本全体を購入することをお勧めします。バージョンが 2、3 遅れていますが、ほとんど関連性があります。この本で説明されていない主な変更点は、ルール ID が必須になったことです。

関連情報