約 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