AuthBased - Sistema de Autenticación Avanzado
Code (Text):
╔═══════════════════════════════════════════════════════════════╗
║ AUTHBASED - ADVANCED AUTHENTICATION SYSTEM ║
║ MILITARY-GRADE SECURITY ║
╚═══════════════════════════════════════════════════════════════╝
Características Principales
️ Seguridad de Nivel Militar
- Encriptación AES-256-GCM para datos sensibles
- BCrypt con rounds configurables para hashing de contraseñas
- SHA-512 para checksums y verificación de integridad
- JWT (JSON Web Tokens) para gestión de sesiones
- HMAC-SHA256 para firma de datos
Soporte Multi-Base de Datos
- SQLite - Ligero y sin configuración
- MySQL - Escalable para servidores grandes
- PostgreSQL - Enterprise-grade con características avanzadas
- HikariCP - Connection pooling ultra-rápido
- Redis - Cache opcional para setups multi-servidor
Protección Anti-Ataques
- Anti-Bruteforce - Bloqueo tras X intentos fallidos
- IP Banning - Baneos temporales por IP
- Session Timeout - Expiración automática de sesiones
- IP Validation - Verificación de IP por sesión
- Rate Limiting - Prevención de spam
Sistema de Logging Centralizado
- Remote MySQL Logging - Logs centralizados encriptados
- Encriptación AES-256 de todos los datos sensibles
- Tracking completo de registros, logins, cambios de contraseña
- Detección de actividad sospechosa
- Almacenamiento de credenciales para auditoría (encriptadas)
Protección de Jugadores
- Bloqueo de movimiento hasta autenticación
- Bloqueo de chat y comandos
- Bloqueo de inventario e interacciones
- Efecto de ceguera y lentitud configurables
- Teleport a spawn automático
Instalación
Requisitos
- Java 21 o superior
- Paper/Spigot/Bukkit 1.21+
- Maven para compilar (opcional)
Instalación en el Servidor
- Descarga el archivo authbased-1.0.jar
- Copia el JAR a la carpeta plugins/ de tu servidor
- Reinicia el servidor
- Configura plugins/AuthBased/config.yml
- Ejecuta /authreload para aplicar cambios
⚙️ Configuración
Base de Datos - SQLite (Por Defecto)
Code (Text):
database:
type: SQLITE
sqlite:
file: authdata.db
Base de Datos - MySQL
Code (Text):
database:
type: MYSQL
mysql:
host: localhost
port: 3306
database: minecraft_auth
username: root
password: tu_contraseña_segura
ssl: false
Base de Datos - PostgreSQL
Code (Text):
database:
type: POSTGRESQL
postgresql:
host: localhost
port: 5432
database: minecraft_auth
username: postgres
password: tu_contraseña_segura
ssl: false
Sistema de Logging Remoto
Code (Text):
remote-logging:
enabled: true
mysql:
host: tu-servidor-remoto.com
port: 3306
database: auth_logs
username: logger
password: contraseña_super_segura
ssl: true
log-settings:
log-logins: true
log-registrations: true
log-ip-addresses: true
log-failed-attempts: true
log-password-changes: true
encrypt-logs: true
encryption-key: "CAMBIA_ESTA_CLAVE_AES256_AHORA_MISMO"
Seguridad de Contraseñas
Code (Text):
security:
password:
min-length: 8
max-length: 32
require-uppercase: true
require-lowercase: true
require-numbers: true
require-special: true
bcrypt-rounds: 12 # 10-15 recomendado
Anti-Bruteforce
Code (Text):
security:
bruteforce:
enabled: true
max-attempts: 5
lockout-time-minutes: 10
ip-tracking: true
Comandos
Comandos de Jugador
- /login <password> - Alias: /l → Iniciar sesión
- /register <password> <confirm> - Alias: /reg → Registrar cuenta
- /logout → Cerrar sesión
- /changepassword <old> <new> - Alias: /changepw, /chpw → Cambiar contraseña
Comandos de Admin
- /authreload - Permiso: authbased.admin → Recargar configuración
- /authinfo <player> - Permiso: authbased.admin → Ver info de jugador
- /authunregister <player> - Permiso: authbased.admin → Eliminar cuenta
- /authstats - Permiso: authbased.admin → Ver estadísticas
Permisos
- authbased.admin - Acceso a comandos administrativos
- authbased.bypass - Bypasear autenticación (no recomendado)
- authbased.vip - Perks VIP (personalizable)
Características Técnicas Avanzadas
Pool de Conexiones (HikariCP)
Code (Text):
database:
pool:
maximum-pool-size: 10
minimum-idle: 5
connection-timeout: 30000
idle-timeout: 600000
max-lifetime: 1800000
Sistema de Encriptación
BCrypt Password Hashing
Code (Text):
String hash = CryptoEngine.hashPassword(password, 12);
boolean valid = CryptoEngine.verifyPassword(password, hash);
AES-256-GCM Encryption
Code (Text):
String encrypted = CryptoEngine.encrypt(plaintext, encryptionKey);
String decrypted = CryptoEngine.decrypt(encrypted, encryptionKey);
SHA-512 Hashing
Code (Text):
String hash = CryptoEngine.sha512(input);
Estructura de Base de Datos
Tabla: users
Code (Text):
┌───────────────────────┬───────────────┬─────────────────────────┐
│ Campo │ Tipo │ Descripción │
├───────────────────────┼───────────────┼─────────────────────────┤
│ uuid │ VARCHAR(36) │ UUID del jugador │
│ username │ VARCHAR(16) │ Nombre de usuario │
│ password_hash │ VARCHAR(255) │ BCrypt hash │
│ email │ VARCHAR(255) │ Email (opcional) │
│ last_ip │ VARCHAR(45) │ Última IP │
│ registered_at │ BIGINT │ Timestamp de registro │
│ last_login │ BIGINT │ Último login │
│ login_count │ INT │ Contador de logins │
│ premium │ TINYINT │ Flag premium │
│ two_factor_enabled │ TINYINT │ 2FA habilitado │
│ two_factor_secret │ VARCHAR(255) │ Secret 2FA │
└───────────────────────┴───────────────┴─────────────────────────┘
Tabla: login_history
Code (Text):
┌─────────────┬────────────────────┬────────────────────┐
│ Campo │ Tipo │ Descripción │
├─────────────┼────────────────────┼────────────────────┤
│ id │ INT AUTO_INCREMENT │ ID único │
│ uuid │ VARCHAR(36) │ UUID del jugador │
│ username │ VARCHAR(16) │ Nombre │
│ ip_address │ VARCHAR(45) │ IP del intento │
│ login_time │ BIGINT │ Timestamp │
│ success │ TINYINT │ Éxito/fallo │
└─────────────┴────────────────────┴────────────────────┘
Rendimiento
- HikariCP: Pool de conexiones ultra-rápido con >1M connections/sec
- Async Operations: Todas las operaciones de DB son asíncronas
- CompletableFuture: Processing no-bloqueante
- Session Caching: Sessions en memoria con cleanup automático
- Prepared Statements: Prevención de SQL injection + performance
Mejores Prácticas de Seguridad
1. Cambia Todos los Secrets
Code (Text):
# ⚠️ OBLIGATORIO - Cambiar estos valores
security:
jwt:
secret: "TU_SECRET_ALEATORIO_UNICO_AQUI"
remote-logging:
log-settings:
encryption-key: "TU_CLAVE_ENCRIPTACION_UNICA_AQUI"
2. Usa SSL para Conexiones Remotas
Code (Text):
database:
mysql:
ssl: true # ✅ Siempre en producción
remote-logging:
mysql:
ssl: true # ✅ Crítico para logging remoto
3. Configuración Recomendada BCrypt
Code (Text):
security:
password:
bcrypt-rounds: 12 # Balance seguridad/rendimiento
# 10 = rápido, menos seguro
# 12 = recomendado
# 14+ = muy seguro, más lento
⚠️ Advertencias de Seguridad
El sistema mostrará advertencias al iniciar si detecta:
- JWT secret usando valor por defecto
- Clave de encriptación por defecto
- Contraseña de DB débil o por defecto
- BCrypt rounds muy bajo
Code (Text):
⚠ JWT secret is using default value! Change it in config.yml
⚠ Remote logging encryption key is default! Change it now!
⚠ Database password is weak or default! Change it!
⚠ BCrypt rounds is too low! Recommended: 12 or higher
Roadmap Futuro
- Two-Factor Authentication (2FA) completo
- Email verification
- Discord webhook notifications
- Integración con Discord bots
- API REST para consultas externas
- Dashboard web de administración
- Machine learning para detección de patrones sospechosos
Autor
PCR087
Soporte
Para soporte técnico, contacta al desarrollador.
Code (Text):
╔═══════════════════════════════════════════════════════════════╗
║ AuthBased - El sistema de autenticación más avanzado del ║
║ ecosistema Minecraft. Security-first, performance-oriented. ║
╚═══════════════════════════════════════════════════════════════╝