Files
csf-docker/README.md
2025-09-20 19:00:44 +02:00

295 líneas
7.2 KiB
Markdown

# 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 <repository-url>
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.