ROUTE target en IPTables

Se trata de un módulo no oficial para IPTables que hace más fácil y centralizada la gestión de rutas a host en un sistema linux. Una vez configurado nos permitirá reglas del tipo:

# iptables -A PREROUTING -t mangle -d 193.110.10.58 -j ROUTE –gw 10.0.0.257

Para echarlo a funcionar tendremos que parchear el kernel con patch-o-matic. Como los sources de Debian utilizan otra numeración al aplicar el parche nos fallará. La idea es bajarse los sources de la misma versión de iptables que nos ofrece debian y utilizando para el parcheo.

Instalamos las fuentes oficiales de Debian desde apt-get, que hará que sean más fáciles de mantener que las que nos bajemos de kernel.org, y alguna herramienta de compilación:

# apt-get install linux-source-2.6.18 gcc make ncurses-dev
# cd /usr/src
# tar -xjpf linux-source-2.6.18.tar.bz2
# ln -s linux-source-2.6.18 linux

Bajamos y descomprimimos las fuentes de IPTables:

# wget iptables-1.3.6.tar.bz2
# tar -xjpf iptables-1.3.6.tar.bz2

Bajamos y descomprimimos patch-o-matic:

# wget patch-o-matic-ng-20070728.tar.bz2
# tar -xjpf patch-o-matic-ng-20070728.tar.bz2
# cd /usr/src/patch-o-matic-ng-20070728

Si, es cierto, no es la versión más nueva que existe, pero el que las más nuevas no incluyen el módulo ROUTE. Es sospechoso y me preocupa algo (¿Por qué lo habrán quitado?), pero como ejemplo sirve.

Aplicamos el parche ROUTE indicandole que los sources de IPTables están en determinado directorio.

# IPTABLES_DIR=/usr/src/iptables-1.3.6 ./runme ROUTE

Ahora contestamos y. Nos dirá que el parche ha sido aplicado satisfactoriamente y que ahora es necesario compilar el kernel y los módulos.

Para ahorrar tiempo y desplegarlo más rápido en diferentes máquinas haremos un paquete deb del kernel.

Copiamos la antigua configuración del kernel precompilado de Debian

# cd /usr/src/linux
# make oldconfig

Instalamos las herramientas necesarias:

# apt-get install kernel-package

Desinstalamos el viejo kernel de Debian:

# apt-get remove –purge linux-image-2.6.18-5-686

Limpiamos el directorio de compilaciones previas si las hubiese:

# make-kpkg clean

Ahora compilamos de dos formas. La primera si necesitamos un paquete con los headers para algun driver como el de nVidia y demás. El segundo es el que he utilizado y servirá en la mayoría de los casos.

# make-kpkg –initrd kernel_image kernel_headers

o

# make-kpkg –initrd kernel_image

Podemos ahora desplegar este kernel precompilado por todas las debian que queramos utilizando dpkg:

# dpkg -i Kernel.deb

Como dije antes el target ROUTE parece que no ha sido incluido en versiones más nuevas de patch-o-matic. Quizá por estar descontinuado, fallar o por alguna otra razón. La verdad que no conozco la causa, pero lo que se puede hacer es utilizar iproute e iptables, para marcar los paquetes y darles salida por la puerta de enlace deseada.

Un saludo.

Escrito por Gura 12.Nov.07 Debian, GNU/Linux, Sistemas Leer más Comentarios (6)

Comparando SELinux con OpenBSD…

Estaba el otro día leyendo los feeds mientras veía los entrenamientos de F1 del gran premio de China y leí un título interesante: SELinux vs. OpenBSD se titulaba el artículo. Coño, a ver que cuentan…

Pues quieren comparar SELinux que es lo que es con OpenBSD que también es lo que es. Los argumentos son de lo mejorcito:

Os dejo un artículo que me gusta mucho ya que explica muy bien como funciona PaX (Parte de la suite GRSecurity para Linux, que aunque no tenga nada que ver con SELinux, es un elemento más en la fortificación de un sistemas Linux) y W^X de OpenBSD.

