Todos estos pasos en esta publicación son del contexto de un droplet (VPS) alojado por Digital Ocean usando las imágenes del kernel Debian 8.5 x64 que usan a partir de la fecha anterior.

1 – Configurar cuenta de usuario de VPS

Se asume el acceso raíz inicial para esta sección. Agregar una clave pública SSH registrada a la creación de gotas en Digital Ocean brinda acceso de raíz sin contraseña al VPS.

1 – Configurar la cuenta de usuario de VPS2 – Copiar la clave SSH pública del cliente3 – Actualizar e instalar paquetes del sistema4 – Puerto SSH predeterminado y acceso raíz5 – Actualizaciones de seguridad automáticas6 – Configurar Dotfiles (opcional)7 – Instalar paquetes de software8 – Instalar y ejecutar UFW9 – Instalar y ejecutar Fail2ban

Instale el paquete sudo de forma manual, ya que no se incluye con la imagen de Debian 8 de Digital Ocean. Agregue su nuevo usuario de Linux al sistema. Cada vez que vea scarlz aquí en los comandos, debe reemplazarse con su propio nombre de usuario preferido y sustituirse en todo. Agregue el usuario recién creado al grupo de privilegios de elevación sudo. También puede agregar el usuario al grupo adm que otorga acceso de lectura a los archivos de registro del sistema si cree que esto sería útil. Salga de la sesión raíz de SSH.

2 – Copiar la clave SSH pública del cliente

Instale su clave pública al nuevo usuario agregado en el paso anterior. Haga esto ejecutando el comando ssh-copy-id , proporcionándole el nombre de usuario y la dirección IP del VPS. La clave pública (después de la autenticación) se agregará al archivo ~/.ssh/authorized_keys del usuario remoto. Siempre que el cliente tenga la clave privada vinculada a la clave pública recién registrada, se puede usar para iniciar sesión en el VPS.

3 – Actualizar e instalar paquetes del sistema

SSH de nuevo en el VPS como el nuevo usuario que creó anteriormente, que debería funcionar sin requerir detalles de autenticación gracias al paso anterior. Ejecute este comando para asegurarse de que los paquetes del sistema estén actualizados. Este paso elimina la suposición que hace cualquier escaneo de puertos sobre el número de puerto en el que se ejecuta el servicio SSH. El valor predeterminado es 22 por lo que estos procesos lo comprobarán en primer lugar. Cambiar este número a un puerto efímero puede ayudar a reducir la cantidad de intentos de inicio de sesión maliciosos que se realizan. Sin embargo, hay varios puntos más finos sobre por qué es posible que no desee hacer esto, así que decida si esto parece valer la pena o no antes de hacerlo (vea el siguiente enlace). Todo lo que diría es que no se acostumbre a hacer esto para los números de puerto de otros servicios. Si elige no hacer esto, Fail2ban (que instalaremos más adelante) será suficiente en su lugar. Deshabilitar la autenticación de contraseña para la cuenta de usuario root y confiar en la clave SSH registrada también puede detener los intentos de inicio de sesión de root desde hosts no deseados. Cambie el puerto SSH predeterminado del VPS y deshabilite el inicio de sesión raíz a través de contraseñas en el archivo de configuración SSH de todo el sistema. Cambie la entrada Puerto 22 a cualquier número entre 1025 y 65536 respectivamente, si ha decidido que desea hacer esto. Cambie la entrada PermitRootLogin sí a PermitRootLogin sin contraseña en su lugar, Esto, como se mencionó anteriormente, significa que solo los usuarios con claves SSH públicas registradas en el archivo de claves autorizadas de root pueden iniciar sesión como root. Reinicie SSH para que los cambios surtan efecto. Cuando acceda al VPS a través de SSH en el futuro, ahora debe agregar el número de puerto correcto al comando, p.

5 – Actualizaciones automáticas de seguridad

