mod_security Anpassungen für Nextcloud

07.06.2022 | Apache

Im Gegensatz zu einigen Gerüchten im Netz, müssen keine Rules deaktviert werden. Dabei sollte man generell vorsichtig sein.

Nextcloud verwendet einige ungewöhnliche HTTP-Verben, u.a. die für Webdav üblichen. Die Logeinträge sind eigentlich oft eindeutig:

ModSecurity: Warning. Match of "within %{tx.allowed_methods}" against "REQUEST_METHOD" required. [file "/usr/share/modsecurity-crs/rules/REQUEST-911-METHOD-ENFORCEMENT.conf"] [line "46"] [id "911100"] [msg "Method is not allowed by policy"] [data "SEARCH"] [severity "CRITICAL"] 

Das heißt nichts anderes, als daß der Request mit dem Verb 'SEARCH' geblockt wird.

In der crs-setup.conf findet man den gut kommentierten Absatz, den man aktivieren und editieren muß:

# -- [[ HTTP Policy Settings ]] ------------------------------------------------
#
# This section defines your policies for the HTTP protocol, such as:
# - allowed HTTP versions, HTTP methods, allowed request Content-Types
# - forbidden file extensions (e.g. .bak, .sql) and request headers (e.g. Proxy)
#
# These variables are used in the following rule files:
# - REQUEST-911-METHOD-ENFORCEMENT.conf
# - REQUEST-912-DOS-PROTECTION.conf
# - REQUEST-920-PROTOCOL-ENFORCEMENT.conf

# HTTP methods that a client is allowed to use.
# Default: GET HEAD POST OPTIONS
# Example: for RESTful APIs, add the following methods: PUT PATCH DELETE
**# Example: for WebDAV, add the following methods: CHECKOUT COPY DELETE LOCK
#          MERGE MKACTIVITY MKCOL MOVE PROPFIND PROPPATCH PUT UNLOCK**
# Uncomment this rule to change the default.
#SecAction \
# "id:900200,\
#  phase:1,\
#  nolog,\
#  pass,\
#  t:none,\
#  setvar:'tx.allowed_methods=GET HEAD POST OPTIONS'"

Es müssen also die Webdav-Verben zu den allowed-methods angehängt werden:

 

SecAction \
 "id:900200,\
  phase:1,\
  nolog,\
  pass,\
  t:none,\
  setvar:'tx.allowed_methods=GET HEAD POST OPTIONS CHECKOUT COPY DELETE LOCK MERGE MKACTIVITY MKCOL MOVE  PROPFIND PROPPATCH PUT UNLOCK REPORT SEARCH'"

Im Weiteren Verlauf hat sich dann gezeigt, daß Nextcloud auch noch die Verben "REPORT" und "SEARCH" verwendet.

Damit scheint die Grundfunktionalität wieder hergestellt zu sein, leider hat die Nextcloud-App dann immer noch nicht funktioniert, wohl eindeutig aufgrund von Server-Problemen.

ModSecurity: Access denied with code 400 (phase 2). Match of "eq 0" against "REQBODY_ERROR" required. [file "/opt/bitnami/apache/conf/modsecurity.conf"] [line "62"] [id "200002"] [msg "Failed to parse request body."] [data ""] [severity "CRITICAL"]

Dieser Fehler ist einfach darauf zurückzuführen, daß mod_security den JSON-Body der App nicht parsen konnte.

Leider ist nicht mehr geplant, den JSON-Support in die v.2.9.x noch zu implementieren (v.3.x wird ihn haben). D.h. man muß das Modul selber kompilieren. Für die AWS/Bitnami-Instanzen gibt es dafür eine Anleitung hier:
https://community.bitnami.com/t/modsecurity-conf-default-rule-requires-missing-json-support/92786

 

Analyse

Entwurf

Development

Launch