web-dev-qa-db-ja.com

mod_securityが実際に機能しているかどうかをテストする

私はこれをステージングサーバーで初めて実行し、すべてを正しく実行したと思います。それにnikto2を実行するとmodsec_audit.logにエントリが表示されますが、私の人生ではmod_securityを手動でブロックすることはできません。 SQLをURLやフォームなどにドロップしましたが、403_errorまたは完全なブロックであるはずのmod_securityからのブロックではなく、一般的なユーザーフレンドリーなHTML 404ページを取得しました。

止まるのではなく、検知するだけなのか心配です。私は自分の構成を確認しましたが、攻撃を検出するだけでなく、攻撃を停止するように設定されています。このことを確認する方法についてのアイデアは実際に攻撃をブロックしていますか?誰かがテストURLを持っているか、それが実際に機能していることを私に証明することができる何かがありますか?

5
DrZaiusApeLord

これに対する答えを見つけました。次のようにあなたのサイトにアクセスしてください:example.com/etc/passwd

これにより、mod_securityからインスタント403が表示され、デフォルトのログに記録されます。

2
DrZaiusApeLord

デフォルトでは、エンジンはdetectingモードのみになります。

SecRuleEngine DetectionOnly

調整する必要がありますSecRuleEngine On

sed -ie 's/^\s*SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/modsecurity/modsecurity.conf

apacheを再起動します。

3
Hrvoje Špoljar

ブラウザで、次の例のように、そのサーバーでホストされているWebサイトにアクセスしてみます。

http://www.anywebsitefromthatserver.com/aphpfilethatdonotexist.php?something=../../etc

次に、Modsecurityログを確認すると、同様のものが表示されます(WHM/cPanelがある場合-> WHMで確認してください-> Modsecurityツールでログを確認してください)。

2017-12-14 10:28:41 www.anywebsitefromthatserver.com    YOUR IP: 68.XX.XX.XX    CRITICAL    404  930100: Path Traversal Attack (/../)

詳細なログは次のようになります。

Request:    GET /aphpfilethatdonotexist.php?something=../../etc
Action Description: Warning.
Justification:  Pattern match "(?i)(?:\\x5c|(?:%(?:c(?:0%(?:[2aq]f|5c|9v)|1%(?:[19p]c|8s|af))|2(?:5(?:c(?:0%25af|1%259c)|2f|5c)|%46|f)|(?:(?:f(?:8%8)?0%8|e)0%80%a|bg%q)f|%3(?:2(?:%(?:%6|4)6|F)|5%%63)|u(?:221[56]|002f|EFC8|F025)|1u|5c)|0x(?:2f|5c)|\\/))(?:%(?:(?:f(?:(?:c%80|8)%8)?0%8 ..." at REQUEST_URI_RAW.

同様のログが表示される場合は、Modsecurityがアクティブで機能していることを確認できます。

2
mariusfv

オンラインの「XSSテスター」または「XSSスキャナー」をGoogleで検索して、ステージングサイトでいくつかの要請された攻撃をツールに実行させることができます。このツールは、「攻撃」の結果を詳述するレポートも提供する場合があります。

次に、ログをテールして、エントリがレポートと一致するかどうか、特に日付、時刻、IPアドレスがある場合はそれを確認できます。

1
Vicky

基本的な構成については、Rapid7ガイドをご覧ください。

https://blog.rapid7.com/2017/04/09/how-to-configure-modsecurity-with-Apache-on-ubuntu-linux/

ログエントリを生成するいくつかのテストカールがあります。ログエントリは、設定に応じて/ var/log/Apache2/accessと/var/log/Apache2/modsec_audit.logの両方に表示されます

XSSテスト

curl 'http://www.example.com/?q="><script>alert(1)</script>'

SQLインジェクション

curl "http://www.example.com/?q='1 OR 1=1"
1
dcos

以下のようにチェックします

$ curl -ks -o /dev/null -w '%{http_code}' "https://something.example.com/foo?username=1'%20or%20'1'%20=%20'"

403を取得した場合、ModSecurityは期待どおりに機能しています。

1
vikas027