15 KiB
English | 简体中文 | Español | हिन्दी | العربية | Français | Português | Русский | বাংলা | اردو | 日本語 | Deutsch | Bahasa Indonesia | 한국어
Entwicklungsmotivation:
- Leichtgewichtig: Anfangs habe ich zum Schutz einige Sicherheitsprodukte auf Basis von nginx-, apache- und iis-Plugins eingesetzt, doch die Plugin-Form wies einen hohen Kopplungsgrad auf.
- Private Bereitstellung: Später kamen überwiegend Cloud-Schutzdienste zum Einsatz, doch eine private Bereitstellung ist nur für mittlere und große Unternehmen erschwinglich, während sie für kleine Firmen und Studios kostspielig ist.
- Datenschutz durch Verschlüsselung: Beim Web-Schutz ist es vorzuziehen, Daten lokal zu verarbeiten, ohne sie in die Cloud zu senden. Ziel war es, ein Werkzeug zu schaffen, das lokale Informationen und die Netzwerkkommunikation der Verwaltungsseite verschlüsselt.
- DIY: In den Jahren der Website-Wartung und -Entwicklung gab es bestimmte Funktionen, die ich gerne ergänzt hätte, aber nicht umsetzen konnte.
- Transparenz: Wenn der Webmaster noch nie eine vergleichbare WAF verwendet hat, ist es umständlich, allein anhand von Logs oder über nginx, apache, IIS usw. nachzuvollziehen, wer auf die Website zugreift und welche Anfragen gestellt werden.
Kurz gesagt: Ziel war es, ein wirksames Werkzeug zum Schutz von Websites oder APIs zu schaffen, um mit anormalen Situationen umzugehen und den normalen Betrieb von Websites und Anwendungen sicherzustellen.
Software-Einführung
SamWaf ist eine leichtgewichtige Open-Source-Web-Application-Firewall für kleine Unternehmen, Studios und private Websites. Sie unterstützt eine vollständig private Bereitstellung, verschlüsselt lokal gespeicherte Daten, ist einfach zu starten und unterstützt Linux, Windows 64-Bit und ARM64; Docker-Images sind verfügbar. Standardmäßig verwendet sie eine eingebettete, verschlüsselte SQLite-Datenbank ohne jegliche externe Abhängigkeiten und kann optional auf MySQL / PostgreSQL umgestellt werden.
Architektur
Benutzeroberfläche
| Host hinzufügen | Angriffsprotokoll |
![]() |
![]() |
| CC | IP-Sperrliste |
![]() |
![]() |
| IP-Zulassungsliste | LDP |
![]() |
![]() |
| Regelskript aus Protokoll hinzufügen | Protokollauswahl |
![]() |
![]() |
| Protokolldetails | Manuelle Regel |
![]() |
![]() |
| URL-Sperrliste | URL-Zulassungsliste |
![]() |
![]() |
Hauptfunktionen
Grundlagen
- Vollständig quelloffener Code (Apache 2.0)
- Vollständig private Bereitstellung; Daten werden verschlüsselt und ausschließlich lokal gespeichert
- Ein-Klick-Start als einzelne Datei, leichtgewichtig und ohne Abhängigkeiten von Drittanbieterdiensten (MySQL/Redis sind optional)
- Vollständig eigenständige Engine; der Schutz ist nicht auf IIS oder Nginx angewiesen
- IPv6-Unterstützung
Traffic-Anbindung
- Unterstützung für HTTP/1.1, HTTP/2 und HTTP/3 (QUIC)
- WebSocket-Weiterleitung
- Reverse Proxy mit Lastverteilung (gewichtetes Round-Robin, IP-Hash, Least Connections); Health-Checks entfernen fehlerhafte Backends automatisch
- Pfadregeln: Reverse Proxy, statische Dateien oder 301/302-Weiterleitung pro Pfad, mit konfigurierbarem Backend-Protokoll und Antwort-Timeout
- Bereitstellung statischer Websites
- TCP/UDP-Layer-4-Tunnelweiterleitung (mit IP-Zugriffskontrolle und Zeitfenstersteuerung)
- Webseiten-Caching
- HTTP Basic Auth für den Website-Zugriff
- Anpassbare Sperrseite
Angriffsschutz
- Erkennung von SQL-Injection
- Erkennung von XSS (Cross-Site-Scripting)
- Erkennung von RCE (Remote Command Execution)
- Erkennung von Scanner-Tools
- Erkennung von Path Traversal
- Datei-Upload-Prüfung (gefährliche Dateiendungen, Webshell-Signaturen, gefälschter Content-Type)
- CC-/Rate-Limit-Schutz
- Erkennung gefälschter Crawler/Bots (Reverse-DNS-Verifizierung von Suchmaschinen-Bots)
- Hotlink-Schutz (Anti-Leech)
- CSRF-Schutz (Origin-/Referer-Validierung pro Website)
- Filterung sensibler Begriffe
- Unterstützung des OWASP-CRS-Regelwerks (Coraza-Engine; Regeln können aktiviert/deaktiviert/überschrieben werden)
- Anpassbare Schutzregeln, bearbeitbar per Skript und über die GUI
- Menschliche Verifizierung: Klick-CAPTCHA und Cap.js-Proof-of-Work
- Nur-Protokollieren-Modus: zeichnet Angriffe auf, ohne zu blockieren – nützlich zum Beobachten und Feinabstimmen von Regeln
Zugriffskontrolle
- IP-Zulassungsliste / -Sperrliste
- URL-Zulassungsliste / -Sperrliste
- Geo-Blocking (integrierte Offline-Datenbanken ip2region/GeoIP2, IPv4/IPv6)
- IP-Sperrung mit Kopplung an die Betriebssystem-Firewall
- Automatische Sperrung, wenn die Zahl der Fehlversuche einer IP einen Schwellenwert erreicht
- Globale Ein-Klick-Konfiguration und Schutzstrategien pro Website
Datensicherheit
- Verschlüsselte Protokollspeicherung
- Verschlüsselte Kommunikationsprotokolle
- Datenmaskierung (DLP) mit gezielter datenschutzkonformer Ausgabe
- Manipulationsschutz für Webseiten (Baseline-Lernen + automatische Wiederherstellung)
- Härtung der Cookie-Sicherheit (HttpOnly/Secure/SameSite)
SSL-Zertifikate
- Automatische Beantragung und Erneuerung von SSL-Zertifikaten (ACME, mehrere CAs mit EAB-Unterstützung)
- SNI mit mehreren Zertifikaten und HTTPS auf mehreren Ports
- Massenprüfung des Ablaufdatums von SSL-Zertifikaten
- Automatisches Laden von Zertifikaten
Betrieb & Verwaltung
- RBAC für Konten, OTP-Zwei-Faktor-Authentifizierung, Anmelde- und Aktionsprotokolle
- Statistikberichte sowie System- und Host-Überwachung
- Datenaufbewahrungsrichtlinie mit automatischem Log-Sharding und automatischer Archivierung
- Standardmäßig SQLite (verschlüsselt), optional MySQL / PostgreSQL, mit integriertem Migrationswerkzeug für SQLite→MySQL / SQLite→PostgreSQL / MySQL→PostgreSQL
- Online-Upgrade per Klick, Rolling-Restart ohne Ausfallzeit und Versions-Rollback
- Batch-Aufgaben, geplante Aufgaben und Datensicherung
- Offene API
Benachrichtigungen
- Zustellkanäle: E-Mail, DingTalk, Feishu, WeCom (WeChat Work), ServerChan, Webhook, Kafka, RabbitMQ und Protokolldatei
Nutzungshinweise
Es wird dringend empfohlen, vor der Bereitstellung in der Produktion gründliche Tests in einer Testumgebung durchzuführen. Sollten Probleme auftreten, geben Sie bitte umgehend Rückmeldung.
Neueste Version herunterladen
Gitee: https://gitee.com/samwaf/SamWaf/releases
GitHub: https://github.com/samwafgo/SamWaf/releases
AtomGit: https://atomgit.com/SamSafe/SamWaf/releases
Schnellstart
Windows
- Direkt starten
SamWaf64.exe
- Als Dienst ausführen (erfordert Administratorrechte)
//Install & Start
SamWaf64.exe install && SamWaf64.exe start
//Stop & Uninstall
SamWaf64.exe stop && SamWaf64.exe uninstall
Linux
- Installieren
curl -sSO https://update.samwaf.com/latest/install_samwaf.sh && bash install_samwaf.sh install
- Deinstallieren
curl -sSO https://update.samwaf.com/latest/install_samwaf.sh && bash install_samwaf.sh uninstall
Docker
docker run -d --name=samwaf-instance \
--restart always \
-p 26666:26666 \
-p 80:80 \
-p 443:443 \
-v /path/to/your/conf:/app/conf \
-v /path/to/your/data:/app/data \
-v /path/to/your/logs:/app/logs \
-v /path/to/your/ssl:/app/ssl \
samwaf/samwaf
Weitere Details zu Docker: https://hub.docker.com/r/samwaf/samwaf
Tags:
- latest: Die neueste stabile Version (für den Produktionseinsatz empfohlen).
- beta: Die neueste Testversion (ermöglicht das Testen neuer Funktionen oder gezielter Fehlerbehebungen).
Kommandozeilenwerkzeuge
| Command | Beschreibung |
|---|---|
install / uninstall |
Systemdienst installieren / deinstallieren |
start / stop / restart |
Dienst starten / stoppen / neu starten |
rolling-restart |
Rolling-Restart ohne Ausfallzeit (tauscht den Worker aus, ohne den Datenverkehr zu unterbrechen) |
resetpwd |
Administratorpasswort zurücksetzen |
resetotp |
Sicherheitscode (OTP) zurücksetzen |
repairdb |
Beschädigte Datenbank reparieren |
execsql |
SQL-Anweisungen auf einer ausgewählten Datenbank ausführen |
migratedb |
Offline-Datenbankmigration SQLite → MySQL / SQLite → PostgreSQL / MySQL → PostgreSQL (--dry-run nur zur Abschätzung, --force zum Überschreiben) |
rollback |
Auf eine frühere Sicherungsversion zurücksetzen |
Beispiel: SamWaf64.exe resetpwd (unter Linux: ./SamWafLinux64 resetpwd)
Zugriff starten
Standardkonto: admin Initialpasswort: Bei Neuinstallationen wird automatisch ein zufälliges Passwort erzeugt und in data/initial_password.txt gespeichert (bestehende Installationen behalten ihr bisheriges Passwort; bitte ändern Sie es bei der ersten Anmeldung)
Upgrade-Anleitung
Hinweis: Der Upgrade-Vorgang beendet den Dienst. Bitte führen Sie das Upgrade außerhalb der Hauptnutzungszeiten durch.
Automatisches Upgrade
Wenn eine neue Version verfügbar ist, erscheint eine Upgrade-Aufforderung zur Bestätigung, über die Sie das Upgrade starten können. Nach Abschluss des Upgrades wird die Seite automatisch aktualisiert.
Manuelles Upgrade
-
Bei direktem Start:
- Schließen Sie die Anwendung.
- Laden Sie das neueste Programm herunter, ersetzen Sie die vorhandenen Dateien und starten Sie die Anwendung anschließend manuell neu.
-
Im Dienstmodus:
1. First, pause the service.
Windows: SamWaf64.exe stop
Linux: ./SamWafLinux64 stop
2. Replace with the latest application files.
3. Start the service:
Windows: SamWaf64.exe start
Linux: ./SamWafLinux64 start
Hinweis: Beim Upgrade des Windows-Dienstes können Sicherheitsregeln von 360 oder Huorong ausgelöst werden, wodurch die neuen Dateien nicht ordnungsgemäß ersetzt werden können. In diesem Fall können Sie die Dateien manuell ersetzen. Wer sich in diesem Bereich auskennt, kann bei der Ermittlung der richtigen Vorgehensweise helfen.
Online-Dokumentation
Code-Informationen
Code-Repository
- Gitee https://gitee.com/samwaf/SamWaf
- GitHub https://github.com/samwafgo/SamWaf
- Atomgit https://atomgit.com/SamSafe/SamWaf
Einführung und Kompilierung
Wie man kompiliert Kompilierungsanleitung
Online-Handbuch zur Kompilierung: https://doc.samwaf.com/en/dev/
Getestete und unterstützte Plattformen
Getestete und unterstützte Plattformen
Weitere Informationen
Testergebnisse
Sicherheitsrichtlinie
Feedback
SamWaf wird kontinuierlich weiterentwickelt. Feedback und Vorschläge sind willkommen.
- Gitee Issues
- GitHub Issues
- Atomgit Issues
- Feedback per E-Mail: samwafgo@gmail.com
Offizieller WeChat-Account
Star-Verlauf
Lizenz
SamWaf ist unter der Apache License 2.0 lizenziert. Weitere Details finden Sie in der Datei LICENSE.
Hinweise zur Nutzung von Drittanbieter-Software finden Sie unter ThirdLicense
Mitwirkung
Vielen Dank an die folgenden Mitwirkenden!













