Module 06: Endpoint Security-Linux System

Comprender el sistema operativo Linux y los problemas de seguridad

Linux es un sistema operativo de código abierto que se utiliza ampliamente en empresas y organismos gubernamentales. Es una de las versiones más populares del sistema operativo UNIX y su funcionalidad es muy similar a la de UNIX. Una de las características únicas de Linux es su capacidad para ejecutarse en varios tipos de hardware y arquitecturas de procesadores, lo que lo hace altamente portátil. Además, Linux es conocido por su seguridad y estabilidad, lo que lo convierte en una opción popular para servidores y estaciones de trabajo.

Componentes de Linux OS

Linux se compone de varios componentes, que incluyen:

  • Hardware: Este componente incluye los dispositivos físicos como monitores, RAM, HDD, CPU, etc.
  • Kernel: Es el componente principal del sistema operativo que tiene el control completo sobre los recursos del sistema. Es responsable de administrar la memoria, la CPU, el almacenamiento, la seguridad y otras funciones críticas del sistema.
  • Shell: Es una interfaz que permite a los usuarios interactuar con el kernel. El shell toma las entradas del usuario, las envía al kernel para su procesamiento y devuelve la salida del kernel al usuario.
  • Aplicaciones o utilidades: Son programas de utilidad que se pueden iniciar mediante el shell. Las utilidades proporcionan la mayoría de las funcionalidades que el sistema operativo ofrece al usuario.
  • Bibliotecas del sistema: Son funciones especiales que no requieren ningún derecho de acceso a los módulos del kernel para implementar la funcionalidad del sistema operativo.
  • Demonios: Son servicios que se ejecutan en segundo plano y realizan tareas como la impresión, la programación, etc.
  • Servidor gráfico: Es un subsistema que es responsable de mostrar gráficos en el monitor y se conoce como X.

Estructura organizativa

El sistema de archivos de Linux está organizado en una estructura jerárquica. Los archivos se organizan en directorios que se pueden navegar utilizando comandos del shell. A continuación se muestra una descripción de algunos de los directorios importantes del sistema:

  • /proc: Es un directorio virtual que contiene información sobre procesos y otros recursos del sistema.
  • /tmp: Es un directorio donde se almacenan los archivos temporales.
  • /bin: Es un directorio que contiene archivos binarios ejecutables.
  • /var: Es un directorio que contiene variables y archivos de registro.
  • /home: Es un directorio que contiene las carpetas personales de los usuarios.

Además, el archivo /etc/shadow es un archivo que contiene las contraseñas cifradas de los usuarios del sistema. Este archivo es fundamental para la seguridad del sistema y debe ser protegido adecuadamente.

GRUB (GRand Unified Bootloader)

GRUB es un cargador de arranque que se utiliza en sistemas Linux. Es responsable de cargar el kernel del sistema operativo y otros archivos necesarios para iniciar el sistema operativo. GRUB consta de dos fases:

  • Fase 1: Es el sector de arranque que se encuentra en el primer sector del disco duro.
  • Fase 2: Es la parte restante de GRUB que se encuentra en una posición del disco duro con más espacio.

Para acceder al menú de GRUB en Linux, se debe presionar la tecla «Esc» inmediatamente después de que el sistema se enciende. Esto mostrará el menú de GRUB, que permite al usuario seleccionar qué sistema operativo o kernel desea iniciar si hay varios instalados en el sistema.

Es importante tener en cuenta que algunos sistemas modernos utilizan un método diferente para acceder al menú de arranque, como pulsar la tecla «F8» o «F12» durante el proceso de arranque. Es posible que deba consultar la documentación específica del sistema o el fabricante para obtener instrucciones precisas sobre cómo acceder al menú de arranque en un sistema específico.

Debate sobre la instalación y los parches de Linux

