15 KiB
English | 简体中文 | Español | हिन्दी | العربية | Français | Português | Русский | বাংলা | اردو | 日本語 | Deutsch | Bahasa Indonesia | 한국어
Motivación del desarrollo:
- Ligero: Al principio utilicé algunos productos de seguridad basados en plugins de nginx, apache e iis para la protección, pero el formato de plugin tenía un alto grado de acoplamiento.
- Privatización: Más adelante se adoptaron sobre todo servicios de protección en la nube, pero el despliegue privado solo resulta asequible para medianas y grandes empresas, mientras que a las pequeñas empresas y estudios les resulta costoso.
- Cifrado y privacidad: Durante la protección web es preferible procesar los datos localmente sin enviarlos a la nube. El objetivo era crear una herramienta que cifrara la información local y las comunicaciones de red del extremo de administración.
- DIY: A lo largo de los años de mantenimiento y desarrollo de sitios web había funciones concretas que quería añadir pero que no podía conseguir.
- Visibilidad: Si el webmaster nunca ha utilizado un WAF similar, resulta incómodo saber quién está accediendo al sitio y qué solicitudes se están realizando únicamente a partir de los logs o de nginx, apache, IIS, etc.
En resumen, el objetivo era crear una herramienta eficaz para la protección de sitios web o API, capaz de gestionar situaciones anómalas y garantizar el funcionamiento normal de los sitios web y las aplicaciones.
Introducción al software
SamWaf es un firewall de aplicaciones web ligero y de código abierto para pequeñas empresas, estudios y sitios web personales. Admite un despliegue totalmente privado, cifra los datos almacenados localmente, es fácil de poner en marcha y es compatible con Linux, Windows de 64 bits y ARM64, con imágenes Docker disponibles. De forma predeterminada utiliza una base de datos SQLite cifrada e integrada, sin dependencias externas, y opcionalmente puede cambiarse a MySQL / PostgreSQL.
Arquitectura
Interfaz
Funciones principales
Aspectos básicos
- Código completamente abierto (Apache 2.0)
- Despliegue totalmente privado; los datos se cifran y se almacenan únicamente en local
- Inicio con un clic desde un único archivo, ligero y sin dependencias de servicios de terceros (MySQL/Redis son opcionales)
- Motor totalmente independiente; la protección no depende de IIS ni de Nginx
- Compatibilidad con IPv6
Acceso de tráfico
- Compatibilidad con HTTP/1.1, HTTP/2 y HTTP/3 (QUIC)
- Reenvío de WebSocket
- Proxy inverso con balanceo de carga (round-robin ponderado, hash de IP, menor número de conexiones); las comprobaciones de estado eliminan automáticamente los backends en mal estado
- Reglas de ruta: proxy inverso por ruta, archivos estáticos o redirección 301/302, con protocolo de backend y tiempo de espera de respuesta configurables
- Servicio de sitios estáticos
- Reenvío de túneles TCP/UDP de capa 4 (con control de acceso por IP y control por ventana de tiempo)
- Caché de páginas web
- Autenticación HTTP Basic para el acceso al sitio
- Página de bloqueo personalizable
Protección contra ataques
- Detección de inyección SQL
- Detección de XSS (cross-site scripting)
- Detección de RCE (ejecución remota de comandos)
- Detección de herramientas de escaneo
- Detección de path traversal
- Detección en la subida de archivos (extensiones peligrosas, firmas de webshell, Content-Type falsificado)
- Protección CC / limitación de tasa
- Detección de crawlers/bots falsos (verificación por DNS inverso de los bots de motores de búsqueda)
- Anti-leech (protección contra hotlinking)
- Protección CSRF (validación de Origin/Referer por sitio)
- Filtrado de palabras sensibles
- Compatibilidad con el conjunto de reglas OWASP CRS (motor Coraza; las reglas se pueden habilitar/deshabilitar/sobrescribir)
- Reglas de protección personalizables, con edición tanto por script como mediante interfaz gráfica
- Verificación humana: CAPTCHA de clic y prueba de trabajo con Cap.js
- Modo solo registro: registra los ataques sin bloquearlos, útil para observar y ajustar las reglas
Control de acceso
- Lista de permitidos / lista de bloqueo de IP
- Lista de permitidos / lista de bloqueo de URL
- Bloqueo geográfico (bases de datos offline integradas ip2region/GeoIP2, IPv4/IPv6)
- Bloqueo de IP vinculado al firewall del sistema operativo
- Bloqueo automático cuando el número de fallos de una IP alcanza un umbral
- Configuración global con un clic y estrategias de protección por sitio
Seguridad de los datos
- Almacenamiento cifrado de registros
- Registros de comunicación cifrados
- Enmascaramiento de datos (DLP) con salida de privacidad para los datos designados
- Protección contra la manipulación de páginas web (aprendizaje de línea base + recuperación automática)
- Refuerzo de la seguridad de las cookies (HttpOnly/Secure/SameSite)
Certificados SSL
- Solicitud y renovación automáticas de certificados SSL (ACME, multi-CA con soporte de EAB)
- HTTPS con múltiples certificados SNI y múltiples puertos
- Comprobación masiva de la caducidad de certificados SSL
- Carga automática de certificados
Operación y gestión
- RBAC de cuentas, autenticación de dos factores OTP, registros de inicio de sesión y de operaciones
- Informes estadísticos y monitorización del sistema y de los hosts
- Política de retención de datos con particionado y archivado automáticos de los registros
- SQLite (cifrado) por defecto, MySQL / PostgreSQL opcional, con una herramienta integrada de migración SQLite→MySQL / SQLite→PostgreSQL / MySQL→PostgreSQL
- Actualización en línea con un clic, reinicio continuo sin tiempo de inactividad y reversión de versiones
- Tareas por lotes, tareas programadas y copia de seguridad de datos
- API abierta
Notificaciones
- Canales de entrega por correo electrónico, DingTalk, Feishu, WeCom (WeChat Work), ServerChan, Webhook, Kafka, RabbitMQ y archivo de registro
Instrucciones de uso
Se recomienda encarecidamente realizar pruebas exhaustivas en un entorno de pruebas antes de desplegar en producción. Si surge algún problema, envíe sus comentarios lo antes posible.
Descargar la última versión
Gitee: https://gitee.com/samwaf/SamWaf/releases
GitHub: https://github.com/samwafgo/SamWaf/releases
AtomGit: https://atomgit.com/SamSafe/SamWaf/releases
Inicio rápido
Windows
- Iniciar directamente
SamWaf64.exe
- Ejecutar como servicio (requiere permisos de administrador)
//Install & Start
SamWaf64.exe install && SamWaf64.exe start
//Stop & Uninstall
SamWaf64.exe stop && SamWaf64.exe uninstall
Linux
- instalar
curl -sSO https://update.samwaf.com/latest/install_samwaf.sh && bash install_samwaf.sh install
- desinstalar
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
Más detalles sobre Docker https://hub.docker.com/r/samwaf/samwaf
Etiquetas:
- latest: La última versión estable (recomendada para uso en producción).
- beta: La última versión de pruebas (permite probar nuevas funciones o correcciones de errores específicas).
Herramientas de línea de comandos
| Comando | Descripción |
|---|---|
install / uninstall |
Instalar / desinstalar el servicio del sistema |
start / stop / restart |
Iniciar / detener / reiniciar el servicio |
rolling-restart |
Reinicio continuo sin tiempo de inactividad (sustituye el worker sin interrumpir el tráfico) |
resetpwd |
Restablecer la contraseña del administrador |
resetotp |
Restablecer el código de seguridad (OTP) |
repairdb |
Reparar una base de datos dañada |
execsql |
Ejecutar sentencias SQL en una base de datos seleccionada |
migratedb |
Migración de base de datos sin conexión SQLite → MySQL / SQLite → PostgreSQL / MySQL → PostgreSQL (--dry-run para solo estimar, --force para sobrescribir) |
rollback |
Revertir a una versión de copia de seguridad anterior |
Ejemplo: SamWaf64.exe resetpwd (en Linux: ./SamWafLinux64 resetpwd)
Acceso inicial
Cuenta predeterminada: admin Contraseña inicial: las instalaciones nuevas generan automáticamente una contraseña aleatoria guardada en data/initial_password.txt (las instalaciones existentes conservan su contraseña anterior; cámbiela al iniciar sesión por primera vez)
Guía de actualización
Nota: el proceso de actualización detendrá el servicio; actualice durante las horas de menor tráfico.
Actualización automática
Si hay una nueva versión disponible, aparecerá un aviso de actualización para su confirmación, que le permitirá iniciar la actualización. La página se refrescará automáticamente una vez completada la actualización.
Actualización manual
-
Para el inicio directo:
- Cierre la aplicación.
- Descargue el programa más reciente y reemplace los archivos existentes; luego inícielo de nuevo manualmente.
-
Para el modo servicio:
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
Nota: Al actualizar el servicio de Windows se pueden activar reglas de seguridad de 360 o Huorong, lo que impide que los archivos nuevos se reemplacen con normalidad. En ese caso, puede reemplazar los archivos manualmente. Quienes estén familiarizados con este tema pueden ayudar a determinar el método de gestión correcto.
Documentación en línea
Información del código
Repositorio de código
- Gitee https://gitee.com/samwaf/SamWaf
- GitHub https://github.com/samwafgo/SamWaf
- Atomgit https://atomgit.com/SamSafe/SamWaf
Introducción y compilación
Cómo compilar Instrucciones de compilación
Manual de compilación en línea: https://doc.samwaf.com/en/dev/
Plataformas probadas y compatibles
Plataformas probadas y compatibles
Otra información
Resultados de las pruebas
Política de seguridad
Comentarios
SamWaf está en continua iteración. Agradecemos sus comentarios y sugerencias.
- Issues en Gitee
- Issues en GitHub
- Issues en Atomgit
- Comentarios por correo electrónico: samwafgo@gmail.com
Cuenta pública de WeChat
Historial de estrellas
Licencia
SamWaf está licenciado bajo la Apache License 2.0. Consulte LICENSE para obtener más detalles.
Para el aviso sobre el uso de software de terceros, consulte ThirdLicense
Contribución
¡Gracias a los siguientes colaboradores!













