295
README.md
Archivo normal
295
README.md
Archivo normal
@@ -0,0 +1,295 @@
|
||||
# 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.
|
||||
Referencia en una nueva incidencia
Block a user