Administración del servidor

Trucos de seguridad de Linux para fortalecer su sistema

En la publicación anterior, hablamos sobre los comandos de red de Linux y vimos algunos ejemplos útiles que se utilizan para solucionar problemas que ocurren en una red, hoy hablaremos sobre algunos trucos de seguridad de Linux con comandos que necesitarás para fortalecer tu sistema.

Nuevas vulnerabilidades se descubren día tras día, los exploits se construyen inmediatamente sobre esas vulnerabilidades después de ser descubiertas.


Tal vez estés actualizando tu sistema periódicamente, pero esto no sea suficiente, necesitas fortalecer tu sistema para proteger tus activos tanto como sea posible.

 

 

Asegurando la Terminal

Puedes proteger tu consola limitando que la raíz sea solo utilizada en terminales particulares. Puedes hacer esto especificando los terminales que el root utilizara en el archivo  /etc/securetty.

Es preferible pero no obligatorio permitir el inicio de sesión del usuario root desde un solo terminal y dejar otros terminales para otros usuarios.

 

Cambia tu contraseña siempre

Una contraseña segura es imprescindible en estos días, pero para agregar otra capa de seguridad, debes cambiar tu contraseña de vez en cuando.

Puede que te olvides de cambiarla por ti mismo, por lo que debe haber algo que te recuerde la antigüedad de tu contraseña y cuándo modificarla.

Hay dos formas de lograr esto, la primera es mediante la línea de comandos utilizando el comando change de esta manera:

  • Usando el comando change
  • Estableciendo los valores predeterminados en /etc /login.defs.

$ chage -M 20 likegeeks

Usamos la opción –M, esta se utiliza para establecer los días de vencimiento para la contraseña.

Puedes escribir change sin opciones y te preguntará el valor.

$ chage likegeeks

O puedes establecer tus reglas predeterminadas el archivo  /etc/login.defs.

Puedes cambiar estos valores de acuerdo a tus necesidades.

Ten en cuenta que debes obligar a los usuarios a utilizar una contraseña segura con pam_cracklib.

Una vez que lo hayas instalado, puedes ir a /etc/pam.d/system-auth  y escribir algo como esto

password required pam_cracklib.so minlen=12 lcredit=-1 ucredit=-1 dcredit=-2 ocredit=-1

 



Notificación de sudo

El comando sudo simplifica la vida y también puede generar problemas de seguridad en Linux que pueden arruinar tu vida.

Todas las configuraciones de sudo están en el archivo /etc/sudoers.

Puedes evitar que los usuarios ejecuten los comandos que desea como como root.

También puedes hacer que sudo envíe un correo electrónico cuando se utilice, al agregar la siguiente línea al archivo:

mailto yourname@yourdomain.com

Y configura mail_always en on.

mail_always on

 

Asegurando con SSH

Si hablamos acerca de la seguridad de Linux, debemos discutir sobre el servicio de SSH. Este es un servicio importante para tu sistema, el cual permite conectarse fácilmente a tu sistema y, a veces, es la única manera de hacer que su sistema sobreviva cuando las cosas van mal, por lo que ajustar el SSH es imprescindible.

Como usamos CentOS 7 en nuestras publicaciones, el archivo de configuración SSH está en:

/etc/ssh/sshd_config

Los escáneres o bots que utilizan los atacantes intentan conectarse a SSH en el puerto 22, que es el predeterminado.

Es común cambiar su puerto SSH a otro puerto no utilizado, digamos 5555. Puedes cambiar el puerto SSH escribiendo el número de Puerto en el archivo de configuración de esta manera:

Port 5555

También puedes restringir el inicio de sesión de root actualizando el valor de PermitRootLogin a noÑ

PermitRootLogin no

También deshabilite las contraseñas tunneled clear y utiliza el inicio de sesión de clave pública-privada en tu lugar:

En cuanto a los tiempos de espera de SSH. Este problema tradicional puede manejarse configurando las siguientes configuraciones.

Por ejemplo, las siguientes configuraciones implican que un paquete se enviará cada 60 segundos:

Al ajustar estos valores, puedes proporcionar una conexión más larga:

Puedes especificar los usuarios permitidos para usar el servicio SSH:

AllowUsers user1 user2

O puedes hacerlo por grupo::

AllowGroup group1 group2


Asegurar SSH usando Google Authenticator

Además de esto, puedes usar autenticación de dos factores para SSH como el autenticador de Google.

$  yum install google-authenticator

Luego ejecútalo para verificar la instalación.

$ google-authenticator

Debes tener la aplicación de autenticación de Google instalada en tu teléfono móvil.

Edita el archivo  /etc/pam.d/sshd agregar esto:

auth required pam_google_authenticator.so

Lo último que debes hacer es agregar la siguiente línea en el archivo de configuración de SSH  /etc/ssh/sshd_config

ChallengeResponseAuthentication yes

Ahora reinicia tu SSH.

$ systemctl restart sshd

Cuando inicies sesión utilizando SSH, te solicitara el código de verificación, por lo que tu SSH está asegurado y ahora es más sólido.

 

Detección de intrusos con Tripwire (Sistema de monitoreo de archivos)

Tripwire es una de las mejores herramientas en seguridad de Linux. Es un sistema de detección de inttilrusos (HIDS).

El trabajo de Tripwire es monitorear el sistema de archivos, quién cambió los archivos y cuándo sucedió ese cambio.

Para utilizar Tripwire, necesita acceso al repositorio de EPEL. Puedes agregarlo fácilmente:

wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm

$ rpm -ivh epel-release-7-9.noarch.rpm

Una vez que hayas instalado el repositorio de EPEL, puede instalar Tripwire.

$ sudo yum install tripwire

Primero, crea keyfiles como este:

$ tripwire-setup-keyfiles

Le pedirá que ingrese una frase de contraseña para los keyfiles. Tripwire te pedirá que utilices una contraseña segura.

Ahora puedes personalizar Tripwire haciendo cambios en este archivo:

/etc/tripwire/twpol.txt

Este archivo es muy fácil de leer y modificar ya que cada línea tiene un comentario que lo describe bien.

Cuando completes las modificaciones a Tripwire, debes inicializarlo de la siguiente forma:

$ tripwire --init

Le tomará algo de tiempo escanear el sistema dependiendo de los tamaños de tus archivos.

Cualquier modificación al sistema de archivos se considera intrusión del sistema, se notificará al administrador y deberá restaurar el sistema con archivos confiables.

Por este motivo, cualquier cambio en el sistema debe validarse a través de Tripwire. Para hacer esto, utiliza el siguiente comando:

$ tripwire --check

los archivos twpol.txt y twcfg.txt como otro paso de seguridad.

Tripwire tiene muchas opciones y configuraciones; puedes verificarlos con el comando man tripwire

 

Usando Firewalld

Firewalld es un reemplazo para iptables, mejora la administración de la seguridad de Linux. Firewalld puede habilitar cambios de configuración sin detener las conexiones actuales.

Firewalld se ejecuta como un servicio que permite que las reglas se agreguen y cambien de inmediato y usa zonas de red.

Para saber si Firewalld se está ejecutando o no, escribe este comando:

$ firewall-cmd --state

linux security firewall-cmd state

Puedes listar las zonas predefinidas de esta manera::

$ firewall-cmd --get-zones

linux security firewall-cmd --get-zones

Cada zona tiene un nivel de confianza.

El valor se puede actualizar así:

$ firewall-cmd --set-default-zone=<new-name>

Se puede obtener toda la información relevante sobre cualquier zona en particular de la siguiente forma::

$ firewall-cmd --zone=<zone-name> --list-all

Puedes enumerar todos los servicios compatibles así:

$ firewall-cmd --get-services

linux security firewall get services

Luego puede agregar servicios adicionales o eliminarlos dentro de una zona:

También puedes enumerar todos los puertos abiertos en cualquier zona en particular:

$ firewall-cmd --zone=<zone-name> --list-ports

Puedes agregar puertos a una zona de la siguiente forma:

Es posible agregar o eliminar el forwarding de puertos de esta manera:

Firewalld es muy completo y lo mejor de esta herramienta es que puede administrar la arquitectura del firewall sin reiniciar o detener el servicio a diferencia de iptables, donde debe volver a cargar o reiniciar el servicio.

 


Volviendo a Iptables

Algunas personas prefieren el firewall de iptables sobre Firewalld , puedes volver a iptables fácilmente.

Primero, deshabilita Firewalld:

Luego instala iptables:

Ahora puedes iniciar el servicio de iptables:

Finalmente, reinicia tu sistema.

 

Restricción de compiladores

El atacante podría compilar los exploits en tu máquina y subirlos al servidor víctima sin la necesidad de los compiladores, pero, de todos modos, es preferible restringir los compiladores si no los utilizas en producción como lo hacen la mayoría de los paneles de hosting modernos.

Primero, obtén una lista de todos los binaries de los paquetes, luego, establece el permiso para ellos.

$ rpm -q --filesbypkg gcc | grep 'bin'

linux security restrict compilers

Crea un nuevo grupo:

$ groupadd compilerGroup

Luego, cambia el grupo de los binaries del compilador de esta manera:

$ chown root:compilerGroup /usr/bin/gcc

Una última cosa, importante es cambiar el permiso de este binary para que sea solo el grupo de compiladores.

$ chmod 0750 /usr/bin/gcc

Ahora, cualquier usuario que intente usar gcc verá el mensaje de permiso denegado.

 


Los increíbles archivos inmutables (evitar la modificación de archivos)

Los archivos inmutables no pueden sobrescribirse por ningún usuario, incluso los root. No puedes modificarlo o eliminarlo a menos que elimines el bit de inmutable y solo los usuarios root pueden hacer esto.

Puedes decir que esta característica te protege como root de cualquier error que pueda dañar tu sistema. ¡¡Increíble!!

Puedes proteger los archivos de configuración o cualquier archivo que desees.

Para hacer que cualquier archivo sea inmutable, utiliza el comando chattr.

$ chattr +i /myscript

linux security immutable files

Puedes eliminar un atributo inmutable de la siguiente forma:

$ chattr -i /myscript

linux security remove immutalbe flag

Además, puedes proteger cualquier archivo en tu sistema de la misma manera, pero ten en cuenta que, si haces esto con los binaries del sistema, no podrás actualizarlos a menos que elimines el bit inmutable.

Dejaré el resto de los ejemplos sobre el uso de archivos inmutables para tu imaginación.

 

Administrando SELinux con aureport

Es algo común si usas paneles de control de hosting, encontrarás el SELinux desactivado.

Deshabilitar SELinux dejará tu sistema expuesto. Estoy de acuerdo, SELinux tiene cierta complejidad, pero puedes facilitarte la vida si lo gestionas usando un puerto.

La utilidad aureport está desarrollada para crear informes tabulares para archivos de registro de auditoría.

$ aureport --avc

linux security aureport

Puedes crear una lista de archivos ejecutables como este:

$ aureport -x

linux security aureport -x

Además, también puedes utilizar aureport para generar un informe de autenticación completo.

$ aureport -au -i

linux security aureport -au

O puede enumerar los eventos de autenticación fallidos..

$ aureport -au --summary -i --failed

linux security aureport failed summery

Tal vez un resumen de eventos de autenticación exitosos.

linux security aureport success summery

¡¡Increíble!!

La herramienta aureport hace que trabajar con SELinux sea bastante fácil.

 

Utilizar la herramienta Sealert

Además de la herramienta aureport, puedes utilizar una herramienta de seguridad de Linux llamada sealert, puedes instalarla con este comando:

$ yum install setools

Ahora tenemos una herramienta que activamente devolverá anuncios del archivo /var/log/audit/audit.log  y nos da algo legible acerca de los problemas de SELinux.

Puedes utilizar la herramienta de la siguiente forma:

$ sealert -a /var/log/audit/audit.log

linux security sealert -a

Lo mejor sobre el informe generado se encuentra al final de cada alerta, si se encuentra, aparecerá cómo resolver el problema.

En este post, hemos cubierto solo algunos de los trucos de seguridad de Linux que pueden ayudarte a fortalecer tu sistema. Sin embargo, hay muchos trucos de seguridad de Linux para muchos servicios en ejecución que necesitan ser reforzados.

Espero que encuentres la publicación útil e interesante.

Gracias.

Mokhtar Ebrahim
Estoy trabajando como administrador de sistemas Linux desde 2010. Soy responsable de mantener, proteger y solucionar problemas de servidores Linux para múltiples clientes de todo el mundo. Me encanta escribir guiones de shell y Python para automatizar mi trabajo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *