Seguridad. GNU/Linux

Muy buenas lector. Esta es una de las páginas pilares dentro de la sección de ciberseguridad. En este caso esta dedicada a GNU/Linux, concretamente en las diferentes medidas de protección en las que deberías poner foco en el sistema operativo del pingüino.

El objetivo de este apartado es aportarte algo de conocimiento sobre los pilares básicos sobre los que se sustenta la seguridad en el sistema, así como algunas recomendaciones acerca de las medidas que puedes tomar, como usuario, para proteger mejor tu sistema frente a las amenazas a las que, en mayor o menor medida, va a estar expuesto.

Tabla de contenidos:

  1. ¿Es seguro GNU/Linux?
  2. Virus y malware en Linux
  3. ¿Cuáles son las distribuciones más seguras?
  4. Actualizaciones de seguridad
  5. Medidas de protección y hardening
    1. Compartimentar
    2. Habilitar el cifrado completo de disco
    3. Bloquear la cuenta de root y utilizar de sudo
    4. Habilitar y configurar el cortafuegos del kernel
    5. Minimiza el uso de software e instálalo desde fuentes de confianza
    6. Configurar correctamente tus navegadores web
    7. Utilizar un gestor de contraseñas
    8. Utilizar un gestor de claves GPG para compartir archivos cifrados
    9. Contar con una implementación MAC como AppArmor o SELinux
    10. Utilizar un antivirus como ClamAV
    11. Utilizar una herramienta de detección de Rootkits
    12. Utilizar Fail2Ban para prevenir ataques de fuerza bruta
    13. Utilizar una herramienta de auditoria como Lynis
  6. El objetivo final a proteger eres tu
  7. Esto continua

¿Es Seguro GNU/Linux?

A nivel de seguridad, la situación en GNU/Linux es bastante parecida a lo que ocurre con otros sistemas operativos de escritorio, llámese Windows o macOS. Cada uno tiene sus pros y sus contras, siguen siendo todos sistemas con una filosofía de trasfondo bastante parecida, en el sentido que dejan bastante libertad al usuario a la hora de ejecutar código, algo que contrasta diametralmente con lo que ocurre con los sistemas operativos para dispositivos móviles.

Es realmente difícil determinar cuanto de seguro es GNU/Linux con respecto a otros sistemas operativos como Windows o macOS, puesto que la seguridad es un concepto multifactorial, y depende de muchos factores sumados entre si y actuando en sinergia, por lo que no podemos cometer el error de reducir la seguridad al uso de un determinado sistema, o una determinada solución de seguridad.

Cierto es que, por defecto, el kernel lleva ya sus propios mecanismos de protección, y todas las distribuciones suelen aplicar las configuraciones que consideran más adecuadas, pero a diferencia de lo que ocurre en los sistemas para móviles (donde el sistema vienen ya muy capado), en los sistemas de escritorio digamos que el usuario tiene un largo margen de mejora en las acciones que puede tomar de cara a hacer el sistema más o menos seguro.

Esto es especialmente en el caso de GNU/Linux, donde tenemos una gran fragmentación a nivel de distribuciones, entornos de escritorio y herramientas de sistemas. Así pues, a la hora de analizar la seguridad del sistema, debes considerar también otros muchos aspectos, como:

  • Exposició a virus, malware y ataques dirigidos. Esto lo puedes ver a nivel general, por la proliferación de virus y malware que exista para la plataforma, o, a nivel más particular, por la posibilidad de recibir ataques dirigidos, sobretodo para sistemas que desempeñen funciones críticas.
  • Distribución GNU/Linux utilizada. En el caso concreto de GNU/Linux, existen un gran universo de distribuciones, por lo que la seguridad de base puede distar bastante entre una distribución y otra (cada una tiene sus propios criterios en cuanto a la mejor manera de definir la seguridad de partida).
  • Lo actualizado que esté y la frecuencia en que se actualice. Esto debes entenderlo tanto a nivel de la propia versión, por el hecho de que las versiones más modernas tienden a ofrecer más y mejores mecanismos de protección, como a nivel de las propias actualizaciones de seguridad, dentro de una misma versión.
  • Lo bien o mal configurado que esté y los mecanismos de protección adoptados. Con todo lo anterior, hay que añadir que la forma en que configures el sistema, y los mecanismos de protección qué implementes pueden suponer una gran diferencia. Hay que tener en cuenta que existen un gran número de herramientas de seguridad en GNU/Linux, que bien configuradas y utilizadas, pueden suponer un gran salto en cualitativo.
  • El usuario que lo administra y/o lo utiliza. Finalmente, no podemos olvidar que el propio usuario usuario que adminstra y utiliza el sistema es el que acaba siendo la pieza fundamental en este puzle.