Vamos, que en mi opinión no es solamente qué se usa, sino cómo se usa y como de implementa, y en mi opinión Linux ofrece más herramientas para fortificar el sistema que un sistema OpenBSD y quien no quiera ver más allá de la calidad del código en mi opinión no está haciendo una buena evaluación de todo el rol. OpenBSD todos sabemos que tiene fallos. Pocos, pero ahí están y sus paquetes tambien tienen fallos, y los paquetes no son parte del core, luego no son auditados, luego la misma cagada que comete el devel de determinada aplicación de lo que sea en Linux, puede cometerlo en el paquete de OpenBSD (Si lo incluye, claro, y si tiene esa misma versión). Y digo yo… de que sirve tener un sistema base con un muy buen código si luego tu aplicación que escupe html o correo es vulnerable? Creo que es ahí donde entra PaX, SELinux, RSBAC, etc intentando que la explotación de la vulnerabilidad no sea tan fácil de llevar a cabo…

Esa es mi opinión. Un saludo.

Escrito por Gura 05.Nov.07 *BSD, GNU/Linux, OpenBSD, Sistemas, Software Leer más Comentarios (2)

Listas de control de acceso en Linux

Hace tiempo que tenía pensado escribir algo al respecto y hoy ha sido el día que me sentía con ganas. Hay veces que me resulta incómodo manejar un sistema linux con multiples usuarios en lo que a permisos de fichero se refiere. En resumidas cuentas, el método UGO (User Group Other) está bien si tenemos un sistema monousuario, pero cuando tienes varios usuarios se hace insostenible, además de degradar la seguridad. Explicaré un poco, sin extenderme, como las ACL pueden solucionarnos el día a día, o al menos hacernosla más cómoda.

Comenzaremos preparando el sistema de ficheros, que en mi caso es ext3 (Todo sistema de ficheros que soporte ACL servirá). Necesitaremos meter en el fichero /etc/fstab la opción acl y luego remontar la partición:

# mount -o remount /dev/hdx

Continuaremos con las ACL sobre el directorio /var/www, por ejemplo. Los ficheros que contiene ya han sido creados con anterioridad, por lo que tendremos que aplicar la ACL recursivamente, dándole al usuario www-data permisos de lectura y ejecución sobre los ficheros/directorios recursivamente.

# setfacl -R -m u:www-data:r-x /var/www

Esto es como utilizar chmod, por lo que estamos en las mismas. Lo bonito, lo que más me gusta, son las Default ACL, que podemos decir que es una especie de heredar permisos del directorio padre. Imprescindibles. La idea será que todo elemento nuevo creado dentro de /var/www herede determinados permisos. Las ACL por defecto solamente se pueden aplicar a directorios, y si intentáis aplicársela a un fichero os mandará a tomar por el saco sutilmente.

# setfacl -d -m u:www-data:r-x /var/www

Lo que acabamos de hacer está bien si comenzamos a crear el arbol de directorios, pero imaginemos que tenemos el directorio /var/www/web1/upload. Ese directorio no se verá afectado por la ACL por defecto, por lo que haremos una cosilla, buscaremos todos los directorios y le aplicaremos la ACL:

# find /var/www -type d -exec setfacl -d -m u:www-data:r-x {} ;

Ahora vamos a comprobar que las ACL se han aplicado bien, algo muy importante. El comando es getfacl y su uso es bien sencillo para lo que vamos a hacer:

# getfacl /var/www
getfacl: Removing leading “/” from absolute path names
# file: var/www
# owner: root
# group: root
user::rwx
user:www-data:r-x
group::r-x
mask::r-x
other::r-x
default:user::rwx
default:user:www-data:r-x
default:group::r-x
default:mask::r-x
default:other::r-x

Vaya! other tiene permiso de lectura y ejecución en ese directorio. No me gusta eso…

# setfacl -R -m other::— /var/www
# find /var/www -type d -exec setfacl -d -m other::— {} ;

Ahora queda utilizar getfacl como hicimos antes para comprobar que los permisos son correctos.

Al igual que hemos utilizado other:: podríamos utilizar user:: o group::, que son elementos especiales.

Antes he puesto un ejemplo en el que aplicaba determinados permisos a un usuario sobre un fichero/directorio. Para hacer lo mismo pero con un grupo, se utilizará:

# setfacl -m g:NombreGrupo:permisos /var/www

Hasta ahora hemos aplicado nuevos permisos, pero por si existe la duda, modificarlos es idéntico, utilizando el flag -m y modificando el penúltimo elemento. Supongamos que queremos que el usuario www-data tenga permisos de escritura en determinado directorio:

# setfacl -R -m u:www-data:rwx /var/www/web1/upload

Ese directorio y todos los existentes podrán ser modificados por ese usuario, pero… ¿Y los ficheros nuevos? No, podrán ser creados, pero no modificados posteriormente, pues no hemos establecido una ACL por defecto para ese usuario con permisos de escritura para los ficheros/directorios nuevos que se vayan a crear en ese directorio, o si existe, puede que sea incorrecta, por lo que lo estableceremos como necesitemos:

# find /var/www/web1/upload -type d -exec setfacl -d -m u:www-data:rwx {} ;

También puede ocurrir algo muy común, que nos equivoquemos e introdujamos un usuario/grupo incorrecto en la ACL, ensuciando esta. Pana ACL usaremos el flag -x.

# setfacl -x u:www-data /directorio/secreto
# setfacl -d -x u:www-data /directorio/secreto

Existen otras opciones interesantes de setfacl como eliminar solamente las ACL por defecto con el flag -k o eliminar todas las ACL normales y por defecto con el flag -b.

Me queda decir que al igual que podéis establecer los permisos con letras, lo podéis hacer en octal, de 0 a 7:

# setfacl -m u:www-data:5 /elemento2

Tenéis algunos ejemplos interesantes que no he ilustrado como copiar las ACL de un elemento a otro en el manual, man setfacl.

Escrito por Gura 30.Oct.07 GNU/Linux, Sistemas Leer más Comentarios (8)

Borrado seguro en Mac OS X

Cuando me vine a Madrid tuve que coger lo más importante de mi ordenador de sobremesa y meterlo a mis discos USB y mi portátil. Por las prisas decidí crear unos volúmenes RAR y copiarlos por SSH al portátil la noche antes. En el portátil utilizo FileVault de Mac OS X para el cifrado de mi directorio personal. Por otro lado los datos no sensibles están en otra partición y lo sensible están en imágenes DMG cifradas con AES-128. Pues un despiste hizo que descomprimiese los volúmenes RAR en un directorio normal. Luego los copie a la unidad cifrada y busqué una utilidad de borrado seguro para Mac OS X. Buscando un poco por la documentación oficial di con algo mejor, la utilidad de discos de Mac OS X, con lo que tendría una aplicación menos instalada (Odio tener miles de aplicaciones instaladas. Si te sirve lo que el sistema integra ¿Para qué instalar otra?).

Para utilizar el borrado de Mac OS X puedes utilizar el Vaciar papelera de forma segura o eliminar los datos como de costumbre y luego utilizar la Utilidad de discos para borrar el espacio libre con ceros. Basta con ir a dicha utilidad, seleccionar la partición que deseamos limpiar, ir a la pestaña Borrar y pulsar en Borrar espacio libre. Tenemos varias opciones, de 1, 7 y 35 pasos. Al Pulsar en Borrar espacio libre evidentemente reescribirá el espacio libre con ceros, sin perder datos, claro.

Si por el contrario quieres borrar la partición entera (léase formatear) con la pertinente pérdida de datos, pinchando en Opciones de seguridad escogemos el número de pasos, aceptamos y luego pinchamos en Borrar.

Quizá en otro post me anime a hablar algo acerca de FileVault, como funciona y demás, ya que no es la primera vez que leo que Es malo, desactívalo y no vale para nada. Vamos, lo de siempre.

Escrito por Gura 22.Oct.07 Mac OS, Sistemas, Software Leer más Comentarios (0)

Abierto el registro para el Microsoft Security Day

No quiero extenderme mucho, solamente invitaros a que visitéis este post, y si os parece interesante y factible, que os registréis en el Microsoft Security Day. Yo ya me he registrado y Churros también, aunque él como no cambien algo las cosas tendrá que asistir al IT Meeting de la empresa, esta vez celebrado en Bélgica, por lo que no podrá asistir.

Para ir haciendo boca, esta es una demo de un Security Day:

Escrito por Gura 09.Oct.07 Microsoft Leer más Comentarios (1)

Los monjes de “Da SBS Code”

Entre nosotros tenemos a los monjes del final del vídeo promocional de SBS 2003 R2. La foto reveladora:

Escrito por Gura 08.Oct.07 Microsoft, lost+found Leer más Comentarios (0)

Una jornada productiva

Hoy que ya estoy en plenas facultades me dispongo a escribir el artículo.

Hace poco menos de un mes me apunté a otra de las conferencias que celebraba Microsoft, Informática64 y otras compañías del sector IT. A Chema se le ocurrió hacer una cena la noche antes con los ponentes, ya que muchos ponentes no son de Madrid, y el echo de hacer una cena y poder reunirlos a todos es algo que no se verá en mucho tiempo.

La cena fue en Casa Mingo, un restaurante asturiano cerca de Príncipe Pío. Eramos cosa de 20-22 personas. Allí tuve el placer de conocer a mi tocayo Ricardo Varela (a.k.a. Chico maravillas) y a José Parada (a.k.a. Padre Parada), así como Dani Kachakil, RomanSoft, Mandingo, Andrés Tarasco, Brero, Miguel, Aramosf, Knovas y alguien más que como siempre, se me olvida. Una vez cenamos fuimos a tomar algo a una cervecería Gambrinus cercana al restaurante, luego a una discoteca llamada 35 milimetros también relativamente cerca y finalmente fuimos a casa de uno de los asistentes donde entre más copas me enseñaban un código de intercepción SSL (Disponiendo de la clave privada, claro). Muy WhiteHat a la vez de instructivo.

Al final me vine a eso de las 5 para casa y me levanté a las 6 y media, con dos cojones. Hacía mucho que no me sentía así… creo que desde la última Euskal Encounter a la que asistí.

A las 8 de la mañana quedé con Churros para asistir a la charla, cogimos la línea C-4 y seguimos el itinerario de la otra vez. La gente fue llegando y al rato se abrieron las puertas. Una vez nos dieron los folletos de S21Sec entramos y cogimos un sitio curioso.

La jornada comenzó con Dani Kachakil y Pedro Laguna, con un tema algo masticado quizá, ya que en la anterior charla que hubo en Getafe el tema principal era la inyección SQL, inyección SQL a ciegas, basada en temporizadores, herramientas de automatización. Contenido interesante pero en mi caso ya visto, aunque no viene recordar.

Acto seguido salió Alberto Moro (a.k.a. Mandingo) junto con Román Medina (a.k.a. RomanSoft). El tema de la charla fue Como realizar un test de intrusión a una aplicación web, muy interesante, tocando muchos puntos clave. A Mandingo se le notaba más nervioso a la vez de necesitar más tiempo y estar menos apurado para dar con soltura la charla.

Había llegado el momento cumbre (¿La gente va solo por el cattering no?). Teníamos hambre y sed, y algunos en especial necesitábamos hidratarnos, por lo que se abrió el cattering con lo de siempre: Mini-napolitanas de crema con chocolate, palmeritas, pastas de té, café, zumo de naranja, etc. En este evento se notaba la mayor asistencia de gente, tanto en las charlas, que no quedaba un puñetero sitio libre, como en el cattering que estábamos a tope en la sala. Entre conversación y conversación un zumito, lo que hizo que el tiempo asignado para el tentempié se pasase volando.

Vuelta al sitio. Ahora aparecía en escena Andrés Tarasco de SIA. Personalmente fue la que más me gustó después de la charla del José Parada y de Chema. Me gusto mucho como llevó la charla, la explicación… muy buen locutor a la vez de técnico y conciso. A ver si le volvemos a ver pronto por aquí.

Y para cerrar la jornada José Parada nos dio unas nociones básicas de qué era LDAP, un directorio, un servicio de directorio, etc. Acto seguido Chema comenzó a explicarnos algo que yo desconocía por completo, Blind LDAP Injection a la vez que utilizaba el Reto hacking 4 y algunos servicios de directorio públicos a modo de ejemplo. Os recomiendo leer algo más a fondo acerca de ello, ya que está muy, muy interesante. Esta fue con diferencia la más interesante pues era algo totalmente nuevo para mi.

Bueno, ha sido una jornada productiva, además de estar invitados Churros y yo a visitar Microsoft Ibérica, algo que puede llegar a ser muy interesante.

Al margen de las charlas, Chema ha publicado en su blog unos artículos acerca de la interceptación de los usuarios y contraseñas de LDAP y como mitigarlo, así como otro artículo de LDAP SQL Injection y alguna foto del evento. Los vídeos y diapositivas de las charlas no se dónde lo colgarán. Se que los asistentes recibiremos un certificado de asistencia así como un link a las ppt y que ponentes como Mandingo y RomanSoft pondrán las diapositivas en su web.

Un saludo.

Escrito por Gura 05.Oct.07 Microsoft, Sistemas Leer más Comentarios (7)

Otra charla más: Asegurate de que está seguro

Que sería de nosotros sin Chemita, que nos tiene al día de las charlas que se celebran por aquí. El día 4 de Octubre se celebrará otra en Getafe donde además contaremos con José Parada de Microsoft. El Churros y yo ya nos hemos pedido el día libre para asistir, que la otra a la que fuimos nos dejó muy buen sabor de boca. Si estás interesado en asistir o siemplemenente ver el temario visita la web de Informática64.

Bueno, aunque aún quedan días… os veo allí.

Escrito por Gura 13.Sep.07 Microsoft, lost+found Leer más Comentarios (3)

El dilema de contratar un VPS

Joder, vaya dilema esto de buscar servidores VPS económicos y que cumplan con las necesidades de uno mismo.

Primero, que sea barato. Eso es fácil, ya que desde 20 dólares tienes VPS básico y por 40 dólares algo con 512 de RAM, 300 GB de tráfico mensual, etc.

Segundo, qué tecnología utilizar. Aquí hay de todo, desde UML (User Mode Linux) a Xen Enterprise, pasando con OpenVZ, Virtuozzo, etc. Cada uno con sus ventajas y desventajas, aunque quizá el que mejor me convenga sea algo con Xen Enterprise.

Una vez escogida la tecnología de virtualización me voy a fijar en algo más importante, que quizá tendría que haber mirado antes, la empresa. No es lo mismo una empresa con 10 años de experiencia a la espalda, que una que lleva un año en el mercado.

Ahora vienen los límites… En ningún VPS que yo conozca puedes cambiar el kernel, luego olvídate de meter tu kernel compilado con soporte GRSecurity y PaX. O hacerlo monolítico. Es una limitación que no me gusta tener, pero creo que no me queda otra que pasar por el aro. Además, suelen crearte una partición raíz y pista, con limitaciones como no poder particionar a tu gusto y por lo tanto no poder montar determinadas particiones con nodev, nosuid, noexec, etc, o desplegar DRDB sobre determinados volúmenes. Bueno, siempre podemos crear un fichero, darle formato y montarlo con la opción loop de mount, pero perderemos rendimiento solo y cuando la carga de la máquina sea muy alta en I/O.

Una vez conozco algunas de las limitaciones de los VPS me doy cuenta de los pros y los contras:

Los pros

Los contras

En resumidas cuentas, esto quedará en casa por ahora, aunque creo que un mes de estos migraré todo al VPS.

En lo que a ofertas se refiere, estoy ojeando SliceHost y NetActuate. En principio creo que me inclinaré por el plan de 512 de RAM de NetActuate. La empresa me ha convencido y podemos ver donde tienen alojado todo en una presentación en flash. El CRG Market Post Tower da la impresión de ser como el CPD de Banco Banesto, pero en EEUU.

Bueno, espero que todo aguante hasta entonces.

Escrito por Gura 12.Sep.07 Hardware, Servidor, Sistemas, Software Leer más Comentarios (4)

Qué curioso

Estos días ando automatizando backups con Norton Ghost 12. Está muy bien tener las backups hechas, pero si no probamos la restauración tras un desastre no sirve para nada. Pues siguiendo el manual de Norton Ghost 12, arranqué con el CD y vi el Windows is loading files… típico de una instalación de Windows Vista. En este momento pensé: Coño, ¿Me habré equivocado de ISO?. Pues no xD. Luego sale la barrita de progreso del arranque y finalmente un panel donde aceptamos una licencia de Symantec, nos cuenta que lo de Microsoft es de Microsoft y lo de Google de Google (Google Desktop Search) y bla bla. Una vez aceptamos carga la utilidad de recuperación de Norton Ghost con todo lo necesario como por ejemplo:

En mi caso las backup se almacenan en red, por lo que tendremos que asignar una IP al host y luego, montar un recurso compartido como unidad Z, por ejemplo. Una vez tengamos el recurso montado mediante unidad de red podemos utilizar la herramienta de recuperación para recuperar ficheros o el equipo entero sin problema.

En fin, tenemos la ventaja de que Vista es el SO Windows que contiene más drivers hasta el momento, aunque por contrapartida no podemos utilizar este CD de rescate en máquinas muy viejas. De todos modos, ya que el formato es v2i, intentaré con una versión antigua hacer una restauración, a ver que tal.

Escrito por Gura 22.Aug.07 Microsoft, Sistemas, Software Leer más Comentarios (10)




Todo el contenido de este blog se ha publicado bajo una Licencia Creative Commons.