Este manual básico le presentará la seguridad básica del servidor Linux. Si bien se enfoca en Debian/Ubuntu, puede aplicar todo lo presentado aquí a otras distribuciones de Linux. También lo animo a que investigue este material y lo amplíe cuando 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 aplicando 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 ("
Comience creando un nuevo usuario:
$ adduser <username>
Dale a tu nueva cuenta de usuario sudo derechos agregando (-a ) el sudo grupo (-G ) a la pertenencia al grupo del usuario:
$ usermod -a -G sudo <username>
3. Sube tu clave SSH
Querrá usar una clave SSH para iniciar sesión en su nuevo servidor. Puede cargar su clave SSH pregenerada a su nuevo servidor usando el ssh-copy-id comando:
$ 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 la autenticación de contraseña SSH
- Restringir raíz de iniciar sesión de forma remota
- Restringir 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 yes
PermitRootLogin yes
luce así:
PasswordAuthentication no
PermitRootLogin no
A continuación, restrinja el servicio SSH a IPv4 o IPv6 modificando la AddressFamily opción. Para cambiarlo para 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 extra te permite arreglar cualquier cosa en caso de que el reinicio salga mal.
En Ubuntu:
$ sudo service sshd restart
En Fedora o CentOS o cualquier cosa usando Systemd:
$ sudo systemctl restart sshd
5. Habilitar un cortafuegos
Ahora necesita instalar un firewall, habilitarlo y configurarlo solo para permitir el tráfico de red que usted designe. Uncomplicated Firewall (UFW) es una interfaz fácil de usar para iptables eso simplifica enormemente el proceso de configuración de un cortafuegos.
Puede instalar UFW con:
$ sudo apt install ufw
De forma predeterminada, UFW niega todas las conexiones entrantes y permite todas las conexiones salientes. Esto significa que cualquier aplicación en su servidor puede acceder a Internet, pero cualquier cosa que intente llegar a su servidor no puede conectarse.
Primero, asegúrese de que puede iniciar sesión habilitando el acceso a SSH, HTTP y HTTPS:
$ sudo ufw allow ssh
$ sudo ufw allow http
$ sudo ufw allow 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 alguna, alterará el cortafuegos para bloquear la dirección IP del atacante de forma permanente o durante 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 bastante grande 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 es posible que desee eliminar. Puede ver todos los servicios de red en ejecución utilizando el ss comando:
$ sudo ss -atpu
La salida de ss diferirá dependiendo de su sistema operativo. Este es un ejemplo de lo que podrías ver. Muestra que los servicios SSH (sshd) y Ngnix (nginx) están escuchando y listos para la conexión:
tcp LISTEN 0 128 *:http *:* users:(("nginx",pid=22563,fd=7))
tcp LISTEN 0 128 *:ssh *:* users:(("sshd",pid=685,fd=3))
Cómo elimina un servicio no utilizado ("
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>
Más recursos de Linux
- Hoja de trucos de los comandos de Linux
- Hoja de trucos de comandos avanzados de Linux
- Curso en línea gratuito:Descripción general técnica de RHEL
- Hoja de trucos de red de Linux
- Hoja de trucos de SELinux
- Hoja de trucos de los comandos comunes de Linux
- ¿Qué son los contenedores de Linux?
- Nuestros últimos artículos sobre Linux
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 lo mínimo necesario para fortalecer un servidor Linux. Se pueden y se deben habilitar capas de seguridad adicionales dependiendo de cómo se use un servidor. Estas capas pueden incluir cosas como configuraciones de aplicaciones individuales, software de detección de intrusos y controles de acceso habilitados, por ejemplo, autenticación de dos factores.