Introducción
Coraza - Web Application Firewall
Coraza es un Web Application Firewall (WAF) de código abierto, nivel empresarial y alto rendimiento, listo para proteger tus aplicaciones más preciadas. Esta escrito en Go, soporta conjuntos de reglas ModSecurity SecLang y es 100% compatible con el OWASP Core Rule Set.
- Sitio web: https://coraza.io
- Foro: Discusiones en Github
- Comunidad OWASP en Slack (#coraza): https://owasp.org/slack/invite
- Prueba de reglas: Coraza Playground
Características principales:
⇲ Reemplazo directo - Coraza es un motor alternativo que tiene compatibilidad parcial con
TrustwaveOWASP ModSecurity Engine y soporta conjuntos de reglas SecLang estándar de la industria.🔥 Seguridad - Coraza ejecuta el OWASP CRS para proteger tus aplicaciones web de una amplia gama de ataques, incluyendo el OWASP Top Ten, con un mínimo de falsas alertas. CRS protege contra muchas categorías de ataques comunes, incluyendo Inyección SQL (SQLi), Cross Site Scripting (XSS), Inyección de código PHP y Java, HTTPoxy, Shellshock, Detección de Scripts/Escáner/Bots y Fugas de Metadatos y Errores.
🔌 Extensible - Coraza es una biblioteca en su núcleo, con muchas integraciones para desplegar instancias de Web Application Firewall en tus propias instalaciones. Registradores de auditoría, motores de persistencia, operadores, acciones, crea tus propias funcionalidades para extender Coraza tanto como desees.
🚀 Rendimiento - Desde sitios web enormes hasta blogs pequeños, Coraza puede manejar la carga con un impacto mínimo en el rendimiento. Consulta nuestros Benchmarks
﹡ Simplicidad - Cualquier persona puede entender y modificar el código fuente de Coraza. Es fácil extender Coraza con nuevas funcionalidades.
💬 Comunidad - Coraza es un proyecto comunitario, se aceptan contribuciones y todas las ideas serán consideradas. Encuentra la guia para contribuir en el documento CONTRIBUTION.
Integraciones
El Proyecto Coraza mantiene implementaciones y plugins para los siguientes servidores:
- Plugin para Caddy Reverse Proxy y Webserver - estable, necesita mantenedor
- Extension Proxy WASM para proxies con soporte proxy-wasm (ej. Envoy) - estable, aun en desarrollo
- Plugin HAProxy SPOE - vista previa
- Plugin para Traefik Proxy - vista previa, necesita mantenedor
- Middleware para Gin Web Framework - vista previa, necesita mantenedor
- Apache HTTP Server - experimental
- Nginx - experimental
- Biblioteca C de Coraza - experimental
Plugins
- Coraza GeoIP (vista previa)
Requisitos previos
- Compilador Golang v1.18+
- Distribucion Linux (Debian o Centos recomendado) o Mac. Windows aun no esta soportado.
Uso de Coraza Core
Coraza puede usarse como biblioteca para tu programa en Go para implementar un middleware de seguridad o integrarlo con aplicaciones y servidores web existentes.
package main
import (
"fmt"
"github.com/corazawaf/coraza/v3"
)
func main() {
// First we initialize our waf and our seclang parser
waf, err := coraza.NewWAF(coraza.NewWAFConfig().
WithDirectives(`SecRule REMOTE_ADDR "@rx .*" "id:1,phase:1,deny,status:403"`))
// Now we parse our rules
if err != nil {
fmt.Println(err)
}
// Then we create a transaction and assign some variables
tx := waf.NewTransaction()
defer func() {
tx.ProcessLogging()
tx.Close()
}()
tx.ProcessConnection("127.0.0.1", 8080, "127.0.0.1", 12345)
// Finally we process the request headers phase, which may return an interruption
if it := tx.ProcessRequestHeaders(); it != nil {
fmt.Printf("Transaction was interrupted with status %d\n", it.Status)
}
}Examples/http-server proporciona un ejemplo para practicar con Coraza.
Etiquetas de compilación
Las etiquetas de compilación de Go pueden ajustar ciertas funcionalidades en tiempo de compilación. Estas son solo para casos de uso avanzados y no tienen garantías de compatibilidad entre versiones menores - usar con precaución.
- coraza.disabled_operators.* - excluye el operador especificado de la compilación. Particularmente útil si se sobreescribe el operador con
operators.Registerpara reducir el tamano del binario / la sobrecarga de inicio. coraza.rule.multiphase_valuation- habilita la evaluación de variables de reglas en las fases en que estan listas, no solo en la fase para la que la regla esta definida.
Herramientas
- Go FTW: Motor de pruebas de reglas
- Coraza Playground: Interfaz web sandbox para probar reglas
- OWASP Core Ruleset: Excelente conjunto de reglas, compatible con Coraza
Desarrollo
Coraza solo requiere Go para el desarrollo. Puedes ejecutar mage.go para emitir comandos de desarrollo.
Ver la lista de comandos
go run mage.go -lPor ejemplo, para formatear tu código antes de enviarlo, ejecuta
go run mage.go formatContribuir
Las contribuciones son bienvenidas! Por favor consulta CONTRIBUTING.md para orientación.
Agradecimientos
- Al equipo de Modsecurity por crear ModSecurity
- Al equipo de OWASP Coreruleset por el CRS y su ayuda
Empresas/Productos que usan Coraza
Coraza en X/Twitter
Donaciones
Para donaciones, consulta el sitio de donaciones
Gracias a todas las personas que han contribuido
No podriamos haberlo logrado sin ustedes!
Hecho con contrib.rocks.