owasp/modsecurity-crs:nginxを使ってみた

mod-security

約 4 分で読めます。



自分、NextcloudやWordPressサーバーをDockerで立てていて、そのWebサーバーにowasp/modsecurity-crs:nginxを使っています。

最近これの使い方が変わっていたので、メモしておきます。

具体的にはこのコミット。

Adopted latest owasp/modsecurity-crs spec. · kurofuku/nextcloud-container-fpm@e62eba9
Contribute to kurofuku/nextcloud-container-fpm development by creating an account on GitHub.



キモはmodsecurity-override.conf.templateで、以下のようになっています。
 ほとんどのパラメーターが環境変数から取るようになっている。

# Original of the latest recommended version:
# https://github.com/SpiderLabs/ModSecurity/blob/v3/master/modsecurity.conf-recommended

SecArgumentSeparator &
SecAuditEngine ${MODSEC_AUDIT_ENGINE}
SecAuditLog ${MODSEC_AUDIT_LOG}
SecAuditLogFormat ${MODSEC_AUDIT_LOG_FORMAT}
SecAuditLogParts ${MODSEC_AUDIT_LOG_PARTS}
SecAuditLogRelevantStatus "^(?:5|4(?!04))"
SecAuditLogStorageDir ${MODSEC_AUDIT_STORAGE}
SecAuditLogType ${MODSEC_AUDIT_LOG_TYPE}
(略)



また、コンテナには初期状態で環境変数でパラメーター値が定義されています。

$ sudo docker compose exec nginx /bin/bash
# env | grep MODSEC
MODSEC_RULE_ENGINE=on
MODSEC_PCRE_MATCH_LIMIT_RECURSION=100000
MODSEC_RESP_BODY_LIMIT=1048576
MODSEC_AUDIT_LOG_PARTS=ABIJDEFHZ
MODSEC_STATUS_ENGINE=Off
MODSEC_DEFAULT_PHASE1_ACTION=phase:1,pass,log,tag:'${MODSEC_TAG}'
MODSEC_REQ_BODY_LIMIT_ACTION=Reject
MODSEC_DEBUG_LOGLEVEL=0
(略)



そのため、初期パラメーターのまま変更しない方は↓のコマンドを実行してnginx起動すればOK。

envsubst < /etc/nginx/templates/modsecurity.d/modsecurity-override.conf.template > /etc/modsecurity.d/modsecurity-override.conf

setup.confは特に環境変数を使っていませんでしたが、同じように処理できそうだったので、そうしておきました。

終わりに

いかがでしたか。

安全な自鯖ライフを!

Comments

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