Category Archives: Web

Restricciones de seguridad en una aplicación WEB J2EE

Los descriptores de las restricciones de seguridad de una aplicación WEB son detallados en el web.xml (descriptor de despliegue).

Están formados por:
1) Una colección de recursos WEB (patrones URL y metodos HTTP).

<url-pattern>: indica el contexto dentro de la aplicación web que se verá afectada por la restricción.
<http-method>: indica los métodos que se ven afectados por la restricción.
<http-method-omission>: Indica que metodos HTTP aplican la restricción excluyendo a todos los demás.
2) Restricción de acceso por roles:

<role-name>: Nombre del rol al que afecta la restricción.

3) Restricciones sobre los datos de usuario y su transporte.

<transport-guarantee>: Define la protección de datos que lleva el transporte.

  • CONFIDENTIAL: all user data must be encrypted by the transport (typically using SSL/TLS).
  • NONE: no protection of user data must be performed by the transport.

 

Ej de configuraciones:

1) Acceso público a parte de una aplicación (sin restricción de acceso): recursos que son de ámbito publico en la WEB.

 

2) Restricción de Acceso por ROL: Operaciones sobre recursos que sólo son accesibles a los usuarios de un rol determinado.

3) Denegar el acceso http a todos los metodos salvo al GET y POST.

NOTA: Métodos del protocolo HTTP: HEAD, GET, POST, PUT, DELETE y TRACE.

Autenticación mútua basada en certificados

El uso de certificados es un método extendido dentro del mundo de la web y las aplicaciones cliente/servidor para crear conexiones seguras vía SSL y para autenticar/autentificar quién está detras de cada extremo de la conexión.

Un aplicación de los certificados es su uso para realizar una autenticación mútua entre un cliente y un servidor. Esto permite:

- Establecer una conexión segura ya que al contar el lado servidor con un par de claves, que será el origen de su certificado, puede también establecer una conexión segura vía SSL.

- Autenticar, no solo el lado servidor de la conexión, es decir, a que se está conectando el cliente, si no también autenticar al cliente, desde el punto de vista del servidor. Esto aumentará la seguridad del lado servidor, permitiendo el acceso solo a aquellos cliente que cuenten con el certificado deseado.

Los pasos para implementar una autenticación mútua con certificados usando el servidor de aplicaciones Tomcat y la herramienta de generación de claves y certificados de Java keytool, presente en cualquier JDK, son los siguientes:

1. Si aún no se tiene, se crea el almacén de claves del servidor con su par de claves correspondiente:

 

2. Se exporta el certificado del servidor a partir del par de claves anteriormente creado:

 

3. Se añade el certificado del servidor al almacén de claves que usa el cliente desde la aplicación que emplea para conectar al servidor:

 

4.  Creamos un nuevo par de claves para el cliente:

Almacenamos el par de claves como de tipo PKCS12 para poder importar posteriormente otros certificados de cliente generados a partir de los navegadores web.

5. Generamos el certificado del cliente:

 

6. Añadimos al almacén de claves del servidor el certificado del cliente que queremos autenticar:

 

7. Si aún no se ha relizado, se configura Tomcat para que use la conexión segura vía SSL:

En el fichero de configuración de Tomcat <TOMCAT_HOME>\conf\server.xml se descomenta el conector definido para SSL. Además se añaden la ruta al almacén de claves del servidor y el password para acceder al mismo.

Se reinicia Tomcat.

8. Se ha de crear el usuario y rol asociados al cliente a autenticar. Esto se puede realizar de diferentes maneras y usando distintos mecanismos de autenticación y autorización de usuarios con los que cuenta Tomcat. El más sencillo de todos es el uso del fichero de usuarios de Tomcat. Si se opta por este mecanismo, los pasos a seguir son los siguientes:

Editar en el fichero de usuarios de Tomcat (<TOMCAT_HOME\conf\>tomcat-users.xml) y añadir al mismo el rol y el usuario autenticado con el certificado anteriormente importado. Por ejemplo:

La cadena incluida como username ha de ser exactamente el conjunto de valores que se usaron para crear el par de claves del cliente. Reiniciar Tomcat para que los cambios tengan efecto.

9. Por último, en el descriptor de la aplicación web del lado servidor se ha de configurar la restricción de seguridad que dara pie a la autenticación mediante certificados. Para ello, se edita el fichero WEB-INF/web.xml y se incluye, dentro de la etiqueta principal de web-app lo siguiente:

Mediante la configuración anterior se indica lo siguiente:

<url-pattern>/MainServlet</url-pattern> – indica el contexto dentro de la aplicación web que se verá afectada por la restricción.

<http-method/> – se especifica que métodos HTTP se autenticarán.

<role-name>cliente</role-name> – es el nombre del rol al que se le permite el acceso.

<transport-guarantee>CONFIDENTIAL</transport-guarantee> – indica que el acceso ha de ser vía HTTPS de forma obligatoria.

<auth-method>CLIENT-CERT</auth-method> – activa el método de autenticación por certificado.

10. Las pruebas:

Las pruebas de autenticación pueden ser realizadas bien desde un navegador web que intente acceder a la URL servidora protegida o bien con una aplicación de cliente, como un cliente HTTP(S).

- Navegador Web

