12 cosas que hacer después de instalar un servidor Linux

Cloud la informática ha cambiado drásticamente el escenario de los servidores. Muchas plataformas ofrecen servidores en la nube Linux gratuitos y puede implementar sus servidores Linux en minutos a través de estas plataformas en la nube.

Cuando activa un nuevo servidor, especialmente si es visible en Internet, estará disponible de inmediato para los delincuentes que buscan configuraciones incorrectas y vulnerabilidades en los servidores expuestos a través de sus scripts de bot automatizados.

Hay algunas cosas que debe hacer después de instalar el servidor Linux para asegurarse de que su servidor no se vea comprometido.

Aquí hay una captura de pantalla de lo quefalla2banha visto recientemente en uno de mis servidores.

212 intentos de inicio de sesión incorrectos y 6 direcciones IP bloqueadas. Todo el tráfico de personas no autorizadas o scripts que intentan iniciar sesión en mi servidor.

Algunos primeros pasos cruciales lo ayudarán a proteger sus nuevas compilaciones de servidores contra riesgos.

He considerado dos de las distribuciones de servidores Linux más populares aquí:ubuntuyCentOS/Sombrero rojo. Compruebe qué Linux está ejecutando.

La mayoría de los consejos son genéricos aquí y deberían aplicarse a otros Linux a menos que se mencione específicamente.

Estas son las cosas que le recomiendo que verifique para garantizar la seguridad de su servidor Linux. He proporcionado pasos individuales, pero si quieres hacerlo rápidamente,También he creado un script que puede ejecutar rápidamente en cualquier servidor nuevo que implemente.

1. Asegúrese de configurar un usuario que no sea root

Root es todopoderoso y no necesita los permisos de root todo el tiempo.

root también es un nombre de usuario válido en casi todos los sistemas Linux. Lo que significa que si está habilitado para la autenticación remota, se realiza la mitad del trabajo del atacante, obtener un nombre de usuario válido.

Además, si un atacante puede acceder como root, no se requieren más permisos para hacer nada en el sistema.

Por estos motivos, es mejor iniciar sesión como usuario no root y deshabilitar el inicio de sesión root para el acceso remoto mediante SSH (se explica más adelante).

¿Cómo hacerlo?

Supongo que está conectado como root en su sistema.

Agregue un nuevo usuario con el comando useradd. Reemplace con un nombre de usuario de su elección.

useradd <username>

Configure una contraseña con el comando passwd para el usuario recién agregado:

passwd <username>

2. Asegúrese de que el usuario no root tenga sudo permiso

Dado que iniciará sesión en esta cuenta de forma remota mediante Secure Shell (SSH), querrá poder realizar actividades privilegiadas que requieran acceso raíz. Esto significa que la cuenta debe tener sudo permisos

¿Cómo hacerlo?

El proceso para crear sudo usuario en Ubuntu y CentOS es similar, pero el grupo al que agregará el usuario es diferente.

Debe iniciar sesión como root para realizar este paso.

EnCentOS y Red Hatloswheelgroup es el grupo estándar utilizado para dar a los usuarios sudo permisos Agregue el usuario a este grupo con el comando usermod:

usermod -aG wheel <username>

ubuntuusa elsudogrupo para administrar sudo usuarios

usermod -aG sudo <username>

3. Habilitación de la autenticación SSH basada en clave

Es importante tener habilitada la autenticación basada en clave para SSH para que funcione cuando deshabilitamos la autenticación basada en contraseña.

Las contraseñas descifradas, forzadas por fuerza bruta o comprometidas son una forma muy común para que los malos actores obtengan acceso a los sistemas. Spear phishing, correo electrónico no deseado extremadamente dirigido que convence a un usuario desprevenido para que proporcione credenciales, es solo un método común para obtener credenciales.

Si alguien obtiene su nombre de usuario y contraseña en un sistema donde la autenticación basada en clave está habilitada y la autenticación basada en contraseña está deshabilitada para el acceso remoto a través de SSH, esa contraseña robada ya no le dará acceso a ese servidor.

Al habilitar la autenticación basada en clave y, en un paso posterior, deshabilitar la autenticación basada en contraseña, ha reducido en gran medida las posibilidades de que SSH se use en su contra. Esta es una de las formas elementales de proteger el servidor SSH.

¿Cómo hacerlo?

Supongo que ya tiene SSH habilitado en su servidor. Lo que debe hacer es generar claves SSH en su computadora personal (desde donde iniciará sesión en el servidor).