Usando un paquete llamado actualizaciones desatendidas, es posible que el administrador de paquetes realice actualizaciones automáticamente a intervalos establecidos. Se recomienda habilitar solo la actualización de seguridad y no la actualización normal del paquete, ya que esto podría causar problemas con conflictos o cambios no deseados. Instale el paquete para empezar. Abra/cree el archivo de configuración 10periódico para este paquete con su editor de texto preferido. Agregue las líneas que se encuentran en el siguiente fragmento de código: Guarde sus adiciones y salga del archivo. Ahora abra otro archivo de configuración llamado 50actualizaciones desatendidas para cambios. Habilite las actualizaciones de seguridad solo agregando la línea: “origin=Debian,codename=${distro_codename},label=Debian-Security”; a la ubicación correcta, como se muestra en el siguiente fragmento de código en la línea 17: Más abajo en el archivo, agregue una dirección de correo electrónico que pueda recibir los informes de actualización y descomente la línea en sí:

6 – Configuración de archivos de puntos (opcional)

La mayoría de los administradores o desarrolladores tendrán sus propios dotfiles personalizados que utilizan para personalizar el servidor y facilitar las tareas, o introducir funcionalidades adicionales en el sistema. Aquí es donde configuraría el mío usando Git y GitHub. Es poco probable que desee ejecutar los comandos en este paso, ya que estas instrucciones son para mis propios archivos de puntos, por lo que solo son realmente relevantes para mí. ¡Reemplace este paso con la instalación y configuración de sus propios archivos de puntos equivalentes! Instale Git a través del administrador de paquetes del sistema. Clone su repositorio de dotfiles en el sistema. Ejecute los dos scripts de instalación que agregan más paquetes (todo lo bueno) y cree los enlaces simbólicos necesarios usando GNU Stow. Si hay algún problema con los submódulos, actualícelos a sus últimas versiones remotas con:

7 – Instalar paquetes de software

Cualquier paquete sobresaliente o súper esencial que no se haya traído en el paso de “dotfiles” debe ser considerado antes de continuar. Sin embargo, solo usted sabrá cuáles son, ya que las preferencias y necesidades de todos son diferentes. Aquí hay varios ejemplos, sin embargo.

8 – Instalar y ejecutar UFW

UFW significa “Cortafuegos sin complicaciones” y es una alternativa más concisa y más fácil de entender que las implementaciones de cortafuegos más antiguas como iptables. Instale en Debian 8 como cualquier otro paquete simplemente usando: Al igual que con otros firewalls de este elk, es una práctica común implementar un conjunto general de reglas de ingreso/egreso y luego agregar las excepciones a los servicios y puertos en la parte superior. Realice la acción general predeterminada para bloquear y denegar cualquier tráfico entrante. Luego haga que la acción general predeterminada para el tráfico saliente sea permisible y esté permitida. Desde aquí, cualquier servicio que desee permitir que sea recibido por el VPS se puede agregar como una excepción. Consulte una publicación separada que cubre las áreas clave de UFW en sí mismo para obtener información sobre cómo hacer esto. Para continuar aquí, abra el número de puerto SSH que eligió anteriormente reemplazando el número 3267 con su propio número, en el siguiente comando. Por último, después de todas las reglas adicionales que necesita, habilite el firewall para que la configuración se active.

9 – Instalar y ejecutar Fail2ban

Esta aplicación detiene permanentemente cualquier intento fallido excesivo (fuerza bruta) de conectarse al VPS; lo logra al prohibir la IP de origen infractora. Esto se puede configurar en varios servicios del sistema y no solo en SSH. Instálelo como se hizo antes con el administrador de paquetes del sistema. Sendmail también puede ser utilizado por Fail2ban al enviar mensajes de notificación de prohibiciones que se han producido, por lo que es útil instalarlo junto con él. A menos que desee configurarlo para usar un servicio de correo diferente. Inicie el servicio y asegúrese de que se esté ejecutando utilizando el comando: Esta es una publicación bastante sencilla, considerando todas las cosas. Recuerde que las necesidades de una persona para configurar un VPS se adaptarán a sus propios requisitos, criterios y preferencias. Por lo tanto, estos pasos son un buen esquema general, pero principalmente los que sigo personalmente: los de otras personas serán diferentes, según sus necesidades.