Configurar un servidor seguro es una de las tareas más importantes para los administradores. Esto se aplica no solo a los servidores autogestionados, sino también al hardware alquilado. Medidas como la protección mediante contraseñas, configuraciones adecuadas de SSH y actualizaciones regulares garantizan un paquete de seguridad integral.

Configurar un servidor seguro: ¿quién es responsable?

Alojar un servidor propio es la mejor solución para disfrutar de la máxima libertad durante su configuración. Los root servers o servidores raíz dedicados son una alternativa conveniente y que muchos proveedores alquilan para dar acceso a la cuenta de usuario root. En ambos casos, gestiones fundamentales como la instalación, la estructuración y el mantenimiento del servidor son responsabilidad exclusiva de la persona que alquila el servicio.

Independientemente de la solución escogida, la seguridad desempeña un papel esencial porque un error en el entorno root puede tener consecuencias graves. No obstante, si se siguen las prácticas correctas, se puede establecer la base perfecta para conseguir un servidor estable, potente y seguro.

Servidores dedicados
Rendimiento mediante innovación
  • Tu servidor propio en un hardware dedicado
  • Integración en el cloud y facturación al minuto
  • Respaldados por procesadores Intel® Xeon® y AMD

Cómo proteger tu servidor: guía paso a paso

Independientemente de si deseas proteger un servidor con Windows, Ubuntu o Debian, existen medidas generales que te ayudarán a establecer una base sólida de seguridad. Hemos resumido los pasos más importantes para que puedas implementarlos y disfrutar de un servidor seguro.

Paso 1: realizar una instalación mínima

Antes de tomar las precauciones pertinentes para configurar un servidor seguro ya puedes influir en el potencial de seguridad posterior de tu proyecto web. Sin importar si te decantas por un sistema Windows o Linux, en la instalación se aplica el principio de que un servidor solo debe contener el software necesario para realizar sus tareas.

Esto se debe a que cada aplicación que se instala conlleva un riesgo potencial de seguridad y puede repercutir de manera negativa en el rendimiento. Para disminuir el número de ataques se deben instalar o activar los componentes necesarios del sistema o solo recurrir a software de terceros debidamente verificado.

Paso 2: establecer una contraseña segura

Después de instalarlos, lo primero que debes hacer es establecer una contraseña segura para el usuario administrador (Windows) o root (Linux). Por defecto no se define ningún valor y la cuenta de administrador permanece bloqueada hasta que se establezca una contraseña. Normalmente, tras la instalación, el sistema operativo solicita automáticamente la creación de una cuenta de usuario con una contraseña que haga de acceso de administrador o root.

Si has alquilado un servidor Linux a un proveedor y ya tienes un inicio de sesión root predefinido, es importante que cambies la contraseña de inmediato. Para hacerlo, conéctate a tu servidor mediante SSH y ejecuta el siguiente comando en el terminal correspondiente:

passwd
bash

A continuación, puedes definir tu contraseña segura, que deberás verificar después. Asegúrate de que la contraseña sea lo más larga posible y utiliza una combinación de letras, caracteres especiales y números. También se recomienda almacenar la contraseña en un gestor de contraseñas, para tenerla siempre disponible si la necesitas.

Consejo

Si tu sistema Linux ya tiene una contraseña root configurada que desconoces, puedes cambiarla en el modo de recuperación. Para acceder a este modo, mantén pulsada la tecla Shift o Mayús durante el proceso de inicio. Desde la opción de menú “root”, podrás iniciar la consola como administrador y realizar el cambio de contraseña deseado.

Paso 3: modificar el puerto SSH

Para acceder al servidor vía SSH se utiliza por defecto el puerto TCP/UDP 22, que es el que figura ya automáticamente cuando se instala el sistema. Los ciberdelincuentes que van en busca de sistemas con brechas de seguridad llevan a cabo sus ataques, normalmente intentos de registro automáticos, a través de este puerto, por lo que, definiendo otro puerto diferente para las conexiones remotas cifradas, se puede minimizar el riesgo de accesos indeseados.

Para ello se debe abrir el archivo de configuración SSH sshd_config con un editor de textos. El comando que aparece en el siguiente ejemplo de código invoca al archivo con el editor estándar de Linux, es decir, nano:

nano /etc/ssh/sshd_config