Una vez que tenga las claves SSH, debe agregar la clave pública a las claves_autorizadas en nuestro servidor para el usuario no root.

Atención! No pierda las claves ssh de su computadora personal. Haz una copia de seguridad de estas claves. Si desactiva la autenticación basada en contraseña más adelante y pierde las claves SSH, no podrá acceder a su propio servidor.

4. Asegúrese de que SSH esté permitido a través del firewall ufw

Antes de habilitar el firewall en su sistema, debe asegurarse de que SSH esté permitido. De lo contrario, es posible que se le bloquee el acceso a su sistema si accede de forma remota.

¿Cómo hacerlo?

Ubuntu usa un cortafuegos sin complicaciones (ufff) y usos de CentOS/Red Hatcortafuegos.

EnCentOS/Red Hatuse el comando firewall-cmd:

sudo firewall-cmd --zone=public --add-service=ssh --permanent

En Ubuntu, use el comando ufw así:

sudo ufw allow ssh

5. Habilite el firewall (solo después de permitir SSH)

Un firewall garantiza que solo el tráfico que usted permita específicamente pueda fluir hacia su servidor. Si un mal actor recibe malware en su servidor e intenta que se comunique a través de un puerto que no está permitido, o si un servicio se habilita accidentalmente, no se puede usar para comprometer su servidor o comprometerlo aún más.

¿Cómo hacerlo?

En los sistemas CentOS/Red Hat, habilite el servicio firewalld systemd:

sudo systemctl start firewalld
sudo systemctl enable firewalld

En Ubuntu, use este comando:

sudo ufw enable

6. Configure SSH para que no muestre el banner

Una de las formas en que un atacante puede comprometer su servidor es a través de errores en el software que ejecuta sus servicios. Un banner puede mostrar información sobre qué versión de OpenSSH o sistema operativo está ejecutando. No tiene sentido dar información a los malos. ¡Haz que trabajen para ello!

¿Cómo hacerlo?

El comportamiento predeterminado en CentOS/Red Hat es no mostrar un banner, por lo que no es necesario realizar ninguna acción.

En Ubuntu, puedes usar:

sudo echo "DebianBanner no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

7. Deshabilitar todo el reenvío SSH

Si bien no es poco común que los administradores utilicen el reenvío SSH para cifrar el tráfico que, de otro modo, pasaría como texto sin cifrar, si no lo utiliza, debe desactivarlo. El reenvío podría ser utilizado por un mal actor para encriptar el tráfico, por lo que es más difícil para usted verlo, o para obtener tráfico que de otro modo estaría bloqueado para pasar usando un puerto y servicio autorizado.

¿Cómo hacerlo?

EnCentOS/Red Hat, unagrega lo siguiente a/etc/ssh/sshd_config:

DisableForwarding yes

Enubuntu,agregarDisableForwarding yesAlabama10-my-sshd-settings.confhora de oficina:

sudo echo "DisableForwarding yes" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

8. Deshabilite el inicio de sesión raíz a través de SSH

Hay un usuario root en casi todos los sistemas Linux. Los riesgos de permitir que esa cuenta use SSH son dos.

  1. El nombre de usuario es conocido y probado con frecuencia por los malos.
  2. Si un atacante ingresa como root, tiene acceso completo al sistema.

Deshabilitar el uso de la cuenta raíz para las conexiones SSH niega ambos riesgos.

¿Cómo hacerlo?

EnCentOS/Red Hatencuentra la líneaPermitRootLogin yesen/etc/ssh/sshd_configy cambiarlo a:

PermitRootLogin no

En Ubuntu, agreguePermitRootLogin noAlabama10-my-sshd-settings.confhora de oficina:

sudo echo "PermitRootLogin no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

9. Deshabilitar la autenticación SSH basada en contraseña

Antes de deshabilitar la autenticación de contraseña en SSH, asegúrese de tener la autenticación basada en clave configurada y probada como se menciona en el paso 3.

La desactivación de la autenticación basada en contraseña impide que los actores malintencionados que intentan adivinar su contraseña o que lo hayan manipulado socialmente para que ingrese sus credenciales o las hayan robado por cualquier medio, impidan que ingresen a su servidor mediante SSH.

Un atacante debe tener sus claves públicas y privadas para acceder a su servidor.

¿Cómo hacerlo?

