295 líneas
7.2 KiB
Markdown
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.
|
|
|
|

|
|

|
|

|
|

|
|
|
|
## 🚀 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. |