martes, 31 de octubre de 2017

IDS - Sistemas de detección de accesos.

Los IDS o Intrusion Detection System son herramientas de detección de accesos no autorizados. Existen dos tipos de IDS, los HIDS (IDS enfocados a la detección de ataques en el host) y los NIDS (IDS enfocados a la detección de ataques en red).

Los NIDS suelen capturar todo el trafico que pasa por la red y entregan alertas de los ataques en tiempo real, ademas necesita de un hardware exclusivo y dedicado a el y se suele poner en modo invisible sin asignación de IP, por otro lado las HIDS suelen detectar la integridad de los archivos que se encuentran dentro del host, y en caso de existir la modificación en algún archivo sin el debido acceso muestra una alerta del ataque, también muestra trafico de red para verificar señales de intrusión

Algunas de las acciones tomadas por los IDS son el envío de un mensaje de reconfiguración del firewall para bloquear el ataque, envío de correo electrónico con el aviso del ataque, envío de un datagrama SNMP a una consola externa con los detalles del ataque, registro del ataque, almacenamiento de paquetes sospechosos entre otros 


Fuente: 

martes, 24 de octubre de 2017

Mock Service




Un mock service es una simulación de la respuesta de un servicio, que suele ser utilizado cuando el servicio real no esta disponible, incluso puede utilizarse cuando NO se ha desarrollado el servicio usando métodos de desarrollo guiado por pruebas, en donde se puede probar una funcionalidad general e incluso automatizarla, desde el punto de vista funcional y de desarrollo, con el fin que cuando se termine de desarrollar el servicio, este pueda ser validado.

Otro de los posibles usos de un mock service, es para hacer demos o pruebas de concepto de funcionalidades que aun no han sido desarrolladas, para que puedan ayudar en la toma de decisiones a nivel de negocio, otro de los posibles usos es cuando una empresa manda a hacer el desarrollo de una aplicación a un proveedor externo y por temas de seguridad y sensibilidad de los datos, entrega un mock funcionando con datos ficticios.

Hay algunos servicios  que son cobrados de acuerdo al número de transacciones que ingresan a este, por lo cual se hace necesario en pruebas de performance utilizar mock services para que no se genere un costo adicional y otros de las ventajas que tiene desarrollar un mock service es aislar un sistema y crear total independencia con otros servicios que puedan estar involucrados en una misma funcionalidad


jueves, 19 de octubre de 2017

Creación en un Web Service SOAP básico

CREAR WEB SERVICE SOAP

  1. Crear un nuevo proyecto en Nerbeans. Seleccionar Java EE, luego EJB Module y Next.
  1. Asignar el nombre “CalculatorWSApplication” y seleccionar la ubicación del proyecto.

  1. Seleccionar la versión de Java y el servidor el el que se desplegará el proyecto (Glassfish, Webogic, Tomcat, etc.).


Dar click en “Finish”.



  1. Agregar los parámetros del web service, modificando el siguiente código en el método que aparece por defecto en el proyecto web, de tal manera que aparezca así.


  1. Para realizar una prueba preliminar del proyecto, se debe correr el programa dando “Run” y luego dar click derecho en el proyecto y seleccionar “Test Web Service”.


  1. Aparecerá una aplicación web para testear el Web Service. En esta aplicación se podrán ingresar los dos parámetros que pide el web service (en este caso i y j) y observar el valor de devuelta.

Dar click en el botón “add”.


CREAR EL CLIENTE DEL WEB SERVICE

  1. Se creará un nuevo proyecto en Netbeans de tipo Java SE, Asignando el nombre “CalculatorWS_Client_Application”.

  1. Al estar creado el proyecto, dar click derecho y seleccionar “New Web Service Client”.


  1. Hacer click en el Browse de seleccionar ubicación de WSDL y seleccionar el proyecto anteriormente creado..




PRUEBA DEL WEB SERVICE