Sería necesario importar el certificado del cliente al mismo. Una vez hecho esto, basta con intentar acceder a la URL que se quiere testear. Si la autenticación es validad, se accederá sin problemas, si no el navegador indicará el error.

- Cliente HTTP(S)

Ha de importar ámbos certificados, el de cliente y el de servidor, en el almacén de claves que use la aplicación. Si la aplicación está implementada en Java, se puede usar el almacén de claves por defecto de la JVM, que se encuentra en <JAVA_HOME>\ jre\lib\security\cacerts.

Instalando WordPress en local.

Hoy quiero compartir con vosotros … “Como instalar WordPress en local“, para ello ejecutaremos los pasos que se detallan a continuación:

1) Crear BBDD para WordPress.
2) Crear Usuario de BBDD para WordPress.
3) Instalar la herramienta WordPress.

 

1) Crear BBDD para WordPress:

La base de datos es la esecia de WordPress: todos los artículos, las páginas, las categorías, etc., son almacenados en tablas en una base de datos. La aplicación lo único que hace es dar forma a esos datos.

Para crear la base de datos (MySQL) de WordPress emplearemos la herramienta “phpMyAdmin“.

1.1) Arrancamos todos los porcesos del WampServer y seleccionamos la herramienta phpMyAdmin (http://localhost/phpmyadmin/).

 

1.2) Accedemos con el usuario root para poder crear la BBDD.

 

WP_Install_img1

 

Usamos la configuración por defecto para acceder a la zona de administración.

  User: root
  Pass:

 

WP_Install_img2

 

1.3) Seleccionamos la opción “Base de Datos” y especificamos el nombre de la base de datos a crear.

 

WP_Install_img3

 

2) Crear Usuario de BBDD para WordPress:

WP_Install_img4

 

2.1) Agregamos información de la cuenta:

 

WP_Install_img5

 

2.2) Los datos de la BBDD y los privilegios de la misma quedaran vacios, tal como se indica a continuación.

 

WP_Install_img6

 

WP_Install_img7

 

2.3) Seleccionamos el usuario creado (user_wordpress) y procedemos a darle permisos sobre nuestra BBDD.

 

WP_Install_img8

 

2.3.1) La sección “Privilegios globales” la dejamos como está.

 

WP_Install_img9

 

2.3.2) Nos movemos hasta “Privilegios específicos para la base de datos”, donde seleccionamos la BBDD generada para esta ocasion (bd_wordpress).

 

WP_Install_img10

 

De forma automática se modificará nuestra ventana de privilegios.

WP_Install_img11

 

Seleccionamos todos los permisos de la BBDD y pulsamos a continuar.

WP_Install_img12

 

3) Instalar la herramienta WordPress:

3.1) Descargamos la última versión de WordPress. Se trata de un fichero .zip que debemos descomprimir en la zona pública de WampServer, es decir c:\wamp\www.

 

Nota: en el supuesto de que hayamos instalado WampServer en c:\wamp.

 

3.2) Descomprimimos el zip.
3.3) Para proceder a la instalación del WordPress:
3.3.1) Introducimos la siguiente URL en el navegador: http://localhost/wordpress/wp-admin/install.php y deberá aparecer el siguiente mensaje de error.

 

WP_Install_img13

 

3.3.2) Pulsa sobre el botón “Crear un archivo de configuración”.

 

WP_Install_img14

 

Procedemos a definir los parámetros del fichero de configuración.

WP_Install_img15

 

 Los parámetros que nos solicitan son:

1. Nombre de la base de datos: db_wordpress
2. Nombre de usuario de la base de datos: user_wordpress
3. Contraseña de la base de datos: 1234
4. Host de la base de datos: localhost
5. Prefijo de la tabla, por si queremos instalar varios WP en la misma base de datos. No es el caso, así que no lo necesitamos.

 

La siguiente ventana nos indica que el fichero de configuración ha sido creado satisfactoriamente y que podremos proceder a instar la herramienta de WordPress.

WP_Install_img16

 

3.3.3) En el proceso de instalación tendremos que especificar cierta información referente nuestro sitio web.

 

WP_Install_img17
WP_Install_img18

 

Título del sitio: El título que le deseas dar a tu blog (siempre lo podrás cambiar a posteriori).

Nombre de usuario: se trata del usuario administrador de WordPress. Por lo general, es buena práctica cambiar, por cuestiones de seguridad, el que te ofrece por defecto WordPress. Si no te preocupa excesivamente esta cuestión, al tratarse de un servidor local, deja admin.

Password, dos veces: introduce la contraseña del administrador. WordPress te ayudará a comprobar la fortaleza del password elegido.(1234)

Tu correo electrónico: en un servidor público, esto tendría sentido, pues WordPress se comunicaría contigo a través de esa dirección. Pero es una instalación local: pon lo que te dé la gana.

Privacidad: si estuvieses en un servidor público, convendría dejar la marca para que el blog apareciera en Google. Aquí resulta indiferente; puedes quitarla.

La siguiente ventana indica q la instalación ha llegado a su fin con exito!!

WP_Install_img19

 

Ya podemos logarnos y comenzar a trabajar en nuestro BLOG ( http://localhost/wordpress/wp-login.php ).

WP_Install_img20

 

ó simplemente visualizar el contenido de nuestro blog (http://localhost/wordpress/ ):

WP_Install_img21