DirectAdmin: Cambiar puerto SSH y desactivar acceso root por contraseña
¿Por qué deberías cambiar el puerto SSH y desactivar el root por contraseña en DirectAdmin?
La seguridad de tu servidor es una de las tareas más importantes que debes controlar como administrador. Cuando contratas un hosting VPS o dedicado, el acceso por defecto suele ser el usuario root con una contraseña, y el puerto SSH estándar es el 22. Esto es un imán para los bots y atacantes automáticos que escanean internet constantemente buscando servidores vulnerables.
En este artículo te voy a guiar paso a paso para que, usando DirectAdmin como panel de control, puedas cambiar el puerto SSH a uno personalizado y desactivar el acceso root por contraseña, reforzando así la seguridad de tu servidor de forma notable.
[INFO] Este proceso es aplicable a sistemas operativos como AlmaLinux, Rocky Linux, Ubuntu o Debian, siempre que tengas DirectAdmin instalado. Es una práctica recomendada por cualquier auditor de seguridad.
Entendiendo los conceptos: SSH, root y puertos
Antes de meternos en faena, vamos a aclarar tres conceptos clave. Es normal que al principio suenen a chino, pero son más simples de lo que parecen.
¿Qué es SSH?
SSH (Secure Shell) es el protocolo que utilizas para conectarte de forma segura a tu servidor por línea de comandos. Es como una llave maestra que te da acceso total a la consola de tu máquina. Herramientas como PuTTY o la terminal de tu sistema operativo usan SSH.
¿Qué es el usuario root?
root es el superusuario de Linux. Tiene permisos absolutos sobre todo el sistema. Puede borrar, crear, modificar y ejecutar cualquier cosa. Es el equivalente al administrador en Windows, pero con aún más poder.
¿Qué es un puerto y por qué cambiarlo?
Un puerto es una "puerta" lógica por la que entra y sale la información. El puerto 22 es el estándar para SSH. Al cambiarlo a un número menos común (por ejemplo, el 22022), reduces drásticamente los ataques automatizados que buscan conexiones en el puerto por defecto.
Preparativos antes de empezar
Vamos a hacer esto con calma para no quedarnos fuera de nuestro propio servidor. Sigue estas recomendaciones:
- Abre dos sesiones SSH en tu servidor. Una para hacer los cambios y otra de respaldo. Si algo sale mal, podrás revertir los cambios desde la segunda.
- Ten a mano las credenciales de acceso a DirectAdmin (usuario administrador y contraseña).
- Asegúrate de tener acceso a la terminal como root o con un usuario con permisos sudo.
[WARNING] Si te equivocas al cambiar el puerto o al desactivar el root, podrías perder el acceso al servidor. Siempre ten un plan B (como el acceso por consola web que ofrecen los proveedores de hosting).
Paso 1: Acceder a DirectAdmin y abrir la terminal
DirectAdmin no tiene una opción gráfica directa para cambiar el puerto SSH, pero sí nos da la herramienta más potente: el Administrador de archivos y el acceso SSH desde el panel.
- Entra a tu panel de DirectAdmin con tu usuario administrador.
- Busca la sección "Cuenta de Usuario" o "Administración de Servidor".
- Localiza la herramienta "Terminal" o "Acceso SSH". Dependiendo de la versión, puede estar en "Otras herramientas" o en la barra superior.
Esta terminal es una ventana a tu servidor directamente desde el navegador. Es muy cómoda y evita que tengas que usar un cliente externo.
Paso 2: Cambiar el puerto SSH en el archivo de configuración
El archivo de configuración principal de SSH es /etc/ssh/sshd_config. Vamos a editarlo con un editor de texto desde la terminal.
2.1. Hacer una copia de seguridad
Siempre, antes de tocar un archivo de configuración, haz una copia. Esto te salvará la vida si algo falla.
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
2.2. Editar el archivo
Usaremos el editor nano, que es el más amigable para principiantes. Si no lo tienes, usa vi o instálalo con apt install nano o yum install nano.
nano /etc/ssh/sshd_config
Dentro del archivo, busca la línea que dice #Port 22. Es probable que esté comentada (con una # al principio). Debes:
- Elimina la
#para descomentarla. - Cambia el número
22por el puerto que quieras usar. Te recomiendo un número alto, entre 1024 y 65535. Por ejemplo, el 22022 o el 2222.
Quedaría así:
Port 22022
[TIP] Evita usar puertos que ya estén en uso por otros servicios (como el 80 para web o el 3306 para MySQL). Puedes verificar con el comando netstat -tulpn | grep :PUERTO si está en uso.
2.3. Guardar y salir
En nano, presiona Ctrl + O para guardar y luego Enter para confirmar. Después, Ctrl + X para salir.
Paso 3: Desactivar el acceso root por contraseña
Ahora vamos a por la segunda parte: evitar que root pueda conectarse directamente con una contraseña. Esto es crucial porque los ataques de fuerza bruta siempre van dirigidos a root.
3.1. Crear un usuario con permisos sudo (si no lo tienes)
Para poder administrar el sistema sin ser root, necesitas un usuario normal con permisos de superusuario. Si ya tienes uno, sáltate este paso.
useradd -m -s /bin/bash tucuenta
passwd tucuenta
usermod -aG wheel tucuenta # En CentOS/AlmaLinux
# O en Ubuntu/Debian:
usermod -aG sudo tucuenta
3.2. Modificar el archivo sshd_config
Vuelve a abrir el archivo de configuración:
nano /etc/ssh/sshd_config
Busca la línea que dice #PermitRootLogin yes. Cámbiala a:
PermitRootLogin no
(Opcional pero recomendado) También puedes desactivar el acceso por contraseña para todos los usuarios y usar solo claves SSH. Eso es aún más seguro, pero requiere que configures una clave pública. Si no sabes cómo, déjalo para más adelante.
3.3. Guardar y salir
Igual que antes, Ctrl + O, Enter, y Ctrl + X.
Paso 4: Reiniciar el servicio SSH
Los cambios no se aplican hasta que reinicies el servicio SSH. Desde la terminal:
systemctl restart sshd
O en algunos sistemas:
service ssh restart
[WARNING] Al reiniciar, la conexión SSH actual se cortará. Por eso es importante tener la segunda sesión abierta o la terminal de DirectAdmin (que no se corta, ya que es un proxy web).
Paso 5: Configurar el firewall para el nuevo puerto
Si tienes un firewall (como CSF, firewalld o iptables), debes permitir el tráfico en el nuevo puerto y bloquear el 22.
Si usas firewalld (CentOS/AlmaLinux):
firewall-cmd --permanent --add-port=22022/tcp
firewall-cmd --permanent --remove-service=ssh
firewall-cmd --reload
Si usas UFW (Ubuntu/Debian):
ufw allow 22022/tcp
ufw deny 22/tcp
ufw reload
Si usas CSF (ConfigServer Security & Firewall):
Edita el archivo /etc/csf/csf.conf, busca TCP_IN y añade el puerto 22022. Luego:
csf -r
Paso 6: Probar la nueva conexión SSH
Ahora viene la prueba de fuego. Cierra la sesión actual y vuelve a conectarte, pero esta vez al nuevo puerto.
ssh -p 22022 tucuenta@IP_DE_TU_SERVIDOR
Si todo ha ido bien, deberías entrar sin problemas. Si usas la terminal de DirectAdmin, esta se conectará automáticamente por el puerto nuevo, ya que usa el socket del sistema.
Paso 7: Actualizar DirectAdmin para que use el nuevo puerto
DirectAdmin tiene su propia configuración para saber qué puerto usa SSH. Aunque la terminal del panel funciona a nivel de sistema, es posible que algunas herramientas de diagnóstico internas necesiten saber el puerto.
- Ve a DirectAdmin -> Administración de Servidor -> Configuración del Servidor.
- Busca la opción "SSH Port" o "Puerto SSH".
- Cambia el valor al nuevo puerto (22022 en nuestro ejemplo).
- Guarda los cambios.
Esto es importante para que funciones como la verificación de servicios o los backups remotos sepan a qué puerto conectarse.
Consejos adicionales de seguridad para tu servidor
Ya has hecho un gran avance, pero la seguridad nunca se termina. Aquí tienes algunas recomendaciones extra:
Usa autenticación por claves SSH (recomendado encarecidamente)
Las claves SSH son mucho más seguras que las contraseñas. Son archivos criptográficos que se generan en pares (pública y privada). La pública se instala en el servidor y la privada la guardas tú.
ssh-keygen -t rsa -b 4096
ssh-copy-id -p 22022 tucuenta@IP_DE_TU_SERVIDOR
Una vez configurado, puedes desactivar la autenticación por contraseña en sshd_config:
PasswordAuthentication no
Instala un firewall de aplicación como Fail2ban
Fail2ban es una herramienta que bloquea automáticamente las IPs que intentan acceder por fuerza bruta. Se integra perfectamente con DirectAdmin y es muy fácil de configurar.
yum install fail2ban
# o
apt install fail2ban
Mantén el sistema actualizado
Los parches de seguridad son vitales. Configura actualizaciones automáticas para el kernel y los paquetes del sistema.
Preguntas frecuentes (FAQ)
¿Es obligatorio desactivar el acceso root por contraseña?
No es obligatorio, pero es altamente recomendable. El usuario root es el objetivo principal de los ataques. Al desactivarlo, los atacantes necesitan adivinar también un nombre de usuario, lo que dificulta mucho su tarea.
¿Qué hago si me he quedado fuera del servidor?
Tranquilo, casi todos los proveedores de hosting ofrecen un acceso por consola web (KVM o VNC) desde el panel de control del proveedor (no de DirectAdmin). Entra por ahí, revierte los cambios en sshd_config y reinicia el servicio.
¿Puedo usar el puerto 22 para otra cosa?
Técnicamente sí, pero no es recomendable. Es más seguro dejar el puerto 22 cerrado en el firewall y no usarlo para nada.
¿DirectAdmin tiene un botón para hacer esto?
No hay un botón mágico, pero la terminal integrada en el panel hace que el proceso sea muy sencillo, como has visto. Es cuestión de seguir los pasos.
¿Afecta esto a mis sitios web o correos?
No, para nada. El cambio de puerto SSH y la desactivación del root solo afectan al acceso por línea de comandos. Tus sitios web, bases de datos y correos seguirán funcionando igual.
¿Qué es Syspanel y tiene algo que ver?
Syspanel es otro panel de control de hosting (antes conocido como HestiaCP) que se usa en algunos servidores. Si en algún momento migras a Syspanel, ten en cuenta que el puerto de acceso a su panel es el 2106 y su configuración de SSH es similar a la que hemos visto, aunque los archivos de configuración pueden variar ligeramente. En ese panel, también puedes cambiar el puerto SSH editando el mismo archivo sshd_config.
Resumen final
Hemos visto cómo, en pocos minutos y desde DirectAdmin, puedes:
- Cambiar el puerto SSH de tu servidor a uno personalizado.
- Desactivar el acceso root por contraseña, obligando a usar un usuario con permisos.
- Configurar el firewall para permitir solo el nuevo puerto.
- Actualizar la configuración de DirectAdmin para que todo funcione en armonía.
Estas dos acciones, aunque parecen simples, son un gran paso para proteger tu servidor de ataques automatizados y accesos no autorizados. La seguridad no es un lujo, es una necesidad, y con estas prácticas estarás muy por delante de la mayoría de administradores.
[TIP] Guarda siempre una copia de seguridad de tus archivos de configuración. En este caso, el .bak que creamos es tu mejor amigo si algo falla.
Ahora ya sabes cómo blindar tu servidor. ¡Ponlo en práctica y duerme más tranquilo!
