# CSF Web Admin Panel Panel de administración web moderno para **ConfigServer Security & Firewall (CSF)** construido con Next.js 15 y Docker. ![CSF Web Admin Panel](https://img.shields.io/badge/CSF-Web%20Admin-blue) ![Docker](https://img.shields.io/badge/Docker-Ready-blue) ![Next.js](https://img.shields.io/badge/Next.js-15-black) ![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue) ## 🚀 Características - **Panel de Control Moderno**: Interfaz web responsive y moderna - **Gestión Completa de CSF**: Control total del firewall desde el navegador - **Monitoreo en Tiempo Real**: WebSockets para estadísticas y logs en vivo - **Autenticación Segura**: Sistema de login con JWT - **Gestión de Reglas**: Agregar, eliminar y gestionar reglas de firewall - **Visualización de Logs**: Monitoreo de actividad del firewall - **Estadísticas del Sistema**: CPU, memoria, disco y red - **Dockerizado**: Despliegue fácil con Docker y Docker Compose ## 📋 Requisitos Previos - Docker 20.10 o superior - Docker Compose 2.0 o superior - 2GB RAM mínimo - Acceso root/privilegiado para iptables ## 🛠️ Instalación Rápida 1. **Clonar el repositorio**: ```bash git clone cd csf-web-admin ``` 2. **Configurar variables de entorno**: ```bash cp .env.example .env # Editar .env con sus configuraciones ``` 3. **Desplegar con un comando**: ```bash ./deploy.sh ``` 4. **Acceder al panel**: - URL: http://localhost:3000 - Usuario: `admin` - Contraseña: `admin123` ## 🐳 Despliegue Manual con Docker ### Construcción de Imágenes ```bash # Construir imagen CSF docker build -f Dockerfile.csf -t csf-firewall . # Construir imagen Web docker build -f Dockerfile.web -t csf-web . ``` ### Ejecutar con Docker Compose ```bash # Iniciar servicios docker-compose up -d # Ver logs docker-compose logs -f # Detener servicios docker-compose down ``` ## 📁 Estructura del Proyecto ``` csf-web-admin/ ├── 📁 csf-web/ # Aplicación Next.js │ ├── 📁 src/ │ │ ├── 📁 app/ # App Router (Next.js 15) │ │ ├── 📁 components/ # Componentes React │ │ ├── 📁 hooks/ # Hooks personalizados │ │ ├── 📁 lib/ # Utilidades │ │ ├── 📁 store/ # Estado global (Zustand) │ │ └── 📁 types/ # Tipos TypeScript │ ├── 📄 package.json │ └── 📄 next.config.mjs ├── 📁 scripts/ # Scripts CSF originales │ └── 📁 csf/ # Código fuente CSF ├── 📁 docker/ # Scripts Docker │ ├── 📄 entrypoint.sh │ └── 📄 csf-start.sh ├── 📄 Dockerfile.csf # Dockerfile para CSF ├── 📄 Dockerfile.web # Dockerfile para Web ├── 📄 docker-compose.yml # Orquestación ├── 📄 deploy.sh # Script de despliegue ├── 📄 .env.example # Variables de entorno └── 📄 README.md ``` ## 🎛️ Características del Panel ### Dashboard Principal - Estado del firewall en tiempo real - Estadísticas del sistema (CPU, RAM, Disco) - Conexiones activas - Resumen de reglas ### Gestión de Reglas - Agregar/eliminar reglas allow/deny - Búsqueda y filtrado de reglas - Gestión de bloqueos temporales - Validación de direcciones IP ### Monitoreo de Logs - Logs en tiempo real - Filtrado por tipo y nivel - Exportación de logs - Análisis de patrones de ataque ### Configuración - Modificación de configuraciones CSF - Gestión de puertos TCP/UDP - Configuración de alertas - Backup y restauración ## 🔧 Configuración ### Variables de Entorno Principales ```bash # Seguridad JWT_SECRET=tu-clave-secreta-aqui ADMIN_USERNAME=admin ADMIN_PASSWORD=contraseña-segura # Red WEB_PORT=3000 CSF_TCP_IN=22,80,443,3000 CSF_TCP_OUT=22,25,53,80,113,443,587,993,995 # Paths CSF_CONFIG_PATH=/etc/csf CSF_LOG_PATH=/var/log/lfd ``` ### Configuración de CSF El contenedor CSF se configura automáticamente con: - Modo de prueba deshabilitado - Acceso permitido desde redes Docker - Logs habilitados - Auto-updates deshabilitado ## 📊 API Endpoints ### Autenticación - `POST /api/auth` - Login - `GET /api/auth` - Verificar sesión - `DELETE /api/auth` - Logout ### Control CSF - `GET /api/csf?action=status` - Estado del firewall - `POST /api/csf` - Ejecutar comandos (start, stop, restart) ### Reglas - `GET /api/rules?type=all` - Obtener reglas - `POST /api/rules` - Agregar regla - `DELETE /api/rules` - Eliminar regla ### Logs y Estadísticas - `GET /api/logs?type=firewall` - Logs del firewall - `GET /api/stats` - Estadísticas del sistema ### WebSocket - `/api/socket` - Datos en tiempo real ## 🔒 Seguridad ### Autenticación - JWT con cookies httpOnly - Protección CSRF - Validación de permisos ### Red - Comunicación interna entre contenedores - Headers de seguridad configurados - Acceso restringido a APIs ### Firewall - Configuración segura por defecto - Backup automático de configuraciones - Logs de auditoría completos ## 🚨 Resolución de Problemas ### Contenedor CSF no inicia ```bash # Verificar privilegios docker-compose logs csf # Verificar capacidades docker run --rm --privileged csf-firewall csf --check ``` ### Web interface no conecta ```bash # Verificar logs docker-compose logs csf-web # Verificar conectividad curl http://localhost:3000/api/health ``` ### Problemas de iptables ```bash # Verificar módulos del kernel lsmod | grep ip_tables # Verificar capacidades del contenedor docker inspect csf-firewall | grep -i cap ``` ## 📈 Monitoreo y Logs ### Logs del Sistema ```bash # Logs de CSF docker-compose exec csf tail -f /var/log/lfd/lfd.log # Logs de la web docker-compose logs -f csf-web # Logs combinados docker-compose logs -f ``` ### Métricas - CPU y memoria en tiempo real - Conexiones de red activas - Estadísticas de reglas de firewall - Actividad de bloqueos ## 🔄 Backup y Restauración ### Crear Backup ```bash ./deploy.sh backup ``` ### Restaurar Configuración ```bash # Restaurar volúmenes desde backup docker run --rm -v csf_config:/target -v $(pwd)/backups/latest:/source alpine cp -a /source/. /target/ ``` ## 🛡️ Mejores Prácticas 1. **Cambiar credenciales por defecto** 2. **Usar HTTPS en producción** 3. **Configurar backup automático** 4. **Monitorear logs regularmente** 5. **Actualizar contenedores periódicamente** 6. **Restringir acceso de red** ## 🤝 Contribuir 1. Fork el proyecto 2. Crear rama feature (`git checkout -b feature/AmazingFeature`) 3. Commit cambios (`git commit -m 'Add AmazingFeature'`) 4. Push a la rama (`git push origin feature/AmazingFeature`) 5. Abrir Pull Request ## 📝 Licencia Este proyecto está bajo la Licencia GPL v3. Ver `LICENSE` para más detalles. ## 🙏 Reconocimientos - [ConfigServer Services](https://configserver.com/) por CSF - [Next.js](https://nextjs.org/) por el framework web - [Docker](https://docker.com/) por la containerización ## 📞 Soporte - 🐛 [Reportar Bug](../../issues) - 💡 [Solicitar Feature](../../issues) - 📧 Email: support@example.com --- **⚠️ IMPORTANTE**: Este es un sistema de seguridad crítico. Siempre pruebe en un entorno de desarrollo antes de desplegar en producción.