10 de November 2008

Filezilla y los zelotes

Hace poco monté un servidor ftp seguro con vsftpd. Es un proceso sencillo, un servidor muy común y con muy buena fama, y no tuve ningún problema. Salvo que mi cuñado decía que no veía nada en el servidor. Yo miraba los logs, veía que él entraba, que subía ficheros sin problemas, y no entendía que podía pasar. Él insistía en que no veía nada en el servidor, y el asunto quedó en el aire.

Hasta este fin de semana. Este fin de semana, estaba configurando el acceso al ftps desde otra máquina, y me encontré con el mismo problema de mi cuñado. El cliente elegido, Filezilla, entraba perfectamente, se logaba y hasta subía ficheros y cambiaba de directorio sin problemas. Pero fallaba cada vez que hacía un listado. Esta vez con la información añadida de que lo que había hecho en esa máquina era actualizar un Filezilla que si funcionaba.

Un poco de google dió con el problema. Este verano, la gente de Filezilla descubrió un error en la manera en la que casi todos los servidores ftp (incluido el propio filezilla como servidor) implementaban las conexiones SSL y TSL, que, al parecer, provocaba la posibilidad de un ataque MITM.

La respuesta de Filezilla fue un poco… exagerada. Es cierto que es teóricamente un vector de ataque importante. Es cierto que rompe la integridad de la comunicación ftps. Pero aún así, bloquear el acceso a todos estos servidores (vsftpd, ProFTPD, Xlight FTP Server, SurgeFTP…), de forma unilateral, implica pensar poco en el usuario final. Hace poco tuvimos el problema del ssh de debian, y la solución implicó tanto a clientes como a servidores. No se dejó colgado a nadie, para evitar este tipo de problemas.

Sin embargo, Filezilla actuó por su cuenta, y sin informar a ningún servidor. Parcheó su cliente, su servidor, provocó las iras de los usuarios (y las de mi cuñado), y se echó a dormir. Para ser uno de los clientes ftp/s mas populares del mercado, demostró que le importaban muy poco los usuarios. Incluso cuando, pese al nivel de belicosidad del hilo se sugiere, con mucha educacion, y apoyado por el segundo usuario mas activo del foro, se sugiere lo mas lógico, un warning grande y feo avisando de que el servidor puede ser inseguro; la respuesta del ¿único? desarrollador de Filezilla no sólo es negativa, sino desagradable y sin sentido.

Dada la coyuntura específica de vsftpd, no tenía dudas de que se había parcheado rápidamente. Así fue, incluso con una entrada en el blog del desarrollador explicando el problema en detalle. Pero mi sorpresa es que no estaba arreglado en etch. Ni en backports. Ni en sid. ¡Ni en experimental! La gente de debian se había dormido en sus laureles esta vez, pese a que hay dos bugs pidiendo la actualización desde hace meses.

Deprimido por el hecho de que ubuntu, fedora y Red Hat, entre otros, habían parcheado no sólo en una sino en dos releases su vsftpd, (ubuntu 8.04 y 8.10, Fedora 8 y 9, RHEL 4 y 5), mientras que debian no había hecho nada, me puse a compilar y empaquetar. Por si le sirve a alguien mas, aquí dejo el vsftpd 2.0.7 empaquetado para etch. Lleva los mismos parches que se aplicaban en el 2.0.5, que es la versión antigua, modificados para reflejar los cambios en el código. Lo único que garantizo es que funciona con Filezilla >=3.1.3.

vsftpd_2.0.7_i386.deb

No Comments yet »

18 de August 2008

Soporte mssql para php en debian

Debian, por defecto, retira el soporte para mssql de la compilación de php. Me parece una buena política, ya que nadie en su sano juicio debería acceder a mssql desde php (ni desde ningún otro lenguaje, si nos ponemos quisquillosos). Sin embargo, hay gente en mi trabajo que no está en su sano juicio, y por necesidades de integración, tenemos una aplicación LAMP que accede a un mssql para recoger datos de otra aplicación.

Dado que ya me ha tocado dos veces recrear el paquete php-mssql para etch me he decidido a documentarlo, para que en la tercera ocasión no me toque volver a buscarlo.

  • Primero, instalamos las dependencias de compilación de php5, descargamos el fuente, y nos metemos dentro:

    # apt-get build-dep php5
    # apt-get source php5
    # cd php5-5.2.0

  • Ahora modificamos unos cuantos archivos:
  • En debian/control, añadimos una entrada nueva:

    Package: php5-mssql
    Architecture: any
    Depends: ${shlibs:Depends}, ${misc:Depends}, ${php:Depends}, php5-common (= ${Source-Version})
    Description: MSSQL module for php5
    This package provides a module for MSSQL using FreeTDS.
    PHP5 is an HTML-embedded scripting language. Much of its syntax is borrowed
    from C, Java and Perl, with a couple of unique PHP-specific features thrown
    in. The goal of the language is to allow web developers to write
    dynamically generated pages quickly.

  • En debian/modulelist, justo debajo de la definición del módulo XSL, añadimos:

    mssql MSSQL

  • En debian/rules, junto a la línea de definición de mysql y mysqli, añadimos:

    –with-mssql=shared,/usr \

  • , y mas abajo, sustituimos

    –without-pdo-dblib \

  • por

    –with-pdo-dblib=shared,/usr \

  • y por último, recompilamos el paquete:

    # dpkg-buildpackage

