- Introducción a la seguridad en Java y J2EE
- Protección del extremo cliente
- Protección del transporte de datos
- Protección del Servidor Web y Aplicaciones
- Protección del Servidor de Base de Datos
- Análisis de seguridad
- Criptografía en Java
1. Introducción a la seguridad en Java y J2EE
La plataforma J2EE proporciona como una de sus características más destacadas una robusta
infraestructura de seguridad que facilita tanto a los desarrolladores, como administradores y
usuarios finales, un mayor control sobre el código que se ejecuta en sus sistemas. En este primer
módulo aprenderá los fundamentos del modelo de seguridad de Java y sus primitivas criptográficas.
- Arquitectura de aplicaciones web con J2EE
- Diseño en capas: Presentación,Negocio,
Integración, Datos
- Arquitectura de seguridad de EJB
- Seguridad en componentes Java
- Modelo de seguridad de Java
- Autenticación y autorización con JAAS
- Criptografía con JCE
- SSL con JSSE
2. Protección
del extremo cliente
Algunos fallos de seguridad causados por la
aplicación web afectan al extremo cliente,
concretamente a la confidencialidad de los datos
de usuario en su ordenador, generados durante la
operación con el servidor web; a la integridad de
los datos de usuario; a la disponibilidad de sus
datos y de sus recursos computacionales,
incluyendo su conexión a Internet.
- Fallos de seguridad
- Ataques típicos: XSS, GET vs. POST, Caché,
Historial, Máquina Virtual
- Mala configuración
- Bugs del navegador
- Configuración segura
PRÁCTICAS
Confidencialidad de datos de usuario
Impacto del caché del navegador y del Historial en
la seguridad del cliente y medidas correctoras..
Eliminación de vulnerabilidades del
tipo "Cross Site Scripting" y de inyección de
código
Demostración práctica de la existencia de estas
vulnerabilidades en sitios reales. Se implantan
las medidas correctoras para evitar estos
problemas.
3. Protección
del transporte de datos
Durante la transmisión de datos entre ambos
extremos, cliente y servidor, debe velarse porque
la confidencialidad e integridad de los mismos se
encuentre a salvo. El protocolo SSL constituye el
mecanismo tradicionalmente utilizado en este
contexto.
- Fallos de seguridad
- Ataques típicos: sniffers, MITM, etc.
- Mala configuración de SSL en el servidor web
- Bugs del navegador
- Configuración segura de las comunicaciones
de red
- Configuración de SSL en el servidorweb para
Internet
- Utilización de JSSE
PRÁCTICAS
Rastreo de contraseñas
Se utilizará un rastreador de red (sniffer), que
permitirá comprobar cómo todo el tráfico,
incluidas las contraseñas, viajan en claro.
Instalación y operación de la autoridad
de certificación
Se instala y configura la autoridad de
certificación, que será utilizada para expedir
certificados tanto a servidores web como a
usuarios.
Instalación del servicio SSL
Para evitar el que las contraseñas, testigos de
sesión y demás información sensible viajen en
claro por la red, se instala y configura el
servicio SSL (Secure Sockets Layer) en el servidor
web.
4. Protección del Servidor Web y Aplicaciones
Este módulo está destinado a explicar los aspectos de seguridad relativos al
servidor web, encargado de la capa de presentación de datos. Se tratan los
aspectos básicos de seguridad como autenticación, autorización, auditoría,
administración, gestión de sesiones y gestión de excepciones.
- Autenticación
- Básica
- Digest
- Certificados digitales
- Integrada contra la base de datos
- Integrada contra LDAP
- Formularios contra la base de datos
- Cracking de contraseñas
- SSO
- Autorización
- Permisos de archivos
- Control por IP
- Control por Cabeceras
- Permisos web
- JAAS
- Auditoría
- Fallos de seguridad
- Explotación de vulnerabilidades conocidas contra el servidor web
- Mala configuración del servidor web
- Bugs del servidor web
- Administración
- Gestión remota del servidor web
- Publicación de páginas web
- Monitorización del funcionamiento del servidor
- Configuración del servidor
- Gestión de sesiones
- Testigos de sesión en el URL
- Testigos de sesión en las cookies
- Variables de sesión
- Ataques contra los testigos
- Validación de entrada/salida
- Expresiones regulares
-
- Validación en cliente (JavaScript) y servidor (JSP)
- Gestión de excepciones
- Personalización de páginas de error
- Registro de eventos
PRÁCTICAS
Autenticación básica, mediante resúmenes e
integrada Se explica cómo configurar estos
tipos de autenticación en el servidor web y
se comprueban sus ventajas y limitaciones.
Diseño de autenticación basada en certificados de usuario X-509
Como importante mejora de la aplicación se desarrollan los mecanismos para
una identificación de usuarios basada en certificados X-509. Se exploran las
distintas políticas de acceso basando el control en información contenida en
el propio certificado presentado por el usuario: uno a uno y muchos a uno,
evaluándose sus ventajas e inconvenientes.
Autenticación mediante formularios
Se muestran varias soluciones con diferentes niveles de seguridad.
JAAS Se explica cómo realizar la autenticación y autorización con JAAS y el funcionamiento de los roles y principales.
Almacenamiento de contraseñas
Se desarrolla un mecanismo para no almacenar contraseñas en claro en la base de datos.
Validación de contraseñas
Se examinan distintas soluciones para proteger la información a la que pueden acceder los usuarios autenticados en un sitio web.
Conservación de información de sesión
Mantener la información de los usuarios resulta fundamental para seguir su
sesión con el servidor. Se explican las formas alternativas de
conservación de sesión de usuarios.
Protección de directorios y documentos
Se examinan distintas soluciones para proteger la información a la que pueden acceder los usuarios autenticados en un sitio web.
Ataques contra las distintas formas de autenticación
Se realizan ataques contra las formas de autenticación analizadas y cómo defenderse ante ellos.
Expresiones regulares
Se estudia a fondo el funcionamiento de las expresiones regulares, técnica fundamental para sanear las entradas recibidas de los usuarios.
Verificación de las cabeceras HTTP
Una validación de las cabeceras HTTP es muy importante para protegerse contra algunos tipos de ataques.
Acceso al servidor web a través de Telnet
Se demuestra cómo valiéndose de un sencillo cliente de Telnet y un conocimiento profundo de las cabeceras HTTP, puede manipularse
prácticamente cualquier dato de entrada. Después se repasan algunas de las herramientas de hacking web más utilizadas.
Gestión de excepciones
Se explican distintas formas de gestionar las excepciones, de manera que
se proporcione información significativa al usuario, pero ninguna al
atacante.
Auditoría
Se explica la manera de configurar y de examinar los rastros de auditoría
disponibles en el servidor web.
5. Protección
del Servidor de Base de Datos
Este módulo está destinado a explicarlos
aspectos de seguridad relativos al servidor de
base de datos, encargado de la capa de datos. Se
tratan los aspectos básicos de seguridad como
autenticación, autorización, auditoría,
administración y protección frente a los ataques
más frecuentes.
- Introducción a Bases de Datos SQL
- Autenticación
- Inicios de sesión
- Cadenas de conexión
- Autorización
- Roles
- Permisos sobre objetos: tablas, vistas,
procedimientos almacenados
- Auditoría
- Fallos de seguridad
- Ataques típicos: inyección de SQL
- Mala configuración
- Bugs y vulnerabilidades conocidas
- Administración
- Gestión
- Publicación
- Monitorización
- Configuración
PRÁCTICAS
Usuarios de la base de datos
Se explica cómo crear usuarios, con diferentes
niveles de privilegios (roles).
Utilización de vistas y procedimientos
almacenados
En lugar de acceder directamente a los datos de
las tablas, se explica cómo crear vistas y
procedimientos almacenados, de manera que se
protege mejor la información a la que cada usuario
tiene acceso. Se explican también otras muchas
ventajas de los procedimientos almacenados.
Comunicaciones seguras
Se utiliza SSL para cifrar las comunicaciones
entre el servidor de base de datos y el cliente.
Se configura de formas variadas: para el servidor,
para todas las aplicaciones del cliente y para
aplicaciones concretas.
Herramientas de hacking de BD
Se repasan algunas de las herramientas de ataque
más comunes utilizadas contra servidores de BD en
general y contra Oracle en particular y se explica
cómo protegerse ante ellas.
6.Análisis de
seguridad
Es importante detectar y bloquear los ataques
durante su transcurso o poder reconstruirlos una
vez finalizados. Los sistemas de detección de
intrusiones y los cortafuegos de aplicaciones web
sirven al primer propósito, mientras que el
análisis forense sirve al segundo. Paralelamente,
con el fin de minimizar la superficie de ataque,
conviene bastionar la plataforma y los servidores
utilizados.
- Auditoría
- Análisis de los logs
- Sistemas IDS
- Cortafuegos a nivel de aplicación
- Bastionado
- Plataforma
- Servidor web
- Servidor de base de datos
PRÁCTICAS
Análisis forense Se
explica cómo buscar información valiosa en los
logs sobre posibles ataques.
Cortafuegos de aplicaciones web
Se configuran algunas reglas en mod_security para
Apache y se realizan prácticas con otros
cortafuegos de aplicación comerciales.
Bastionado Se explica el
bastionado paso a paso de los tres elementos
básicos de toda aplicación web: servidor web, de
aplicaciones y de base de datos.
7. Criptografía
en Java
Se introducen los conceptos de criptografía
básicos que se utilizan en prácticamente toda
aplicación web, particularizados para Java.
- Algoritmos de cifrado simétrico o clave
secreta
- Algoritmos de cifrado asimétrico o clave
pública
- Algoritmos de hash
- Certificados digitales y firma de mensajes
PRÁCTICAS
Utilización de criptografía con Java
Se crean varios ejemplos para aprender el
funcionamiento de las clases de criptografía
proporcionadas por Java para cifrado/descifrado,
cálculo de hashes, generación de números
pseudoaleatorios, firma de mensajes, etc. |