Mostrando entradas con la etiqueta Seguridad. Mostrar todas las entradas
Mostrando entradas con la etiqueta Seguridad. Mostrar todas las entradas

OWASP ESAPI PHP: Autentificación y control de sesiones

En esta última entrega vamos a ver como gestionar la autentificación de usuarios y las sesiones. Empecemos por enumerar las características que vamos a implementar en nuestra clase User:

  • Mejorar la gestión de sesiones
  • Implementar tokens CSRF
  • Generar hashes de las claves
  • Leer propiedades de los objetos desde la base de datos
  • Limitar el tiempo de las sesiones (expire time)
  • Establecer qué guardamos en las variables de sesión


OWASP ESAPI PHP: Accesos a la base de datos

En esta entrega vamos a tratar cómo defendernos de ataques SQL injection. Hay varias maneras de intentar protegerse ante ataques de este tipo, una de ellas es con el Encoder de ESAPI, pero si vemos la documentación encontraremos la siguiente advertencia:

No se recomienda este método. La aproximación adecuada es usar la interface PreparedStatement. Si, por alguna razón, su uso no es posible, entonces este método es una solución menos mala.

Así pues vamos a olvidarnos temporalmente de ESAPI para centrarnos en los PreparedStatement (parte de la librería mysqli de PHP). Su uso nos permite separar totalmente los datos de las sentencias SQL con lo que las consultas se vuelven mucho más seguras. Su implementación no es nada difícil, sólo requiere pensar de manera ligeramente distinta.

OWASP ESAPI PHP: Asegurando las entradas

Si probamos la aplicación desarrollada en la entrada anterior observamos que es vulnerable a un simple ataque SQL Injection como "1' AND 1='1" para logearnos o XSS como "<script>javascript:alert(1);</script>" tanto en los posts como en los comentarios. En esta entrega vamos pues a esterilizar (sanitize) las entradas del usuario.

Usaremos las clases de referencia de ESAPI (/src/reference) siempre que podamos ya que son sencillas implementaciones de las interfaces definidas en /src y suficientes para nuestros propósitos con pequeños cambios. Empezamos modificando ligeramente la clase  DefaultSecurityConfiguration ( /src/reference/DefaultSecurityConfiguration.php) para arreglar un pequeño bug que el equipo de OWASP no ha considerado necesario arreglar desde que se escribió el artículo original. Abrimos el archivo y ejecutamos un buscar + sustituir cambiando todos los $this->logSpecial por $this->_logSpecial. La función _logSpecial imprime un mensaje de error en pantalla y nos interesa que lo haga en un log así que la cambiamos por:
private function _logSpecial($msg)
{
     ESAPI::getAuditor('DefaultSecurityConfiguration')->warning(Auditor::SECURITY, false, $msg);
}

OWASP ESAPI PHP: Introducción

Hace tiempo estuve trasteando con la librería de seguridad OWASP ESAPI para PHP pero lo dejé por falta de tiempo y por la dificultad que tuve en encontrar información para usarla. Retomo ahora el tema adaptando un artículo elaborado en 2010 por Jack Kowalsky en el que hace una introducción al uso de la librería. He actualizado el código original a PHP 5.4.3.
OWASP ESAPI (Enterprise Security API) es una librería de seguridad implementada en varios formatos para desarrollar aplicaciones de bajo riesgo con la que se dispone de varios módulos que podemos utilizar y/o modificar adaptándolos a nuestras necesidades. Aparte de para PHP, existen versiones para Java (quizás la más documentada), .NET, ASP, Codlfusion, Python y Javascript.

Una simple alerta de exceso de correo en cola con OSSEC

Vamos a crear una alerta para OSSEC que se dispare cuando el número de correos en la cola supere un límite determinado. El proceso lo dividiremos en tres pasos:

  • Crear un script que compruebe el número de emails en cola a intervalos determinados y guarde el resultado en un fichero log si éste supera el límite impuesto.
  • Crear un decoder para OSSEC que lea el log generado por el script y devuelva un determinado valor (flag) indicando que hay que lanzar la alerta.
  • Crear una regla para OSSEC que establece el id de la alerta, su nivel, su grupo y el mensaje que recibiremos por correo.

Replicación Pasiva de DNS: base de datos para seguir la pista de actividad DNS maliciosa

Interesante artículo aparecido en Cisco Blogs en Octubre del 2012 hablando del seguimiento de actividad DNS maliciosa. El autor es miembro del Equipo de Respuesta a Incidentes de Seguridad de Cisco (CSIRT) y empieza su exposición con la siguiente cita:
La seguridad no es un juego limpio. Existen básicamente un ilimitado número de atacantes que pueden someter a prueba tus defensas impunemente hasta encontrar una brecha.

Uso básico de PolicyD Cluebringer: Control de Acceso

En este último artículo sobre PolicyD hablaremos del Control de Acceso (Acces Control), una forma muy sencilla de establecer políticas sobre direcciones de destino. Pulsamos pues en la opción Configure bajo Acces Control en el menú de la izquierda y nos aparece la consabida lista desplegable desde la que seleccionamos la opción Add:

Instalación de OSSEC en CentOS 6 con interface web AnaLogi

OSSEC es un sistema de detección de intrusiones (IDS) de código abierto con interesantes funciones y capaz de funcionar en una gran variedad de sistemas incluido Windows. A pesar de ello su interface web ha recibido muchas críticas por simple y poco informativa así que se han desarrollado otras, como Splunk y AnaLogi. En este artículo veremos cómo instalar OSSEC con esta última.

