Seis herramientas de código abierto y consejos para proteger un servidor Linux para principiantes
Utilice herramientas de código abierto para proteger su entorno Linux de infracciones.
Debido a que hoy en día gran parte de nuestros datos personales y profesionales están disponibles en línea, es importante que todos, desde profesionales hasta usuarios generales de Internet, aprendan los conceptos básicos de seguridad y privacidad. Como estudiante, pude adquirir experiencia en esta área a través de la iniciativa CyberPatriot de mi escuela, donde tuve la oportunidad de interactuar con expertos de la industria para aprender sobre infracciones cibernéticas y los pasos básicos para establecer la seguridad de un sistema.
Este artículo detalla seis pasos sencillos para mejorar la seguridad de su entorno Linux para uso personal, según lo que he aprendido hasta ahora como principiante. A lo largo de mi trayectoria, he utilizado herramientas de código abierto para acelerar mi proceso de aprendizaje y familiarizarme con conceptos de nivel superior relacionados con la seguridad de mi servidor Linux.
Probé estos pasos usando Ubuntu 18.04, la versión con la que estoy más familiarizado, pero estos pasos también funcionarán para otras distribuciones de Linux.
1. Ejecutar actualizaciones
Los desarrolladores encuentran constantemente formas de hacer que los servidores sean más estables, rápidos y seguros parcheando vulnerabilidades conocidas. Ejecutar actualizaciones regularmente es un buen hábito para maximizar la seguridad. Ejecútelos con:
sudo apt-get update && apt-get upgrade
2. Habilite la protección de firewall
Habilitar un firewall facilita el control del tráfico entrante y saliente en su servidor. Hay muchas aplicaciones de firewall que puede usar en Linux, incluidas firewall-cmd y Uncomplicated Firewall (UFW). Yo uso UFW, por lo que mis ejemplos son específicos, pero estos principios se aplican a cualquier interfaz que elija.
Instalar UFW:
sudo apt-get install ufw
Si desea proteger aún más su servidor, puede denegar las conexiones entrantes y salientes. Tenga cuidado: esto desconecta su servidor del mundo, por lo que una vez que haya bloqueado todo el tráfico, debe especificar qué conexiones salientes están permitidas desde su sistema:
sudo ufw default deny incoming
sudo ufw default allow outgoing
También puede escribir reglas para permitir las conexiones entrantes que necesita para uso personal:
ufw allow <service>
Por ejemplo, para permitir conexiones SSH:
ufw allow ssh
Finalmente, habilite su firewall con:
sudo ufw enable
3. Reforzar la protección con contraseña
Implementar una política de contraseñas segura es un aspecto importante para mantener un servidor seguro contra ataques cibernéticos y violaciones de datos. Algunas prácticas recomendadas para las políticas de contraseñas incluyen imponer una longitud mínima y especificar la antigüedad de la contraseña. Utilizo el paquete libpam-cracklib para realizar estas tareas.
Instale el paquete libpam-cracklib:
sudo apt-get install libpam-cracklib
Para hacer cumplir la longitud de la contraseña:
- Abra el archivo
/etc/pam.d/common-password
. - Cambie la longitud mínima de caracteres de todas las contraseñas cambiando la línea
minlen=12
a la cantidad de caracteres que desee.
Para evitar la reutilización de contraseñas:
- En el mismo archivo (
/etc/pam.d/common-password
), agregue la línearemember=x
. - Por ejemplo, si desea evitar que un usuario reutilice una de sus últimas cinco contraseñas, utilice:
remember=5
.
Para hacer cumplir la antigüedad de la contraseña:
-
Busque las siguientes líneas en el archivo
/etc/login.defs
y reemplácelas con la cantidad de tiempo que prefiera (días). Por ejemplo:PASS_MIN_AGE: 3 PASS_MAX_AGE: 90 PASS_WARN_AGE: 14
Para hacer cumplir las especificaciones de caracteres:
- Los cuatro parámetros para aplicar especificaciones de caracteres en las contraseñas son
lcredit
(minúscula),ucredit
(mayúscula),dcredit
(dígito) yocredit
(otros caracteres). En el mismo archivo (
/etc/pam.d/common-password
), ubique la línea que contienepam_cracklib.so
.Agregue lo siguiente al final de esta línea:
lcredit=-a ucredit=-b dcredit=-c ocredit=-d
Por ejemplo, la siguiente línea requiere que las contraseñas contengan uno de cada parámetro. Puede cambiar los números según su nivel preferido de seguridad de contraseña:
lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1
4. Deshabilite los servicios no esenciales que sean propensos a la explotación.
Es una buena práctica desactivar los servicios innecesarios. Esto permite que haya menos puertos abiertos para la explotación.
Instale el paquete systemd:
sudo apt-get install systemd
Vea qué servicios se están ejecutando:
systemctl list-units
Reconozca qué servicios podrían causar posibles vulnerabilidades en su sistema. Para cada servicio:
Detenga el servicio si se está ejecutando actualmente:
systemctl stop <service>
-
Deshabilite el inicio del servicio al arrancar:
systemctl disable <service>
Después de ejecutar estos comandos, verifique el estado del servicio:
systemctl status <service>
5. Verifique los puertos de escucha
Los puertos abiertos pueden presentar riesgos de seguridad, por lo que es importante verificar si hay puertos que estén escuchando en su servidor. Utilizo el comando netstat para mostrar todas las conexiones de red:
netstat -tulpn
Mire las columnas de dirección para determinar el número de puerto. Una vez que haya encontrado los puertos abiertos, revíselos para asegurarse de que sean todos necesarios. Si no es así, ajuste los servicios que está ejecutando o ajuste la configuración de su firewall (o deje que fail2ban lo ajuste por usted).
6. Escanee en busca de malware
El software de escaneo antivirus puede resultar útil para mantener los virus fuera de su sistema. Usarlos es una forma sencilla de mantener su servidor libre de malware. Mi herramienta preferida es el software de código abierto ClamAV.
Instalar ClamAV:
sudo apt-get install clamav
Actualizar firmas de virus:
sudo freshclam
Escanee todos los archivos e imprima los archivos infectados, haciendo sonar una campana cuando encuentre uno:
sudo clamscan -r --bell -i /
Puede y debe automatizar los escaneos para no tener que recordarlos ni perder tiempo realizándolos manualmente. Para una automatización simple como esta, puede usar temporizadores systemd o su cron favorito.
Mantenga su servidor seguro
No podemos dejar la responsabilidad de proteger los servidores a una sola persona u organización. A medida que el panorama de amenazas continúa expandiéndose rápidamente, depende de cada uno de nosotros ser conscientes de la importancia de la seguridad del servidor y emplear algunas mejores prácticas de seguridad simples y efectivas.
Estos son sólo algunos de los muchos pasos que puede seguir para mantener seguro su servidor Linux. Por supuesto, la prevención es sólo una parte de la solución. Estas políticas deben combinarse con un monitoreo riguroso de los ataques de denegación de servicio, análisis del sistema con Lynis y creación de copias de seguridad frecuentes.
¿Qué herramientas de código abierto utiliza para mantener su servidor seguro? Cuéntanos sobre ellos en los comentarios.