Y con esto, y un poco de paciencia (tarda un buen rato en recompilar), ya tendremos todos los debs creados, incluido el php-mssql, que es el que nos interesaba.

No Comments yet »

17 de May 2008

Debian y el OpenSSL

La noticia ha circulado por todos los portales de tecnología en los últimos días. Un parche de Debian, aplicado hace dos años, introdujo una debilidad en las claves generadas con OpenSSL. La vulnerabilidad pasó a ubuntu, pero probablemente Knoppix, Mepis y cualquier otra distribución basada en ellas se debe considerar vulnerable.

Lo que no explican claramente en casi ningún sitio es en que consiste esta debilidad o vulnerabilidad. El parche “reducía la entropía disponible a la hora de generar la clave RSA o DSA”. Dicho así, es bastante complicado entender qué problema provocaba, o porqué había falta de entropía. O, ya puestos, para que rayos quiere un PC entropía…

Simplificando bastante, diré que OpenSSL se utiliza para generar cerraduras y llaves que abren dicha cerradura. El parche lo que hacía era eliminar la inserción de valores no inicializados, aleatorios puros, en el molde para crear la cerradura. Esto, en el 99% de las aplicaciones, sería una mala práctica de programación, y un buen parche. En OpenSSL había una buena razón para coger esos datos no inicializados: se utilizaban para que cada clave fuera única.

Con el parche, todos los equipos Debian (y derivados) del mundo generaban una de 32000 cerraduras. Esto significa que un atacante “sólo” tendría que probar, de media, 16000 llaves para abrir cada puerta. Si hablaramos de un caco de la calle, intentando abrir la puerta de nuestra casa, estaríamos tranquilos. Pero los ordenadores son rápidos, y 16000 llaves son muy pocas llaves, desde el punto de vista de seguridad.

Las buenas noticias son que la gente de la calle no utiliza este tipo de llaves. Normalmente entramos en los ordenadores mediante usuarios y contraseñas, y la debilidad de las claves no nos afecta. Pero a los administradores de equipos, que tienen que entrar y manejar docenas o centenares de equipos, esta vulnerabilidad si les hace daño.

Por la forma de trabajo de SSH con el SSL, cuando un usuario genera un par llave/cerradura, puede poner la cerradura en cualquier equipo al que tenga acceso, para entrar con esa llave. Es decir, si la clave se generó débilmente en un Debian, y luego quién la creó la utilizó para entrar en un Fedora, es el Fedora el equipo comprometido, no el Debian. Es por ello por lo que todas las distribuciones linux (y BSD, y probablemente varios Unixes) pueden estar comprometidas. Incluso Windows, si tiene instalado un servidor ssh como freeSSHd. Por eso es importante que todas estas distribuciones parcheen sus sistemas.

Y luego está el “detalle” de que OpenSSL no sólo se utiliza para generar claves OpenSSH. Por ejemplo, se utiliza para generar la clave SSL del servidor HTTPS del banco donde guardas tus ahorros. Así que sería buena idea una serie de parches de navegadores para que detecten si la clave del servidor https a la que nos estamos conectando es una de las 32000 malditas.

No Comments yet »

21 de May 2007

Cacharreando

El servidor cada vez queda mas niquelado. He reducido memoria al pasar de php4 a php5, he instalado el eAccelerator con los paquetes de Andrew McMillan, eso sí, forzandolos. Porque los paquetes tenían una dependencia explícita a libapache2-mod-php5 que hacían imposible su instalación de forma normal. Y eso es un fallo, porque pueden funcionar en otras instalaciones de php que utilicen o bien php directamente o el interfaz php-cgi, como hace lighttp. En fin, se lo he comentado, a ver si lo corrige…

–Actualización–

Andrew McMillan ha sacado una nueva versión en un tiempo record, con la dependencia correcta, y ya la tengo instalada.

Great job, Andrew!

2 Comments »

20 de May 2007

Nuevo hosting

O, mejor dicho, primer hosting real. Porque tener la web colgada en el PC de tu casa no creo que cuente como hosting. El caso es que he contratado un VPS en PrimaryVPS. La primera impresión es buena, y aunque se trata de un sistema muy limitado, ha respondido mas que adecuadamente.

Ahora mismo está corriendo este blog, con Lighttpd, MySql y Wordpress sobre debian etch. Todo instalado y migrado en tres/cuatro horas. Un Lamp tradicional, salvo porque la A de Apache se ha visto sustituido por Lighttpd, un servidor mucho menos exigente en recursos, y que parece ser escala mucho mejor con php. Entre eso, y deshabilitar las tablas InnoDb de MySql, tengo todo corriendo en una máquina con 128 Mb de RAM. Cuando pueda intentaré instalar una caché de páginas, como eAccelerator o similar.

3 Comments »