Uso básico de PolicyD Cluebringer: Control de HELO/EHLO

En este artículo vamos a ver como configurar Cluebringer para controlar los accesos a nuestro servidor de correo estableciendo restricciones en la cláusula que identifica quién quiere enviar su email: HELO/EHLO. En el menú de la izquierda dentro de HELO/EHLO Checks pulsamos Configure y accedemos a la pantalla desde la que podemos crear nuestras políticas de control. Como en las anteriores, el menú desplegable central contiene las opciones para trabajar, y seleccionamos Add:

Uso básico de PolicyD Cluebringer: Cuotas

En este punto hemos ya creado una cuenta (BloqueoSalida) con un miembro que, o bien nos permite aplicar alguna política a todas las cuentas del dominio @ejemplo.com, o contiene un grupo (ListaInterna) con varios dominios. Sea cual sea el caso vamos a aplicar una política de cuotas. Accedemos al panel de control de PolicyD y elegimos la opción de menú Configure en Quotas:

Uso básico de PolicyD Cluebringer: Creación de cuentas y miembros

En el artículo anterior vimos como instalar y comprobar el servicio Cluebringer. En esta siguiente entrega veremos las reglas para definir políticas y como crear cuentas con miembros para posteriormente crear controles de accesos, comprobaciones de EHLO/HELO y Cuotas. La opciones de comprobación SPF y Greylisting no se cubrirán aquí. Para ello puede consultarse la página de ayuda de PolicyD o mi artículo sobre uso de reglas SPF. Empecemos pues por las reglas:

Establece una cuota para tus buzones de correo (y algo más) con PolicyD Cluebringer

PolicyD es un software desarrollado en C que permite implementar políticas de seguridad en nuestro servidor MTA con facilidad dado que nos proprociona un interface web muy simple: gestión de EHLO/HELO, gestión de SPF, Greylisting y cuotas. La versión que instalé es la 2.0.10 (Cluebringer) en un sistema CentOS 5 con servidor Postfix y MySQL. Los requisitos previos son:

  • MySQL, PostgreSQL, or SQLite
  • Net::Server >= 0.96
  • Net::CIDR
  • Config::IniFiles
  • Cache::FastMmap
  • Mail::SPF
  • PHP 5+ con soporte PDO para tu DB (si vas a usar la interface web, muy recomendable)

Una sencilla protección antiXSS para PHP

Buscando por la red un esquema simple de protección contra ataques XSS encontré PHP Input Filter que ofrece lo justo para impedir este tipo de ataques: un filtrado de los campos que nos interesen sin más complicaciones. Para los que tengan curiosidad, el ataque Cross Site Scripting (XSS) consiste en tratar de inyectar código ejecutable en una página web, normalmente Javascript, con lo que se puede lograr acceso a una base de datos o redirigir al usuario. Veamos un ejemplo, un sencillo formulario para autentificación:

OWASP ESAPI: seguridad si puedes implementarla

Me he pasado la mañana investigando la librería ESAPI en PHP de OWASP, ese grupo de amiguetes sin ánimo de lucro que guapos son y que tipo tienen que se dedican a editar libros en formato Power Point con las letras muy grandes y tal. La librería en cuestión pretende dar solución al problema de los ataques basados en inyección de código, como XSS (Cross Site Scripting) e inyección SQL. Después de entrar en la página del proyecto, muy pobre ella, lo descargué sin demasiados problemas, arranqué el test y funcionó, la única vez que lo hizo. El siguiente paso era encontrar información sobre la instalación y modo de uso, que no se encuentra en la web de su proyecto ni en ningún lado. Simplemente no existe. Rebuscando en Google encontré un par de enlaces, casi avergonzados ellos, donde se hablaba del tema pero ni así. No conseguí utilizar la dichosa librería ni una sola vez, cuando no faltaba la ruta faltaba la clave, y cuando no, se olvidaba de decodificar en base 64. En definitiva, un cromo de librería. Viendo la pobreza del proyecto y la falta absoluta de documentación pensé que lo habrían abandonado por falta de demanda (no es de extrañar) así que investigué la versión para Java. No me voy a repetir, más de lo mismo: información nefasta por lo inexistente, instalación por el método de prueba y error, rutas y ficheros que primero aquí y después allí. Cuando un cliente me demande seguridad le diré que tardaré un mes más en terminar el trabajo para tener tiempo de estudiarlo. Penoso, así va el asunto de la seguridad en la red, y es que son felices en su mundo.

Habrá que probar AntiXSS de Microsoft, aunque viendo los comentarios otro que tal anda.

Autentificarse con las Google APIs en Javascript

Hace poco me vi en la necesidad de preparar un fotoblog usando Blogger y Panoramio con el requisito indispensable de no tener que usar el backend de Blogger para editar los posts. Creé un acceso alternativo usando una página estática oculta pero se me presento el problema de autentificar a los editores y decidí implementar la autentificación con OAuth 2.0.

Licencia Google para aplicaciones Android en entorno .NET con C#

Si estás desarrollando alguna aplicación para Android con C# y quieres subirla al Market quizás te interese usar el sistema de licencias de Google para mantener un mínimo control sobre tu software. Cuando lo hagas necesitarás la clase LicenseChecker, originalmente implementada en Java. Una solución al problema pasa por generar una dll para .NET con la clase Java original y otra sería reimplementarla en C#, que es lo que ha hecho Matthew Leibowitz. Puedes bajarte su librería en Github. El uso es muy sencillo y no difiere de su equivalente en Java. El software usado es Visual Studio 2010 con la extensión Monodroid de Xamarin.