EnCentOS/Red Hatencuentra la líneaPasswordAuthentication yesen/etc/ssh/sshd_configy cambiarlo a:

PasswordAuthentication no

EnubuntuagregarPasswordAuthentication noAlabama10-my-sshd-settings.confhora de oficina:

sudo echo "PasswordAuthentication no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

10. Ignora a los fantasmas

rhostsestá asociado con rsh, un protocolo heredado reemplazado por shell seguro. Si un usuario intenta crear un maliciosorhostsarchivo, esta configuración lo ignora explícitamente.

¿Cómo hacerlo?

EnCentOS/Red Hatencuentra la línea#IgnoreRhosts yesen/etc/ssh/sshd_configy cambiarlo a:

IgnoreRhosts yes

EnubuntuagregarIgnoreRhosts yesAlabama10-my-sshd-settings.confhora de oficina:

sudo echo "IgnoreRhosts yes" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

11. Instale fail2ban y configúrelo para proteger SSH

falla2banvigila los archivos de registro de los servicios configurados como SSH y bloquea las direcciones IP de los usuarios maliciosos para que no se conecten a su servidor después de un número determinado de intentos durante un período de tiempo determinado.

Si un atacante realiza más de 5 intentos fallidos en un período de tres horas, su dirección IP se bloqueará durante 12 horas, por example.

Fail2ban se puede configurar para proteger también otros servicios, como sitios web con tecnología denginxservidor web oApacheServidor web.

¿Cómo hacerlo?

Puede seguir nuestra guía detallada sobre el uso de Fail2Ban.

12. Configurar actualizaciones de seguridad automáticas (para Red Hat y CentOS)

Como se mencionó anteriormente, un servicio desactualizado con un exploit puede permitir que un atacante ingrese a su servidor sin siquiera tener que iniciar sesión si la vulnerabilidad es lo suficientemente grave. Es fundamental que las actualizaciones de seguridad se apliquen rápidamente para reducir este riesgo.

¿Cómo hacerlo?

por defectoservidor gratisinstalación, las actualizaciones de seguridad automáticas están habilitadas, por lo que no es necesario realizar ninguna acción con respecto a las actualizaciones.

Para configurar actualizaciones automáticas en CentOS / Red Hat, instalará una aplicación llamadadnf-automáticoy habilite un temporizador para ello usando los siguientes comandos:

sudo dnf upgrade
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timer

Puede verificar el temporizador ejecutando:

sudo systemctl status dnf-automatic.timer

Busque “cargado” en la línea Cargado: y “activo” en la línea Activo:.

Puede haber más o menos pasos según su gusto personal y lo que normalmente configura para que hagan sus servidores.

Script adicional: primeros 10 segundos en un servidor Linux

Como fue prometido,aquí está el guiónEscribí que hace todos los pasos anteriores que mencioné después de tener un usuario no root configurado y configurado para la autenticación basada en claves.

El script se puede ejecutar tanto en Ubuntu 20.04 como en CentOS/Red Hat 8.

Tenga en cuenta que no debe ejecutar scripts de shell aleatorios descargados de Internet a ciegas, sin importar cuánto confíe en la fuente del script. Debes leer el guión y tratar de entender lo que hace.

El guión completo es de código abierto y está disponible para todos y se puede veraquí. Puedesdescargarlea y luego ejecute el bash texto.

Aquí hay una captura de pantalla después de una ejecución en el servidor Ubuntu 20.04.

Vea con qué facilidad puede completar algunos pasos básicos para proteger sus nuevas compilaciones de servidor en CentOS,sombrero rojoo Ubuntu ejecutando solo un script.

También puede enviar comentarios sobre el script o solicitar funciones.

Conclusión

Estas son solo algunas de las comprobaciones de seguridad más básicas, pero es algo que debe hacer después de instalar su servidor Linux.

Hacer estas cosas manualmente en una cantidad de servidores puede ser doloroso e innecesariamente lento. Aquí es donde puede aprovechar las secuencias de comandos y usar mi secuencia de comandos ‘Primeros 10 segundos en un servidor Linux’ o crear la suya propia.

Estas son algunas de mis recomendaciones. ¿Y usted? ¿Tienes algo que añadir a esta lista? Proporcione su sugerencia en la sección de comentarios.

Autorted leroyes un arquitecto de seguridad empresarial que brinda una variedad de información y orientación sobre seguridad física a las empresas.

Artículos Relacionados