Busca la línea correspondiente y sustituye el número de puerto 22 por un número de tu elección. En este sentido, no hay que olvidar, sin embargo, que existen otros puertos estándares para otros servicios (por ejemplo, el puerto 80 para HTTP.

Nota

Antes de que se activen los cambios en el archivo sshd_config, es necesario reiniciar el servicio SSH. En Debian esto se lleva a cabo con el comando /etc/init.d/ssh restart, mientras que los usuarios de Ubuntu pueden iniciar el servicio con ayuda de service ssh restart.

Paso 4: desactivar el registro SSH para el administrador

Para conseguir un servidor seguro, se recomienda deshabilitar el acceso SSH para la cuenta root o de administrador. Si esta cuenta permanece habilitada, un atacante que obtenga la contraseña podría acceder al servidor mediante acceso remoto.

Antes de implementar esta medida, asegúrate de crear al menos otra cuenta que pueda conectarse al servidor. De lo contrario, podrías quedarte completamente bloqueado fuera del sistema. En sistemas Linux, puedes crear una nueva cuenta con el siguiente comando:

useradd -g users -d /home/usuario1 -m -s /bin/bash usuario1

De esta manera se genera la cuenta de usuario “usuario1”. A continuación, se define una contraseña segura para esta nueva cuenta de inicio de sesión:

passwd usuario1

Verifica si funciona el registro con dicha cuenta de usuario y continúa con el paso para bloquear el acceso SSH para la cuenta root. Para ello será necesario recurrir al archivo de configuración SSH sshd_config, que puedes abrir con el editor que hayas escogido. Busca la entrada PermitRootLogin yes y sustitúyela por PermitRootLogin no. Después de reiniciar el servicio SSH, el acceso remoto para la cuenta root estará deshabilitado.

En el archivo de configuración también puedes especificar qué usuarios pueden acceder al servidor mediante SSH utilizando la directiva AllowGroups. Para ello, crea un grupo (addgroup) y añade los usuarios deseados al grupo (adduser). Luego, incluye el nombre del grupo en el archivo sshd_config (por ejemplo, AllowGroups usuarios_ssh).

Nota

Una alternativa práctica al bloqueo del acceso SSH mediante contraseña es deshabilitar completamente las autenticaciones con contraseña y utilizar la autenticación mediante claves públicas (Public-Key Authentication) con claves SSH.

Paso 5: notificaciones por correo para los mensajes de inicio de sesión con SSH

Independientemente de cómo se proceda a la hora de asegurar el acceso SSH, se deben tener en cuenta todas las actividades remotas. De esta manera se puede determinar si se ha asegurado correctamente el servicio SSH del servidor correspondiente. Al mismo tiempo, una buena monitorización de las conexiones establecidas te alertará en caso de accesos no autorizados para poder adoptar las medidas correspondientes. En ello, basta con un script de shell que envíe un correo de aviso automáticamente a tu dirección si el registro remoto se lleva a cabo con éxito en el servidor.

Un script de ejemplo para Linux /opt/shell-login.sh, que puedes crear fácilmente, solo ha de contener el siguiente código:

#!/bin/bash
echo "Login en $(nombre del host) el $(date +%Y-%m-%d) a las $(date +%H:%M)"
echo "Usuario: $USER"
echo
finger

Para completar la configuración, edita el archivo /etc/profile y añade la siguiente línea:

/opt/shell-login.sh | mailx -s "Login SSH en TU-NOMBRE DEL HOST" direcciondecorreo@example.com
txt

Con la siguiente entrada te aseguras de que el script se ejecuta y de que, en caso de que el login se realice con éxito, envíe un correo de aviso a la dirección deseada. La única condición es que al script se le asigne el permiso 755, que permiten la lectura y ejecución para todos los usuarios, y escritura únicamente para el propietario. Esto se consigue con el siguiente comando:

chmod 755 /opt/shell-login.sh
bash
Nota

Cuando un usuario establece una conexión SSH con ayuda de un programa como WinSCP, que no ejecuta ningún inicio de sesión completo, el script de shell descrito anteriormente no envía ningún correo electrónico.

Paso 6: bloquear los puertos no utilizados

En general, los puertos abiertos no suelen representar ningún riesgo para la seguridad. Debido a que son necesarios para la comunicación con cada uno de los servicios y aplicaciones, es incluso esencial que ciertos puertos se liberen, como es el caso de los puertos 80 y 443 para conexiones HTTP o HTTPS o del puerto SSH seleccionado. Si llevas a cabo una instalación minimalista de sistemas y recurres a un número reducido de aplicaciones de terceros, el número de puertos que necesitas no es excesivamente larga. Estas interfaces abiertas solo son un riesgo cuando los programas que tienen que responder presentan brechas de seguridad y los criminales se aprovechan de ellas, peligro que aumenta si se incrementa el número de aplicaciones.

Consejo

Consulta nuestro artículo dedicado para aprender cómo testear tus puertos y obtener una visión general de todos los puertos abiertos en tu servidor.

Si has realizado una instalación mínima del sistema y has instalado solo un número limitado de aplicaciones de terceros es probable que la cantidad de puertos necesarios sea reducida.

Ante posibles ataques, es fundamental contar con un servidor seguro para bloquear los puertos abiertos que no sean necesarios mediante la configuración de tu firewall. Por lo general, con el software iptables de filtrado de paquetes todos los sistemas operativos ya cuentan con la herramienta adecuada para ello. Con su ayuda se pueden crear normas fijas para regular el tráfico de datos, donde también es posible, entre otros factores, definir los puertos deseados y los no deseados.

Paso 7: actualización periódica del software

Por lo general las vulnerabilidades de seguridad conocidas pueden solucionarse rápidamente mediante la publicación de actualizaciones. Si te informas regularmente sobre las actualizaciones disponibles para los sistemas operativos y los programas instalados y llevas a cabo nuevas actualizaciones, podrás proteger tu servidor de un modo óptimo. Casi todos los sistemas de servidores permiten, asimismo, descargar e instalar actualizaciones de seguridad también en un segundo plano.

Si quieres proteger un servidor con Windows, el apartado “Windows Update” te da la posibilidad de delimitar directrices concretas para el proceso de actualización. Así puedes determinar cuándo y con qué asiduidad se deben buscar actualizaciones, si se tienen que instalar las actualizaciones encontradas de manera automática o el momento en el que el sistema tiene que reiniciarse. En el caso de los sistemas Linux existen scripts específicos como apt-listchanges o apticron que informan a diario sobre la existencia de un nuevo paquete de software y también lo descargan. Otros scripts como unattended-upgrades llevan a cabo por sí mismos la instalación automática.

Nota

Asegúrate de que durante un proceso de actualización automatizado mantienes una visión general sobre las actualizaciones realizadas, pues así se pueden descubrir los errores que surjan durante el proceso de actualización y reaccionar ante ellos.

Paso 8: proteger servidores Windows y Linux contra ataques de fuerza bruta

Uno de los ataques más sencillos y más recurrentes es el llamado método de fuerza bruta. Con él, el atacante se vale de una herramienta con la que realiza varios inicios de sesión para acceder a las contraseñas. Cuanto más cuidadoso seas con tus contraseñas, menos probabilidades habrá de que este método se lleve a cabo con éxito.

Especialmente si ofreces un servicio con mecanismo de registro, debes tener en cuenta que todos los usuarios no son tan cuidadosos y prudentes como deberían. Para estar protegido frente a este tipo de ataques, pueden ser de utilidad algunas herramientas de análisis como Fail2ban (para sistemas Linux y POSIX) o RdpGuard (para Windows). Estas soluciones revisan los archivos de registro del servidor, identifican comportamientos inusuales y bloquean la dirección IP de los usuarios sospechosos. Asimismo, también se puede ajustar el número de intentos fallidos que son necesarios para que se produzca el bloqueo o el período de validez que este debe tener.

Consejo

Puedes aumentar la seguridad habilitando la verificación en dos pasos. Este método requiere, además de la contraseña, un segundo factor que esté en posesión del usuario, como un smartphone, una tarjeta inteligente o una lista de códigos TAN.

Paso 9: utilizar herramientas de monitorización

Si quieres tener un servidor seguro, también es importante preocuparse por que la combinación entre hardware y software funcione de la manera deseada, y no solo tras el inicio del entorno del servidor, sino a largo plazo. Dado que supervisar los numerosos procesos del sistema puede ser complejo, es recomendable usar herramientas de monitorización desde el principio. Estas herramientas supervisan las actividades del servidor y emiten alertas ante cualquier anomalía.

Un modesto programa y de rápida configuración es, por ejemplo, Monit, que se puede instalar fácilmente en muchas distribuciones de Linux por medio del sistema de gestión de paquetes. Tras el arranque, la aplicación de código abierto (licencia AGPL de GNU) observa de manera facultativa procesos, archivos, clouds, hosts, programas o scripts, donde también entran en juego recursos del sistema como CPU, memoria o consumo del sistema. Si se necesita más información se recomienda recurrir al software de monitorización Nagios, otra solución de código abierto disponible para Linux y Windows, y que se puede ampliar mediante plugins para Nagios específicos.

VPS gratis
Servidor virtual 30 días gratis

Convéncete por ti mismo y elige un servidor virtual.

Paso 10: configurar copias de seguridad

Aunque las configuraciones recomendadas aumentan significativamente la seguridad del servidor, ningún sistema puede garantizar una protección absoluta. Por ello, una estrategia de copias de seguridad integral debe ser un pilar clave de tu sistema de seguridad. Esta estrategia te permitirá restaurar archivos en caso de pérdida o fallo del sistema.

Hoy en día existen herramientas de alto rendimiento que no solo te ayudan a crear las copias, sino también a restaurarlas. Una aplicación gratuita de utilidad en este sentido es el programa de sincronización rsync, cuyo nombre se deriva del protocolo homónimo y que está disponible en diferentes versiones para casi todas las plataformas (macOS, Windows y Linux). Esta herramienta mantiene la copia de los datos del servidor actualizada y, para ello, realiza cambios en el archivo original en tiempo real.

Junto al backup general del servidor, otra de las tareas más importantes es la protección de las bases de datos.

Nota

A la hora de proteger las copias de seguridad de manera segura, se recomienda que el directorio del backup se guarde en un soporte de almacenamiento externo como, por ejemplo, un disco duro portátil u otro servidor y no en el propio servidor que se quiere asegurar.

¿Le ha resultado útil este artículo?
Ir al menú principal