Archivo de la '3-err 'categoría

Los sistemas virtualizados son más o menos seguro?

18 de mayo 2010

He tenido la pregunta anterior pregunta número suficiente de veces que me sentía merecedor de una entrada de blog. Mientras que hace unos años la respuesta podría haber sido "menos seguro", hoy la respuesta es "ambos". Lo sé, suena como que Chris no es vinculante, pero que la respuesta realmente la mayoría de describir con precisión el estado actual de la tecnología.

Los cambios de virtualización de todo

He oído un comentario pocas personas que la virtualización está a punto de impacto de la industria de la misma manera que Internet hizo en los años 90. Para ser honesto, creo que hay mérito en esa opinión. A principios de los años 90 la mayoría de la gente se ejecuta IPX, AppleTalk, NetBUI y una plétora de otros protocolos en redes cerradas. A finales de los años 90, la mayoría de la gente corría exclusivamente con conectividad IP a todo el mundo. La forma en que hizo negocios, así como la forma en que aplica la seguridad, totalmente cambiado a lo largo de 10 años. Tanto la administración de redes y capacidades de seguridad que se de vanguardia en 1990 fueron casi inútiles en 1999.

La virtualización es a partir de la rampa para que tenga el mismo impacto en la industria. Implementación de la virtualización requiere un replanteamiento completo de la forma de aplicar la seguridad. De vuelta en la década de 1990, los administradores que simplemente se conecta a la Internet, sin tener en cuenta cómo podría afectar su red, se quemó a lo grande. Estamos haciendo cola para ver una salida similar a la gente a adoptar la virtualización.

Lo que hace que la virtualización menos seguro

El talón de Aquiles de la virtualización está en el propio software. Esperamos que podamos confiar en el software para mantener los sistemas invitados de distancia el uno del otro, así como el hipervisor de acogida y / o. Hay dos problemas importantes con esta expectativa:

  1. Ningún software es libre de errores
  2. El software puede ser configurado correctamente

Hace unos años, la investigación básica demostraron que podían salir de un huésped y obtener el control total del sistema operativo anfitrión . Mientras que un hipervisor que se supone que limitar ese tipo de exposición, sin duda hemos visto casos en que incluso el hipervisor ha sido anulada . Incluso hemos visto casos de software se convierte en explotación sólo cuando se ejecuta en un entorno virtualizado . Estos enlaces muestran una pequeña sección transversal de los problemas de virtualización que se han descubierto en los últimos años. Google le puede dar una lista más completa si usted está interesado.

Por lo que una prudente seguridad profesional va a tener cuidado con confiando ciegamente software para ser seguro. El problema es que los vendedores no siempre tienen este mismo enfoque. Tome VMware con sus ESX (que pronto se ESXi) del producto como un ejemplo. Muchos de nosotros estábamos atónitos cuando un representante de VMware anunció CanSecWest en que era teóricamente imposible atacar el hipervisor ESX . Cuando nos limitamos a asumir algo que es irrompible, una persona más creativa que va a encontrar una manera de atravesar .

Uno de mis mayores preocupaciones con ESX / ESXi de VMware es que lo ha diseñado para ser modular (a través de VMSafe ). En el lado positivo, esto significa que los proveedores externos pueden crear productos para ayudar a mejorar el hipervisor de funcionalidad y seguridad. En el lado negativo esto aumenta dramáticamente las posibilidades de código malicioso que se introduce lo que puede comprometer la seguridad.

Hemos visto un gran ejemplo de esto en el pasado. Marcus Ranum creó el firewall Gauntlet, que en ese momento era uno de los dispositivos de seguridad más seguras y patear traseros disponibles. Cuando las tres agencias carta quería la mejor seguridad, se dirigieron a Gauntlet. Marcus vendidos Guante de Network Associates (más tarde se convirtió McAfee), que inmediatamente comenzó a agregar en las características. No pasó mucho tiempo antes de una cadena constante de las vulnerabilidades se están descubriendo, cada uno introducido por estas nuevas "características". A partir de ahí, el producto pierde su credibilidad y la seguridad se salió del radar.

Ahora bien, es ciertamente posible agregar funciones y mantener las cosas seguras. El FreeBSD personas son un excelente ejemplo de cómo hacerlo correctamente. Para garantizar la seguridad de que mantener un proceso de auditoría muy estrictos . ¿Es perfecto? Por supuesto que no, pero su proceso de auditoría ha puesto el listón para la implementación de software seguro. Con algo de suerte VMware hará similar, pero no he oído ningún rumor acerca de este ser el caso.

Obtención de la cabeza recta

Aceptar, por lo que no debe confiar ciegamente en software de virtualización para mantener a raya a los atacantes. Sin embargo, podemos todavía tomar precauciones para minimizar el impacto, si lo peor ocurre. Uno de los mayores pasos que puede tomar es considerar cuidadosamente lo que los servidores se encuentra alojado, y lo que los sistemas de otros huéspedes se les permite correr en la misma caja. El concepto de zona de seguridad utilizado por arquitectos de la red es igual de aplicable aquí.

Una zona de seguridad es simplemente una colección de sistemas que comparten el mismo nivel relativo de riesgo. Por ejemplo, servidores web, el nombre y SMTP son por lo general todo se encuentra en una zona de distensión, ya que todos ellos comparten el riesgo de un ataque directo. En la parte interna de la red, equipos de escritorio se colocan generalmente en una zona de seguridad diferente a los servidores. Esto se debe a que los servidores tienen poco o ningún acceso a Internet, mientras que los equipos son generalmente autorizados a comunicarse directamente. Esto coloca a los equipos de sobremesa con mayor riesgo de ataque de los servidores.

Podemos aplicar la misma lógica en la aplicación de la virtualización. Un servidor DMZ y un servidor interno no deben ser invitados en el mismo hardware (CPU y serie del disco). Si lo hace, podría permitir a un atacante crear una ruta alternativa a nuestra red. En lugar de tener que pasar a través de cualquier firewall, NIDS, NIPS, dispositivos, etc que se ha desplegado en el alambre, un atacante podría obtener acceso a los recursos internos a través del software de virtualización. ¿Es un ataque fácil? No de lo que hemos visto hasta ahora. Exploits funcionales se han descubierto sin embargo, ¿por qué introducir un riesgo innecesario si no tiene que hacerlo.

Por cierto, estas mismas normas de seguridad de zona se debe aplicar a su equipo de red virtualizados. Por ejemplo, es una mala idea usar el mismo conmutador físico a la VLAN de la DMZ y la red interna. He visto un par de clientes ser golpeados de esa manera.

Lo que hace que la virtualización más seguro

Afortunadamente, desde la perspectiva de la seguridad, la virtualización no todo son malas noticias. De hecho, hay algunas prácticas de seguridad muy interesantes que se pueden aplicar en un entorno virtualizado que usted simplemente no puede prescindir de él. Esta fue una de las razones por las que empezamos a utilizar la virtualización dentro de la Honeynet desde el año 2000.

Uno de los mayores problemas de seguridad que enfrentamos hoy es a nivel de kernel rootkits . Lo que hace que esta cepa de malware tan insidioso es que efectivamente se convierte el propio sistema operativo en malware. Esto hace que la detección extremadamente difícil, ya que todos los controles de seguridad debe pasar por el núcleo. Si el núcleo está en peligro, no podemos confiar en el núcleo de informar con precisión la información de seguridad. Nos acaban de tener que apagar el sistema, montar la unidad en un conocido por ser limpia del sistema operativo, y haciendo nuestras verificaciones forenses a partir de ahí. Oh por supuesto el problema con este proceso es que no escala bien. Si tenemos decenas o cientos de servidores, simplemente no hay suficiente tiempo en un día para ver todas correctamente.