El debate sobre la instalación y los parches de Linux es un tema muy importante en el ámbito de la seguridad informática, ya que la forma en que se instala y se parchea un sistema puede tener un impacto significativo en su seguridad. A continuación, se detallan algunos puntos clave para tener en cuenta al instalar y parchear un sistema Linux:

  1. Habilitar la opción de instalación mínima: La opción de instalación mínima es útil para reducir la cantidad de software y servicios innecesarios en el sistema, lo que puede mejorar la seguridad general del sistema. Al instalar solo los paquetes esenciales, se puede reducir la superficie de ataque del sistema.
  2. Proteger la contraseña del BIOS y el bootloader: La protección de la contraseña del BIOS y del bootloader es importante para evitar que los atacantes accedan al sistema en caso de robo del equipo o acceso físico no autorizado. Asegurarse de que estas contraseñas sean seguras y difíciles de adivinar es fundamental para garantizar la seguridad.
  3. Administración de parches de Linux: La administración de parches de Linux es fundamental para mantener el sistema actualizado y protegido contra vulnerabilidades conocidas. Es importante tener en cuenta que la falta de parches puede dejar el sistema vulnerable a ataques y comprometer la seguridad.
  4. Lista de verificación de endurecimiento de la instalación del sistema y los parches: La lista de verificación de endurecimiento de la instalación del sistema y los parches es una serie de medidas recomendadas para endurecer el sistema y protegerlo contra ataques. Algunas de las medidas recomendadas incluyen:
  • Usar la última versión para la instalación del sistema operativo y proteger el nuevo sistema instalado del tráfico de red malicioso hasta que se endurezca.
  • Crear un volumen separado con las opciones nodev, nosuid y noexec establecidas para /tmp.
  • Crear volúmenes separados para /var, /var/log y /home.
  • Establecer el bit sticky en todos los directorios de escritura.
  • Configurar el sistema para habilitar actualizaciones automáticas de software.
  1. Endurecimiento del sistema: El endurecimiento del sistema se refiere a la implementación de medidas de seguridad para proteger el sistema contra amenazas y ataques. La lista de verificación mencionada anteriormente es una buena guía para endurecer el sistema, pero también hay otras medidas que se pueden tomar, como:
  • Deshabilitar servicios innecesarios y cerrar puertos no utilizados para reducir la superficie de ataque.
  • Usar políticas de contraseñas sólidas y cambiar las contraseñas regularmente.
  • Configurar el firewall para permitir solo el tráfico necesario y bloquear el tráfico no deseado.
  • Implementar medidas de autenticación, como el uso de SSH keys y la autenticación multifactorial.
  • Monitorear los registros del sistema y la actividad de la red para detectar posibles ataques o brechas de seguridad.

Analizar las técnicas de refuerzo del sistema operativo Linux

Linux es conocido por ser un sistema operativo altamente seguro. Sin embargo, como cualquier otro sistema, es susceptible a vulnerabilidades y ataques cibernéticos. Por lo tanto, es importante aplicar técnicas de endurecimiento o hardening para fortalecer la seguridad del sistema operativo.

Desactivar servicios innecesarios es una técnica común de hardening de Linux. Esto se debe a que muchos servicios y procesos se ejecutan en segundo plano y pueden ser aprovechados por los atacantes para obtener acceso no autorizado al sistema. Al desactivar los servicios innecesarios, se reduce la superficie de ataque del sistema, lo que lo hace más seguro.

Otra técnica de hardening de Linux es desinstalar o eliminar software o paquetes que no sean necesarios. Esto reduce la cantidad de software que debe ser parcheado y actualizado, lo que a su vez reduce el riesgo de vulnerabilidades.

La instalación de un antivirus en Linux también puede ser útil, ya que puede detectar y prevenir la propagación de malware y otras amenazas. Aunque Linux es menos vulnerable que otros sistemas operativos a los virus, es importante estar preparado para cualquier eventualidad.

La lista de verificación de endurecimiento de Linux: Hardenin de OS, es una guía útil para fortalecer la seguridad del sistema operativo. Algunas de las técnicas incluidas en esta lista son:

  • Establecer un núcleo de volcado estricto.
  • Eliminar servicios heredados.
  • Desactivar cualquier servicio o aplicación iniciado por xinetd o inetd que no se esté utilizando.
  • Deshabilitar o eliminar servicios del servidor (FTP, DNS, LDAP, SMB, DHCP, NFS, SNMP, etc.) que no se utilizan.
  • Asegurarse de que el servicio syslog (rsyslog, syslog, syslogng) se esté ejecutando.
  • Habilitar un servicio de protocolo de tiempo de red (NTP) para garantizar la precisión del reloj.
  • Restringir el uso de los servicios cron y at.

Por ejemplo, desactivar servicios que no se utilizan, como el servidor FTP, reducirá el número de servicios que pueden ser explotados por los atacantes. Además, habilitar un servicio NTP garantizará que la hora del sistema sea precisa y que las actividades programadas se ejecuten en el momento correcto.

Discutir el acceso de usuarios de Linux y la gestión de contraseñas

Linux es un sistema operativo que ofrece una gran cantidad de opciones para asegurar y gestionar el acceso de los usuarios a los recursos del sistema. Uno de los aspectos más importantes en cuanto a la seguridad del sistema es la gestión de los permisos de archivos y carpetas.

Los permisos en Linux se dividen en tres categorías principales:

  • Usuario (u): el usuario propietario del archivo o directorio.
  • Grupo (g): el grupo propietario al que pertenece el archivo o directorio.
  • Otros (o): cualquier otro usuario que no sea el propietario ni pertenezca al grupo propietario.

Cada una de estas categorías puede tener los siguientes permisos:

  • Lectura (r): permite leer el contenido del archivo o directorio.
  • Escritura (w): permite modificar el contenido del archivo o directorio.
  • Ejecución (x): permite ejecutar un archivo o acceder a un directorio.

Por ejemplo, si queremos dar permiso de lectura y escritura al usuario propietario, permiso de lectura al grupo propietario y permiso de lectura a cualquier otro usuario, usamos el siguiente comando:

chmod u+rw,g+r,o+r archivo.txt

En este caso, «u+rw» significa que se están añadiendo los permisos de lectura y escritura al usuario propietario, «g+r» significa que se está añadiendo permiso de lectura al grupo propietario y «o+r» significa que se está añadiendo permiso de lectura a otros usuarios.

Es importante recordar que los permisos de un archivo o directorio pueden ser cambiados utilizando el comando «chmod» y que es crucial mantener los permisos apropiados para proteger la información del sistema.

Para modificar los permisos de un archivo o directorio en Linux, se puede utilizar el comando chmod. Los permisos se pueden modificar tanto de forma simbólica como numérica. Por ejemplo, para dar permiso de ejecución al usuario y al grupo de un archivo llamado archivo.txt, se podría utilizar el comando:

chmod ug+x archivo.txt

Lo que cambiaría los permisos del archivo a -rwxr-xr--.

Además de gestionar los permisos de archivos y carpetas, es importante asegurar la gestión de contraseñas y accesos a los usuarios. Para ello, se puede seguir una serie de buenas prácticas, como las que se describen en la Linux Hardening Checklist: User Access and Passwords:

  • Crear contraseñas seguras y obligar a los usuarios a cambiarlas regularmente.
  • Desactivar el inicio de sesión de usuarios root en el sistema.
  • Configurar la caducidad de las cuentas de usuario inactivas.
  • Configurar políticas de bloqueo de cuentas de usuario después de un número determinado de intentos fallidos de inicio de sesión.
  • Configurar la autenticación de dos factores para el acceso remoto a través de SSH.
  • Configurar límites de recursos para usuarios, como el número máximo de procesos que pueden ejecutar o la cantidad máxima de memoria que pueden utilizar.

Además, hay una serie de medidas de seguridad adicionales que se pueden implementar para reforzar la seguridad del sistema:

  • Asegurar la memoria compartida con la opción nosuid.
  • Eliminar el sistema X Window para reducir la superficie de ataque.
  • Crear particiones separadas para el sistema y los datos del usuario.
  • Configurar cuotas de disco para todos los usuarios para evitar que un usuario agote todo el espacio en disco disponible.
  • Desactivar los binarios SUID y SGID no necesarios.

Analizar la seguridad de la red Linux y el acceso remoto

Configure sysctl to Secure Linux Kernel

El archivo de configuración del kernel de Linux es /etc/sysctl.conf, que contiene parámetros de configuración para el kernel. Algunos de estos parámetros pueden mejorar la seguridad del sistema.

Por ejemplo, se pueden habilitar ciertos parámetros para prevenir ataques de Denegación de Servicio (DoS). Estos parámetros limitan el número de conexiones simultáneas que pueden hacerse a través de TCP y UDP, así como la cantidad de conexiones incompletas que se pueden tener en una cola.

También se pueden habilitar parámetros para mejorar la seguridad de la red, como la prevención de paquetes maliciosos, el filtrado de paquetes falsificados y la prevención de IP spoofing.

Host-based Firewall Protection with Iptables

Iptables es una herramienta de firewall de host que permite al usuario configurar reglas de filtrado de paquetes y así controlar el tráfico que entra y sale del sistema.

Es importante configurar correctamente las reglas de iptables para proteger el sistema y prevenir ataques. Por ejemplo, se pueden permitir sólo las conexiones entrantes necesarias para el funcionamiento del sistema y bloquear todas las demás conexiones. También se pueden utilizar las listas de acceso de iptables para bloquear direcciones IP específicas o rangos de direcciones.

TCP Wrappers

Los wrappers TCP son una herramienta de seguridad de red que permite al usuario controlar el acceso a los servicios de red en el sistema. TCP Wrappers se integra con la mayoría de los demonios de red en el sistema y utiliza un archivo de configuración llamado /etc/hosts.allow y /etc/hosts.deny para permitir o denegar el acceso a los servicios de red.

Monitor Open Ports and Services

Es importante monitorizar los puertos y servicios que están en ejecución en el sistema para identificar cualquier actividad sospechosa. Se puede utilizar la herramienta de línea de comandos netstat para mostrar una lista de todos los puertos abiertos y servicios en ejecución.

Turn Off IPv6 if Not In Use

Si IPv6 no se está utilizando, es recomendable desactivarlo. La presencia de IPv6 puede permitir a un atacante evitar los filtros de firewall y realizar ataques a través de puertos abiertos.

Secure SSH Login Root Login

Es importante asegurarse de que el acceso remoto al sistema esté protegido. Una de las mejores prácticas es desactivar el inicio de sesión directo de root y utilizar cuentas de usuario separadas con privilegios limitados para acceder al sistema.

Setup Chroot SFTP

Chroot SFTP es una característica que permite limitar el acceso de un usuario a un subdirectorio específico y restringir su acceso a otros archivos y directorios del sistema.

Esto puede ser útil para proporcionar acceso SFTP seguro a un directorio específico en el sistema sin dar acceso a otras partes del sistema.

Linux Hardening Checklist: Network Security and Remote Access

Este es un conjunto de prácticas de seguridad recomendadas para proteger la red Linux y el acceso remoto al sistema. Algunas de las prácticas recomendadas incluyen:

  • Configurar sysctl para asegurar el kernel de Linux
  • Configurar iptables para proteger el host
  • Utilizar TCP Wrappers para controlar

Analizar diversas herramientas y marcos de seguridad de Linux

Hay muchas herramientas y marcos de seguridad disponibles para ayudar a proteger un sistema Linux. A continuación, se detallan algunas de las herramientas más populares:

  1. Lynis: Es una herramienta de auditoría de seguridad de código abierto que realiza un análisis detallado del sistema para identificar posibles vulnerabilidades. Realiza un análisis en profundidad de la configuración del sistema, así como una búsqueda de problemas de seguridad comunes, y proporciona recomendaciones específicas para mejorar la seguridad del sistema.
  2. AppArmor: Es un marco de seguridad de Linux que proporciona un control de acceso obligatorio basado en perfiles de aplicación. Cada perfil de aplicación especifica qué recursos puede acceder una aplicación y cómo puede acceder a ellos. De esta forma, se pueden limitar los daños potenciales de una posible vulnerabilidad en una aplicación.
  3. SELinux: Es otro marco de seguridad de Linux que se centra en la aplicación de políticas de control de acceso obligatorio. Utiliza políticas detalladas que restringen el acceso a recursos del sistema, como archivos y puertos de red, para prevenir posibles ataques.
  4. OpenSCAP: Es una herramienta de auditoría de seguridad y cumplimiento que permite a los administradores de sistemas verificar que los sistemas se ajustan a los estándares de seguridad recomendados. OpenSCAP también puede ayudar a los administradores a resolver problemas de seguridad y a cumplir con los requisitos de seguridad.

Además de estas herramientas, hay muchas otras herramientas y marcos de seguridad de Linux disponibles, incluyendo:

  • Tripwire: Una herramienta de integridad de archivos que monitorea los archivos críticos del sistema en busca de cambios no autorizados.
  • ClamAV: Un antivirus de código abierto para Linux que puede detectar y eliminar virus, malware y otros programas maliciosos.
  • AIDE: Un sistema de detección de intrusiones basado en host que monitorea los archivos del sistema en busca de cambios no autorizados.
  • Fail2Ban: Un sistema de prevención de intrusiones que puede bloquear las direcciones IP que intentan realizar ataques de fuerza bruta contra el sistema.
  • Snort: Un sistema de prevención de intrusiones basado en red que puede detectar y prevenir ataques en tiempo real.

Es importante recordar que no hay una solución única para la seguridad del sistema Linux. La seguridad es un proceso continuo y es importante utilizar una variedad de herramientas y prácticas de seguridad para proteger adecuadamente un sistema.

Scroll al inicio