Tips de “Hardering” de seguridad para Servidores Linux (Parte I)

Linux-SecureTodo el mundo dice que Linux es seguro por default y estamos de acuerdo en cierta medida (hay temas discutibles). Sin embargo, Linux tiene incorporado un modelo de seguridad por default. Necesitamos ajustarlo y personalizarlo según la necesidad que tengamos de manera que pueda ayudar a hacer el sistema mas seguro. Linux es mas difícil de administrar, pero ofrece mas flexibilidad y opciones de configuración.

Asegurar un sistema en producción de ataques de hackers y crackers es una tarea difícil para un SysAdmin. Este no es el primer post relacionado a “Como proteger un sistema Linux” o “Hardering de Linux“. En este post vamos a explicar algunos consejos y trucos para asegurar un sistema Linux. Espero que los consejos y trucos debajo descritos ayuden a asegurar un sistema.

1. Seguridad Física del Sistema

Configure la BIOS des-habilitando la opción de arranque desde CD/DVD, dispositivos externos y unidades de Diskettes. A continuación, habilite la contraseña de la BIOS y también proteja con contraseña el gestor de arranque (GRUB, LiLo, etc) para restringir el acceso físico de su sistema.

2. Particiones de Disco

Es importante tener diferentes particiones para obtener mayor seguridad de los datos en caso de que ocurra cualquier desastre. Mediante la creación de diferentes particiones los datos se pueden separar y agrupar. Cuando ocurre un accidente inesperado, se dañaran solo los datos de esa partición, mientras que los datos de las demás particiones sobrevivirán. Asegúrese de que dispone de las particiones separadas abajo listadas y también de que las aplicaciones de terceros se deben instalar en sistemas de archivos separados en /opt.

3. Minimizar los Paquetes instalados para minimizar las vulnerabilidades

¿De verdad necesitas todo tipo de servicios instalados?. Se recomienda evitar la instalación de paquetes inútiles para evitar vulnerabilidades que dichas instalaciones puedan tener. Esto puede minimizar el riesgo de que al comprometerse un servicio pueda llevar a que otros servicios sean comprometidos. Buscar y des-instalar o des-habilitar los servicios que no usemos del servidor para minimizar el riesgo de vulnerabilidades. Utiliza el comando “chkconfig” para averiguar que servicios se están ejecutando en runlevel 3.

Nota: Si el servidor esta instalado en idioma español la cadena es ‘3:activo’

Una vez que hayas averiguado que servicios innecesarios se están ejecutando, hay que desactivarlos con el siguiente comando:

Utiliza la herramienta del gestor de paquetes como “yum” o “apt-get” para listar todos los paquetes instalados en el sistema y puedes eliminar los que no sean necesarios con el siguiente comando:

4. Comprobar los puertos abiertos (listening)

Con la ayuda del comando de red “netstat” se pueden ver todos los puertos abiertos y programas asociados a dicho puerto. Como dije antes se puede usar el comando “chkconfig” para des-habilitar los servicios de red que no usemos en el sistema.

5. Utilizar SSH

Los protocolos Telnet y rlogin utilizan texto plano, sin encriptación lo cual es muy inseguro. SSH es un protocolo seguro que utiliza tecnología de encriptación durante la comunicación con el servidor.

Nunca iniciar sesión directamente como root a menos que sea necesario. Utilizar “sudo” para ejecutar comandos como administrador. Los usuarios que pueden ejecutar sudo se especifican en el archivo /etc/sudoers. También se puede editar con la utilidad “visudo” que se abre con el editor VI.

También es recomendable cambiar el puerto predeterminado (22) por algún otro mas alto. Abrimos el archivo principal de configuración de SSH y realizamos algunos cambios de parámetros para restringir el acceso de usuarios:

Des-habilitar el inicio de sesión “root”

Permitir solo usuarios especificados

Utilizar Protocolo SSH v2

6. Mantener el sistema actualizado

Siempre mantenga el sistema actualizado con los últimos parches lanzados, parches de seguridad y kernel cuando estén disponibles.

7. Bloqueo de CronJobs

cron tiene su propia función incorporada, en la que permite especificar quien puede y quien no puede ejecutar trabajos. Esto es controlado por dos archivos llamados /etc/cron.allow y /etc/cron.deny. Para bloquear un usuario y que no pueda usar cron, simplemente el/los nombres de usuarios en cron.deny y para permitir a un usuario ejecutar cron agregarlo al archivo cron.allow. Si desea que ningún usuario pueda utilizar cron, debe añadir la linea ‘ALL’ al archivo cron.deny.

8. Des-habilitar la detección de Memorias USB

Muchas veces queremos restringir a otros usuarios el uso de memorias USB en el sistema para proteger y asegurar los datos de posibles robos. Creamos el archivo /etc/modprobe.d/no-usb y añadimos la linea que figura abajo y no detectara mas memorias USB.

9. Activar SELinux

Security-Enhanced Linux (SELinux) es un mecanismo de seguridad de control de acceso obligatorio dispuesto en el kernel. Des-habilitar SELinux significa la eliminación del mecanismo de seguridad del sistema. Piense cuidadosamente dos veces antes de desactivarlo, si su sistema esta conectado a Internet y tiene acceso publico, piense un poco mas sobre esto.

SELinux proporciona tres modos básicos de operación y son:

Enforcing: Este es el modo por default que permite hacer cumplir la política de seguridad de SELinux en la maquina

Permisive: En este modo, SELinux no hace cumplir la política de seguridad en el sistema, solo muestra advertencias y registra las acciones. Este modo es muy útil en termino de cuestiones relacionadas con la solución de problemas de SELinux.

Disabled: SELinux esta desactivado.

Puedes ver el estado actual de SELinux desde la linea de comandos, utilizando los comandos “sestatus“, “getenforce” o “system-config-selinux“.

Si esta desactivado, activa SELinux con el siguiente comando:

También se puede gestionar desde el archivo /etc/selinux/config, donde se puede habilitar o des-habilitar.

10. Eliminar Escritorio GNOME/KDE

No hay necesidad de correr escritorios “X Window” como GNOME o KDE en un servidor dedicado. Puede quitarlo o des-habilitarlo para aumentar la seguridad del servidor y el rendimiento. Para des-habilitarlo simplemente abrir el archivo /etc/inittab y establezca el runlevel a 3. Si desea eliminar el sistema de escritorio por completa utilizar el siguiente comando:

Continuara…