- Migrate MD5+global-salt hashing to bcrypt with transparent upgrade on login - Enforce password change in Auth middleware (allow only changepwd/logout/ws) - Generate random initial admin password on fresh install (data/initial_password.txt)
16 KiB
English | 简体中文 | Español | हिन्दी | العربية | Français | Português | Русский | বাংলা | اردو | 日本語 | Deutsch | Bahasa Indonesia | 한국어
Motivation du développement :
- Légèreté : au départ, j'utilisais pour la protection des produits de sécurité basés sur des plugins nginx, apache et iis, mais cette forme de plugin présentait un fort couplage.
- Privatisation : par la suite, la plupart des services de protection cloud ont été adoptés, mais le déploiement privé n'est abordable que pour les moyennes et grandes entreprises, tandis que les petites sociétés et les studios le trouvent coûteux.
- Chiffrement et confidentialité : lors de la protection web, il est préférable de traiter les données en local sans les envoyer vers le cloud. L'objectif était de créer un outil qui chiffre les informations locales et les communications réseau de l'interface d'administration.
- DIY : au fil des années de maintenance et de développement de sites web, il y avait des fonctions précises que je souhaitais ajouter sans pouvoir y parvenir.
- Visibilité : si le webmaster n'a jamais utilisé de WAF similaire, il est peu pratique de comprendre qui accède au site et quelles requêtes sont effectuées en se basant uniquement sur les journaux ou sur nginx, apache, IIS, etc.
En résumé, l'objectif était de créer un outil efficace de protection des sites web ou des API, capable de gérer les situations anormales et d'assurer le fonctionnement normal des sites et des applications.
Présentation du logiciel
SamWaf est un pare-feu applicatif web (WAF) léger et open source destiné aux petites entreprises, aux studios et aux sites web personnels. Il prend en charge un déploiement entièrement privé, chiffre les données stockées en local, se lance facilement et fonctionne sous Linux, Windows 64 bits et ARM64, avec des images Docker disponibles. Par défaut, il utilise une base de données SQLite embarquée et chiffrée, sans aucune dépendance externe, et peut en option basculer vers MySQL.
Architecture
Interface
Fonctionnalités principales
Fondamentaux
- Code entièrement open source (Apache 2.0)
- Déploiement entièrement privé ; les données sont chiffrées et stockées uniquement en local
- Démarrage en un clic à partir d'un fichier unique, léger et sans dépendance à des services tiers (MySQL/Redis sont optionnels)
- Moteur totalement indépendant ; la protection ne repose ni sur IIS ni sur Nginx
- Prise en charge d'IPv6
Accès au trafic
- Prise en charge de HTTP/1.1, HTTP/2 et HTTP/3 (QUIC)
- Transfert WebSocket
- Proxy inverse avec équilibrage de charge (round-robin pondéré, hachage d'IP, moindres connexions) ; les contrôles de santé retirent automatiquement les backends défaillants
- Règles de chemin : proxy inverse par chemin, fichiers statiques ou redirection 301/302, avec protocole backend et délai de réponse configurables
- Hébergement de sites statiques
- Transfert par tunnel de niveau 4 TCP/UDP (avec contrôle d'accès par IP et contrôle par plage horaire)
- Mise en cache des pages web
- Authentification HTTP Basic pour l'accès au site
- Page de blocage personnalisable
Protection contre les attaques
- Détection des injections SQL
- Détection XSS (cross-site scripting)
- Détection RCE (exécution de commandes à distance)
- Détection des outils de scan
- Détection de la traversée de chemins
- Détection des téléversements de fichiers (extensions dangereuses, signatures de webshell, Content-Type falsifié)
- Protection CC / limitation de débit
- Détection des faux robots d'indexation (vérification par DNS inverse des robots des moteurs de recherche)
- Protection contre le hotlinking (anti-leech)
- Protection CSRF (validation Origin/Referer par site)
- Filtrage des mots sensibles
- Prise en charge du jeu de règles OWASP CRS (moteur Coraza ; les règles peuvent être activées, désactivées ou surchargées)
- Règles de protection personnalisables, éditables par script ou via l'interface graphique
- Vérification humaine : CAPTCHA par clic et preuve de travail Cap.js
- Mode journalisation seule : enregistre les attaques sans les bloquer, utile pour observer et affiner les règles
Contrôle d'accès
- Liste d'autorisation / de blocage IP
- Liste d'autorisation / de blocage d'URL
- Blocage géographique (bases de données hors ligne intégrées ip2region/GeoIP2, IPv4/IPv6)
- Bannissement d'IP couplé au pare-feu du système d'exploitation
- Bannissement automatique lorsque le nombre d'échecs d'une IP atteint un seuil
- Configuration globale en un clic et stratégies de protection par site
Sécurité des données
- Stockage chiffré des journaux
- Journaux de communication chiffrés
- Masquage des données (DLP) avec sortie désignée des données confidentielles
- Anti-falsification des pages web (apprentissage d'une base de référence + restauration automatique)
- Renforcement de la sécurité des cookies (HttpOnly/Secure/SameSite)
Certificats SSL
- Demande et renouvellement automatiques des certificats SSL (ACME, multi-CA avec prise en charge d'EAB)
- Multi-certificats SNI et HTTPS multi-ports
- Vérification en masse de l'expiration des certificats SSL
- Chargement automatique des certificats
Exploitation et administration
- RBAC pour les comptes, authentification à deux facteurs OTP, journaux de connexion et d'opérations
- Rapports statistiques et supervision du système et des hôtes
- Politique de conservation des données avec partitionnement et archivage automatiques des journaux
- SQLite (chiffré) par défaut, MySQL en option, avec un outil intégré de migration SQLite→MySQL
- Mise à niveau en ligne en un clic, redémarrage progressif sans interruption de service et retour à une version antérieure
- Tâches par lots, tâches planifiées et sauvegarde des données
- API ouverte
Notifications
- Canaux de notification : e-mail, DingTalk, Feishu, WeCom (WeChat Work), ServerChan, Webhook, Kafka, RabbitMQ et fichier journal
Instructions d'utilisation
Il est fortement recommandé d'effectuer des tests approfondis dans un environnement de test avant tout déploiement en production. En cas de problème, merci de nous faire un retour rapidement.
Télécharger la dernière version
Gitee: https://gitee.com/samwaf/SamWaf/releases
GitHub: https://github.com/samwafgo/SamWaf/releases
AtomGit: https://atomgit.com/SamSafe/SamWaf/releases
Démarrage rapide
Windows
- Démarrage direct
SamWaf64.exe
- Exécution en tant que service (nécessite les droits d'administrateur)
//Install & Start
SamWaf64.exe install && SamWaf64.exe start
//Stop & Uninstall
SamWaf64.exe stop && SamWaf64.exe uninstall
Linux
- installation
curl -sSO https://update.samwaf.com/latest/install_samwaf.sh && bash install_samwaf.sh install
- désinstallation
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
Plus de détails sur Docker : https://hub.docker.com/r/samwaf/samwaf
Tags :
- latest : la dernière version stable (recommandée pour un usage en production).
- beta : la dernière version de test (permet de tester de nouvelles fonctionnalités ou des correctifs de bugs spécifiques).
Outils en ligne de commande
| Command | Description |
|---|---|
install / uninstall |
Installer / désinstaller le service système |
start / stop / restart |
Démarrer / arrêter / redémarrer le service |
rolling-restart |
Redémarrage progressif sans interruption (remplace le worker sans interrompre le trafic) |
resetpwd |
Réinitialiser le mot de passe administrateur |
resetotp |
Réinitialiser le code de sécurité (OTP) |
repairdb |
Réparer une base de données corrompue |
execsql |
Exécuter des instructions SQL sur une base de données sélectionnée |
migratedb |
Migration hors ligne de la base de données SQLite → MySQL (--dry-run pour une simple estimation, --force pour écraser) |
rollback |
Revenir à une version de sauvegarde antérieure |
Exemple : SamWaf64.exe resetpwd (sous Linux : ./SamWafLinux64 resetpwd)
Accès après démarrage
Compte par défaut : admin Mot de passe initial : les nouvelles installations génèrent automatiquement un mot de passe aléatoire enregistré dans data/initial_password.txt (les installations existantes conservent leur mot de passe précédent ; veuillez le modifier dès la première connexion)
Guide de mise à niveau
Remarque : le processus de mise à niveau interrompt le service ; veuillez effectuer la mise à niveau pendant les heures creuses.
Mise à niveau automatique
Si une nouvelle version est disponible, une invite de mise à niveau s'affiche pour confirmation et vous permet de lancer la mise à niveau. La page se rafraîchit automatiquement une fois la mise à niveau terminée.
Mise à niveau manuelle
-
Pour un lancement direct :
- Fermez l'application.
- Téléchargez la dernière version du programme et remplacez les fichiers existants, puis redémarrez-la manuellement.
-
Pour le mode service :
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
Remarque : la mise à niveau du service Windows peut déclencher des règles de sécurité de 360 ou de Huorong, empêchant le remplacement normal des nouveaux fichiers. Dans ce cas, vous pouvez remplacer les fichiers manuellement. Les personnes familières de ce domaine sauront déterminer la méthode de traitement appropriée.
Documentation en ligne
Informations sur le code
Dépôt de code
- Gitee https://gitee.com/samwaf/SamWaf
- GitHub https://github.com/samwafgo/SamWaf
- Atomgit https://atomgit.com/SamSafe/SamWaf
Présentation et compilation
Comment compiler Instructions de compilation
Manuel de compilation en ligne : https://doc.samwaf.com/en/dev/
Plateformes testées et prises en charge
Plateformes testées et prises en charge
Autres informations
Résultats des tests
Politique de sécurité
Retours
SamWaf évolue en permanence. Vos retours et suggestions sont les bienvenus.
- Issues Gitee
- Issues GitHub
- Issues Atomgit
- Retour par e-mail : samwafgo@gmail.com
Compte officiel WeChat
Historique des stars
Licence
SamWaf est distribué sous licence Apache License 2.0. Consultez LICENSE pour plus de détails.
Pour les mentions relatives à l'utilisation de logiciels tiers, voir ThirdLicense
Contribution
Merci aux contributeurs suivants !













