Stellen Sie sich vor, Sie verfügen über eine Site-API, die Daten in Form von GET-Anforderungen mit Parametern oder als POST -Anforderungen akzeptiert (z. B. mit Standard-URL-kodierten & -separierten POST - Daten). Wenn Sie API-Aufrufe protokollieren und analysieren möchten, sind die GET-Anforderungen einfach, da sie sich im Apache-Protokoll befinden. Gibt es eine einfache Möglichkeit, die POST -Daten auch im Apache-Protokoll abzurufen?
(Natürlich können wir die POST -Daten explizit in der Anwendung protokollieren, aber ich hätte gerne eine Konfigurationsebene, auf der ich mich nicht im Code sorgen muss.)
Verwenden Sie Apaches mod_dumpio . Seien Sie aus offensichtlichen Gründen vorsichtig.
Beachten Sie, dass mod_dumpio die Protokollierung binärer Nutzdaten beim ersten Nullzeichen stoppt. Zum Beispiel zeigt ein multipart/form-data
-Upload einer gzip-Datei wahrscheinlich nur die ersten Bytes mit mod_dumpio.
Beachten Sie auch, dass Apache dieses Modul möglicherweise nicht in httpd.conf
erwähnt, selbst wenn es sich im Ordner /modules
befindet. Das manuelle Hinzufügen von LoadModule
wird problemlos funktionieren.
Obwohl es zu spät ist zu antworten. Dieses Modul kann: https://github.com/danghvu/mod_dumpost
Sie können mod_security
installieren und /etc/modsecurity/modsecurity.conf
eingeben:
SecRuleEngine On
SecAuditEngine On
SecAuditLog /var/log/Apache2/modsec_audit.log
SecRequestBodyAccess on
SecAuditLogParts ABIJDFHZ
Nicht gerade eine Antwort, aber ich habe noch nie von einem Weg in Apache selbst gehört. Ich denke, es ist mit einem Erweiterungsmodul möglich, aber ich weiß nicht, ob eines geschrieben wurde.
Ein Problem ist, dass POST -Daten ziemlich groß sein können, und wenn Sie die Anzahl der protokollierten Daten nicht einschränken, können Sie nach einer Weile nicht mehr auf der Festplatte sein. Es ist ein möglicher Weg für Hacker, sich mit Ihrem Server zu beschäftigen.
Sie können [ModSecurity][1]
verwenden, um POST -Daten anzuzeigen.
Installation unter Debian/Ubuntu:
$ Sudo apt install libapache2-mod-security2
Verwenden Sie die empfohlene Konfigurationsdatei:
$ Sudo mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
Apache neu laden:
$ Sudo service Apache2 reload
Sie finden Ihre Daten nun unter /var/log/Apache2/modsec_audit.log
$ tail -f /var/log/Apache2/modsec_audit.log
--2222229-A--
[23/Nov/2017:11:36:35 +0000]
--2222229-B--
POST / HTTP/1.1
Content-Type: application/json
User-Agent: curl
Host: example.com
--2222229-C--
{"test":"modsecurity"}
Ich würde es eigentlich in der Anwendung tun. Es ist natürlich zur Laufzeit noch konfigurierbar, abhängig von Ihrem Loggersystem. Wenn Sie beispielsweise Apache Log (log4j/cxx) verwenden, können Sie einen dedizierten Logger für solche URLs konfigurieren und ihn dann zur Laufzeit anhand einer XML-Datei konfigurieren.
Sie können auch die integrierte forensische Protokollfunktion verwenden.
Eine einfachere Option kann sein, die POST -Daten zu protokollieren, bevor sie an den Server gelangen. Für Webanwendungen verwende ich Burp Proxy und setze Firefox so ein, dass es als HTTP/S-Proxy verwendet wird. Dann kann ich Daten "auf dem Draht" in Echtzeit überwachen (und zerstören).
Für API-Anforderungen ohne Browser ist SoapUI sehr nützlich und kann ähnliche Informationen anzeigen. Ich würde wetten, dass Sie SoapUI wahrscheinlich auch so konfigurieren können, dass es sich durch Burp verbindet (nur eine Vermutung).