Al ser un web service tipo Soap, se hace uso de la herramienta SOAP UI (se puede descargar del sitio https://www.soapui.org/downloads).

Después de instalada la herramienta, se crea un nuevo proyecto (tipo Soap) y aparecerá la siguiente ventana en la que se debe buscar el WDSL generado con anterioridad. El WDSL se debe encontrar en el directorio “xml-reference” de la carpeta del proyecto del cliente (para nuestro caso C:\...\NetBeansProjects\CalculatorWS_Client_Application\xml-resources\web-service-references\CalculatorWS\wsdl\localhost_8080\CalculatorWS\CalculatorWS.wsdl)



Se da click en OK.

Después de creado el proyecto, se da click derecho sobre el método “add” y se elige la opción “New request”.


Después de generado el request, se procede a probar el web service, ingresando los parámetros dentro de la parte izquierda. Después de ejecutar, se debe poder visualizar el resultado en la pantalla de la parte derecha.


martes, 17 de octubre de 2017

ESB (Enterprise Service Bus)

¿Qué es un ESB?


ESB (Enterprise Service Bus), es una aplicación de software, cuyo diseño se encuentra basado en un conjunto de patrones predeterminados (SOA - Service Oriented Architecture), cuya principal función es ser un intermediario entre varias aplicaciones para que dichas aplicaciones puedan comunicarse entre sí, sin tener que hacerlo directamente. De esta manera la complejidad que implique dicha comunicación entre aplicaciones será absorbida por el ESB.

Una conexión directa entre aplicaciones tiene diferentes inconvenientes. Las relaciones directas entre las aplicaciones son complejas, lo que genera una gran cantidad de código para manejar las comunicaciones necesarias en cada aplicación. Cuantas más aplicaciones y más relaciones existan entre ellas, existirá una mayor complejidad. El diseño sería rígido y poco flexible a posibles cambios y aumentará la mantenibilidad del sistema.


Interacción de sistemas sin un ESB 



Además puede que las aplicaciones no soporten la comunicación con las demás. Por ejemplo, si el Sistema es una aplicación como COBOLo Siebel o alguna otra, no tiene forma de comunicarse con una aplicación como JAVA de manera directa.



En contraposición se presentan algunas ventajas
  • Facilita la integración de aplicaciones. 
  • Ideal para trabajar en entornos heterogéneos: diferentes tecnologías y protocolos. 
  • Reduce el coste total de la gestión y el mantenimiento.


Interacción de un sistema con un ESB







Fuentes
https://ucase.uca.es/sites/default/files/documents/jboubeta/2013-05-20-introduccion-a-esb.pdf
http://desarrolloconsoa.blogspot.com.co/2013/10/que-es-un-enterprise-service-bus-y-por.html



domingo, 1 de octubre de 2017

Arquitectura SOA fuente: 

SOA es un marco de trabajo que permite integrar datos y logica de negocio de sistemas separados. Este fue desarrollado a finales de los 90's con el objetivo de unir aplicaciones que en su momento eran autosuficientes y fueron diseñadas sin considerar los otros sistemas a su alrededor y donde no era posible acceder desde cierto sistema a la informacion de alguna aplicacion en especifico.

Para implementar SOA se debe en primera medida asegurar que los sistemas sean compatibles con SOA, luego se debe identificar los sistemas que desea integrar y publicarlos como servicios, claramente esto requiere de un desarrollo y una serie de herramientas e infraestructura especifica que se deben poner a disposición del desarrollador para que pueda ser exitosa la integración entre las aplicaciones.

Los servicios deben tener un control de recursos tecnologicos, continenen la logica del negocio independientemente del consumidor y su entorno, son un activo de la empresa, no mantiene ni depende de condiciones pre-existentes, proporcionan una respuesta (response) ante una solicitud realizada (request).

Aseguramiento de bases de datos 

Es importante realizar una secuencia de procedimientos básicos para asegurar las bases de datos, con el fin de proteger los datos sensibles que se alojan en estas. El aseguramiento de las bases de datos se pueden hacer en 4 fases

Fase 1: Tienen una prioridad alta y se deben realizar en el momento de la instación de la base de datos
Implemente estrategias de copias de seguridad y recuperación.
Eliminar contraseñas por defecto
Usar contraseñas complejas
Ajustar los permisos de acceso al software
Proteger los programas fuente
Limitar los accesos de usuarios administradores

Fase 2: Tienen una prioridad alta, se deben realizar dentro de las primeras semanas de la instalación de la base de datos
Limitar accesos por sistema operativo
Asignar cuotas de espacio
Depurar los accesos de los usuarios
Habilitar auditoria para cuentas de administración
Monitorear los accesos de administración

Fase 3: Tiene una prioridad media, se debe realizar en los primeros meses de la implementación de la base de datos
Eliminar contraseñas de archivos
Crear perfiles para los usuarios de la base de datos
Bloquear objetos no usados
Analizar los perfiles de los usuarios
Análisis y Limpieza periódica de logs.

Fase 4: tiene una prioridad media, se puede realizar algunos meses después de la implementación de la base de datos
Profundice la Auditoria
Identifique información sensible
Cifre la información sensible
Cifre las copias de seguridad

fuente: Diplomado en Seguridad de la Información FEUD
defensa en profundidad

la defensa en profundidad para sistemas de información establece varias lineas de defensa que cubren la profundidad del sistema en sus diferentes capaz, garantizando la protección del sistema y un medio de comunicación que permita al interesado tomar decisiones según la gravedad del incidente ocurrido

La defensa en profundidad debe ser global (engloba todas las dimensiones del sistema de información como aspectos organizacionales, técnicos y de implementación), debe tener coordinación (los medios de implementación actúan por la capacidad de alerta y difusión teniendo en cuenta incidentes previos), debe ser dinámica (se debe disponer de una política que identifique la capacidad de reacción, una planificación de las acciones y una escala de gravedad), debe ser suficiente (cada medio de protección debe contar con protección propia, un medio de detección y procedimientos de reacción), ser exhaustiva (los bienes se deben proteger en función de su criticidad y asegurar que cada uno de ellos este con por lo menos 3 lineas de defensa) y demostrada (se debe poder calificar la defensa y tener una estrategia de homologación).

Un ejemplo de profundidad que puede ser adoptado es la implementación de lo siguiente:
Firewalls
Antivirus
Redes privadas virtuales (VPN)
Segmentación de redes
Contraseñas Complejas para Usuarios Administrativos
Contraseñas complejas para usuarios estándar
Contraseñas complejas para usuarios de acceso remoto
Contraseñas complejas
Creación de contraseñas para administradores
Paquetes de administración
Archivo con la bitácora del uso
Proceso de creación para parches
Terminales de trabajo


Principios de seguridad en Bases de Datos

La mayoria de los datos sensibles se almacenan en las bases de datos, por lo cual la seguridad en ellas es de vital importancia, a continuacion se especifican los principios de seguridad en bases de datos.

1. Identificar la sensibilidad: Se debe identificar cuales son las tablas o datos sensibles y protegerlos contra malware o inyeccion SQL
2. Evaluación de la vulnerabilidad y la configuración: Evaluar la forma como se instalo la base de datos, su sistema operativo, comprobación de privilegios, bitácoras transaccionales, parámetros de configuración y programas ejecutables; También se puede revisar que la base de datos no se este ejecutando con una versión que tenga vulnerabilidades conocidas
3. Endurecimiento: Se deben seguir las recomendaciones cuando se encuentren vulnerabilidades, eliminar funciones y opciones que ya no se utilicen, tener una poíitica estricta sobre lo que se puede y no se puede hacer y desactivar lo que no se necesita.
4. Auditar: Se debe realizar evaluacion y seguimiento a las recomendaciones de la auditoria, es recomendable automatizar el control de la configuracion, implementando alertas si existen cambios en la configuracion de la base de datos
5. Monitoreo: Es importante tener un monitoreo en tiempo real de la base de datos contra detección de intrusos o uso indebido, como alertas por patrones inusuales de acceso, cambios no autorizados a los datos, cambios de privilegios, cambios de configuración
6. Pistas de auditoria: Es importante tener trazabilidad de las actividades que afectan la integridad de los datos o la visualización de datos sensibles
7. Autenticación, control de acceso, y Gestión de derechos: Se debe garantizar la rendición de cuentas por usuario, administrar los privilegios y limitar los accesos, debido a que todos los usuarios no son creados iguales. se debe revisar periodicamente los permisos de los usuarios. Tambien es recomendable cifrar los datos sensibles

Requerimientos

El levantamiento de requerimientos al inicio de un proyecto de software es fundamental, ya que desde este punto se pueden empezar a corregir errores y así mismo evitar el fracaso de un proyecto.
Los requerimientos se deben identificar y documentar a partir de los requerimientos de un sistema, a partir de los usuarios, clientes o interesados

PMO informatica a desarrollado 7 tecnicas que podemos utilizar en la elaboracion de estos requerimientos.

1. Analisis de la documentacion: Consiste en revisar documentos como Planes de negocio, actas de constitución de proyecto, reglas de negocio, contratos, definiciones de alcance, memorándums, correos electrónicos, documentos de entrenamiento, entre otros, que quizas ya puedan tener algunos requisitos funcionales y no funcionales

2. Estudiar el entorno de trabajo de usuarios y clientes, en donde se pueden hacer sus respectivas anotaciones y hablar con los mismos

3. Entrevistas: se realiza con los usuarios o interesados y en este punto se puede obtener informacion detallada y clara sobre los requerimientos y su granularidad

4. Encuestas o cuestionarios: se realizan con el fin de recopilar requerimientos de muchas personas

5. Mesas de trabajo: son reuniones para obtener informacion especifica de varias personas

6. Tormenta de ideas: son reuniones para proponer ideas, evaluarlas y/o priorizarlas

7. Historias de usuario: Es la especificacion de los requerimientos del cliente de manera simple, en donde se especifican las funcionalidades y las tareas tecnicas que se deben tener en cuenta para lograr dichas funcionalidades.




Profiling:


El performance de las aplicaciones cada día se a vuelto mas relevante, debido a que las aplicaciones que antes eran para algunos pocos usuarios se han masificado y ahora la misma aplicación debe soportar cientos o miles de usuarios

Para verificar el performance de una aplicación existen muchos tipos de pruebas (carga, estrés, entre otras) que verifican el performance a nivel de infraestructura, analizando los contadores de rendimiento de los servidores y bases de datos. Sin embargo en algunas ocasiones con este tipo de pruebas no se puede determinar la causa raíz de un problema de performance, por lo cual se hace necesario realizar un profiling.

Un profiling es el perfilamiento de una aplicación (java, .net) donde a través de una herramienta se van  a obtener datos del consumo de memoria y CPU de cada método, clase o llamado a base de datos en particular, conociendo así mismo el número de invocaciones para cada uno de estos, también se puede conocer el numero de hilos utilizado, los que se encuentran en estado ocioso o los que se ejecutan en determinado momento.

Este tipo de información nos ayuda a identificar a nivel de software donde se debe optimizar el código, para así mejorar el performance de la aplicación al revisar el método que consume mas memoria o CPU, un llamado a base de datos que sea poco optimo y se este demorando según criterios de aceptación mas del tiempo adecuado entre otras cosas.

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS