Die WAF der Sophos Firewall hat ein Limit der Dateigrößen, welche durch die WAF durchgelassen werden. In diesem Artikel wird vorstellt, wie man das WAF 1MB Limit auf Sophos Firewall anpassen - komplett manuell, oder mit Hilfe eines Scripts.
Einleitung
Sophos nutzt bei seiner WAF das Apache Server Modul "ModSecurity". Dieses Modul hat im Standard ein Limit bei den Dateigrößen die durch die WAF durchgehen dürfen - das ist kein Standard von Sophos. Leider gibt es keine Möglichkeit dieses Limit in der GUI oder der Shell direkt einzustellen. Dazu muss man den Wert in der Datenbank der Firewall über die advanced Shell anpassen.
Wie äußert sich der Fehler?
Generell wird man merken, dass Dateien über 1MB nicht durch gehen. Die Fehlermeldung in der jeweiligen Webanwendung ist dabei nicht immer gleich. Prüft man die Logeinträge in der reverseproxy.log Datei, wird man hier einen solchen Fehler finden:
[DATE] [security2:error] [....] ModSecurity: Request body no files data length is larger than the configured limit (1048576).. Deny with code (413) [....]
Anpassen des Limits
Voraussetzungen
Für die Umsetzung müssen folgende Voraussetzungen erfüllt sein:
- Zugang zur Shell
- Admin Passwort muss bekannt sein
- SFOS 19.5.x bis 20.0.x muss installiert sein. Andere Versionen werden auch funktionieren. Die genannten sind aber selber getestet.
Info vorab zum Limit
Bitte beachtet, dass die WAF nicht unendlich große Dateien verarbeiten kann. Es handelt sich noch immer um eine Firewall. Die ist nun mal nicht dafür gedacht eine vollwertige WAF zu ersetzen.
In meinen Tests könnte ich ohne Probleme 100-200 MB setzen. Höhere Limits sind denkbar, aber meiner Meinung nach nicht sinnvoll bei der WAF.
Trotzdem: Das maximale Limit liegt theoretisch aufgrund der Integer Limitierung bei 2147483647 ≈ 2147 MB ≈ 2,14 GB
.
Bedenkt auch, dass eine XGS3300 mit großen Limits besser umgehen kann als eine XGS87!
Manuell
Der traditionelle Weg ist der manuelle Weg. Dafür geht Ihr wie folgt vor:
Datenbank ID des WAF Profils herausfinden
Ihr last Euch mit diesem Kommando auf der advanced Shell die WAF Profile anzeigen.
psql -U nobody -d corporate -c "select name,id,sec_request_body_no_files_limit from tblwafsecurityprofile;"
Mit dem Kommando werden Euch der Name des Profils, die ID des Profils in der Datenbank und das aktuelle Limit angezeigt. Die ID wird für die weiteren Schritte benötigt.
Datenbank Limit anpassen
Nun ersetzt Ihr in dem folgenden Kommando YYY mit der ID des Profils welches angepasst werden soll.
Außerdem ersetzt Ihr XXX mit einer Ganzzahl. Sie steht für die neue Größe in MB.
psql -U nobody -d corporate -c "update tblwafsecurityprofile set sec_request_body_no_files_limit=(1048576*XXX) where id ='YYY';"
Hier ein Beispiel in dem das Limit von Profil ID 7 auf 10MB gesetzt wird:
psql -U nobody -d corporate -c "update tblwafsecurityprofile set sec_request_body_no_files_limit=(1048576*10) where id ='7';"
Ob das Limit erfolgreich gesetzt wurde wird erst mal mit einem "Update 1" in der Konsole quittiert. Prüfen könnt Ihr den Wert mit dem "Auflisten" Befehl von oben.
Neues Limit aktivieren
Zuletzt muss das neue Limit noch aktiviert werden. Dazu muss der folgende Befehl abgeschickt werden, welcher die WAF Konfiguration einmal neu einliest.
opcode waf_reconfig -t json -b '{"Entity": "waf_advanced_config", "Event": "UPDATE"}' -ds nosync
Der Vorgang wird mit einem "200 OK" quittiert. Fertig, das neue Limit ist aktiv. 😀
Per Script
Ihr wollte das Limit häufiger anpassen, seid nicht so sicher im Umgang mit der CLI, oder habt Angst bei Anpassungen in der Datenbank? Kein Problem! Hier hilft unser ITW Script. Es muss nur ausgeführt werden und Ihr werden durch die Konfiguration geführt. Ihr braucht kein Wissen über die nötigen Kommandos und müsst Euch keine Gedanken zu Tippfehlern machen! 😀
Nutzen des Scripts
Wenn das Script auf Eurer Firewall liegt, dann könnt Ihr es ganz einfach so starten. Beachtet, dass das Script immer mit einem sh
vorab gestartet werden muss aufgrund von Reglementierungen der Shell.
Nach Aufruf werden Euch die verfügbaren Profile aufgelistet und Ihr könnt das Profil und das zu setzende Limit eingeben.
sh /pathtoscript/waf_1mb_change.sh
Anschließend erfolgt eine Sicherheitsabfrage und nach Bestätigung ist die Anpassung schon fertig.
Parameter für das Script
- -h
Zeigt eine Hilfe an - -d
Macht einen Trockenlauf ohne Werte zu verändern. Am Ende werden die Befehle angezeigt mit denen Ihr die Anpassung auch selber machen könnt. - -i
Ignoriert die Version (SFOS) der Firewall. Zur Sicherheit werden nicht getestete Versionen nicht akzeptiert und das Script bricht ab. Soll das Script trotzdem laufen, muss dieser Parameter gesetzt werden - -s suchtext
Grenzt die Auflistung der verfügbaren Profile ein falls Ihr sehr viele haben solltet. Die Suche erfolgt partiell und ignoriert die Groß/Kleinschreibung.
Download
Selber hochladen
Ihr wollt das Script selber auf die Firewall hochladen? Dann nutzt diesen Download.
Download direkt auf die Firewall
Noch einfacher geht es hiermit. Ihr ladet das Script direkt in der advanced Shell herunter und könnt direkt starten.
curl -s -L -o /tmp/waf_1mb_change.sh https://it-tech.wiki/sdc_download/2741/?key=2otn2oerlxhgxsj72esfre99kvvqat && echo -en "\n\nUse \"sh /tmp/waf_1mb_change.sh -h\" to get help for first use\n\n"
Fragen
- Ist die Konfiguration bootfest?
Ein ganz klares JEIN 😉 In den letzten Versionen war es so, aber früher war es nicht so. Vermutlich hat Sophos was geändert. Nach einem Reboot probiert einfach das Limit zur Sicherheit noch einmal aus - Ist die Konfiguration updateresistent?
Auch ein ganz klares JEIN 😉 In den letzten Versionen war es so, aber früher war es nicht so. Vermutlich hat Sophos was geändert. Nach einem Update probiert einfach das Limit zur Sicherheit noch einmal aus - Wie sicher ist das Script?
Das Script wurde von uns soweit es geht getestet und sollte alle möglichen Eingabefehler abfangen. Durch die vordefinierten CLI Kommandos kann aber auch nicht wirklich was passieren. Trotzdem übernehmen wir keine Garantie für eventuelle Folgeschäden.
Wer möchte, schaut sich auch gerne den Quelltext an und prüft, was das Script so macht.
Noch mal der Hinweis: Testumgebungen sind immer gut! 😉 - Kann man die Konfiguration zurück setzen?
Ja, dazu einfach den Standardwert wieder setzen: 1MB = 1048576
Andere Artikel
Schaut Euch auch gerne eine andere Eigenentwicklung von uns an:
Genial, danke! Das erleichtert einiges! 5*
This is excellent info, and the correct way to do it on SFOS. Thanks!
You are welcome! Thanks for the feedback. 🙂