|
| 1 | +--- |
| 2 | +title: Maquinas virtuales casi nativas con kvm |
| 3 | +description: Aprende cómo configurar y asegurar tu servidor OpenSSH siguiendo prácticas |
| 4 | + recomendadas para reducir riesgos y proteger tus conexiones remotas. |
| 5 | +author: Vor |
| 6 | +date: 2024-11-16 |
| 7 | +categories: [Guides, Virtualization, KVM, Qemu, Libvirt] |
| 8 | +tags: [Virtualiization, Linux] |
| 9 | +image: |
| 10 | + path: /assets/img/posts/guides/linux/Linux-KVM-logo-transparent.png |
| 11 | + alt: KVM Logo |
| 12 | +--- |
| 13 | + |
| 14 | +## Introducción |
| 15 | + |
| 16 | + |
| 17 | +En este post, exploraremos cómo configurar el servidor OpenSSH para fortalecer la seguridad |
| 18 | +de tu sistema. SSH es una herramienta poderosa para acceder remotamente a servidores, pero |
| 19 | +configurarlo de manera segura es crucial para evitar vulnerabilidades y ataques. En esta guía, |
| 20 | +aprenderás a optimizar y asegurar tu configuración SSH. |
| 21 | + |
| 22 | +**Temas que abordaremos:** |
| 23 | +- Introducción al protocolo SSH. |
| 24 | +- Configuración básica de OpenSSH. |
| 25 | +- Buenas prácticas para asegurar tu servidor SSH. |
| 26 | + |
| 27 | +## ¿Qué es el protocolo SSH? |
| 28 | + |
| 29 | +El protocolo SSH (Secure Shell) nos permite realizar conexiones remotas a servidores de manera |
| 30 | +segura mediante la encriptación de los datos. A diferencia de otros protocolos como Telnet, SSH |
| 31 | +garantiza la confidencialidad e integridad de la información intercambiada entre el cliente |
| 32 | +(tú computadora) y el servidor. |
| 33 | + |
| 34 | +### Características clave de SSH: |
| 35 | +- **Encriptación:** Toda la comunicación se cifra, asegurando que los datos no sean interceptados. |
| 36 | +- **Autenticación:** SSH admite diferentes métodos de autenticación, como contraseñas y claves públicas. |
| 37 | +- **Túneles seguros:** SSH permite crear túneles seguros para redirigir tráfico a través de la conexión. |
| 38 | + |
| 39 | +## Instalación de OpenSSH |
| 40 | + |
| 41 | +Para asegurarte de que OpenSSH está instalado en tu sistema, sigue estos pasos segun |
| 42 | +tu sistema: |
| 43 | + |
| 44 | +### En sistemas basados en Debian/Ubuntu: |
| 45 | +```bash |
| 46 | +sudo apt update |
| 47 | +sudo apt install openssh-server |
| 48 | +``` |
| 49 | + |
| 50 | +### En sistemas basados en RHEL/CentOS: |
| 51 | +```bash |
| 52 | +sudo yum install openssh-server |
| 53 | +``` |
| 54 | + |
| 55 | +Una vez instalado, asegúrate de que el servicio esté en ejecución: |
| 56 | +```bash |
| 57 | +sudo systemctl start ssh |
| 58 | +sudo systemctl enable ssh |
| 59 | +``` |
| 60 | + |
| 61 | +## Configuración de OpenSSH |
| 62 | + |
| 63 | +### 1. **Deshabilitar el acceso root** |
| 64 | +Es una buena práctica deshabilitar el inicio de sesión de root para prevenir accesos no autorizados |
| 65 | +a un usuario privilegiado. |
| 66 | + |
| 67 | +En el archivo `/etc/ssh/sshd_config`, busca la siguiente línea: |
| 68 | +```bash |
| 69 | +PermitRootLogin yes |
| 70 | +``` |
| 71 | +Cámbiala a: |
| 72 | +```bash |
| 73 | +PermitRootLogin no |
| 74 | +``` |
| 75 | +Luego, reinicia el servicio SSH para aplicar los cambios: |
| 76 | +```bash |
| 77 | +sudo systemctl restart ssh |
| 78 | +``` |
| 79 | + |
| 80 | +### 2. **Usar claves SSH en lugar de contraseñas** |
| 81 | + |
| 82 | +La autenticación basada en claves SSH es mucho más segura que las contraseñas. Para configurarlo: |
| 83 | + |
| 84 | +1. Genera un par de claves en tu máquina local: |
| 85 | + |
| 86 | + **RSA (Más común):** |
| 87 | + ```bash |
| 88 | + ssh-keygen -t rsa -b 4096 -C "<comentario>" |
| 89 | + ``` |
| 90 | + |
| 91 | + **Ed25519 (Recomendada, más moderna):** |
| 92 | + ```bash |
| 93 | + ssh-keygen -t ed25519 -C "<comentario>" |
| 94 | + ``` |
| 95 | + |
| 96 | +2. Copia la clave pública al servidor: |
| 97 | +```bash |
| 98 | +ssh-copy-id usuario@servidor |
| 99 | +``` |
| 100 | +3. Asegúrate de que el servidor permite la autenticación por claves en el archivo `/etc/ssh/sshd_config`: |
| 101 | +```bash |
| 102 | +PasswordAuthentication no |
| 103 | +PubkeyAuthentication yes |
| 104 | +``` |
| 105 | + |
| 106 | +### 3. **Cambiar el puerto por defecto** |
| 107 | +El puerto predeterminado para SSH es el 22, que es uno de los mas atacados por bots. |
| 108 | +Cambiar el puerto puede añadir una capa de protección. |
| 109 | + |
| 110 | +En `/etc/ssh/sshd_config`, busca y cambia la línea: |
| 111 | +```bash |
| 112 | +Port 22 |
| 113 | +``` |
| 114 | +Por otro puerto, por ejemplo, 2222: |
| 115 | +```bash |
| 116 | +Port 2222 |
| 117 | +``` |
| 118 | +No olvides abrir el nuevo puerto en tu firewall y reiniciar el servicio SSH: |
| 119 | +```bash |
| 120 | +sudo systemctl restart ssh |
| 121 | +``` |
| 122 | + |
| 123 | +### 4. **Configurar el límite de intentos de autenticación** |
| 124 | + |
| 125 | +Para proteger el servidor de ataques de fuerza bruta, limita el número de intentos fallidos |
| 126 | +de autenticación. |
| 127 | + |
| 128 | +En el archivo `/etc/ssh/sshd_config`, añade las siguientes líneas: |
| 129 | +```bash |
| 130 | +MaxAuthTries 3 |
| 131 | +MaxSessions 2 |
| 132 | +``` |
| 133 | + |
| 134 | +### 5. **Deshabilitar la autenticación por contraseñas** |
| 135 | + |
| 136 | +Si utilizas claves SSH, puedes deshabilitar el acceso mediante contraseñas para aumentar |
| 137 | +aun más la seguridad. |
| 138 | + |
| 139 | +En `/etc/ssh/sshd_config`: |
| 140 | +```bash |
| 141 | +PasswordAuthentication no |
| 142 | +PermitEmptyPasswords no |
| 143 | +``` |
| 144 | + |
| 145 | +## Monitoreo y Auditoría de SSH |
| 146 | + |
| 147 | +Una buena práctica es monitorear los intentos de acceso y asegurarse de que no haya actividad |
| 148 | +sospechosa en el servidor. |
| 149 | + |
| 150 | +- Revisa los logs de SSH regularmente usando `journalctl -fu ssh` en GNU/Linux con systemd. |
| 151 | + Como alternativa, puedes usar `tail -f /var/log/auth.log` o `tail -f /var/log/secure`. |
| 152 | +- Configura un sistema de detección de intrusos como **Fail2Ban** para bloquear automáticamente |
| 153 | + las IPs que intentan acceder con ataques de fuerza bruta. |
0 commit comments