7 pasos para asegurar su servidor Linux

asegurar seguridad servidor linux

Este manual le presentará la seguridad básica del servidor Linux. Si bien se centra en Debian / Ubuntu, puede aplicar todo lo presentado aquí a otras distribuciones de Linux. También lo aliento a que investigue este material y lo extienda donde corresponda.

1. Actualiza tu servidor

Lo primero que debe hacer para proteger su servidor es actualizar los repositorios locales y actualizar el sistema operativo y las aplicaciones instaladas mediante la aplicación de los últimos parches.

En Ubuntu y Debian:

$ sudo apt update && sudo apt upgrade -y

En Fedora, CentOS o RHEL:

$ sudo dnf upgrade

2. Crear una nueva cuenta de usuario privilegiado

A continuación, cree una nueva cuenta de usuario. Nunca debe iniciar sesión en su servidor como root . En su lugar, cree su propia cuenta (» <usuario> «), dele derechos de sudo y úsela para iniciar sesión en su servidor.

Comience creando un nuevo usuario:

$ adduser <username>

Otorgue a su nueva cuenta de usuario derechos de sudo agregando ( -a ) el grupo de sudo ( -G ) a la membresía de grupo del usuario:

$ usermod -a -G sudo <username>

3. Cargue su clave SSH

Deberá utilizar una clave SSH para iniciar sesión en su nuevo servidor. Puede cargar su clave SSH pregenerada en su nuevo servidor utilizando el comando ssh-copy-id :

$ ssh-copy-id <username>@ip_address

Ahora puede iniciar sesión en su nuevo servidor sin tener que escribir una contraseña.

4. SSH seguro

A continuación, realice estos tres cambios:

  • Deshabilitar autenticación de contraseña SSH
  • Restringir el inicio de sesión de root de forma remota
  • Restrinja el acceso a IPv4 o IPv6

Abra / etc / ssh / sshd_config utilizando el editor de texto de su elección y asegúrese de estas líneas:

PasswordAuthentication 
PermitRootLogin 

se parece a esto:

Contraseña
Autenticación no PermitRootLogin no

Luego, restrinja el servicio SSH a IPv4 o IPv6 modificando la opción AddressFamily . Para cambiarlo y usar solo IPv4 (que debería estar bien para la mayoría de las personas), haga este cambio:

AddressFamily inet

Reinicie el servicio SSH para habilitar sus cambios. Tenga en cuenta que es una buena idea tener dos conexiones activas a su servidor antes de reiniciar el servidor SSH. Tener esa conexión adicional te permite arreglar cualquier cosa si el reinicio sale mal.

En Ubuntu:

$ sudo service sshd restart

En Fedora o CentOS o cualquier cosa que use Systemd:

$ sudo systemctl restart sshd

5. Habilite un firewall

Ahora necesita instalar un firewall, habilitarlo y configurarlo solo para permitir el tráfico de red que designe. Firewall sin complicaciones (UFW) es una interfaz fácil de usar para iptables que simplifica enormemente el proceso de configuración de un firewall.

Puede instalar UFW con:

$ sudo apt install ufw

Por defecto, UFW niega todas las conexiones entrantes y permite todas las conexiones salientes. Esto significa que cualquier aplicación en su servidor puede llegar a Internet, pero cualquier cosa que intente llegar a su servidor no puede conectarse.

Primero, asegúrese de poder iniciar sesión habilitando el acceso a SSH, HTTP y HTTPS:

sudo ufw permite ssh
sudo ufw permite http
sudo ufw permite https

Luego habilite UFW:

$ sudo ufw enable

Puede ver qué servicios están permitidos y denegados con:

$ sudo ufw status

Si alguna vez desea deshabilitar UFW, puede hacerlo escribiendo:

$ sudo ufw disable

También puede usar firewall-cmd , que ya está instalado e integrado en algunas distribuciones.

6. Instalar Fail2ban

Fail2ban es una aplicación que examina los registros del servidor en busca de ataques repetidos o automatizados. Si se encuentra alguno, alterará el cortafuegos para bloquear la dirección IP del atacante de forma permanente o por un período de tiempo específico.

Puede instalar Fail2ban escribiendo:

$ sudo apt install fail2ban -y

Luego copie el archivo de configuración incluido:

$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Y reinicie Fail2ban:

$ sudo service fail2ban restart

Eso es todo al respecto. El software examinará continuamente los archivos de registro en busca de ataques. Después de un tiempo, la aplicación creará una lista de direcciones IP prohibidas. Puede ver esta lista solicitando el estado actual del servicio SSH con:

$ sudo fail2ban-client status ssh

7. Eliminar los servicios de red no utilizados

Casi todos los sistemas operativos de servidor Linux vienen con algunos servicios de red habilitados. Querrás quedarte con la mayoría de ellos. Sin embargo, hay algunos que quizás desee eliminar. Puede ver todos los servicios de red en ejecución utilizando el comando ss :

$ sudo ss -atpu

La salida de ss diferirá según su sistema operativo. Este es un ejemplo de lo que puede ver. Muestra que los servicios SSH (sshd) y Ngnix (nginx) están escuchando y listos para la conexión:

tcp ESCUCHAR 0 128 * : http * : * usuarios: "nginx" , pid = 22563 , fd = 7 )
tcp ESCUCHAR 0 128 * : ssh * : * usuarios: "" sshd " , pid = 685 , fd = 3 )

La forma en que elimine un servicio no utilizado (» <nombre_servicio> «) diferirá según su sistema operativo y el administrador de paquetes que utilice.

Para eliminar un servicio no utilizado en Debian / Ubuntu:

$ sudo apt purge <service_name>

Para eliminar un servicio no utilizado en Red Hat / CentOS:

$ sudo yum remove <service_name>

Ejecute ss -atup nuevamente para verificar que los servicios no utilizados ya no estén instalados y en ejecución.

Pensamientos finales

Este tutorial presenta el mínimo necesario para fortalecer un servidor Linux. Las capas de seguridad adicionales pueden y deben habilitarse dependiendo de cómo se use un servidor. Estas capas pueden incluir cosas como configuraciones de aplicaciones individuales, software de detección de intrusiones y habilitación de controles de acceso, por ejemplo, autenticación de dos factores.

Deja un comentario