Usuario administrativo & sudo aislado
Crea un nuevo usuario administrativo dedicado con shell limpia, membresía en sudoers y directorio ~/.ssh configurado con permisos estrictos (700 en carpeta, 600 en llaves).
hpsr.sh es el asistente interactivo en Bash que aplica un bootstrap técnico sólido en servidores recién creados: usuario administrativo no-root, SSH por llave criptográfica, firewall UFW default-deny, Fail2ban y parches automáticos sin la fricción pesada de Ansible ni los descuidos del setup manual.
Pega este comando en tu terminal como root para iniciar el asistente interactivo:
0 dependencias fuera de Bash estándar. No se aplican cambios hasta tu confirmación explícita.
Cada decisión está calculada para neutralizar los vectores de ataque más comunes en servidores expuestos a Internet sin romper la ergonomía de desarrollo.
Crea un nuevo usuario administrativo dedicado con shell limpia, membresía en sudoers y directorio ~/.ssh configurado con permisos estrictos (700 en carpeta, 600 en llaves).
Deshabilita PermitRootLogin y PasswordAuthentication. Instala llaves Ed25519 con comentarios administrados por hpsr.sh, valida sshd_config con sshd -t antes de recargar y mueve el puerto estándar a 666 (o el que tú elijas).
Activa el firewall del kernel con política default deny incoming y allow outgoing. Abre de forma estricta únicamente tu nuevo puerto SSH y los puertos web estándar (80/tcp y 443/tcp), permitiendo añadir puertos adicionales en el asistente.
Instala y aprovisiona Fail2ban con una cárcel SSH ajustada a parámetros pragmáticos: 1 hora de ban tras 5 intentos fallidos dentro de una ventana de 10 minutos (findtime: 10m, bantime: 1h, maxretry: 5).
Configura unattended-upgrades para que Debian o Ubuntu descargue e instale parches de seguridad críticos del kernel y librerías base de forma desatendida y segura sin reinicios destructivos.
Genera backup timestamped de sshd_config antes de editarlo, un log detallado de cada comando ejecutado, un reporte final en Markdown, paquete cifrado de credenciales y envío opcional por correo vía Resend.
Ni la fragilidad del trabajo manual a ciegas, ni el sobrecoste operacional de orquestadores corporativos para servidores individuales.
| Criterio | Setup manual a mano | RECOMENDADO hpsr.sh | Ansible / CIS Benchmark |
|---|---|---|---|
| Tiempo promedio de setup | 30 a 60 minutos | < 60 segundos | 2 a 4 horas (crear/ajustar playbooks) |
| Dependencias requeridas | Ninguna (comandos sueltos) | 0 dependencias (Solo Bash nativo y apt) | Python, Ansible, nodo de control, SSH Agent |
| Curva de aprendizaje | Media (recordar flags y sintaxis) | Cero (asistente interactivo guiado) | Alta (YAML, roles, inventarios, vault) |
| Prevención de bloqueo SSH | Nula (fácil cometer typo y perder acceso) | Validación sintáctica previa con sshd -t | Requiere pruebas en staging previo |
| Firewall + Fail2ban integrados | Paso manual frecuentemente olvidado | Configurados y activos de serie | Requiere escribir tareas y handlers |
| Backups y auditoría de cambios | Inexistente en la mayoría de casos | Backup de sshd_config + log + reporte MD | Depende de la calidad del playbook |
Sin magia negra ni archivos ocultos. hpsr.sh te muestra un snapshot del sistema, te permite seleccionar tus opciones paso a paso y te pide confirmación explícita antes de ejecutar ningún cambio.
Una vez completada la ejecución, puedes verificar en 10 segundos el estado del firewall, las cárceles de Fail2ban y tu nueva sesión SSH:
sudo ufw status verbose Comprueba que el estado sea "active", default deny incoming y solo los puertos autorizados (SSH custom, 80, 443).
sudo fail2ban-client status sshd Revisa cuántas IPs han sido bloqueadas y el estado del filtro en tiempo real.
ssh -p 666 -i ~/.ssh/tu_llave adminops@TU_IP Verifica el acceso con tu nuevo usuario y puerto antes de cerrar la sesión original de root.
sudo systemctl status unattended-upgrades Confirma que el servicio de seguridad desatendida esté corriendo activamente en segundo plano.
Respuestas técnicas y transparentes a las dudas más comunes sobre el funcionamiento interno de hpsr.sh.
hpsr.sh valida la sintaxis completa de la configuración de OpenSSH con el comando `sshd -t` antes de reiniciar o recargar cualquier servicio. Además, el script insiste en que abras una nueva pestaña de terminal para probar la conexión con tu nuevo usuario y llave antes de cerrar la sesión root activa. Si algo no conecta, tu sesión actual sigue abierta.
Cambiar el puerto estándar no es una medida criptográfica, pero es una excelente técnica de reducción de ruido: elimina más del 98% de los escaneos automatizados y bots que bombardean el puerto 22 continuamente en Internet. Si prefieres otro puerto o mantener el 22, el asistente te permite escribir cualquier valor que desees.
hpsr.sh está pensado y optimizado principalmente para servidores nuevos o recién restaurados (entornos Greenfield). Si ya tienes Docker instalado, UFW puede interferir con las cadenas de iptables que Docker manipula automáticamente. Recomendamos ejecutar hpsr.sh como primer paso en un servidor limpio antes de desplegar tus contenedores.
Si eliges que hpsr.sh genere un par de llaves Ed25519 en el servidor, la llave pública se agrega a authorized_keys dentro de un bloque claramente administrado por el script. La llave privada se imprime en consola con aviso de confirmación y puede empaquetarse en un zip encriptado o enviarse a tu correo con Resend. Los temporales sensibles se eliminan al finalizar.
No. hpsr.sh no instala demonios propietarios, agentes de telemetría ni software de terceros. Solo instala paquetes oficiales de los repositorios de Debian/Ubuntu mediante apt (ufw, fail2ban, unattended-upgrades, curl, zip). Una vez terminado, el script no queda corriendo en memoria.
El código de hpsr.sh es 100% abierto, transparente y auditable. Puedes ver el archivo completo ejecutando `curl -fsSL https://sh.hpsr.dev/setup.sh | less` o revisando el repositorio en GitHub en https://github.com/hopsersmerk/hpsr.sh.