Como se mencionó anteriormente, VMware está permitiendo proveedores de acceso de terceros a través de la API de hypervisor VMSafe. Esto permite el acceso a la información privilegiada del Estado, como la memoria y el tráfico de red, en cada uno de los sistemas operativos invitados. Mediante la conexión en el hipervisor, algunas opciones de seguridad muy fresco a ser posible.

Por ejemplo, digamos que un sistema operativo invitado es atacado por un rootkit a nivel de kernel. Mediante el análisis de la memoria del invitado, el rootkit puede detectarse desde el exterior del sistema operativo virtual. Al realizar las comprobaciones a través del hipervisor, que es mucho menos de la posibilidad de que un rootkit puede utilizar el sigilo de sus actividades y no se detectan. Como se mencionó anteriormente, no hay opción comparable con un sistema no virtualizado.

El enchufe de la API también crea nuevas posibilidades para tratar con el tráfico encriptado. Al extremo a extremo de cifrado se utiliza (como una red privada virtual), el control basado en red de la capa de aplicación son pasados ​​por alto fácilmente. Su única opción era correr software de agente en el punto final, lo que la seguridad podría aplicarse después de que el proceso de descifrado. Por supuesto, el problema aquí es que si el agente es atacado, todas las apuestas están apagadas. Una vez más, al conectarse a la hipervisor estamos en una mejor posición para examinar de forma más segura estos datos.

Estamos empezando a ver los nuevos productos que aprovechen el enchufe VMSafe API . Dado que todos los productos son relativamente nuevos, el jurado aún está deliberando sobre la eficacia que pueden ser. Ofertas de ejecutar la táctica de la sustitución de firewall basado en host y la protección de IDS para la aplicación de políticas completo. Será interesante ver cómo este nicho de productos sacude durante el próximo año.

Resumen

Así como he mencionado al principio de este post, la virtualización tiene la capacidad de hacer que su entorno sea más o menos seguro, dependiendo de cómo implementarlo. Si simplemente empezar a correr todo en una sola caja, es probable que van a ser golpeados. Si extiende las mejores prácticas que se han desarrollado a lo largo de los años en el reino de la virtualización, así como aprovechar algunas de las nuevas características de seguridad que están siendo puestos en libertad, en realidad se puede crear una mejor postura de seguridad global.

La combinación de Logwatch y OSSEC - Parte 4

18 de febrero 2010

En mi último post instalamos Logwatch así como OSSEC. Ahora es el momento para obtener Logwatch y OSSEC jugando juntos en el mismo entorno limitado. En este post voy a hablar de cómo obtener Logwatch para resumir la información generada por OSSEC.

Opciones de implementación

Tenemos dos caminos que puede seguir para configurar esto:

  1. Han Logwatch analizar los registros OSSEC directamente.
  2. Han OSSEC enviar sus alertas a un servidor de tipo Syslog, a continuación, ejecute Logwatch en el servidor syslog.

El beneficio para la opción # 1 es que sólo tenemos un sistema. Logwatch se llevará a cabo en el sistema que aloja el servidor OSSEC. El problema que se va a ejecutar en el embargo implica el archivo de alerta OSSEC. Las entradas de registro no se normaliza. Esto significa que el formato puede cambiar a partir de la entrada a entrada, e incluso puede extenderse en varias líneas. Va a ser una verdadera pesadilla para crear un script Logwatch que filtrar y resumir la información de alerta.

Si vamos con la opción # 2, se requerirá otra caja para que actúe como nuestro servidor de registro centralizado. Con el fin de que el servidor OSSEC aceptar entradas de registro de no-agente, tiene que escuchar en UDP/514. Este puerto es el mismo utilizado por un servidor de registro centralizado, y no se puede tener dos aplicaciones comparten el mismo puerto (excepto con Windows, pero el acceso es muy complicado socket). En el lado positivo, las entradas de alerta se normalizan cuando se transmite al servidor Syslog para la creación de un guión resumen Logwatch será mucho más fácil. Además, Logwatch ya sabe acerca de los archivos Syslog estándar, así que vamos a tener menos trabajo de personalización que hacer.

Finalmente, he mencionado en un post anterior que OSSEC no está diseñado para ser una tarjeta SIM. Esto se debe a que no todo registro, sólo los eventos que generan una alerta. Así que probablemente va a querer un servidor centralizado de todos modos, y tiene sentido tener que almacenar la información generada por OSSEC.

Así que si suena como que estoy de dirección hacia la opción # 2, que son absolutamente correctas. Con eso dicho, de hecho voy a cubrir la opción # 1, ya que es una instalación mucho más compleja.

Lidiando con fecha / hora

Echa un vistazo a el archivo de registro OSSEC principal y usted debe ver similar a lo siguiente:

[Root @ Fubar registros] # tail -3 / var / ossec / logs / ossec.log

02/18/2010 12:32:05 ossec-rootcheck: INFO: Poner fin a escanear rootcheck.

02/18/2010 14:27:06 ossec-syscheckd: INFO: A partir syscheck exploración.

02/18/2010 14:39:21 ossec-syscheckd: INFO: Hasta syscheck exploración.

Tenga en cuenta la forma en que se formateó el sello de fecha / hora. Esto es diferente a la mayoría de las aplicaciones, así que lo primero que tendremos que hacer es decirle a Logwatch cómo lidiar con este formato. Tendremos que crear un script que se puede llamar cuando se necesita que leen el formato se muestra arriba.

Para empezar, entrando en el directorio de scripts compartidos:

cd / usr / share / logwatch / scripts / compartidos

Utilizando su editor favorito, cree un archivo llamado "applylongdate":

vi applylongdate

Esto es lo que necesita dentro de ese archivo. Siéntase libre de copiar / pegar desde esta página:

uso Logwatch: fechas;

my $ Debug = $ ENV {'LOGWATCH_DEBUG'} | | 0;