Virus y Malware en Linux

Se puede crear malware para atacar cualquier sistema informático, por lo que ningun sistema operativo es inmune en ese sentido. Otra cosa es la relevancia que tenga cada sistema para que sea atractivo por los creadores de malware.

En este sentido, el escritorio GNU/Linux, y de forma parecida ha venido sucediendo en macOS, ha disfrutado de la ventaja de su baja cuota de usuarios, comparativamente con Windows, que siempre ha sido un target mas suculento para la industria del cibercrimen.

Ciertamente, en GNU/Linux, al igual que ocurre en macOS, la proliferación de malware es bastante mas reducida, y esto puede dar la sensación de que sea inmune a los virus, pero sería un error valorar la seguridad basándose solo en el nivel de virus que haya sobre una determinada plataforma, o en la cantidad de determinados ataques que pueda recibir.

De esto dependen muchos otros factores que van más allá de la arquitectura del propio sistema, como la cuota de mercado, o el interés que haya en atacar una determinada plataforma por parte de cibercriminales y creadores de malware.

El malware diseñado para Linux existe, y probablemente va a ir en aumento, sobretodo teniendo en cuenta a ya altisima cuota de mercado que tiene en servidores, y también su amplio uso en el ambito del IoT.

Aun así, si que es cierto que, a día de hoy, y para un uso doméstico y de escritorio, el hecho de disponer de un software antivirus como en Windows no se vuelve un factor tan decisivo.

Esto no significa, en absoluto, que debas descuidar la seguridad, ni mucho menos. Como he dicho, la seguridad es un concepto complejo y multifactorial, y los riesgos en la era del Big Data y el IoT van mucho más allá que la simple existencia de virus como tal.

De hecho, si te fijas en Windows, los antivirus se han tenido que re-inventar completamente para hacer frente a un espectro de amenazas muy diferente al que teníamos 15 o 20 años atrás. Y aun así, cubren solo una parte del puzzle.

¿Cuáles son las Distribuciones Más Seguras?

De entrada, y como punto de partida, es imprescindible, en mi opinión, utilizar una distribución reconocida y con una numerosa comunidad detrás. Esto no la convierte necesariamente en la más segura de per se, pero cuanto más grande sea la comunidad de usuarios y desarrolladores con que cuente el proyecto, más garantizada esta su continuidad y nivel de soporte, y mayor será la velocidad a la hora de aplicar parches a los problemas de seguridad que vayan saliendo.

Para proposito general y a nivel de usuario doméstico, mis recomendaciones van por la línea de Ubuntu, Debian o Fedora (esta ultimo algo mas compleja para usuarios novatos, pero también es de las más punteras en cuanto a mecanismos de seguridad).

  • Ubuntu es una de las distribuciones con una mayor base de usuarios detrás, y tambien con una mayor comunidad de desarrolladores y mantenedores (tanto independientes, como en nomina de Canonical), por lo que la seguridad en Ubuntu se asenta fuertemente en esas bazas, y que son buena garantía de su continuidad, soporte y velocidad en la corrección de parches. Aunque no es la más segura de serie (creo que Fedora la aventaja en este aspecto), si que ofrece un buen equililbrio entre seguridad por defecto y facilidad de uso, dejando cierto margen de mejora en algunos aspectos (como el hecho de tener que habilitar el cortafuegos).
  • Debian es una de las distribuciones históricamente más robustas y cuenta con una de las mayores comunidades de usuarios y desarrolladores, además de servir de base para un enorme número de distribuciones. De serie tambien puede dejar algo de margen de mejora, pero ofrece una base muy solida, sobre la que luego el usuario que lo necesite pueda hacer virguerías. De hecho, y sin ir más lejos, Debian es la base de distribuciones como Whonix y Tails, dos distribuciones especialmente enfocadas a la seguridad.
  • Fedora es algo más compleja de utilizar que por ejemplo Ubuntu, pero es de las que me parece que ofrece una seguridad más alta de serie. Cuenta con FirewallD, un potente cortafuegos dinámico y que facilita la creación de reglas independientes a nivel de cada aplicación. Tambien cabe mencionar a SELinux como mecanismo de control de acceso, que aunque resulta comparativamente más complejo de administrar que AppArmor, Fedora ofrece una interfaz gráfica para su gestión.

Para necesidades de seguridad mas concretas y extremas, alejándonos ya totalmente de lo que podríamos denominar «proposito general», existen distribuciones más especializadas que pueden resultar más adecuadas en función de lo que necesites, como Qubes OS, Whonix, Tails, aunque debes considerar bien que es lo que necesitas y ser consciente del uso que les des.

  • Qubes OS es considerado muchas veces la referencia en cuando a seguridad extrema. Basa modelo en la seguridad por aislamiento, partiendo de la premisa de que no existe software libre de bugs. A muy muy grandes rasgos, funciona gracias a hipervisor que permite disponer de una estructura de varias maquinas virtuales aisladas entre si, de modo que los controladores de hardware estan aislados en un ámbito funcional, minetras que las aplicaciones de usuario viven en dominios separados, con diferentes niveles de confianza.
  • Whonix es una distribución basada en Debian y enfocada a la seguridad. A la robusta base de Debian añade un complejo sistema de virtualización, en el que existe un sistema amfitrión, y dos maquinas virtuales, una que funciona como pasarela a la red Tor, y otra que hace la funciónn de estación de trabajo, y que es en la que el usuario se conecta directamente.
  • Tails es una distribución especialmente destinada para usuarios o casos concretos en los que la privacidad es crítica. Al igual que Whonix, toma la base de Debian, pero viene configurada para que todas las conexiones pasen a través de la red Tor.

Actualizaciones de Seguridad

Más allá de la distribución utilizada, es importante mantenerte en las ultimas versiones (para estar al día en cuanto a mecanismo de protección implementados), y mantener el propio sistema siempre actualizado con los ultimos parches.

Todo sistema informático, ya sea a nivel de firmware, kernel, o de las propias aplicaciones, es susceptible de tener vulnerabilidades que en cuestión de tiempo serás descubiertas y explotadas. Por muchas medidas de protección que tengas implementadas, como mas vulnerabilidades queden abiertas sin corregir, mas expuesto quedará tu sistema.

Por este motivo, es vital que el software utilizado, empezando por el sistema operativo, este convenientemente mantenido y actualizado con los ultimos parches de seguridad. Esta es la mejor garantía para mantenerte protegido frente a todo tipo de amenazas.

Medidas de Protección y Hardening

Ahora que ya hemos sentado un poco las bases, a continuación, te detallo algunas de las medidas de protección que considero más importantes, tanto a nivel de configuración del propio sistema (incluyendo la instalación de herramientas de seguridad adicionales), como a nivel del propio uso que le puedes dar. ¡Vamos a por ellas!

1. Compartimentar

Aunque se trata más de una medida de seguridad operativa, me parece crucial, y la puedes aplicar en el ámbito del uso de tu sistema. Se trata simplemente de no usar un único sistema para todo. No existe el mejor sistema, sino el sistema más adecuado en función de cada circunstancia.

Si no quieres liarte en exceso con esto, puedes empezar con lo más básico, que seria separar entre lo personal, lo profesional, y otras actividades concretas como operar con la banca online (para lo cual puedes utilizar un LiveCD o LiveUSB, o bien instalar Linux directamente en una memoria USB, y utilizarla como sistema adicional al conectarla a tu PC principal y arrancar con ella).

2. Habilitar el Cifrado Compleo de Disco

Esto es algo que considero básico, sobretodo hablando de portátiles. La mayoría de las distribuciones ya ofrecen la opción de cifrado de disco completo mediante LUKS en el propio asistente de instalación, una especificación de cifrado a nivel de bloque, asociada muy comúnmente al gestor de volúmenet LVM, y que utiliza el módulo del kernel dm-crypt como interfaz de cifrado.

Otra alternativa es cifrar únicamente tu directorio personal mediante eCryptfs, algo que también siguen ofreciendo muchas distribuciones en el proceso de instalación, si bien se considera obsoleto desde 2016. En este sentido, a mi personalmente me gusta más la opción de LUKS. Además, al estar integrado en el propio kernel, el rendimiento que proporciona LUKS a la hora de cifrar y descifrar datos es mucho más elevado que utilizando herramientas de terceros como puedan ser VeraCrypt.

3. Bloquear la Cuenta de Root y Utilizar Sudo

Esta es la configuración por defecto en muchas distribuciones a día de hoy, aunque en otras, como es el caso de Debian, se ofrece la opción venir con la cuenta de root habilitada, y utilizar su para escalar a los privilegios de root desde el usuario estándar.

Lo cierto es que aqui hay bastante debate en cuanto a que es mejor desde el punto de vista de la seguridad, pero para la mayoría de usuarios, se suele recomendar contar con el usuario root bloqueado (lo que en muchas distribuciones ya suele ser así), y hacer un correcto uso de sudo.

De entrada, root es un conocido vector de ataque, y es el primer nombre que suele probar un atacante. Aunque con sudo al final acabas pudiendo realizar acciones de root con tu cuenta de usuario estándar, como minimo ya sabes que el nombre del usuario a priori no se debería conocer.

Además, de esto, hay que considerar que su es una herramienta antigua, que basicamente te permite dar acceso completo cuando lo necesitas (es como un todo o nada), mientras que con sudo puedes aplicar muchas más restricciones en su uso, como otorgar permisos de forma selectiva, establecer un timeout, además de contar con un sistema de logs y alertas para disfrutar de una mayor auditabilidad. En estos dos posts te dejo a continuación puedes profundizar mucho más en todo eso:

4. Habilitar y Configurar el Cortafuegos del Kernel

Esto es importante que lo compruebes, sobretodo en distribuciones como Ubuntu o Debian, que lo llevan deshabilitado por defecto. En estos casos, a parte de configurar tu mismo iptables, puedes mirar opciones más simples como ufw o Arno Iptables Firewall. Otras distribuciones, como Fedora o openSUSE, ya disponen de firewalld, una herramienta de administración de iptables, que ya viene pre-configurada por defecto, y que dispone igualmente de una completa interfaz gráfica.

En todos los casos, puedes complementar esa protección estándar con el uso de una solución de cortafuegos a nivel de aplicación, comúnmente conocidas como WAF. En este sentido, Portmaster es una solución de código abierto para GNU/Linux y que te permitirá realizar una monitorización a tiempo real de todas las conexiones salientes que se van estableciendo desde las distintas aplicaciones, para que puedas realizar acciones de bloqueo siempre que lo consideres.

A continuación de dejo una primera guía sobre el uso de UFW en Ubuntu (o derivados), y otra guía adicional sobre Portmaster, en la que verás como instalarlo y sacar el máximo provecho de todo lo que ofrece.

5. Minimiza el Uso de Software. Instála desde fuentes de Confianza

En este sentido, menos es mas. Por regla genera, a más aplicaciones y servicios corriendo en tu sistema, más probabilidad habrá de que existan vulnerabilidades que puedan ser explotadas. Asi que mantener un sistema ligero también redunda en una mayor seguridad.

En este sentido, Ubuntu, por ejemplo, ofrece desde hace tiempo la opción de realizar una instalación mínima, que viene con todo lo basico, pero excluye una larga lista de software preinstalado que viene con la versión completa. Siempre estarás a tiempo de instalar LibreOffice más tarde si lo necesitas. Esto es aplicable a cualquier sistema, no solo a GNU/Linux.

Además de esto, una de las principales diferencias que tenemos en GNU/Linux, con respecto a Windows, es la existencia de los repositorios de software, desde donde puedes optar a instalar todas las aplicaciones que necesites, con bastantes garantías de que todos los paquetes ofrecidos han sido validados por los empaquetadores de la distribución. Limitate a esto en la mayor medida de lo posible.

6. Configurar Correctamente tus Navegadores Web

Aunque una correcta configuración es algo aplicable a todas tus aplicaciones, en el caso del navegador web es especialmente importante, puesto que, si hablamos de etornos de escritorio, el navegador es la principal puerta de entrada a Internet, y desde donde, con mucha probabilidad, te van a venir gran parte de las amenazas (con el permiso del correo electrónico).

Aquí es muy importante elegir bien que navegadores usas, y para que los usas, además de configurarlos correctamente. Las alternativas en este campo son las clasicas que tambien tienes en otras plataformas. Puedes jugar con el balance entre Chromium y Firefox.

El primero destaca por su elevado nivel de seguridad, sobretodo gracias a las múltiples capas de sandbox, entre otros mecanismo de protección, mientras que el segundo saca pecho en cuanto a la privacidad, y a las incontables posibilidades de configuración que ofrece en ese sentido. Tambien tienes a Brave, que toma la base de Chromium, y le añade potentes escudos anti tracking, por lo que se podría decir que ofrece un interesante equilibrio entre Chromium y Firefox.

7. Utilizar Un Gestor de Contraseñas

Gran parte de nuestra identidad se expresa y se materializa en un plano digital, y no es raro que lleguemos a acumular un número incontable de credenciales de acceso a diferentes plataformas. Aunque cada vez proliferan más los métodos de autenticación biométricos, aún seguimos dependiendo de las contraseñas en gran medida, por lo que utilizar un buen gestor de contraseñas es clave para mantener un poco de orden.

En este sentido, una de las utilidades que te recomiendo es Seahorse, por el hecho de ser parte del entorno de escritorio GNOME (con lo que posiblemente te venga preinstalada si utilizas GNOME), y tambien porque, además de ser un gestor de contraseñas, sirve para la gestión de claves GnuPG, como verás más adelante. Otra herramienta que te recomiendo es KeePassXC, una de las más completas que puedes utilizar.

A continuación tienes dos guías sobre ambas utilidades.

8. Utilizar un Gestor de Claves GPG para Compartir Archivos Cifrados

GnuPG es una implementación libre del estándar PGP para el cifrado de datos y firmas digitales, que utiliza pares de claves asimétricas publico-privadas, en los que la clave publica se genera a partir de la clave privada, de modo que, partiendo de la clave publica, sea imposible obtener la clave privada. La clave publica se utiliza para cifrar un mensaje que solo pueda volver a ser descifrado con la clave privada correspondiente.

GnuPG o GPG es parte integral de la mayoría de distribuciones GNU/Linux y se puede integrar fácilmente con herramientas de correo como Mozilla Thunderbird. GNOME dispone de su propia herramienta gráfica para la gestión de GPG, denominada Seahorse, de la que te ofrezco una completa guía a continuación:

9. Contar con una Implementación MAC como AppArmor o SELinux

Aunque tradicionalmente Linux se ha apoyado en un modelo de control de acceso basado en propietarios a nivel de archivos, cada vez se ha extendido más el uso de mecanismos de control de acceso a nivel de políticas, como AppArmor o SELinux.

A día de hoy muchas distribuciones vienen con AppArmor, la implementación varia bastante en función de la distro y de su versión. Además en el caso de Debian, por ejemplo, no es desde la versión 10 que lo lleva habilitado por defecto. Lo importante es que este habilitado, y que disponga de perfiles para restringir la mayor parte de las aplicaciones. En la guía que te dejo a continuación tienes infromación ampliada sobre AppArmor.

10. Utilizar un Antivirus como ClamAV

Como complemento, también puedes considerar la instalación de un antivirus como ClamAV para escaneos recurrentes en busca de virus, gusanos y troyanos. ClamAv es un antivirus de software libre y multiplataforma, muy comñun en entornos GNU/Linux.

Aunque conviene tener en cuenta no ofrece protección en tiempo real, como la mayoría de soluciones existentes en Windows, si que creo que vale la pena que cuentes con él, sobretodo para hacer escaneos puntuales de tu disco. Además también puede detectar amenazas pensadas para infectar otros sistemas, como Windows o macOS, por lo que lo puedes usar para escanear unidades USB que vayas a conectar con otros equipos. A continuación te dejo una completa guía de como utilizar ClamAV:

11. Utilizar una Herramienta de Detección de Rootkits

Además de ClamAV, que está más centrado en la detección de virus, gusanos y troyanos, en GNU/Linux tambien dispones de herramientas pensadas para detectar amenazas más específicas. Las más conocidas en ese contexto son probablemente Chkrootkit y Rkhunter.

Ambas están especializadas en la detección de rootkits, puertas traseras, o cambios sospechosos en ficheros importantes del sistema. Aunque pueden ofrecer algún falso positivo, te recomiendo tener ambas, puesto que puedes hacer un escaneo inicial para tomar el resultado como referencia, y a partir de ahí, hacer escaneos recurrentes para contrastar los resultados.

12. Utilizar Fail2Ban para Prevenir Ataques de Fuerza Bruta

Esto podríamos decir que es indispensable en entornos de servidores, o en caso de que tengas algun servicio abierto al exterior y que sea susceptible de poder recibir intentos de acceso remotos por fuerza bruta. Fail2Ban es una herramienta que funciona, monitorizando los ficheros de logs en directorios de servicios concretos, para detectar un exceso de intentos fallidos y aplicar un bloqueo del host a nivel de cortafuegos.

A continiuación tienes una guía en la que verás como habilitar y configurar Fail2Ban para todos los servicios que tengas abiertos al exterior para prevenir intentos de login por fuerza bruta.

13. Utilizar una Herramienta de Auditoria como Lynis

Lynis es una herramienta libre, que esta disponible en los repositorios oficiales de muchas distribuciones como Ubuntu y Debian. Funciona a través de la consola, y realiza una auditoria general de tu sistema, en busca de problemas de seguridad en determinadas configuraciones, para ofrecerte finalmente un índice general de protección, junto con una serie de recomendaciones que puedes seguir para mejorar la puntuación.

La puedes ejecutar nada más instalar tu sistema, para hacerte una idea del nivel general de protección del setup por defecto, y a continuación implementar las recomendaciones que consideres relevantes para ti. Verás que hay medidas muy simples y fáciles de implementar, como habilitar el cortafuegos, o instalar un software para el escaneo de rootkits, y otras algo mas complejas.

No debes implementar todas las medidas ni mucho menos, sino solo aquellas que sean relevanes en tu caso y que te resulten compensatorias valorando coste-beneficio. En la guía que te dejo a continuación puedes ver un ejemplo de como utilizarlo y de que medidas puedes aplicar (muchas de ellas ya las has visto en esta misma página).

El Objetivo Final a Proteger eres Tu

La lista de medidas de seguridad que puedes adoptar es realmente interminable, pero debes valora realmente cual es tu contexto, y cuales son tus necesidades reales de seguridad (lo que diríamos valorar coste/beneficio).

Hasta ahora me he centrado mucho en la parte del sistema (el protagonista de nuestras aventuras es GNU/Linux), pero cuando hablamos de seguridad, es importante tener algo más de perspectiva de las cosas.

El sistema es una parte crucial, ya que es el soporte de la información. Sin embargo, en un Internet dominado por grandes plataformas Cloud, muchas veces no es necesariamente nuestro propio sistema el único lugar en el que se encuentran tus datos mas preciados, así que aparte de cuidar la seguridad del propio sistema, no hay que perder esto de contexto.

Esto Continua

Como indico al principio, esta pagina forma parte de la serie de introducción a la seguridad, en un contexto de usuario doméstico, y que sirve de punto de partida para todo el contenido relacionado con la seguridad que hay y habrá en el blog. A continuación iré enlazando el resto de paginas, a medida que las vaya teniendo preparadas.

  1. Seguridad operativa (OPSEC)
  2. Seguridad en GNU/Linux
  3. Mecanismos de autenticación

Espero que lo disfrutes:)

2 comentarios en “Seguridad. GNU/Linux

  1. Edilberto Hernandez Paz 24 May 2020 — 23:44

    Una consulta, cual es el modelo de seguridad que usa Linux

    Me gusta

  2. Una consulta, me podrías mencionar que mecanismos utiliza Linux para mantener segura los sistemas informáticos que posea

    Me gusta

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.

search previous next tag category expand menu location phone mail time cart zoom edit close