LAB 3 - Confiabilidad y Seguridad en SW
LAB 3 - Confiabilidad y Seguridad en SW
LAB 3 - Confiabilidad y Seguridad en SW
GUÍA DE LABORATORIO
TOPICOS AVANZADOS DE INGENIERIA DE
SOFTWARE
X SEMESTRE 2022B
COMPETENCIAS
A. Aplica de forma transformadora conocimientos de matemática, computación e ingeniería como herramienta
para evaluar, sintetizar y mostrar información como fundamento de sus ideas y perspectivas para la resolución de
problemas.
E. Identifica de forma reflexiva y responsable, necesidades a ser resueltas usando tecnologías de información y/o
desarrollo de software en los ámbitos local, nacional o internacional, utilizando técnicas,
herramientas, metodologías, estándares y principios de la ingeniería.
Q. Diseña soluciones informáticas apropiadas para uno o más dominios de aplicación utilizando los principios de
ingeniería que integran consideraciones éticas, sociales, legales y económicas entiendo las fortalezas y
limitaciones del contexto.
Curso: Tópicos Avanzados de Ingeniería de Software Página: 1
Confiabilidad y Seguridad en
Laboratorio
Software
3
I
OBJETIVOS
Conocer las caracteristicas de la confiabilidad y la seguridad en software.
Trasmitir la importancia de del uso de los distintos estandare, metodos y
procedimientos de seguridad y confiabilidad en aplicaciones, paginas web y sistemas.
Identificar las fallas existentes en los procesos de software.
Implementar un plan básico de ingeniería de confiabilidad, en base a fallas encontradas
en sus procesos.
Conocer los criterios de evaluación que nos permitan tener la certeza de la
confidencialidad de la Información (IT).
Conocer los conceptos básicos para mantener la seguridad dentro de los sitios de la
Internet.
II
TEMAS A TRATAR
Ingeniería de Confiabilidad
Confiabilidad de Software
Seguridad de Software
Riesgos de seguridad
Vulnerabilidades
Curso: Tópicos Avanzados de Ingeniería de Software Página: 2
III
MARCO TEÓRICO
Introducción
Los sistemas de información son cada vez más importantes en la sociedad moderna. Se
podría decir que prácticamente la totalidad de las actividades diarias están controladas, o
necesitan el apoyo de un sistema software.
A medida que las funciones de este tipo de sistemas son más esenciales y complejas, su
confiabilidad es más crítica e importante, por lo que cada vez se dedican más recursos
para conseguir sistemas de información con un grado de confiabilidad elevado.
A raíz de todo esto el software inseguro está debilitando las finanzas, salud, defensa,
energía, y otras infraestructuras críticas.
A medida que la infraestructura digital se hace cada vez más compleja e interconectada, la
dificultad de lograr la seguridad en aplicaciones aumenta exponencialmente.
Es por tal motivo que hoy en día muchas de las organizaciones tan tomando medidas para
garantizar la seguridad del software así como su valor consecuente como es la
confiabilidad, es por ende que hoy en día es muy importante para todos la medición de la
calidad de sw y la implementación de dos características muy importantes al momento de
desarrollar, como son la confiabilidad y la seguridad.
Calidad de Software
El software es inmaterial y la calidad del software difícil de medir, pero tenemos algunas
pautas, algunos indicadores que nos ayudan a diferenciar los productos de calidad de los
que carecen de ella:
El acercamiento a cero defectos.
El cumplimiento de los requisitos intrínsecos y expresos.
La satisfacción del cliente.
Sobre todo la satisfacción del cliente, porque ya se sabe que un suministrador puede
engañar a todos alguna vez o a alguno muchas veces, pero no puede engañar a muchos
durante largo tiempo.
El cliente casi siempre tiene razón y para eso están las encuestas de satisfacción. El
software de calidad es el que resulta en los primeros puestos de la tabla por “aclamación”
de los usuarios.
De hecho, la exigencia cada vez mayor por parte del mercado de la certificación ISO
9000 o el interés creciente por los modelos de calidad de gestión empresarial de tipo
EFQM son indicadores de la percepción de la calidad como un elemento cada vez más
necesario.
Curso: Tópicos Avanzados de Ingeniería de Software Página: 3
La calidad del software debe ser una disciplina más, dentro de la Ingeniería del software.
El principal instrumento para garantizar la calidad de las aplicaciones sigue siendo el plan
de calidad.
El plan se basa en unas normas o estándares genéricos y en unos procedimientos
particulares.
Los procedimientos pueden variar en cada organización, pero lo importante es que estén
escritos, personalizados, adaptados a los procesos de la organización y, lo que es más
importante, que se cumplan. La calidad del software debe implementarse a lo largo de
todo el ciclo de vida, debe correr paralelo desde la planificación del producto hasta la fase
de producción del mismo.
Par poder entender cada uno de estos aspectos de calidad de software tenesmo que tener
en claro lo que persiguen estos indicadores:
Funcionalidad
La capacidad del producto software para proporcionar funciones que satisfacen
necesidades declaradas e implícitas cuando se usa bajo condiciones especificadas.
Curso: Tópicos Avanzados de Ingeniería de Software Página: 4
Fiabilidad
La capacidad del producto software para mantener un nivel especificado de
prestaciones cuando se usa bajo condiciones especificadas.
Las subcaracterísticas son la madurez, la tolerancia a fallos y la capacidad de
recuperación.
Usabilidad
La capacidad del producto software para ser entendido, aprendido, usado y ser
atractivo para el usuario, cuando se usa bajo condiciones especificas.
Las subcaracterísticas son la capacidad para ser entendido, aprendido, operado y
controlado y capacidad de atracción.
Eficiencia
La capacidad para proporcionar prestaciones apropiadas, relativas a la cantidad de
recursos usados, bajo condiciones determinadas.
Las subcaracterísticas son el comportamiento temporal (tiempos de respuesta, de
proceso y potencia, bajo unas condiciones determinadas) y la utilización de
recursos.
Mantenibilidad
La capacidad del software para ser modificado. Las modificaciones podrán incluir
correcciones, mejoras o adaptación del software a cambios en el entorno, y
requisitos y especificaciones funcionales.
Entre las subcaracterísticas de la mantenibilidad se encuentra la capacidad para ser
analizado, capacidad para ser cambiado, la estabilidad y la capacidad para ser
probado.
Portabilidad
Es la capacidad para ser transferido de un entorno a otro.
Las subcaracterísticas son la adaptabilidad, la coexistencia y la capacidad para
reemplazar a otro producto software.
Para el usuario de un bien, los tres términos citados son importantes, siendo lo que se ha
llamado calidad el grado de aprecio o idoneidad que el usuario tiene por el bien. El
usuario, consumidor o cliente, se encuentra en un estado privilegiado ya que elegirá aquel
producto o servicio que mejor satisfaga sus necesidades.
Curso: Tópicos Avanzados de Ingeniería de Software Página: 5
Respecto a la Seguridad de un
producto, en primer lugar hay que
tener en cuenta que se debe
garantizar la seguridad ante todo
tipo de daño que puedan sufrir las
personas en todas las fases de la
vida del producto, desde que se
fabrica hasta que el usuario lo
utiliza, aunque para este usuario el
concepto de seguridad está
relacionado, muchas veces con el
uso particular que él le da al producto, no con el proceso de fabricación que se ha seguido
hasta llegar a manos del usuario.
Confiabilidad de Software
La IEEE define a la confiabilidad como “la habilidad que tiene un sistema
o componente de realizar sus funciones requeridas bajo condiciones específicas en
periodos de tiempo determinados”.
La confiabilidad es un aspecto en el
cual se involucran diferentes
dimensiones.
Seguridad de Software
La seguridad es una disciplina que se encarga de proteger la integridad y la privacidad de
la información almacenada en un sistema.
En pocas palabras, el software que no tiene alta calidad es fácil de penetrar por parte de
intrusos y en consecuencia, el software de mala calidad aumenta indirectamente
el riesgo de la seguridad, con todos los costos y problemas que eso conlleva.
Curso: Tópicos Avanzados de Ingeniería de Software Página: 9
Riesgos de Seguridad
Los atacantes pueden potencialmente usar rutas diferentes a través de la aplicación para
hacer daño a la organización.
Cada una de estas rutas representa un riesgo que puede, o no, ser lo suficientemente grave
como para justificar la atención.
A veces, estas rutas son triviales de encontrar y explotar, y a veces son muy difíciles, del
mismo modo, el daño que se causa puede ir de ninguna consecuencia, o ponerlo fuera del
negocio.
VI
EJERCICIOS PROPUESTOS
1. Investigar y probar sobre una una aplicación web la herramienta Zed Attack Proxy
(ZAP), para descubrir los riesgos de seguridad y las vulnerabilidades de la aplicacion y
sus datos.
2. Para el presente laboratorio, el grupo de trabajo debera investigar una aplicacion web y
realizar sobre esta la evaluacion de vulnerabilidades, utilizando la siguiente estructura,
basandonos en Ethical Hacking:
a) Footprinting: Buscar información, investigar e identificar información (cuál es su
server de mail, cual es su pg web, q usuarios tiene la empresa, cuál es su dirección
ip publica, que utiliza, Linux, Exchange server, tipo de SO, su metadata).
b) Fingerprinting: Hacer un escaneo de servicios y puertos que están expuestos,
enumeración, escaneo de puertos y servicios que utiliza la organización.
c) Análisis de vulnerabilidades: Reporte de vulnerabilidades encontradas.
https://www.zaproxy.org/
3. Según las vulnerabilidades halladas, indicar en que categorias del “TOP 10 de Riesgos
de Seguridad”, se encuentran.
(Todas las posibles combinaciones de correo que puede tener una persona)
http://mailtester.com/
Para testear si existe el correo. (Hay servidores que están configurados para que
no permita la identificación del usuario)
https://rapportive.com/
3.- Buscar nombres DNS (servidores que resuelven nombres, es decir coloco nombre
de empresa y obtengo IP) con http://network-tools.com/
Nombres DNS
Registro A: página web
Registro MX: servidor de correo electrónico
Registro NS: name server, los nombres de servidores de DNS
Registro SOA: autoridad que registra esos datos
Pero ese Puerto se puede cambiar manualmente. Por eso una buena práctica de seguridad
de información es cambiar los puertos por defecto. En TCP tengo hasta el puerto 65534
(los primeros 1000 son puertos reservados). También se aplica a puertos UDP. Las
organizaciones crean una línea base o hardening.
Los puertos me dicen que rol y que papel cumple una PC en la red, por ejemplo si
encuentro en una pc que está habilitado el puerto 53 entonces es un servidor DNS
Consulta de DNS mediante 2 comandos por internet: whois y nslookup, puedo utilizar
el www.network-tools.com
Nslookup
Set q=mx (para registros de correo)
unsa.edu.pe (colocar el dominio)
/***************/
Para buscar números de serie
Pastebin.com
/************************/
VII
CUESTIONARIO
1. ¿Qué es la funcionalidad y fiabilidad de un software?
2. ¿Qué es la disponibilidad del software?
3. ¿Qué se debe garantizar para que un software sea confiable?
4. ¿Qué es la confiabilidad que manifiesta un servicio o un sistema?
VIII
BIBLIOGRAFÍA
1. Acuña Acuña, J. (2003). Ingeniería de Confiabilidad. Costa Rica: Editorial
Tecnológica de Costa Rica.
2. Albin, S., & Crefeld, P. (1994). Getting started: Concurrent engineering for a
medim-sized manufacturer. Journal of Manufacturing System 13 , págs. 48-58.
3. Edinn. (2011). Edinn. Recuperado el 16 de Marzo de 2012, de mttr.html
4. Escobar R, L. A., Villa D, E. R., & Yañez C, S. (2003). Confiabilidad. Historia,
Estado del arte y desafíos futuros. Dyna , 5-21.
5. García Flores, R. (Enero-Marzo de 2004). Universidad Autónoma de Nuevo León.
Recuperado el 26 de Marzo de 2012, de Ingeniería concurrente y tecnologías de
información: http://www.ingenierias.uanl.mx/22/ingenieriaconcu.PDF
6. Mather, D. (15 de 10 de 2002). La cultura de confiabilidad. Recuperado el 26 de
Marzo de 2012.
7. Melo González, R., Lara Hernández, C., & Jacobo Gordillo, F. (2009). Estimación
de la confiabilidad- mantenibilidad-mediante una simulación tipo Monte Carlo de
un sistema de compresión de gas amargo durante la etapa de ingeniería. Redalyc ,
13.
8. Prieto García, C. (2008). Universidad de Sevilla. Recuperado el 16 de Marzo de
2012.
9. Ruiz, R. (06 de Enero de 2011). Blogspot.mx. Recuperado el 25 de Marzo de
2012.
10. Salvador., S. G. (2003). Ingeniería de proyectos informáticos. Actividades y
procedimientos. Universitas.
11. Software Guru. (2008). Recuperado el 26 de Marzo de 2012.