$ SearchDate = TimeFilter ("% Y /% m /% H% d:% M:% S ');

if ($ Depurar> 5) {

print STDERR "DEBUG: ApplyLongDate interior ... \ n";

print STDERR "DEBUG: Buscando a:". $ SearchDate. "\ N";

}

mientras que (defined ($ ThisLine = <STDIN>)) {

if ($ ThisLine = ~ m / ^ $ SearchDate / o) {

print $ ThisLine = ~ s / ^ .... \ / .. \ / .. ..:..:.. / /;

print $ ThisLine;

}

}

# Vi: tabulación = 3 = sintaxis perl TabStop = 3 y

Una vez guardado el archivo, ahora tenemos que establecer los permisos adecuados:

chmod 755 applylongdate

Configurar los archivos de registro

A continuación tenemos que decir Logwatch en los archivos de registro OSSEC se encuentran. Cada vez que añada nuevos ficheros de registro o crear nuevos servicios para controlar en Logwatch, debe colocar los cambios en el directorio / etc / logwatch. Vamos a crear dos archivos de configuración. El primero se encargará de mensajes OSSEC, y el segundo se encargará de alertas y cambios OSSEC respuesta activa.

Vamos a empezar con la creación del archivo de configuración para el archivo de registro principal OSSEC:

cd / etc / logwatch / conf / archivos de registro

vi ossec.conf

El contenido del archivo debe ser la siguiente manera:

LogFile = / var / ossec / logs / ossec.log

* ApplyLongDate =

Ahora puede guardar y salir del archivo. A continuación, vamos a crear el archivo de configuración para el resto de los archivos de registro:

vi ossec-alert.conf

El contenido de este archivo debe ser la siguiente manera:

LogFile = / var / ossec / logs / activo responses.log

LogFile = / var / ossec / logs / alertas / alerts.log

LogFile = / var / ossec / logs / firewall / firewall.log

Una vez terminado, guardar y salir. Los permisos por defecto debe ser aceptable para nuestra configuración.

Configuración de los servicios OSSEC

A continuación, tenemos que definir los servicios OSSEC e identificar lo que queremos usar como un título cuando los informes se generan. Así es como para crear el primer archivo:

cd / etc / logwatch / conf / servicios

vi ossec.conf

El contenido de este archivo es muy simple:

Title = "OSSEC Mensajes"

LogFile = ossec

Una vez terminada, se puede guardar y salir. Tenemos que crear un archivo más en este directorio:

vi ossec-alert.conf

El contenido de este archivo debe ser:

Title = "OSSEC alertas"

LogFile = ossec de alerta

Una vez terminado, guardar y salir como de costumbre.

El análisis de los comentarios

A continuación, tenemos que decirle Logwatch cómo dar formato a las entradas del registro en el informe. Tendremos que crear un script de personalización para cada grupo de servicios. Vamos a comenzar con un Logwatch suministrado script de prueba, sólo para asegurarse de que todo.

Empiece moviendo en el directorio correspondiente:

cd / etc / logwatch / scripts / servicios

Utilice su editor preferido para crear su primer guión:

vi ossec

El contenido de la escritura debe ser la siguiente manera:

#! / Bin / bash

# Este es el argumento de tan agradable que le mostrará las líneas que se

# Ser el procesamiento y presentación de informes sobre. En primer lugar, se mostrará el

# Variables de entorno estándar y luego se STDIN y

# Volcar de vuelta a STDOUT.

# Estas son las variables de entorno estándar. Puede definir

# Más en su archivo de configuración de servicios (véase más arriba).

echo "Fecha Entre: $ LOGWATCH_DATE_RANGE"

echo "Nivel de detalle: $ LOGWATCH_DETAIL_LEVEL"

echo "Temp Dir: $ LOGWATCH_TEMP_DIR"

echo "nivel de depuración: $ LOGWATCH_DEBUG"

# Desde aquí, tomar STDIN y lo descarga en STDOUT

gato

Cree su segundo guión:

vi ossec de alerta

e incluyen el mismo contenido exacto:

#! / Bin / bash

# Este es el argumento de tan agradable que le mostrará las líneas que se

# Ser el procesamiento y presentación de informes sobre. En primer lugar, se mostrará el

# Variables de entorno estándar y luego se STDIN y

# Volcar de vuelta a STDOUT.

# Estas son las variables de entorno estándar. Puede definir

# Más en su archivo de configuración de servicios (véase más arriba).

echo "Fecha Entre: $ LOGWATCH_DATE_RANGE"

echo "Nivel de detalle: $ LOGWATCH_DETAIL_LEVEL"

echo "Temp Dir: $ LOGWATCH_TEMP_DIR"

echo "nivel de depuración: $ LOGWATCH_DEBUG"

# Desde aquí, tomar STDIN y lo descarga en STDOUT

gato

Por último, tenemos que establecer los permisos adecuados:

chmod 755 ossec *

Prueba de la configuración

La forma más fácil de probar nuestra nueva configuración es ejecutar el comando:

logwatch | less

Si sólo desea ver los cambios, puede ejecutar un informe sobre cada servicio, una a la vez:

logwatch servicio ossec | less

logwatch servicio ossec alerta | less

Una mayor personalización

Una vez que llegue a todos los que trabajan más arriba, usted puede centrarse en conseguir Logwatch para filtrar y resumir las entradas del registro. Logwatch es bastante flexible, y se puede personalizar la salida de la forma que desee. Una de las cosas buenas de la escritura de la prueba por encima de lo anterior es que se le muestra exactamente lo que tiene que trabajar. Así que con un poco de magia expresión regular puede resumir las entradas según considere oportuno. Para algunas ideas, puedes ver los archivos que se encuentran en:

/ Usr / share / logwatch / scripts / servicios

Estos son los scripts de resumen por defecto incluido en Logwatch. En concreto, echar un vistazo a los archivos "pam" y "sshd". Ellos son grandes ejemplos tanto de un simple y un complejo conjunto de filtros de síntesis.

A medida que desarrolla sus guiones, prestar mucha atención a los $ LOGWATCH_DETAIL_LEVEL "variable. Esto le permitirá personalizar el nivel de salida del informe en función de la cantidad de nivel de detalle que el usuario está buscando. Por ejemplo, mientras usted todavía está en el directorio de servicios anteriores, ejecute el comando siguiente:

menos sshd

Cuando la primera página del contenido del archivo se muestra, escriba:

/ Detalle <Introducir clave>

La barra invertida nos permite buscar en el archivo de una cadena de texto en particular. En este caso estamos buscando la palabra "detalle". Una vez que se pulsa Intro la búsqueda saltar a través del archivo hasta que encuentra la primera instancia de la cadena de texto. También se hará hincapié en la cadena de búsqueda. En el primer partido se dará cuenta de que el autor asigna a la variable "$ detalle" a ser la misma que la variable $ LOGWATCH_DETAIL_LEVEL ". Esto es para ahorrar un poco de mecanografía.

Ahora pulse la tecla de barra invertida de nuevo seguido de la tecla Enter. Esto salta a través del archivo a la siguiente instancia de "Detalle". Usted debe ver:

if ($ Detalle> = 20) {

$ Usuarios {$ usuario} {$ host} {$ Método} + +;

} Else {

if ($ host ~ / $ IgnoreHost /) {

$ Usuarios {$ usuario} {} {$ host "(todos los )"}++;

Tenga en cuenta que el autor ofrece más información si el nivel de detalle se establece en 20 (a medio camino entre baja y media) o superior. Seguir saltando a través del archivo y verás otros ejemplos donde el autor aprovechado esta técnica.

Ahora la página hasta el final del archivo y usted debería ver la siguiente declaración:

if (otralista llaves%) {

print "\ n ** Las entradas sin igual ** \ n";

print "$ _: $ otralista {$ _} tiempo (s) \ n" foreach otralista% teclas;

}

Esta sección es muy importante, ya que es un cajón de sastre final. Pensar en una política de firewall por un momento. La mayoría de nosotros crear una regla final que dice: "Si no me permiten específicamente a través de un patrón de tráfico, lo niegan". En otras palabras, si ocurre algo inesperado, así es como quiero que manejar la situación.

La afirmación anterior tiene el mismo propósito al analizar el archivo de registro. Todas las anteriores declaraciones "if" intentar igualar una cadena de texto en la entrada del registro con el fin de darle formato correctamente. Esta entrada dice: "Si no se han emparejado y se imprime una entrada de registro específico, sin embargo, se imprima en una sección titulada" ** ** Las entradas sin igual ". Este paso es muy importante porque sin ella nunca vamos a ver las entradas inesperadas. Se trata de las entradas inesperadas que son probablemente los más importantes y más interesantes.

Resumen ejecutivo

Ambos OSSEC y Logwatch son excelentes herramientas complementarias. OSSEC destaca en la advertencia de que cuando un patrón de ataque conocido se lleva a cabo. Logwatch es un magnífico instrumento para resumir una parte de los registros de tiempo para que los humanos pueden realmente entender lo que está pasando. Mediante la combinación de las dos herramientas que pueden crear una defensa mucho más sólida en profundidad la postura. El conjunto es mayor que la suma de las partes.

La combinación de Logwatch y OSSEC - Parte 3

17 de febrero 2010

En mis dos últimos posts hablé Logwatch y OSSEC, así como la forma en que se puede aprovechar para aumentar su nivel de seguridad. En esta entrega voy a hablar de cómo instalar estas dos herramientas.

Instalación Logwatch

Logwatch es bastante fácil de instalar. De hecho, se instala por defecto en muchas distribuciones de Linux que usted ya tenga una copia en el sistema. Para comprobarlo, de inicio de sesión como root e intente ejecutar Logwatch con la opción "-v" switch. Si ve:

[Root @ Fubar logwatch] # logwatch-v

Logwatch 7.3.6 (liberada 05/19/07)

Logwatch está instalado y que tiene una copia de la última versión. Si usted no tiene la última versión, lo pueda levantar de la página de descarga Logwatch .

Hay tres sabores de Logwatch que se puede descargar, en formato RPM binarios, fuentes en formato RPM, o la fuente en una bola de alquitrán. Si su sistema es compatible con la gestión de paquetes RPM, el RPM binario es su mejor opción. Es fácil de instalar y RPM actualizará automáticamente el software cuando las nuevas versiones están disponibles.

Instalación de RPM Logwatch

Para instalar la versión binaria de la RPM, simplemente inicie una sesión como root y vaya al directorio donde descargó el archivo RPM. Ahora ejecuta el comando:

rpm-U-7.3.6-logwatch 1.noarch.rpm

No olvide que usted puede utilizar la tecla de tabulación para auto-completar el nombre del archivo en lugar de tener que escribir toda la cosa.

Instalación Logwatch De Fuente

Instalación de la fuente es un poco más lento. Recuerde que para poder instalar el código fuente ya debe tener un compilador (como gcc) instalado en su sistema. De inicio de sesión como root y vaya al directorio donde descargó el balón de alquitrán. Para extraer el archivo, ejecute el comando:

tar xvzf logwatch-7.3.6.tar.gz

Usted verá una estructura de directorios por debajo de su ubicación actual y se crean gran cantidad de archivos que se copian pulg Ahora tenemos que entrar en el directorio superior que fue creada:

cd logwatch-7.3.6

Con el fin de Logwatch para correr, hay un montón de directorios que se deben crear en el sistema. Estos se encuentran documentados en el archivo README en el directorio actual. Por suerte, Logwatch incluye un script de instalación que puede hacer todo el trabajo por usted. Por desgracia, el guión tiene los permisos mal set para que no se ejecuta por defecto. Esto es bastante fácil de solucionar sin embargo con el comando chmod:

chmod 500 install_logwatch.sh

Ahora podemos ejecutar el script de configuración de nuestro sistema:

. / Install_logwatch.sh

No te olvides el punto al principio de la línea.

Pruebas Logwatch

Para probar la configuración Logwatch, ejecutar el comando:

logwatch | less

Verá la pantalla del terminal se queda en blanco, pero eso es normal. Es muy probable que vea un informe Logwatch se muestra en la pantalla que se puede navegar a través del uso de la "Page Up" y "Page Down" llaves. ¿Cómo registro que se necesita para que el informe muestre en la pantalla dependerá de la cantidad de información de registro para obtener las necesidades analizadas. Podría tomar unos cuantos segundos o un par de minutos. De cualquier manera, le dará la oportunidad de familiarizarse con el formato del informe.

Instalación OSSEC

Como ya he mencionado en mi último post, tienes dos opciones de instalación con OSSEC, local o cliente / servidor. En este post me voy a centrar en la estructura de cliente / servidor, ya que es un poco más complejo. Si usted está realizando una instalación local, sólo tiene que seleccionar el "local" durante el proceso de instalación y omitir la sección sobre la configuración de un canal seguro entre el agente y el servidor.

Iniciar con el servidor

OSSEC utiliza el cifrado Blowfish para asegurar la comunicación entre el cliente y el servidor. Blowfish es la clave simétrica basado, por lo que ambas partes deben saber cuál es el valor clave para el uso con el fin de comunicarse. El servidor es responsable de generar la clave simétrica, por lo que tiene que instalar primero el software del servidor. Durante la instalación del cliente que se le solicitará un valor clave así que obviamente tendrá que tener esa mano antes de tiempo.

He aquí un consejo para ahorrar tiempo. El valor de la clave es larga y casi imposible de recordar. La manera más fácil para mover el valor de la clave del sistema de servidor para el sistema de agentes es el uso de SSH. Crear una conexión segura con el servidor OSSEC, y el extracto de la tecla correspondiente (direcciones más abajo). En una ventana de terminal en segundo lugar, crear una sesión SSH al sistema en el que va a instalar el agente. Cuando la instalación del cliente que solicita el valor de la clave, sólo tiene que copiar / pegar entre las dos terminales.

Instalación del servidor OSSEC

El software del servidor está disponible como una bola de alquitrán, por lo que puede hacerse con una copia de la última versión de la página de descarga OSSEC . A continuación, tendrá que extraer el contenido de la bola de alquitrán:

tar xvzf ossec-HIDS-2.3.tar.gz

A continuación, pasar a la estructura del directorio que acaba de crear:

cd ossec-HIDS-2.3

OSSEC proporciona un script de instalación que le guiará por el proceso de instalación del servidor. Para ejecutar el script, escriba:

. / Install.sh

No te olvides el punto al principio del comando. Ahora se le pedirá a través de una serie de opciones de instalación:

  • Idioma - El valor por defecto es el Inglés. Cambios que considere oportunos.
  • La confirmación de la instalación - Pulse Intro una vez que haya leído la pantalla.
  • Tipo de instalación - Escriba "servidor" sin las comillas y pulse Intro.
  • Ubicación de instalación - Acepte el valor predeterminado.
  • Notificación por correo electrónico - no está en sí, seleccione si desea alertas por correo electrónico. Si selecciona Sí, se le pedirá una válida dirección de correo electrónico y servidor de correo.
  • Comprobación de la integridad - no está en sí. Seleccione si desea que el sistema local de control periódico de las intrusiones.
  • Detección de rootkit - Por defecto es sí. Buena opción ya que necesitamos mantener un alto nivel de integridad en el sistema.
  • Respuesta activa - Por defecto es sí. Seleccione esta opción si desea ser capaz de responder a los eventos.
  • Caída de servidor de seguridad - Permite al servidor OSSEC para defender lo mismo si un ataque directo que se detecte.
  • Lista blanca - Esto le permitirá añadir las direcciones IP de los posibles ataques que se tendrá en cuenta. Tenga cuidado con esta opción. Si usted no tiene acceso a la consola con el servidor OSSEC, podría ser prudente para identificar una dirección IP que siempre se puede entrar sólo garantizar la IP de origen es un sistema confiable.
  • Habilitar Syslog - Por defecto es sí. Seleccione esta opción si desea recopilar registros del sistema que no puede ejecutar un agente OSSEC (como firewalls, switches, routers, puntos de acceso, etc.)
  • Los archivos de registro para ser monitoreados - Esta pantalla identifica todos los archivos de registro local OSSEC supervisará. Es pura información, todo lo que puede hacer es presionar Enter para mover pasado. Si usted nota uno o más archivos de registro que faltan de la lista, puede agregar más adelante en el fichero de ossec.conf.

En este punto OSSEC tendrán acceso a los locales compilador e instalar todos los archivos necesarios en el sistema. Una vez completado, puede iniciar el servidor OSSEC ejecutando el comando:

/ Var / ossec / bin / ossec-control de arranque

Agentes de la definición de OSSEC

No hemos terminado con el servidor OSSEC todavía. A continuación, tenemos que pre-definir cualquier sistema que se ejecuta el agente OSSEC (cliente) de software. Esto se realiza mediante el comando manage_agents. Primero, sin embargo, que tenemos que hacer un poco de tarea. Haga una lista de todos los sistemas que va a ejecutar el software del agente OSSEC. Para cada sistema, usted necesitará un nombre descriptivo, así como la dirección IP de ese sistema.

Ahora, ejecute lo siguiente desde la línea de comandos:

/ Var / ossec / bin / manage_agents

Esto producirá el menú del Gestor de agentes principales. Presione "A", seguido de la tecla Intro para definir el sistema en primer lugar. Escriba un nombre descriptivo para el sistema en primer lugar, seguido de la dirección IP del sistema. No te preocupes por el número de identificación del agente. Simplemente aceptar el valor predeterminado y OSSEC se auto-asigna el siguiente número de identificación disponibles. Una vez confirmada la información introducida, se le devuelve al menú principal del Administrador de agentes. Repita el proceso anterior para cada sistema que se está ejecutando un agente OSSEC.

Generar claves

Una vez que haya añadido en todos sus sistemas, es hora de generar claves de cifrado. Este paso también se realiza con la utilidad manage_agents. Si ha cerrado la herramienta después de la última etapa, que relanzar ahora.

Pulse la tecla "E" seguido de Enter para seleccionar la opción "Extraer clave para un agente" del menú. A continuación se le pedirá el número de ID de la clave que desea extraer. Los nombres descriptivos y las direcciones IP se muestran con cada número de identificación, por lo que debería ser trivial para identificar cuál de ellos desea. Empiece con el sistema va a instalar el software del agente en primera.

OSSEC Agente de la instalación a Linux

Al instalar el software del agente en un cliente Linux o UNIX, se utiliza el balón exactamente Tar misma que utilizó para instalar el software de servidor. Ejecute el script de instalación misma, pero esta vez cuando se le pregunte por el tipo de instalación que desea realizar, el tipo de "agente", seguido de la tecla Enter.

La instalación del cliente tiene muchas de las mismas indicaciones que la instalación del servidor. Utilice la información anterior que le guiará durante el proceso. El mensaje que puede variar sin embargo, es que se le pedirá proporcionar la dirección IP del servidor OSSEC. Una vez terminado, tendrá acceso a OSSEC el compilador locales e instalar todos los archivos necesarios en el sistema.

A continuación tenemos que importar la clave del servidor Blowfish OSSEC. Aunque todavía en el sistema de agente, ejecute el comando:

/ Var / ossec / bin / manage_agents

Cuando aparezca el menú del Gestor de agentes aparece, seleccione "I" para importar la clave Blowfish.

Cuando aparezca el mensaje siguiente aparece, tendrá que introducir manualmente la clave apropiada Blowfish. Una vez más, si está ejecutando SSH en ambos sistemas al mismo tiempo, sólo tiene que copiar / pegar entre las dos terminales. Asegúrese de que la clave es correcta, pulse la tecla Enter, y luego seleccione "y" para confirmar que la clave es correcta. Volverá al menú del Gestor de agentes. Seleccione "q" para volver a la línea de comandos.

Ahora simplemente tenemos que iniciar el agente OSSEC. Puede hacerlo ejecutando el siguiente comando:

/ Var / ossec / bin / ossec-control de arranque

Usted debe ver a todos los componentes del agente OSSEC puesta en marcha, seguido de un mensaje "COMPLETADO".

OSSEC Agente de la instalación en Windows

OSSEC tiene un ejecutable de extracción automática que le permitirá instalar el software del agente en un sistema Windows. Simplemente haga doble clic en el ejecutable para iniciar el proceso de instalación. Se le solicita que acepte la licencia, así como los componentes que desea instalar. Simplemente siga las instrucciones hasta que el agente OSSEC Aparece la ventana Administrador.

El Agente de OSSEC ventana del Administrador le pedirá la dirección IP del servidor OSSEC. También le preguntará por el valor de la clave Blowfish de utilizar, para extraer la clave adecuada en el servidor e introduzca el valor en este campo. Asegúrese de eliminar el mensaje dentro de este campo antes de pegar en la clave de Blowfish. De lo contrario la comunicación con el servidor puede fallar.

A continuación, seleccione "Administrar" en el menú Agente Administrador OSSEC, seguido de "Start OSSEC". Ahora debería ver el "Status:" Indicador de cambio de "Ejecución de ...".

Pruebas OSSEC

Una vez que tenga el servidor y el software agente instalado, iniciado y las teclas correspondientes, configurado, ahora es tiempo para comprobar nuestra configuración. Ejecute el siguiente comando en el servidor OSSEC:

cd / var / ossec / logs

Y echa un vistazo al archivo ossec.log:

menos ossec.log

Revise el archivo de registro de los errores. Un error común es que los informes OSSEC no puede enviar e-mail. Asegúrese de que el servidor de correo está funcionando y que está aceptando conexiones. Una vez que esté satisfecho con la configuración del servidor, ahora es el momento de revisar los agentes. Desplácese hacia abajo a los "alertas" del directorio:

cd alertas

Y echa un vistazo al archivo alerts.log:

menos alerts.log

En concreto, está en busca de entradas similar al siguiente:

17 de febrero 2010 16:09:16 (desktop) 192.168.1.10-> ossec

Regla: 501 (nivel 3) -> "Nuevo agente ossec conectados.

IP src: (ninguno)

Usuario: (ninguno)

ossec: Agente de empezar: "test_system-> 192.168.1.10.

Usted debe ver una entrada para cada sistema en el que instaló el software del agente.

Más por venir

¡Menos mal! Eso es más que suficiente para un post! En mi próximo post voy a entrar en aprovechar Logwatch para analizar toda la información de alerta generada por OSSEC.

La combinación de Logwatch y OSSEC - Parte 2

16 de febrero 2010

En mi último post me describió cómo Logwatch podrían ser utilizados para simplificar el proceso de revisión del registro. En este post vamos a ver OSSEC y lo que trae a la mesa.

¿Qué es OSSEC?

OSSEC , abreviatura de "seguridad de código abierto", es una serie basada en el sistema de detección de intrusos (HIDS). En otras palabras, está diseñado para detectar ataques o violaciónes de política, siempre y cuando se producen. Si bien no tiene la capacidad de proteger frente a ataques desconocidos o de día 0 (que sería la prevención de intrusiones basado), que incluye una amplia gama de herramientas que pueden ayudarle a identificar una intrusión cuando se produce, así como el alcance de la de los daños que ha causado.

Plataformas compatibles

Para tomar ventaja de todas las características OSSEC tiene para ofrecer, usted tiene que ejecutar un agente en el sistema se está protegiendo. Agentes OSSEC puede ejecutar en Windows, Mac OS X, Linux, y una amplia gama de sistemas UNIX. Si está interesado solamente en la parte de análisis de registros sin embargo, una gama más amplia de sistemas pueden ser compatibles. Esto incluye el hardware de Cisco y Juniper. Una serie de productos específicos también son compatibles, como firewalls Checkpoint, Symantec Anti-Virus, Snort, Squid, y Arpwatch, sólo para nombrar unos pocos.

Al instalar OSSEC usted tiene dos opciones de configuración, local o cliente / servidor. Una instalación local se utiliza cuando se necesita para ejecutar todo en un solo sistema. La instalación de cliente / servidor permite ejecutar un entorno distribuido de proteger los sistemas múltiples a la vez. Aunque la mayoría de las implementaciones son cliente / servidor, si usted quiere dar un giro OSSEC que puede ejecutar todo en un sistema de prueba solo con una instalación local.

De análisis de registro

OSSEC incluye un sistema de intrusión basado en un registro de detección (tapas). Esto tiene la posibilidad de revisar los archivos de registro en tiempo real, mientras que para examinar los patrones de ataque conocidos. Cuando un registro se genera en un sistema protegido, el agente se encarga de transmitir de forma segura el registro (cifrado Blowfish con un secreto pre-compartida) de vuelta al servidor. Después, el servidor se encarga de realizar el análisis.

La mayoría de las herramientas de análisis de registro de proceso de sus reglas en un formato lineal. Con esto quiero decir, si tenemos 500 reglas, la regla uno es seleccionado, entonces la regla dos, entonces la regla de tres y así sucesivamente hasta que se encuentra una coincidencia o se llega al final del conjunto de reglas. OSSEC trabaja un poco diferente, ya que implementa una estructura hierática a las reglas. Las entradas del registro son los primeros clasificados y luego verificarán contra lo que las reglas son las adecuadas. El resultado es que en lugar de tener que procesar todas las 500 normas, la mayoría de los eventos que nos registramos en contra de las reglas 10 o menos. Esto reduce drásticamente la cantidad de carga necesaria para procesar el conjunto de reglas.

Comprobación de la integridad

OSSEC incluye una herramienta llamada Syscheck para llevar a cabo la comprobación de integridad de archivos y directorios. Si está ejecutando un agente de Windows, también puede incluir teclas específicas en el registro de Windows para ser controlados también. Cambios en los archivos pueden ser detectados utilizando MD-5 y SHA-1 hash de algoritmos. El sistema es extremadamente personalizable. Puede incluir o excluir archivos individuales, o estructuras enteras del directorio. Incluso se puede establecer un indicador para detectar la creación de archivos nuevos.

El software del agente está diseñado para utilizar una cantidad mínima de la CPU durante la comprobación de integridad. Si bien esto significa que el cheque se tomará más tiempo, sino que también ayuda a minimizar el impacto en el rendimiento del sistema. Información de hash se transmite de vuelta al servidor. Después, el servidor se encarga de realizar la comparación de hash para ver si alguno de los archivos críticos del sistema han cambiado. El servidor también almacena una copia de la política de control de integridad, de modo que si los cambios de política se hacen en el agente, que puede ser detectado y reportado también.

Detección de anomalías

OSSEC va mucho más allá de registro de control para verificar la integridad del sistema. Las políticas de uso se puede gestionar de forma centralizada desde el servidor, y luego se transfieren a los agentes adecuados. Por ejemplo, podría definir una política respecto de los cuales las aplicaciones de Windows son aceptables (Office, Firefox, etc) y cuáles no lo son (cliente de mensajería instantánea, Skype, etc.) Usted puede incluso definir las opciones de configuración como aceptable la verificación de que los hashes NT se utilizan para almacenar la contraseña pero no hashes LanMan.

OSSEC incluye un número de ventajas que otros con el fin de ayudar a verificar la integridad del sistema. Por ejemplo OSSEC tiene la capacidad para ejecutar comandos del agente y controlar la salida que se genera. Por ejemplo, usted podría tener el agente de Linux ejecutar el "df" mando a intervalos regulares y generar una alerta si el uso del disco excede el 90%. Un ejemplo de Windows puede tener OSSEC generar una alerta cada vez que información de los archivos se escriben en el flujos de datos alternativos área de NTFS.

Respuesta Activa

Por último, OSSEC incluye la capacidad de responder cuando se detecta actividad sospechosa. Las respuestas pueden ser generados por el servidor o el agente, lo que usted especifique. Las respuestas pueden ser tan benigna como la generación de una alerta por e-mail, de ser tan proactivos como el bloqueo de una dirección IP remota de una cantidad limitada de tiempo. Hay una serie de scripts incluidos respuesta activa se puede dibujar, o usted puede fácilmente escribir el suyo propio.

Arquitectura Segura

Los autores OSSEC han hecho grandes esfuerzos para asegurar que todos los componentes en el producto. Tareas como la comprobación de integridad se llevan a cabo en el servidor, en lugar del agente, por lo que la fiabilidad de los valores hash no puede verse comprometida durante un ataque. Los procesos se ejecutan con el nivel más bajo de permisos posibles, y las diferentes cuentas se utilizan para ejecutar cada componente OSSEC. Esto significa que un compromiso de una aplicación de un OSSEC no nos llevará a un compromiso de todo el paquete. Además, la mayoría de los componentes se ejecutan dentro de una cárcel chroot por lo que su acceso al sistema es aún más restringida.

Palabras finales

Mientras OSSEC es una poderosa herramienta, es importante recordar que se trata de un HIDS y no una solución de administración de registros. OSSEC puede revisar las entradas del registro en busca de patrones sospechosos, pero sólo se guarda la información de alerta. Así, mientras que OSSEC no sustituirá a la Gestión de Seguridad de la Información (SIM) en solución, que puede sin duda que aumentar. Puede configurar fácilmente OSSEC para desviar todas las alertas que genera a un servidor central de registro .

Mientras OSSEC es un software de código abierto, Trend Micro es principalmente su desarrollo. Si necesita soporte comercial, usted puede comprar un contrato de asistencia técnica a través de ellos a un precio razonable.

Más por venir

En mi próxima entrega veremos la instalación de OSSEC y Logwatch. Después de eso, vamos a pasar a la integración de los dos juntos.

La combinación de Logwatch y OSSEC

15 de febrero 2010

Hace poco tuve un alumno me pregunta una pregunta acerca de la integración de Logwatch con OSSEC. Me sentí como que era una idea bastante compleja y aún fresco que garantiza una serie de puestos para cubrir en su totalidad. De modo que en los próximos días voy a hablar de cada una de estas herramientas, cómo integrarlos en conjunto, así como lo que la visibilidad de seguridad adicional se puede obtener una vez que se complete el proceso.

¿Qué es Logwatch?

Logwatch es una excelente herramienta de código abierto para la generación de reportes diarios de registro legible por humanos. Las entradas de registro tienden a caer en una de tres categorías:

  • Cosas que sabes que es malo
  • Cosas que sabes que es normal y puede ser ignorado
  • Todo lo demás

Se trata de que "todo lo demás", categoría en la que Logwatch realmente brilla. Por las cosas que sabemos que es malo, vamos a configurar algún tipo de sistema de alerta. Por ejemplo, podemos escribir una firma de alerta que advierte el analista de seguridad cuando una cuenta es que a fuerza bruta. Pero ¿qué pasa con los ataques que no conocen o no están seguros de lo que parecen? Esto sería un claro ejemplo de que "todo lo demás" categoría. El tráfico no es normal, pero no lo hemos visto antes de tener una firma a la espera de generar una alerta. Ya que no será capaz de atrapar el ataque en tiempo real, que tendrá que tomar durante una revisión del registro de todos los días.

Por supuesto, el problema de hacer revisiones diarias de registro es que es tedioso y lento. Quiero decir, seamos sinceros, que realmente quiere pasar sus días revisando millón más entradas de registro? Incluso si lo hiciera, ¿estás seguro que realmente captura el tráfico de la corriente?

¿Cómo funciona?

¿Qué Logwatch hace muy bien es permitirle a reorganizar sus datos en un formato que es más fácil para los seres humanos a seguir. Su verdadera fuerza es que le permite mover las cosas que entiendo de la forma (normal o para mal), de modo que las entradas del registro inesperado se destacan como un pulgar dolorido. En otras palabras, Logwatch le permite resumir las entradas de registro para que el material extraño es fácil de detectar.

Lo que realmente me gusta de Logwatch es que no se pierde nada. Muchas herramientas de revisión del registro sólo le mostrará las cosas que ha sido pre-definido como el mal. El problema que todos compartimos es que cuando algo malo, pero sucede lo inesperado, vuela justo debajo del alambre. Porque Logwatch le permite ver todo, ya no te pierdas lo inesperado.

Logwatch En Acción

Vamos a discutir cómo Logwatch funciona con el SSH servicio de servidor como un ejemplo. Las secuencias de comandos para hacer frente a SSH ya se han definido dentro de Logwatch, por lo que no es necesario hacer ningún ajuste para recibir las características que vamos a discutir.

Al revisar un archivo de registro, el Logwatch Lo primero que hace es reorganizar las entradas de registro sobre la base de sus tipos de mensaje. Por ejemplo, todos los inicios de sesión SSH con éxito se agrupan, así como los fallos de inicio de sesión de más, se negó conexiones, las cuentas bloqueadas, cuentas sin una concha adecuada, el protocolo de desajustes, etc, etc, etc Una vez que todos los mensajes de SSH se agrupan por su tipo, los datos se resumen para reducir la cantidad de información que se informa.

Por ejemplo, el valor por defecto es un resumen de los intentos fallidos de inicio de sesión de cuenta y dirección IP de origen. Por lo que una típica sección no informe de inicio podría tener este aspecto:

Intentos fallidos de las siguientes:

BSmith / contraseña desde 1.2.3.4: 637 tiempo (s)

jsmith / contraseña de 1.2.3.5: 2 hora (s)

Así que en lugar de tener que revisar las entradas de registro de 639 informes de un intento de inicio de sesión malo, tenemos toda la información pertinente resumir en tres líneas (si se incluye el título). Continúe este proceso para todos los otros mensajes de SSH, y que han reducido drásticamente la cantidad de tiempo necesario para revisar nuestros registros.

Pero lo que si sucede algo que Logwatch no está pre-programado para reconocer? Cuando una entrada de registro inesperada se encuentra, Logwatch añade una sección al final del informe de servicio llamada "entradas sin igual". Así que si vemos este título en la sección del servidor SSH, sabemos que un evento ha ocurrido es que sea anormal o inesperado para el servicio SSH. Este bien podría ser algún tipo de ataque que no nos damos cuenta es hacer las rondas.

Al centrarse en la sección de entradas sin precedentes, que puede identificar rápidamente la actividad inesperada. Como he dicho antes, esto es realmente el objetivo principal de hacer revisiones diarias de registro. Para encontrar las cosas que no esperamos que colar a través de nuestro sistema de alerta. Logwatch hace este proceso tan rápido y sin dolor como sea posible.

Resumen de características

En el ejemplo anterior he hablado de hacer revisiones diarias de registro, pero para ser honesto Logwatch es altamente personalizable. Se puede especificar cualquier rango que desea utilizar hasta un intervalo de un segundo. Por ejemplo, digamos que estoy investigando una intrusión en lugar de realizar una revisión del registro de todos los días. Podría especificar un rango como "02/14/2010 17:05:00 para esa hora" para centrarse en el derecho a la información que me interesa. También puede centrarse en un archivo de registro o servicio específico.

El nivel de detalle del informe también se puede personalizar. Normalmente, cuando usted se ocupa de la seguridad que tenga el hábito de querer siempre el mayor nivel de detalle de la información. Para ser honesto, con Logwatch un alto nivel de detalle es probablemente más de lo que se necesita. Personalmente me suelen seguir con "medicina" para el medio y que funciona muy bien. También puede especificar el nivel de información como de "bajo" o "alto" o usar un rango numérico de 0 a 10 para un mayor nivel de granularidad (bajo = 0, med = 5, alto = 10).

Logwatch se puede ejecutar de forma automática o como un proceso manual. Normalmente, usted tendrá que configurarlo para que se ejecute automáticamente cada día y un resumen de un solo día de las entradas del registro. Si alguna vez necesidad de ampliar o centrar el informe, que puede siempre ejecutar Logwatch de la línea de comandos y especificar exactamente lo que quiere ver. A continuación, puede utilizar el "de ahorro" para especificar un nombre de informe y el directorio de almacenamiento.

Más por venir

Lo anterior debería darle una buena idea en cuanto a las características Logwatch puede llevar a la mesa. En el próximo post hablaré OSSEC en el mismo nivel de detalle. Después de eso, voy a entrar en cómo instalar cada herramienta, así como la forma de integrar entre sí.

Día 2 de Keynote

12 de enero 2010

Gracias a todos los que salieron a la codificación / DLP cumbre. Aquí están las diapositivas de mi discurso el día 2.

cifrado-DLP-principal

ICMPv6 Challenge - Respuestas

13 de diciembre 2009

El desafío era: "Escribe un filtro de tcpdump / WinDump que la captura de paquetes ICMPv6 escucha de multidifusión." Tengo una extensa escribir sobre lo que hace que la respuesta tan compleja. Si conoces a IPv6 y sólo quiere la respuesta, pase a la final.

En primer lugar, algunos antecedentes

Steinar hizo algunos comentarios a los posts anteriores y fue del 100% en el buen camino. Si les leí y pensé "Wow, eso suena muy complicado", a entender el alcance del problema también. :)

Protocolo vs. Campo de cabecera siguiente

Con IPv4 teníamos el campo de opciones. Esto podría hacer que la cabecera IP para crecer a partir de 20 bytes a tan grande como 60 bytes de tamaño. Con IPv6, ya no hay un campo de opciones y la cabecera es de 40 bytes de tamaño. Cuando se requieren opciones, utilizamos las cabeceras de extensión para identificarlos. Esto arroja una bola curva de interés en nosotros, porque con el campo de protocolo IPv4 (byte 9) que (casi) siempre identifican el transporte de nivel superior (TCP, UDP, etc.) Con IPv6 el campo de cabecera siguiente (byte 6) puede identificar la capa de transporte superior, o puede identificar una cabecera de extensión que incluirá un número de opciones.

Aquí está una lista de algunas cabeceras de extensión IPv6 que puede encontrar, así como el RFC que los definen:

Opción # Opción Descripción RFC
0 Hop-by-Hop 2460
6 TCP 793
17 UDP 768
43 Enrutamiento 5095
44 Fragmentación 2460
50 ESP 4303
51 AH 4302
58 ICMPv6 4443
59 No la siguiente cabecera 2460
60 Opciones de destino 2460
135 Movilidad 3775

IPv6 no limita el número de cabeceras de extensión se pueden utilizar en una sola packet.There Sin embargo, es una publicación "orden recomendado" en cuanto a cómo los encabezados debe ser expuesto. El orden es el siguiente:

  • Cabecera IPv6
  • Hop-by-Hop Opciones
  • Routing Header
  • Fragmento de cabecera
  • AH
  • ESP
  • Opciones de destino
  • Movilidad encabezado
  • TCP/UDP/ICMPv6

Tenga en cuenta esta lista es "recomendable" pero no es obligatorio. Un host IPv6 debe ser capaz de procesar los encabezados de lo que sea orden en que fueron recibidos. Esto significa que usted probablemente encontrará siguientes proveedores de esta lista, pero no los atacantes. Personalmente he visto los dispositivos comienzan a actuar muy extraño cuando te metes con el fin de cabecera. De hecho me he encontrado a través de un poco de "código compatibles con IPv6", que no puede hacer frente si el orden de preferencia no se utiliza.

Persiguiendo a la cabecera del protocolo

Así que con IPv6 podemos tener varias cabeceras detrás de la cabecera IPv6. Si esto suena como un nuevo concepto, que en realidad no es. De hecho lo que has trabajado con él ya. Al implementar IPSec los dos protocolos de seguridad posibles son ESP y AH. Estos fueron tomados en realidad de IPv6 y masajes para trabajar en IPv4. AH y ESP incluye un campo de cabecera junto a identificar qué tipo de paquete que se protecting.This se conoce como encadenamiento de protocolo, ya que efectivamente tienen varios encabezados sentado detrás de la cabecera del protocolo de capa 3.

Así que para averiguar lo que el transporte de nivel superior (TCP, UDP, etc) se está utilizando, puede que tenga que buscar a través de varias cabeceras antes de encontrar la respuesta. Esto se conoce como "perseguir la cabecera", y tcpdump / Windump nos dan una opción de filtro para realizar esta tarea. Es posible que fimiliar con el filtro proto. En el mundo IPv4, si yo digo:

tcp ip proto

Que el filtro se lee "cheque de 9 bytes de la cabecera IPv4 y si el valor es igual a 6 (valor de protocolo de TCP), partido en el paquete". Este filtro no es tan eficaz en el mundo IPv6, por supuesto, porque de 6 bytes de la cabecera IPv6 podría identificar la capa de transporte superior, o que sólo puede identificar una cabecera de extensión opcional que se utiliza. Para resolver este problema, el filtro protochain se introdujo. Por escrito:

ip6 protochain tcp

Lee como "Check 6 bytes de la cabecera IPv6 para ver si el valor es igual a 6. Si en lugar de encontrar un valor que identifica una cabecera de extensión opcional, verificación de campo en el encabezado de extensión de la siguiente cabecera, por un valor de 6. Si usted encuentra las cabeceras de extensión opcionales más, repetir la última prueba hasta encontrar la cabecera de la última extensión ".

Muy simple para escribir en Inglés, pero esto es una pesadilla para implementar en el código. La mayoría de las cabeceras de extensión opcionales son de longitud variable que sólo se suma a la complejidad. He hecho algunas pruebas con Scapy y usted puede ver realmente la diferencia en el rendimiento cuando se invoca protochain. De hecho, usted probablemente podría hacer un buen trabajo de la administración un IDS / IPS por lo que obligó a procesar una gran cantidad de cabeceras de extensión inútil.

Escribir nuestro filtro

Así que nuestro primer problema en el filtro de la escritura desafío es que la cabecera ICMPv6 puede no aparecer inmediatamente después de la cabecera IPv6. Tenemos que mirar hacia fuera para las cabeceras de extensión opcionales. De hecho, RFC 2710: "Todos los mensajes MLD se describe en este documento se envían con una dirección de origen de enlace local IPv6, un límite de saltos IPv6 de 1, y una opción Router Alert IPv6 [RTR-ALERT] en un Hop-by-Hop Opciones de cabecera. "Esto significa que nuestro paquete de oyente multicast es necesario tener una extensión de la cabecera Hop-by-Hop con el conjunto de opción Router Alert. Con esto en mente, nuestro primer cheque debe ser:

ip6 protochain icmp6

Para asegurar que sólo se busca en paquetes ICMPv6. Ahora es sólo una cuestión de control para ver si el tipo de campo (byte 0) está establecido en 130 (consulta de escucha de multidifusión) o 131 (Informe de escucha de multidifusión). Esto nos lleva a nuestro segundo problema sin embargo. En el mundo IPv4 puedo hacer:

icmp [0] = <tipo valor de interest>

Si intenta esto con icmp6 me sale:

[Root @ Fubar ~] # tcpdump-nn icmp6 [0] = 130
tcpdump: IPv6 protocolo de capa superior no es compatible con proto [x]

En otras palabras, no pueden utilizar las compensaciones con icmp6 para buscar valores específicos. Windump tcpdump y se anuncian como compatibles con IPv6, pero no esperes conseguir la misma funcionalidad que tiene con IPv4. Puaj!

Entonces, ¿qué hacemos? Vamos a tener que recurrir a la referencia al valor de un ip6 offset. En otras palabras, vamos a tener que medir a través de la cabecera IPv6, a través de la necesaria Hop-by-Hop cabecera, y en la cabecera ICMPv6 para ver si el tipo de campo se encuentra a 130 o 131. Algunas cosas a tener en cuenta:

  • Cabecera IPv6 es de 40 bytes de tamaño
  • Hop-by-Hop cabecera es variable, pero el grupo 4 bytes con Router Alert
  • El tipo de campo es de 0 bytes en la cabecera ICMPv6

Así que aquí es lo que nos encontramos con:

ip6 protochain icmp6 y (ip6 [44] = 130 o ip6 [44] = 131)

¡Menos mal! Por fin lo tengo! O que hemos hecho?

Q: ¿Qué pasa si el paquete tiene más encabezados de extensión?

R: Nuestro filtro no funcionará.

Q: ¿Qué pasa si la cabecera Hop-by-Hop tiene más opciones de conjunto de Alerta Router?

R: Nuestro filtro no funcionará.

Q: ¿Se puede arreglar estos dos problemas?

R: No hasta tcpdump / Windump añade filtrado IF / THEN apoyo bucle.

Así que si queremos capturar el tráfico de ML normal, el filtro anterior no tendrán ningún problema. Sin embargo, si queremos asegurar que la captura astucia atacante, así, el filtro no va a volar.

¿Qué pasa si se intenta algo como esto:

tcpdump-nn-s 1500-x ip6 protochain icmp6 | grep-i multicast> multicast.txt

y luego sólo tiene que utilizar la herramienta text2cap Wireshark para convertirlo a formato Libpcap? El problema aquí es que sólo obtendrá la información de la cabecera. Grep coincida con la línea de resumen que contiene la palabra "Multicast", pero luego saltar todos los hexagonal por debajo de lo que es el contenido real del paquete.

Así que la respuesta final es: "No se puede obtener theyâ de Haya de la Torre" ;)

¿Y qué si usted realmente necesita para poder ver este tráfico? Hasta que el soporte para IPv6 madura, el único método 100% es para agarrar todo el tráfico ICMPv6 y luego manualmente ordenar a través de ella.

Al menos esa es mi opinión al respecto. Si alguien puede realmente llegar a una solución de trabajo del 100%, me encantaría escucharla.

ICMPv6 Challenge - Sugerencias

09 de diciembre 2009

OK, aquí va una pista para señalarle en la dirección correcta.

El desafío era: "Escribe un filtro de tcpdump / WinDump que la captura de paquetes ICMPv6 Multicast Listener".

Suena fácil, ¿verdad?

Con un poco de ayuda de Google verá que el "tipo" de escucha de multidifusión es de 130, y el tipo de campo ICMPv6 es el primer byte de la cabecera. Así que esto debería ser tan fácil como:

tcpdump-nn-p-v-s 0 icmp6 [0] = 130

Sin embargo, si ejecuta el comando que pondremos en contacto:

tcpdump: IPv6 protocolo de capa superior no es compatible con proto [x]

En otras palabras, puede utilizar "icmp6" para ver todos los paquetes ICMPv6, pero no se puede utilizar para filtrar en cualquiera de los campos de la cabecera ICMPv6.

Así que necesitamos un "Plan B". Descubrir el plan B y que ha resuelto el problema. :)

ICMPv6 Desafío

04 de diciembre 2009

Sobre la base del desafío IPv6 desde la última vez, tengo un uno nuevo para usted: Escribir un filtro de tcpdump / WinDump que la captura de paquetes ICMPv6 escucha de multidifusión.

Eso es todo! Muy sencillo, ¿verdad? ;)

Reto de fin de semana - Respuestas

03 de diciembre 2009

Así su ahora Jueves, así que pensé es el momento de publicar las respuestas a desafiar la semana pasada. ;)

En primer lugar, ¿por qué te importa acerca de IPv6, si usted no ha comenzado su despliegue? Me sentí de la misma manera hasta que encontré IPv6 se utiliza como un canal de comunicación encubierta dentro de la red de un cliente. Los datos fueron luego ser empujado a Internet a través de Teredo. Si usted no está familiarizado con la técnica, Scott Hogg tiene algunos puestos excelentes sobre el tema.

Así que incluso si usted no está utilizando IPv6, vale la pena empezar a cortar la cura de la tecnología, así como la observación de que en su red local.

A que revisen, el desafío era:

Escribir un filtro de tcpdump o Windump que capturar todo el tráfico con una dirección IPv6 de origen de 2001: db8:: 10 a 2001: db8:: 20.

Hay un par de advertencias por escrito con este filtro. El que los primeros tratados en el post anterior. El último, que yo sabía, pero nunca pensé que realmente era un problema hasta que comenzó a trabajar con IPv6 muy fuerte, es que tcpdump / Windump sólo le permitirá utilizar 1, 2 o 4 máscaras de bytes. Así que, aunque nos gustaría resolver esto con una declaración inicial de filtro de "ip6 [08:14] =", no podemos, porque estamos limitados a 4 bytes. De hecho, hay una manera de evitar esto, pero voy a volver a ella.

Así que aquí está el filtro que he estado trabajando con:

(Ip6 [08:04] = 0x20010db8 y ip6 [12:04] = 0 y ip6 [16:04] = 0 y (ip6 [20:04]> = 0 × 0010 y ip6 [20:04] <= 0050 ))

Poco largo, pero funciona. Isabel se le ocurrió una solución que es mucho más elegante que la mía:

src neto 2001: db8:: / 122 y ip6 [23]> = 0 × 10 & & ip6 [23] <= 0 × 20

Por lo tanto, comenzando con el formato libpcap, ella es capaz de combinar mis tres primeros estados en uno solo. De no ser una reina de tamaño, pero que hace que su solución es mucho más corta que la mía. En este caso, que es una buena cosa. :)

Eso es todo. Voy a publicar otro de los desafíos de tipo IPv6 mañana.