Desde websecurity, nos ofrecen una serie de interesantes consejos y medidas a poner en práctica para dotar a un sistema basado en GNU/Linux de un mayor nivel de seguridad. Partiendo de la creencia (al menos por estos dominios) de que la seguridad total es una utopía, cuanto más hagamos por llegar a ella, mejor que mejor.
Se da un repaso a herramientas creadas para fortalecer el núcleo (linux) con parches que pueden protegerte de ataques por desbordamiento del búfer, denegación de servicio y otros muy comunes. También se revisan servicios innecesarios o que puedan ser fuente de problemas y cómo desactivarlos, implementación de políticas de seguridad en el sistema, etc, etc.
El contenido se ofrece en 5 partes para una mejor comprensión.
Blindaje de nuestro sistema (Parte I)
dijo:
En un mundo perfecto, todos los sistemas operativos que se vendieran serían totalmente seguros, pero lo que ocurre en la realidad es que los distribuidores de software colocan una balanza las características que se desean, entre las que suelen estar el rendimiento, la facilidad de uso y la seguridad, siendo esta ultima la de menor peso de la lista.
Un sistema puede tener de forma predeterminada multitud de servicios abiertos, aunque en realidad no se utilicen para nada, por ejemplo un programa suid de root que permiten a un usuario normal controlar de forma sencilla el sistema o bien unos permisos sobre algún fichero que se han establecido de forma poco rigurosa. O también puede que el sistema contenga contraseñas predeterminadas conocidas por todos, o contraseñas que aparecen en la propia documentación.
Blindar un sistema es el proceso que consiste en hacer más seguro nuestro sistema corrigiendo las opciones permisivas que traiga activadas de forma predeterminada el sistema operativo, es esta serie de artículos veremos unos cuantos programa que nos ayudarán a blindar nuestros sistemas, incluyendo parches para el núcleo que pueden mejorar enormemente la seguridad de nuestro sistema.
El primer programa que veremos para blindar nuestro sistema es el Bastille, que originalmente fue un intento de crear una distribución de Linux nueva y segura, pero resultó ser más duradero y difícil de lo que los programadores esperaban, y cambiaron la idea y se centraron entonces en el desarrollo de un conjunto de módulos que blindarían una distribución Linux recien instalada.
El segundo paso en la evolución de Bastille nos permite ejecutarlo en cualquier momento, no sólo inmediatamente después de instalar el sistema, aunque según afirman supuso un enorme trabajo volver a escribir el programa para que permita proteger sistemas no virgenes, pero desde mi punto de vista a merecido la pena, ya que esta herramienta es muy útil.
Bastille esta disponible o bien por paquetes RPM ya preparados o partiendo del código fuente, y esta totalmente configurable mediante un menu de texto, para los nostalgicos de la consola, o bien por una interfaz basada en Tk. Una vez tenemos instalada la aplicación simplemente tenemos que ejecutar:
root InteractiveBastille
Y estaremos preparados para iniciar la configuración, donde podemos ver que cada menú de Bastille describe una sistuación que se considera insegura o sospechosa, y nos pregunta si deseamos blindarla, y en más o menos 10 minutos,que es el tiempo que se tarda en responder a las preguntas, Bastille comenzará a blindar nuestro sistema realizando todos los cambios que le hayamos indicado.
La aplicación guarda en el fichero BackEnd.pl la configuración que hemos introducido, y si deseamos blindar algún otro servidor más con la misma configuración, sólo tendremos que copiar ese fichero al nuevo servidor, y ejecutar
root AutomatedBastille
Con lo que se aplicará la configuración al nuevo servidor, y estará igual de blindado que el anterior.
Como veis, la ejecución de Bastille es un proceso sencillo y rápido, y se debería ejecutar en todo sistema que tenga que ser seguro.
Fuente:
Blindaje de nuestro sistema (Parte II)
dijo:
Recordemos que blindar un sistema es el proceso que consiste en hacer más seguro nuestro sistema corrigiendo las opciones permisivas que traiga activadas de forma predeterminada el sisitema operativo, siguiendo con los programas que nos ayudarán a blindar nuestros sistemas, en esta ocasión veremos Harden Suse y OpenWall.
Harden Suse ha sido desarrollado por Marc Heuse es un programa que blinda los sistemas Suse, entre las medidas que toma Harden Suse destacan:
* Desactiva todos los servicios de la red, excepto unos poco como son SSH y VPN.
* Comenta todos los servicios que se incluyen en el fichero /etc/inetd.conf y tcpwrapper se configura para permitir únicamente conexiones desde el sistema local.
* Registra todos los intentos de conexión, mostrando por pantalla las últimas conexiones y los intentdos fallidos.
* Configurar todo lo necesario para que el usuario root sólo pueda conectarse desde la consola local.
* Segura las contraseñas obligando a que se utilicen contraseñas largas y poniéndoles una validez máxima de 40 días y avisando en caso de utilizar contraseñas débiles.
* Protege los ficheros de los usuarios, estableciendo el valor de umask a 077 y aumentando las restricciones de /home
* Configura SSH de forma segura.
* Busca y elimina los programas suid desconocidos.
Además Harden Suse crea un script para deshacer todo el proceso de blindaje que se puede encontrar en /etc/undo_harden_suse y genera un fichero de registro que contiene toda la información sobre los cambios realizados en /etc/harden_suse.log
Otro de los programas que existen para blindar el sistema es el proyecto OpenWall, que es un parche de seguridad para el núcleo desarrollado por Solar Designer que mejora varias características relacionadas con la seguridad y que corrige algunos errores, para aplicar este parche es necesario recompilar e instalar el nuevo núcleo para que funcionen las nuevas funciones.
Entre las mejoras se incluyen:
* Protege las pilas de desbordamientos de búfer, este parche evita que la mayoría de los desbordamiento de búfer puedan ejecutar código malicioso haciendo que el área de la pila no sea ejecutable.
* Este parche previene que se realicen cierto tipos de enlaces en el directorio /tmp, sobre el cual se suele establecer enlaces maliciosos.
* El parche también deniega la creación de un fichero cuando existe un FIFO(named pipe) con el mismo nombre, ya que un atacante un FIFO en /tmp para interceptar datos que normalmente deberían ir a un fichero temporal.
* También cambia los permisos sobre /proc para que los usuarios no puedan ver información sobre los procesos ejecutados por otros usuarios, a no ser que esten en un grupo especial.
* El parche también asegura los descriptores de ficheros 0,1,2, reservados normalmente para stdin,stdout y stderr, respectivamente. Lo que hace es asegurar que que cualquier programa sid/sgid que se arranque tenga esos ficheros apuntado a /dev/null en caso de que no estén definidos.
El único problema de este parche es que no son cien por cien compatibles con el Linux estándar, por lo que debes estar seguro de entender todas las implicaciones antes de decidir utilizar este parche, hay que ser un poco valiente.
La semana que viene seguiremos con los programas que podemos utilizar para hacer nuestros sistemas más seguros y más fiables.
Fuente:
Blindaje de nuestro sistema (Parte III)
dijo:
LIDS (Linux Intrusion Detection System), es un sistema de detección de intrusos de Linux que incluye un sistema de detección de escaneados de puertos y de alertas de seguridad en el propio núcleo.
Sin embargo la caracterísitica verdaderamente potente de LIDS es que amplía en modelo de seguridad de Linux, es decir, se distribuye como un parche para el núcleo con lo que no se pierde la seguridad que aporta el núcleo por defecto.
Entre las características de LIDS destacan:
* Los ficheros protegidos por LIDS pueden ocultarse, protegerse contra cambios, incluso por los realizados por el usuario root.
* Se pueden utilizar de forma más eficiente las capacidades para garantizar ciertos privilegios, como puede ser no permitir a root modificar ciertas capacidades.
* El núcleo puede rechazar el envio de señales a procesos protegidos como SIGKILL. Además, también permite ocultar los procesos de forma que no existirá ninguna entrada correspondiente a ese proceso en el sistema de ficheros /proc.
* Tiene detección de escaneado de puertos integrado en el núcleo, con lo que puede detectar cualquier tipo de los escaneados que se pueden realizar hoy en día, informando de los intentos de violación del sistema mediante syslog o mendiante correo electrónico según se desee.
A la hora de instalar LIDS tienes que descargar la última versión del núcleo de Linux y el código fuente de LIDS, y luego aplicar los parches al núcleo con el código de LIDS descargado, recompilar el núcleo, instalarlo y reiniciar la máquina.
LIDS va a proteger el núcleo contra cualquier modificación mientrás este funcionando, a menos que seamos root y que nos autentifiquemos con el programa lidsadm, con el que podremos realizar cualquier cambio que queramos y se guardará en el fichero de configuración, que se encuentra en /etc/lids
Uno de los aspectos a tener en cuenta cuando se instala LIDS es configurar la aplicación para permitir que active restricciones muy severas en la mayoría de ficheros. Se deberían proteger todos los binarios, los ficheros de registro y los ficheros de configuración. Además LIDS permite establecer cuatro tipos distintos de control de acceso:
* Permite la opción de denegar, haciendo que los ficheros marcados como DENY no pueda acceder ningún usuario o programa, a menos que se permita explicitamente.
* Los fichero de sólo lectura(READ) no podrán ser modificados por nadie, ni siquiera por el root.
* Los ficheros de sólo actualización(APPEND) podrán ser únicamente abiertos para actualizarlos, pero no podrán ser modificados, es decir, este tipo de acceso se utiliza habitualemente para los ficheros de registro, a los que sólo se les permite crecer, impidiendo que un atacante pueda borrar líneas que darían pistas sobre sus actuación.
* Esta opción dará permisos de escritura en el fichero a los usuarios o programas que se especifiquen.
Utilizar LIDS es una forma muy efectiva de blindar nuestra máquina contra las debilidades de las instalaciones perdeterminadas, sin embargo no es una herramienta que puedan utilizar los temerosos, os recomiéndo que consultéis la documentación, así como el LIDS-HOWTO antes de intentar utilizarlo.
Otro de los programas que existen para blindar el sistema es Grsecurity, que es un conjunto de parches de seguridad para el núcleo, cuyo objetivo final es crear uns sistema seguro sencillo de configurar.
Entre las principales características incluye las funcionalidades del parche OpenWall, restricciones sobre ficheros y capacidades similares a las que presenta LIDS, moejoras de los procesos de registro y auditorias y varias herramientas adicionales, entre las que destaca Trusted Path Execution.
Con el artículo de esta semana hemos visto dos nuevas programas que podemos utilizar para hacer nuestros sistemas más seguros y más fiables, la semana siguiente seguiremos viendo más programas para blindar nuestros sistemas.
Fuente:
Blindaje de nuestro sistema (Parte IV)
dijo:
LCAP (Linux Kernel Capability Bounding set Editor) permite a los administradores de sitemas editar las capabilitys bounding sets del núcleo, que es una lista de capacidades de control de acceso basados en el propio núlceo del sistema, al que se puede encanchar cualquier proceso.
Con LCAP el administrador va a poder eliminar las capacidades que desee para hacer el sistema mas seguro, ya que si una capacidad se elimina del bounding set, no será utilizada por ningún proceso del sistema.
LCAP modifica el fichero sysctl:/proc/sys/kernel/cap-bound, cuando se elimina una capacidad del conjunto, no será utilzable hasta que se reinicie el sistema, además permite generar un script en /etc/init.d, que se ejecuta al inicio del sistema, y que no elimina las capacidades que queramos.
La funcionalidad principal de LCAP puede conseguirse con otros programas como por ejemplo LIDS que nos permite un control más granular, por lo que no es un programa que recomiende, ya que hay otros que hacen lo mismo y más, pero me ha parecido interesante el saber que existe.
Una de las herramientas que si recomiendo es la utilización de Security-Enhanced Linux(Seguridad mejorada en Linux), o más conocido como SELinux.
SELinux ha sido fundada por la NSA(Nacional Security Agency) y programada en colaboración con Network Associate, se trata de un parche de seguridad para el núcleo de Linux que habilita un nivel de seguridad de usuario extremo.
Con SELinux es posible confinar un programa con el menor nivel de acceso necesario para que pueda realizar la tarea necesaria, funcionando en un estado falso-cerrado, que siginifica que tenemos que facilitarle al núcleo una lista de todos los privilegios que son necesarios para que los programas se ejecuten correctamente o sino fallarán.
Otra de las cosas que destacan de SELInux es que por ejemplo el usuario root es otro usuario más, sin privilegios especiales, además está programado bajo licencia GPL lo que significa que la NSA, agencia es famosa por su secretismo y por ser el objetivo de muchas conspiraciones, a proporcionado un parche de seguridad Open Source que puede utilizarse para mejorar la seguridad del sistema, y aunque en un principio muchas personas temían que pudiera ser un intento de abrir puertas traseras o de instalar algún tipo de spyware en sistemas Linux, el código está limpio y cumple con su propósito con creces.
Como podeís ver poner un sistema en funcionamiento con SELinux es bastante complicado, pero tendréis un sistema extremadamente seguro.
Con el artículo de esta semana hemos visto dos nuevas programas que podemos utilizar para hacer nuestros sistemas más seguros y más fiables, la semana siguiente seguiremos viendo más programas para blindar nuestros sistemas.
Fuente:
Blindaje de nuestro sistema (Parte V)
dijo:
Systrace fue desarrollado por la gente de OpenBSD/OpenSSH y por el gurú de la seguridad Niels Provos, esta herramienta es un generador de políticas de llamadas al sistema para OpenBSD y que actualmente se esta portando para Linux, aunque actualmente todavía se encuentra en desarrollo.
Mediante Systrace se puede especificar a un programa determinado qué llamadas se pueden hacer al sistema y con qué parámetros, pero al contrario de lo que sucede con otros parches descritos en los artículos anteriores, Systrace le permite crear las políticas de forma interactiva, es decir, que puedes ejecutar un programa bajo Systrace comprobar que llamadas al sistema se estan realizando, y decidir si las permites o no.
La ventaja, es que se puede indicar en el momento que es lo que esta permitido y que no lo esta, de forma que cualquier mensaje de advertencia que produzca Systrace a partir de ese momento puede indicar alguna acción no esperada que pueda estar relacionada con algún problema de seguridad.
Como esta herramienta permite comprobar tanto llamadas al sistema como los argumentos, vas a poder crear políticas específicas que permitan a ciertos programas acciones como crear ficheros sólo bajo ciertos directorios y en ningún sitio más.
Otra de los usos que se suele dar a Systrace es utilizarlo para probar aplicaciones sospechosas, si por ejemplo te encuentras ante un posible troyano, podrías ejecutar Systrace y ver exactamente que esta intentando hacer, incluso nos permite establecer una celda con chroot para que el programa que queremos probar realice todas sus acciones dentro de esa celda sin afectar a nuestro sistema.
La otra aplicación sobre la queríamos hablar hoy, es LSM que viene de Linux Security Module(Módulo de Seguridad para Linux), y cuya función no consiste en generar una política de seguridad no estándar, sino en proporcionar un mecanismo de enganche para que los programadores puedan desarrollar sus propios módulos de seguridad.
Cuando LSM se carga en el núcleo, se colocará justo delante de varias llamadas al sistema relacionadas con la seguridad, como las que se utilizan para determinar si un proceso de usuario o un usuario puede acceder a un determinado fichero.
LSM pone a disposición de otros módulos estos enlaces para que puedan definir sus propios políticas de seguridad, para poder aplicar estas políticas de seguridad es necesario parcher el núcleo, por lo que es complicado aplicar más de un parche al mismo tiempo.
Una de las ventajas que ofrece esta interfaz consistente en las llamadas al sistema, ya que LSM puede facilitar enormemente la implementación de nuevas políticas de seguridad y permite que los módulos se apilen, lo que significa que va a ser posible utilizar tanto los módulos de Grsecurity como los de OpenWall muy fácilemente, lo que además implica que los módulos podrán cargarse y descargarse con el núcleo en funcionamiento, sin ser necesaria una compilación del nucleo.
Con el artículo de esta semana hemos visto terminado de ver los programas que podemos utilizar para hacer nuestros sistemas más seguros y más fiables, la semana siguiente pasaremos a ver las distintas formas que tenemos de realizar un análisis de nuestros ficheros de registro.
Fuente:
Fuente: