U2 Seguridad Lógica
U2 Seguridad Lógica
U2 Seguridad Lógica
1 de 103
U2 Seguridad Lógica
2 de 103
U2 Seguridad Lógica
Introducción
Objetivos
La Unidad 2 'Seguridad lógica' está asociada al resultado de aprendizaje 2 del Real Decreto 1629/2009,
de 30 de octubre, por el que se establece el título de Técnico Superior en Administración de Sistemas
Informáticos en Red (ASIR) y se fijan sus enseñanzas mínimas.
Resultado de aprendizaje -2-
"Implanta mecanismos de seguridad activa, seleccionando y ejecutando contramedidas ante amenazas o
ataques al sistema."
Los objetivos de esta unidad van encaminados a que el alumnado, dentro de las funciones de la
administración segura de sistemas, adquiera las destrezas necesarias para:
- La adopción de prácticas seguras de acuerdo al plan de seguridad física del sistema.
- La selección y aplicación de técnicas y herramientas de seguridad activa que actúen como medidas
preventivas y/o paliativas ante ataques a al sistema.
− El análisis y aplicación de técnicas y herramientas de seguridad activa.
Conocimientos previos
La Unidad 2 continua el despliegue de conceptos básicos sobre seguridad, define el concepto de lista de
control de acceso, su funcionalidad y toca todo lo referente a las políticas de contraseñas.
También abarca todos los conceptos relativos al conocimiento de la criptografía como mecanismo de la
seguridad lógica y sus usos y aplicaciones prácticas.
3 de 103
U2 Seguridad Lógica
Contenidos
3. Criptografía
3.3. Comparativa
4. Firma digital
5. Certificados digitales
6. Casos prácticos
Noticias
Conceptos y vocabulario
Webs de interés
Bibliografía
4 de 103
U2 Seguridad Lógica
Seguridad lógica
Definición
Seguridad lógica son los procedimientos existentes para controlar el acceso lógico
no autorizado a la información, tanto si se intenta realizar mientras se encuentra
almacenada o durante la transmisión.
Objetivos
La Seguridad Lógica consiste en la aplicación de barreras y procedimientos que resguarden el acceso a
los datos y sólo se permita acceder a ellos a las personas autorizadas para hacerlo.
Existe un viejo dicho en la seguridad informática que dicta que 'todo lo que no está permitido debe estar
prohibido' y esto es lo que debe garantizar la Seguridad Lógica.
Los objetivos que se plantean serán:
5 de 103
U2 Seguridad Lógica
1. Por usuario
2. Por grupo
3. A través de la máscara de permisos
1. El núcleo debe soportar y estar compilado para soportar atributos extendidos y ACL
2. El sistema de archivos tiene que montarse con atributos extendidos y ACL
3. Se tienen que instalar las utilidades de espacio de usuario para establecer el ACL: paquete acl
Para ello editar este archivo y añadir 'acl' tal y como indica la linea anterior.
Para no tener que hacer un reboot, simplemente podemos remontar la partición para que use acl con:
6 de 103
U2 Seguridad Lógica
Actividad -1-
Enunciado:
En los contenidos vistos sobre las ACL y su utilización sólo nos hemos referido a sistemas
operativos tipo Unix/Linux, en concreto Ubuntu.
Tarea:
Actividad -2-
Enunciado:
Hemos visto cómo trabajan las ACL en sistemas de archivos ext3. Dependiendo de la versión
del kernel con el que trabajamos tendrá soporte o no para ACLs para determinados sistemas
de archivos.
Tarea:
Averigua la versión 3.2 del kernel de Linux para qué sistemas de archivos tiene soporte. En
concreto nos interesa averiguar si funciona en cifs y sshfs.
¿Conoces estos sistemas de archivos?
Busca información y haz un breve resumen. Indica los enlaces utilizados.
Hemos utilizado las ACL como extensión de los permisos asociados a archivos y directorios.
Pero nos preguntamos si la utilización de ACL queda reservada nada mas que a este ámbito.
Tarea:
¿Se pueden utilizar ACLs, por ejemplo, para filtrar el tráfico de la red?¿cómo lo hacen?
Averigua y explica muy brevemente.
Mostrar retroalimentación
Los routers proporcionan capacidad de filtrado de tráfico a través de las listas de control de acceso.
7 de 103
U2 Seguridad Lógica
Introducción
La utilización de contraseñas como mecanismo de protección es muy importante para la seguridad del
sistema. Nuestro sistema estaría desprotegido y vulnerable a cualquier intrusión.
Una contraseña fácilmente 'crackeable' es una puerta abierta a nuestro sistema, con todo lo que ello
supondría respecto a la seguridad de la información contenida en él.
Tanto en nuestro equipo personal como si se trata del administrador de sistemas informáticos, la creación
de contraseñas robustas es responsabilidad del usuario del sistema o del administrador, respectivamente.
Pero no solo se trata de crear contraseñas fuertes, sino también de almacenarlas en lugares seguros y
cambiarlas periódicamente.
En general las políticas de gestión de contraseñas indican que:
Estos ataques se pueden evitar eligiendo buenas contraseñas. Una buena contraseña típicamente respeta
los siguientes requerimientos:
Contiene una mezcla de letras, números, y caracteres especiales (tales como &,<, o #).
Por lo menos es de 8 caracteres.
No puede ser encontrada en ningún diccionario de lenguaje.
Muchas contraseñas son fáciles de descubrir porque son sencillas, relativamente cortas y son
normalmente creadas con palabras encontradas en un diccionario. Secuencias de números simples
también son contraseñas pobres.
Hay contraseñas que se obtienen a base de permutaciones de palabras de diccionario y que son también
muy fáciles de descubrir.
Por último, y también muy a menudo, muchos usuarios crean contraseñas basadas en información
personal, como puede ser el día de su cumpleaños, su nombre mezclado con otros caracteres, etc.
El reto para los usuarios es diseñar una contraseña robusta que a la vez sea fácil de recordar para ellos y
difícil de descubrir.
Una técnica bastante eficiente es crear una contraseña a base de caracteres fácil de recordar y luego
sustituir algunos de ellos por números (la 'e' por el '3', la 'i' por el '5',...) o al revés, definir una cadena de
dígitos y luego sustituir algunos de ellos por caracteres alfabéticos.
Otro punto muy importante respecto a las políticas de contraseñas es su almacenamiento. De nada sirve
diseñar contraseñas complejas y robustas si luego el usuario no es capaz de controlarlas. Ejemplos
típicos son contraseñas escritas en post-it pegados al monitor, o en archivos de texto en el escritorio del
usuario.
Lo ideal es que el usuario tenga sus contraseñas en su memoria y no necesite guardarlas en ningún tipo
de soporte. Lo cual es especialmente complicado cuando el usuario requiere de diferentes contraseñas
para realizar diferentes tareas. En grandes organizaciones este tema se está resolviendo aplicando el uso
de una única contraseña para realizar todas sus tareas, ya sean aplicaciones disponibles dentro de la
Intranet como en Internet. Esta técnica se denomina Single Sign On.
Por último comentar la conveniencia de obligar al cambio de contraseña cada cierto tiempo. E incluso la
posibilidad de 'vetar' la utilización de la misma contraseña en sucesivas renovaciones. El tiempo medio de
utilización de una contraseña no debería superar los dos meses y esto se debería de aplicar a
contraseñas utilizadas en cualquier ámbito (correo electrónico, redes sociales, ...). En el caso de la
contraseña de entrada a nuestro sistema podemos programar el vencimiento de la contraseña. El sistema
nos avisará y nos obligará a cambiarla.
Como referencia legal de la norma ISO 27001 se puede leer en [Link]
/controlar-acceso-norma-iso-iec-27001/ cómo establecer políticas de control de acceso.
8 de 103
U2 Seguridad Lógica
Actividad -4-
Enunciado:
En estos enlaces hay disponibles dos documentos relacionados con el tema de políticas de
contraseñas que tendreis que leer y hacer un resumen con los puntos clave.
INTECO_politicas_contraseñ[Link]
UPV_politica_contraseñ[Link]
ISO27001_2_comentadas.pdf
Tarea:
Mostrar retroalimentación
Tamaño mínimo
Caducidad
Historial
Calidad
Formación a usuarios
Comprobación de contraseñas
Existen diferentes procedimientos de generación de contraseñas válidas y de comprobación de la
fortaleza de nuestras contraseñas.
1. Generación de contraseñas válidas
Utilizamos el comando pwgen que genera una contraseña aleatoria bastante segura contra cualquier
intento de ataque.
Esta orden genera una clave (1) que incluirá números (-n), mayúsculas y minúsculas (-c), símbolos
(-y), sin caracteres ambiguos (-B) y de tamaño nueve caracteres (9).
Si lo que se quiere son contraseñas mas fuertes se puede utilizar la orden apg que habrá que
instalar:
$ sudo apt install apg
Se puede utilizar esta orden para generar claves seguras para protocolos inalámbricos WPA-
PSK:
$ apg -s -a 1 -m 63 -n 4
9 de 103
U2 Seguridad Lógica
10 de 103
U2 Seguridad Lógica
11 de 103
U2 Seguridad Lógica
Herramientas:
12 de 103
U2 Seguridad Lógica
Vamos a comentar algunas herramientas incluidas en Kali Linux para la creación de diccionarios que
luego pueden ser utilizados en ataques por fuerza bruta.
Crunch
Crunch se puede usar con o sin conexión.
Genera una lista de palabras según lo que le indiquemos.
Podemos indicar la longitud máxima y mínima de la contraseña y también darle el conjunto de
caracteres que se quiere utilizar al crear el diccionario.
Crunch crea un diccionario con todas las combinaciones posibles.
Sintaxis:
crunch <min> <max> <conjunto-de-caracteres> -t <patron> -o <ruta>
crunch: comando
<min>: longitud mínima de la contraseña
<max> longitud máxima de la contraseña
<conjunto-de-caracteres>: conjunto de caracteres que se utilizarán para crear el diccionario.
-t <patrón>: especifica un patrón para la contraseña. Es opcional.
-o <ruta>: ruta donde se guarda el diccionario generado.
Cewl
Hay que instalar la herramienta
Cewl funciona de forma similar a John The Ripper
Está escrito en Ruby.
Cewl funciona en base a la URL que le damos. Tomará esa URL y rastreará su camino hasta la
profundidad de 2 enlaces (por defecto) y buscará cada palabra que tenga la posibilidad de ser una
contraseña. Con todas estas palabras generará una lista para ser utilizada en un ataque de
diccionario.
Sintaxis:
cewl <url> -d <depth> -w <ruta>
cewl: comado
<Url>: URL que se va a utilizar como base del diccionario.
-d <depth>: indica el número de enlaces que se quiere profundizar al crear el diccionario.
-w <ruta>: indica la ruta donde se almacenan todas las contraseñas posibles.
Por ejemplo:
# cewl [Link] -d 2 -w /root/Desktop/[Link]
13 de 103
U2 Seguridad Lógica
Cupp
Para instalar como utiliza git habrá que instalar primero este comando en Ubuntu y luego cupp.
Ejecutar desde /root:
# apt install git
# git clone [Link]
Primero hay que iniciar cupp escribiendo la orden siguiente desde /root que es donde se encontrará el
directorio cupp:
#./cupp/[Link] –i
Una vez iniciado, pregunta la información sobre su objetivo como se muestra en la imagen:
14 de 103
U2 Seguridad Lógica
Vemos ahora que en /root existe un archivo [Link] que contiene una serie de combinaciones de los
datos introducidos.
Caso Práctico -7- Utilización de PyDictor.
Información
Cada día se producen gran cantidad de ataques por fuerza bruta. Aquí tienes algún ejemplo reciente que
en muy poco tiempo quedará desbordado por otros cientos de ellos e información.
15 de 103
U2 Seguridad Lógica
su uso
antigüedad
valor estratégico, etc.
Almacenamiento local.
Para poder disponer de un lugar común de trabajo donde almacenar el resultado de los
trabajos individuales y poder compartir información entre los diferentes usuarios de la empresa
se dispone de servidores de almacenamiento en red.
Dispositivos externos.
16 de 103
U2 Seguridad Lógica
Permanencia de la información en la red local una vez transmitida a los servidores corporativos.
17 de 103
U2 Seguridad Lógica
1. Los servidores de almacenamiento disponibles en la red corporativa están configurados para poder
almacenar y compartir aquella información de la organización que deba ser utilizada por los empleados.
Los controles de acceso son definidos por la dirección y el responsable de sistemas, con el objetivo de
definir quién puede acceder y a dónde.
El contenido de la información almacenada se determina a través de una política de uso que debe
considerar los siguientes aspectos:
2. Los empleados pueden disponer de carpetas personales dentro de la misma red corporativa. En estas
carpetas se almacena información que, si bien tiene relación con su trabajo, no necesariamente es
compartida por otros miembros del equipo. Para controlar dicha información, se deben especificar
políticas que incluyan los mismos aspectos que los relacionados con el almacenamiento local.
Es importante concienciar al empleado que toda aquella información almacenada en estas carpetas debe
ser relevante para el trabajo. La información carente de valor se elimina una vez que se haya utilizado. Así
se evita que la capacidad de almacenamiento se vea desbordada innecesariamente.
Ejemplo: se genera un vídeo corporativo que ocupa varios Gb de información. Dicho vídeo se ubica
primeramente en una localización en la red y posteriormente varios empleados lo almacenan en sus
unidades locales y vuelcan dicha información en sus buzones personales. Pasado un tiempo, se analiza la
cantidad de archivos exactamente iguales que se encuentran almacenados. Se identifican varias copias
del vídeo en la red corporativa. A la vista de esta situación, la empresa decide llevar a cabo una política de
control y revisión de la información almacenada y ajuste a las necesidades concretas.
En caso afirmativo, qué tipo de información en ningún caso está permitido almacenar, como aquella
que contiene datos personales de clientes, etc.
Qué medidas de borrado se han de utilizar cuando esta información deja de ser necesaria.
18 de 103
U2 Seguridad Lógica
Criptografía
Introducción
El término Criptología viene de:
y se compone de
Criptología
Disciplina que trata los problemas teóricos relacionados con la seguridad en la transmisión de
mensajes en clave, entre un emisor y un receptor, a través de un canal de comunicación.
Criptografía
Disciplina que engloba diferentes técnicas capaces de transformar datos legibles en datos no
legibles (y viceversa), por medio de funciones matemáticas (algoritmos).
De esta forma se previene ante la posibilidad que una persona no autorizada, si consigue acceder a
los datos, no sea capaz de entender su significado.
Criptoanálisis
Consiste en comprometer la seguridad de un criptosistema.
Los algoritmos transforman texto plano en un código equivalente (llamado texto cifrado), para
transmisiones o almacenamiento de datos, utilizando una clave. Luego, este texto cifrado puede ser
transformado a texto plano otra vez aplicando el mismo algoritmo y una clave.
Como vemos toda la seguridad reside en la clave de cifrado.
Criptosistema
Definiremos Criptosistema como la composición de cinco conjuntos:
1. El conjunto de todos los mensajes sin cifrar (texto claro, o plaintext) que pueden ser enviados.
2. El conjunto de todos los posibles mensajes cifrados (criptogramas).
3. El conjunto de claves que se pueden utilizar en el criptosistema.
4. El conjunto de transformaciones de cifrado o, dicho de otra forma, la familia de funciones que se
aplica a cada mensaje sin cifrar para obtener su mensaje cifrado equivalente. Debe existir una
transformación diferente para cada posible clave.
5. El conjunto de transformaciones de descifrado, análogo al anterior pero para realizar el descifrado.
Tarea:
19 de 103
U2 Seguridad Lógica
1. El precio para 'reventar' la encriptación sea más caro que el valor de la información.
2. El tiempo necesario para 'reventar' la encriptación sea más largo que el tiempo de vida de la
información.
Tipos de Criptosistemas
Existen dos tipos de criptosistemas:
Simétricos o de clave privada: utiliza la misma clave para encriptar y para desencriptar.
Asimétricos o de clave pública: utiliza dos claves distintas.
La robustez del método de encriptación se determina por el algoritmo utilizado y por el tamaño de la clave.
En general, se dice que cuanto más grande es la clave más seguro será. Pero esto no es del todo cierto
ya que depende del algoritmo utilizado. Existen algoritmos que son más seguros cuanto mas corta es la
clave.
En la práctica, se suele emplear una combinación de estos tipos de criptosistemas, puesto que la
criptografía asimétrica tiene el inconveniente de ser computacionalmente mucho más costosa que la
simétrica.
En el mundo real se codifican los mensajes (largos) mediante algoritmos simétricos, que suelen ser muy
eficientes, y luego se hace uso de la criptografía asimétrica para codificar las claves simétricas (cortas).
20 de 103
U2 Seguridad Lógica
Criptografía simétrica
Criptografía simétrica
Este tipo de criptografía se comenzó a utilizar desde muy antiguo. Ya en Egipto y en la época de Julio
César se comenzaron a utilizar sistemas para hacer ilegibles mensajes intercambiados por motivos
estratégicos.
La siguiente figura muestra el funcionamiento del cifrado simétrico:
Observar como un texto plano o claro se cifra haciendo uso de una clave que se ha de transmitir para que
el receptor utilizando esta misma clave pueda descifrar el texto y leerlo.
Ventajas
Desventajas
Los principales algoritmos simétricos actuales son: DES, TDES, IDEA, RC5 y AES (es el nuevo stándar).
Confusión
Un pequeño cambio en la clave debería producir un cambio del 50% del texto
cifrado resultante.
Un atacante haciendo una búsqueda exhaustiva de claves no recibirá ninguna señal de
21 de 103
U2 Seguridad Lógica
Difusión
Un pequeño cambio en el texto en claro debería producir un cambio del 50% del
texto cifrado resultante.
Oculta las relaciones estadísticas entre el texto claro y el texto cifrado.
Completitud
Cifrado en flujo
El texto en claro se cifra bit a bit.
El cifrado de flujo utiliza una clave de codificación diferente para cada bit o byte del texto claro, valor que
debe ser generado por un algoritmo.
Cifrado: ci = mi + si
Descifrado: mi = ci + si
Ambos tipos de algoritmos son muy rápidos, adecuados para cifrar grandes volúmenes
de datos, pero los de flujo son incluso más veloces.
Los algoritmos de flujo pueden cifrar datos producidos a ráfagas sin esperar a que estén
los bloques completos.
En los cifrados de flujo nunca se debe reutilizar la misma clave para cifrar dos textos.
22 de 103
U2 Seguridad Lógica
¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
b c v x z g f d s a t r e w q p o i u y ñ l k j h n m
Utilizando esta clave podemos codificar la frase
“de lo que sucedio al ingenioso hidalgo en la venta que el imaginaba ser castillo”
y sustituirla por
“xzmrpmilzmylvzxspmbrmswfzwspypmdsxbrfpmzwmrbmkzwñbmilzmzrmsebfswbcbmyzumvbyñsrrp”
Esta clave es llamada “simétrica” porque es la misma clave la que se utiliza para codificar y para
descodificar.
Ejemplo -2-:
La clave de César, aparentemente utilizada por Julio César en la guerra de las Galias, consistía
simplemente en sustituir cada letra por la que la sigue x puestos después. Así, por ejemplo, si sustituimos
cada letra por la que sigue tres puestos después (x=3) tendremos la clave:
a b c d e f g h i j k l m n ñ o p q r s t u v w x y z
¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
d e f g h i j k l m n ñ o p q r s t u v w x y z a b c
El sistema es muy fácil de descifrar si se utilizan textos largos ya que en cada idioma cada carácter se
repite con una proporción diferente y conocida. Para evitar esto se pueden introducir variaciones tales
como utilizar dos o tres caracteres diferentes para sustituir un carácter original.
Otra solución es la Confusión intercalada que consiste en introducir caracteres adicionales aleatorios
con una periodicidad determinada.
Ejercicios
Ejercicio 1: Utilizar la clave simétrica "Cesar x=5" para encriptar el texto "Encriptar por sustitucion es muy
sencillo".
Ejercicio 2: Desencriptar la frase "cskrucsnwkrk dwlj uskrk jnwerlsdt werhsjsrvwkweuj hlsj" utilizando la
clave "Cesar x=9".
23 de 103
U2 Seguridad Lógica
“de lo que sucedio al ingenioso hidalgo en la venta que el imaginaba ser castillo”
i n g e n i o s o
h i d a l g o e
n l a v e n t a
q u e e l i m
a g i n a b a s e
r c a s t i l l o
Sustituyendo las filas por las columnas obtenemos el texto codificado:
Ejercicios
Ejercicio 3: Desencriptar la frase "Toonamaanntbonnttoe dtaa,lFoo, e. tIcr mmason" que está permutada
con una tabla de 7x7.
Esta matriz puede describirse en formato binario, sustituyendo los espacios blancos
por unos y los negros por cero, de forma que quedaría:
11000110, 00000111, 11000110, 00111000, 00000111, 10101110, 00000111,
10001011, 00000110, 01001000, 00011111.
24 de 103
U2 Seguridad Lógica
Aún más simplificada y fácil de transmitir quedará la clave si pasamos esos valores
binarios a los decimales correspondientes: 198, 7, 198, 56, 7, 174, 7, 139, 6, 72, 31.
En cualquier caso, al aplicar la clave al texto codificado obtendremos:
D e l o
q u
e s u
c e d
i o
a l i n
g e n
i o s o
h
i d
a l g o
La esteganografía ha resurgido actualmente por la utilización de ficheros informáticos de imágenes
digitalizadas para ocultar textos. De hecho es una forma habitual de proteger la propiedad de una imagen
publicada en Internet. Si alguien la copia fraudulentamente le pasará desapercibido que en el código
digital de la imagen está intercalado el nombre del propietario.
Ejercicios
Ejercicio 4: Desencriptar la frase
"¡Hay un ágape en casa de Carmela y Mariluz!"
con la clave
OJO, el blanco despues de 'un'
utilizado en el protocolo PGP que analizaremos más adelante, son sistemas de generación de claves
simétricas mixtas y múltiples.
Otra máquina que utilizaba métodos mixtos es la Purple (Japonesa) utilizada en 1940.
Existen también sistemas de cifrado híbridos que utilizan tanto la encriptación simétrica
como la asimétrica.
Funciona mediante el cifrado de clave asimétrica para compartir una clave para el
cifrado simétrico.
Tanto PGP como GnuPG usan sistemas de cifrado híbridos. La clave simétrica es
cifrada con la clave pública o asimétrica ,y el mensaje saliente es cifrado con la
clave simétrica, todo combinado automáticamente en un sólo paquete. El
destinatario usa su clave privada para descifrar la clave simétrica y acto seguido usa la
clave simétrica para descifrar el mensaje.
Funciones hash
Una herramienta fundamental en la criptografía, son las funciones hash o resumen.
Se incluyen dentro de la criptografía simétrica.
No utilizan clave propiamente sino lo que se llama la huella digital, fingerprint, resumen o hash.
El objetivo de este sistema es: dado un texto plano de entrada de longitud variable, se ejecutan sobre una
serie de operaciones y se obtiene como salida el hash o resumen de longitud fija e independiente del
tamaño de dicho texto. Este hash no se puede considerar el texto cifrado ya que no existe ningún proceso
inverso que aplicado sobre el hash devuelva el texto plano original.
La función hash es también usada en la firma digital. Como los mensajes a firmar son, en general,
demasiado grandes, si utilizáramos la criptografía de clave pública generaríamos un mensaje de mucho
mayor tamaño que el original.
La solución es no cifrar todo el mensaje, sino solamente una parte de éste, pero que tiene que
representar al mensaje en su totalidad. Esas funciones tienen la propiedad de que es imposible
cambiar el documento sin cambiar el correspondiente bloque autenticador.
Ejemplo:
El código ASCII asigna un número a cada letra o signo de puntuación. Es una clave simétrica estándar
internacional que utilizan, por ejemplo, todos los ordenadores.
Podemos sustituir cada letra de un texto por su código ASCII.
La figura siguiente muestra un caso concreto:
26 de 103
U2 Seguridad Lógica
Aquí, cada tres caracteres, con sus códigos ASCII, se opera (1º-2º)*3º. La suma de los resultados es una
función HASH que identifica perfectamente el texto.
Cualquier modificación en el texto provoca un cambio en el valor de la función HASH.
Por ejemplo, al sustituir “rincón” por “rincon” sin acento, el valor HASH ha pasado de -11.399 a 3.121
Las funciones hash o resumen (digest) asocian a los mensajes una cadena de longitud 160 bits que los
hace más manejables para el propósito de firma digital.
Es decir, un mensaje de longitud variable se transforma de forma 'única' a un mensaje de longitud
constante.
Hasta cierto punto recuerda a la letra del DNI. El procedimiento es sencillo. Basta con coger el número del
DNI y dividirlo por el número 23. El número que sale del resto se hace corresponder con una letra, por
medio de la siguiente correspondencia (haga la prueba con su propio número):
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 T R W A G M Y F P D X
B N J Z S Q V H L C K E
Las funciones resumen para criptografía habitualmente dan resúmenes hash entre 128 y 160 bits. Las
mas utilizadas son las denominadas MD4, MD5, RIPEMD-160 y SHA-1.
Actividad -3-
Enunciado:
Además de las famosas máquinas para encriptar Enigma y Purple seguro que existen otras no tan
conocidas pero que han ayudado en conflictos militares al pase de mensajes cifrados.
Tarea:
Encuentra en la web dos casos mas y haz un breve resumen de ellos.
27 de 103
U2 Seguridad Lógica
TDES/3DES (TripleDES)
AES
Es el algoritmo que reemplazó a DES. Creado por los belgas Joan Daemen y Vincent Rijmen.
Es un cifrado por bloque de 128-bit con claves de longitud variable de 128, 192 o 256
[Link]én puede ser utilizado como sistema simétrico de cifrado de flujo.
Estados Unidos, buscando un algoritmo más seguro y fiable para utilizarlo como estándar,
convocó un concurso a nivel mundial, y hace unos años anunció su intención de adoptar un
nuevo estándar. Así nació (2002) el nuevo sistema que recibe el nombre de Advanced
Encryption Standard (AES). Este algoritmo también es denominado Rijndael.
IDEA ******
El algoritmo IDEA (International Data Encryption Algorithm, algoritmo internacional de encriptación de
datos) se estableció en 1992, y sus principales características son:
28 de 103
U2 Seguridad Lógica
Criptografía asimétrica
Lo que está codificado con una clave privada necesita su correspondiente clave pública para ser
descodificado. Y viceversa, lo codificado con una clave pública solo puede ser descodificado con
su clave privada.
La clave privada solo debe ser conocida por su propietario.
La clave pública es abierta y se puede conocer libremente.
Este sistema criptográfico permite garantizar la confidencialidad del mensaje:
Por otra parte, este mismo sistema criptográfico permite garantizar la identidad del remitente. El proceso
de autenticación mediante criptografía asimétrica es el siguiente:
Confidencialidad: cualquiera puede cifrar un mensaje con la clave pública, pero sólo el propietario de la
clave privada correspondiente puede descifrarlo.
Integridad, autenticación y no repudio: si el propietario de la clave privada cifra con ella un mensaje,
cualquiera puede descifrarlo con la correspondiente clave pública.
A puede enviar a B un mensaje codificado dos veces, con la clave privada de A y con la
pública de B.
29 de 103
U2 Seguridad Lógica
De esta forma se garantiza la identidad tanto del emisor como del receptor del mensaje.
Este mecanismo evita la administración de un gran número de claves secretas necesaria para los
algoritmos simétricos, pero requiere un proceso para asegurar que las claves públicas son auténticas y
pertenecen al usuario correspondiente.
Así, nacen las compañías certificadoras, que se encargan de certificar que una clave pública
pertenece a tal o cual usuario y de distribuir las mismas.
La criptografía asimétrica está basada en la utilización de números primos muy grandes (de 1024 bits o
mas). Si se multiplican entre sí dos números primos muy grandes el resultado que se obtiene tendría un
coste muy elevado de proceso para poder descomponerlo. Miles de años...de momento.
En concreto los protocolos de encriptación SET y PGP utilizan claves generadas con números primos de
un tamaño que los hace prácticamente intocables.
El problema de la criptografía asimétrica es que, cuando el texto a cifrar es muy largo, el proceso de
cifrado es muy lento. Lo que se hace entonces en los actuales protocolos es utilizar criptografía
simétrica (tipo DES o IDEA) para el cifrado de textos y criptografía asimétrica para la comunicación de la
clave simétrica utilizada.
Ventajas:
Desventajas:
No son tan eficientes por la lentitud de los algoritmos de clave pública. El cifrado de un mensaje
mediante este método es del orden de mil veces más lento que el que se realiza con un algoritmo de
clave simétrica. Los ordenadores cada vez son más rápidos, pero el problema surge cuando hay
grandes cantidades de información para cifrar o descifrar.
Autenticidad de las claves públicas: ¿quién nos garantiza que la clave pública de un interlocutor, que
se obtiene libremente en la red, es realmente de él?. ¿Qué ocurriría si alguien nos envía su clave
pública afirmando ser alguien que realmente no es? Este problema se resuelve mediante los
Certificados digitales de las claves públicas.
30 de 103
U2 Seguridad Lógica
Diffie Hellman
31 de 103
U2 Seguridad Lógica
Comparativa
Respecto a la seguridad:
La criptografía simétrica o de clave secreta usa una única clave para cifrar en emisión y descifrar en
destino.
La seguridad del sistema reside entonces en lo segura que sea dicha clave.
En la criptografía asimétrica para cada usuario se crea un par de claves pública y privada, de forma que
lo que hace una la otra lo deshace. Para cifrar se usa, por ejemplo, la clave pública de destino y para
descifrar el destinatario hará uso de su clave privada.
La seguridad del sistema reside en la dificultad computacional de encontrar la clave privada a
partir de la clave pública.
32 de 103
U2 Seguridad Lógica
Sistemas híbridos
Existen también sistemas de cifrado híbridos que utilizan tanto la encriptación simétrica
como la asimétrica.
Funciona mediante el cifrado de clave asimétrica para compartir una clave para el
cifrado simétrico.
PGP y GPG (GnuPG) usan sistemas de cifrado híbridos. La clave simétrica es cifrada
con la clave pública o asimétrica ,y el mensaje saliente es cifrado con la clave simétrica,
todo combinado automáticamente en un sólo paquete.
33 de 103
U2 Seguridad Lógica
PGP (privacidad bastante buena) es un programa cuya finalidad es proteger la información distribuida a
través de Internet mediante el uso de criptografía de clave pública, así como facilitar la autenticación de
documentos gracias a las firmas digitales.
PGP originalmente fue diseñado y desarrollado por Phil Zimmermann en 1991.
PGP combina algunas de las mejores características de la criptografía simétrica y la criptografía
asimétrica. PGP es un criptosistema híbrido.
Funcionamiento
1. Compresión
Cuando se cifra un texto plano con PGP, el texto es comprimido. Esta compresión
ahorra espacio en disco, tiempo de transmisión y lo hace mas seguro. La mayoría
de las técnicas de criptoanálisis explotan patrones presentes en el texto plano para
craquear el cifrador. La compresión reduce esos patrones en el texto plano,
aumentando la resistencia al criptoanálisis.
2. Clave de sesión
Después de comprimir el texto, PGP crea una clave de sesión secreta (es la
clave simétrica) que solo se utilizará una vez. Esta clave es un número aleatorio
generado a partir de los movimientos del ratón y las teclas que se pulsen durante
unos segundos con el propósito específico de generar esta clave (el programa nos
pedirá que los realicemos cuando sea necesario).
Esta clave de sesión se usa con un algoritmo simétrico convencional (IDEA, Triple
DES) para cifrar el texto plano.
Una vez que los datos se encuentran cifrados, la clave de sesión se cifra con la
clave pública del receptor (criptografía asimétrica).
5. Descifrado
El receptor usa su clave privada para recuperar la clave de sesión, que PGP
luego usa para descifrar los datos.
La combinación de los dos métodos de cifrado permite aprovechar lo mejor de cada uno:
Las claves utilizadas en el cifrado asimétrico se guardan cifradas protegidas por contraseña en el disco
duro. PGP guarda dichas claves en dos archivos separados llamados llaveros; uno para las claves
34 de 103
U2 Seguridad Lógica
35 de 103
U2 Seguridad Lógica
GPG es una herramienta de cifrado híbrido y firmas digitales, como un sustituto de PGP pero con la
principal diferencia que es software libre licenciado bajo la GPL. GPG utiliza el estándar del IETF
denominado OpenPGP.
GPG normalmente viene incluido en todas las distribuciones GNU/Linux. Su funcionamiento es similar al
PGP.
Trabaja en modo texto pero hay aplicaciones gráficas que utilizan recursos de GPG. Por ejemplo, hay un
plugin llamado Enigmail (sudo apt install enigmail) que se integra con el cliente de correo
Mozilla Thunderbird que funcionan en Windows, GNU/Linux y otros sistemas operativos. Enigmail es un
complemento que permite escribir y recibir correos firmados y/o encriptados con el estandard OpenPGP.
Funcionamiento:
GPG cifra los mensajes usando pares de claves individuales asimétricas generadas por los usuarios.
Las claves públicas pueden ser compartidas con otros usuarios de muchas maneras, un ejemplo de
ello es depositándolas en los servidores de claves.
También es posible añadir una firma digital criptográfica a un mensaje, de esta manera la totalidad
del mensaje y el remitente pueden ser verificados en caso de que se desconfíe de una
correspondencia en particular.
GPG genera también una firma digital para un archivo usando la clave privada de firma sobre el
resultado de una función hash del mensaje.
GPG no usa algoritmos de software que están restringidos por patentes, como IDEA utilizado en
PGP casi desde sus inicios. En su lugar usa una serie de algoritmos no patentados como Triple DES
(3DES), AES y Blowfish.
GPG usa una combinación de criptografía de claves simétricas para la rapidez y criptografía de
claves públicas para compartir de forma segura las claves. Este modo de operación es parte del
estándar OpenPGP y ha sido parte del PGP desde su primera versión.
36 de 103
U2 Seguridad Lógica
Identificación digital
Identificación digital
Identidad digital
El anonimato en Internet y las posibilidades de fraude limitaban los servicios que se podían
ofrecer a través de esta red.
1. Contraseñas
Plantean muchos problemas:
2. Tarjeta o dispositivo
Tarjetas RFID
Tarjetas de contacto
Pinchos USB
38 de 103
U2 Seguridad Lógica
3. Sistemas biométricos
Huellas dactilares
Reconocimientos de voz
Reconocimiento de cara
Reconocimiento de pupila
Reconocimiento de firma
Como podemos ver existen vulnerabilidades en la identificación digital que están relacionadas con los
problemas de seguridad física y lógica tratados hasta el momento. La solución pasa por el uso de
herramientas que protejan el sistema, como cortafuegos, antivirus, utilización de cifrado, etc.
Kinegrama
Es una característica desarrollada por la compañía suiza Kinegram de uso exclusivo en los documentos
de alta seguridad.
Como el holograma, el kinegrama consiste en una estructura de difracción microscópica. La imagen, no
obstante, no es tridimensional, como en el holograma, sino que al moverla muestra animaciones gráficas.
39 de 103
U2 Seguridad Lógica
Firma digital
Introducción
Desde hace algún tiempo los sistemas informáticos están modificando los mecanismos clásicos en las
comunicaciones sustituyéndolos o complementándolos con otros medios como el correo electrónico,
Internet, etc.
De forma inmediata se plantea el problema de la seguridad de estos nuevos medios. Por ejemplo, el
usuario necesita saber con certeza que el mensaje que ha recibido es de quien dice ser, o el usuario
remitente necesita tener la seguridad de que su correo ha sido recibido, o también disponer de la opción
de firmar documentos de forma electrónica con total seguridad.
Los dos algoritmos más conocidos de generación de firmas son MD5 y SHA-1.
El concepto de firma digital fue introducido en 1.976 por Diffie y Hellman, padres del primer criptosistema
de clave asimétrica o pública.
Firma digital
Conjunto de datos asociados a un mensaje que permite asegurar la identidad del
firmante y la integridad del mensaje.
Aparentemente, éstos se consiguen con los criterios de autenticidad e integridad que ya hemos explicado,
pero estos no son suficientes si se pretende equiparar a la firma manuscrita que, además, tiene las
siguientes propiedades:
La firma digital
Cuando se desarrolló la criptografía de clave pública se comprobó que también se puede autenticar. Es
decir, puede crearse una firma digital.
¿Por qué firmamos documentos en el mundo real? Para conseguir alguno, o varios, de estos resultados:
Autenticación
La firma convence a quien la ve, asegura que el firmante firmó el documento deliberadamente.
Inalterabilidad.
Autoría.
Adhesión.
La firma prueba que el firmante está de acuerdo con lo que contiene el documento.
No repudio.
La firma es garantía de que el firmante acepta lo que está escrito en el documento, y de que no se
echará atrás en el futuro.
Una firma es producida por un solo firmante, es decir, es algo inherente a la persona que la produce.
De modo similar, para producir una firma digital necesitamos algo relacionado con el firmante y solamente
con él. Recordemos que la clave pública es conocida por todos pero la clave privada es conocida
solamente por su dueño. Así que para producir una firma digital, usaremos la clave privada.
Recordar que las claves pública y privada forman un par y son complementarias. Pero no hay nada
40 de 103
U2 Seguridad Lógica
esencialmente distinto entre ambas. Si usamos una para cifrar y la otra para descifrar, es solamente por
convenio; igual podríamos cifrar con la otra y descifrar con la una. Lo que una clave hace, la otra lo
deshace.
cada participante tiene un par de claves, una para encriptar y la otra para desencriptar.
cada participante mantiene en secreto una de las claves (clave privada) y pone a
disposición del público la otra (clave pública).
el emisor/remitente calcula un resumen del mensaje a firmar con una función hash.
El resumen es un conjunto de datos de pequeño tamaño que tiene la propiedad de
cambiar si se modifica el mensaje.
el emisor encripta el resumen del mensaje con una clave privada y ésta es la firma
digital que se añade al mensaje original.
el destinatario, al recibir el mensaje, calcula de nuevo su resumen mediante la
función hash, desencripta la firma utilizando la clave pública del emisor
obteniendo el resumen que el emisor calculó. Si ambos resúmenes coinciden
entonces la firma es válida por lo que cumple los criterios ya vistos de autenticidad e
integridad además del de no repudio.
El sistema de firma digital basado en clave pública cumple con la mayoría de los criterios de seguridad
que posee la firma manuscrita.
Tan sólo queda la asociación de la firma con un propietario, evitando así la existencia de firmas anóminas.
Se trata, pues, de asociar a una firma la identidad de la persona que la utiliza. Para ello se usan los
certificados digitales.
Como ya se ha comentado, los objetivos de una firma digital son asegurar la identidad del firmante y
la integridad del mensaje. Por este motivo no será necesario codificar el texto completo, sino que
bastará con codificar un resumen del mismo y de esa forma el proceso de codificación y decodificación de
la firma será notablemente más rápido ya que la firma será mucho más pequeña que el mensaje original.
La firma digital está relacionada con el concepto de certificado digital.
41 de 103
U2 Seguridad Lógica
Firma electrónica
Con valor a efectos legales desde el año 2003. [Link]
La firma electrónica, por si misma, no aporta confidencialidad al mensaje pero es habitual que los
mensajes firmados electrónicamente se suelan enviar cifrados con la misma clave privada utilizada para
mayor seguridad.
Las características y usos de la Firma electrónica son exactamente los mismos que los de la Firma digital
con la única diferencia en el tipo de soporte en el que se almacenan.
Su condición de no modificable le da mayor grado de seguridad, pero sigue teniendo el problema de que
cualquier persona que no sea su propietario podría suplantarle.
La firma electrónica reconocida tiene el mismo valor legal que la firma manuscrita.
De hecho se podría decir que una firma electrónica es una firma digital contenida o almacenada en un
contenedor electrónico, normalmente un chip de ROM. Su principal característica diferenciadora con la
firma digital es su cualidad de ser inmodificable (que no inviolable).
No se debe confundir el almacenamiento en hardware, como por ejemplo, en un chip, con el
almacenamiento de la firma digital en soportes físicos; es posible almacenar una firma digital en una
memoria flash, pero al ser esta derivada del tipo EEPROM (Electrically Erasable Programmable Read-
Only Memory, ROM programable y borrable eléctricamente) y no ROM pura, no se consideraría una firma
electrónica si no una firma digital contenida en un soporte físico.
La firma digital contenida en soportes de tipo ROM tiene un uso muy extendido y se utiliza en gran
cantidad de tarjetas de acceso, tarjetas de telefonía, RFID y otras actividades en la que es preciso
identificar de forma inequívoca una persona u objeto.
Una aplicación destacada es el DNI electrónico español, también conocido como DNIE que al ser de uso
obligado dispone de varios millones de usuarios.
42 de 103
U2 Seguridad Lógica
Certificados digitales
La certificación de claves
Puede haber un problema de suplantación de claves y se resuelve otorgando confianza a un tercero
aceptado de forma general. Algo así como un Notario.
En el mundo digital aprovechamos el hecho de que se puede firmar cualquier archivo o documento digital,
incluida una clave pública. A fin de cuentas una clave pública ha de ser guardada en el ordenador en
forma de archivo y, por tanto, se puede firmar. La criptografía de clave pública contribuye así a reparar su
propia debilidad.
Vamos a utilizar el símil del Notario.
Proceso para que A tenga la seguridad de que tiene la clave pública auténtica de B:
- Si la verificación es correcta, A sabe que la clave de B es auténtica. En ese caso se dice que
la clave es válida. Esta validez proviene de la confianza depositada en el Notario.
Lógicamente el Notario no firmará ninguna clave si no ha verificado antes que realmente pertenece a su
dueño.
El primer punto es el mas 'peliagudo'. Necesitamos la clave pública del notario para verificar todo lo que
éste firma, pero ¿cómo estar seguros de que no se trata de una clave falsa?
En la práctica, suponemos que hay una forma razonablemente segura de obtener la clave pública
verdadera del Notario. Tal vez nos la ha entregado él personalmente, o la hemos descargado de una
página web segura. Pero en cualquier caso, somos nosotros quienes decidimos cuánta confianza otorgar
al Notario.
Una firma digital que atestigua la autenticidad de una clave pública se denomina genéricamente
certificado digital.
Un certificado digital consta de:
Verisign ([Link]
Thawte ([Link]
ACE ([Link]
IPS ([Link]
Son como "agencias notariales electrónicas" que certifican claves bajo pago.
Estas CA están pensadas para certificar claves públicas en una conexión segura mediante navegador.
Sus claves públicas (necesarias para que nuestro navegador pueda verificar los certificados emitidos por
estas CA) se pueden descargar de la red, para lo cual hay que ir a la página web de dicha CA. Pero,
algunas de estas claves públicas ya se encuentran en el navegador, ya que fueron entregadas por la CA
directamente al fabricante.
En España la firma electrónica se ha usado a nivel oficial para, por ejemplo, rellenar la declaración de la
Renta por Internet. Esto se hizo por primera vez en 1.999 dentro del marco del proyecto CERES de la
Fábrica Nacional de Moneda y Timbre (FNMT), que fue la entidad que actuó como CA
([Link] Durante dicho año se aprobaron dos leyes sobre firma electrónica.
Estas leyes son:
43 de 103
U2 Seguridad Lógica
/[Link]
Real Decreto-Ley 14/1999 de 17 Septiembre (BOE 18 Septiembre 1.999) sobre firma electrónica.
Trata sobre todo de las CA (llamados "prestadores de servicios de certificación") y estuvo vigente
hasta el 20 de marzo de 2004. A partir de esa fecha entró en vigor una nueva ley sobre la firma
electrónica disponible en [Link]
Certificado digital
Certificado digital (también conocido como certificado de clave pública o certificado de identidad)
El certificado, para cumplir la función de identificación y autenticación, necesita del uso de la clave privada
(que sólo el titular conoce).
El certificado y la clave pública se consideran información no sensible que puede distribuirse
perfectamente a terceros. Por tanto el certificado sin más no puede ser utilizado como medio de
identificación, pero es la pieza imprescindible en los protocolos usados para autenticar a las partes de
una comunicación digital, al garantizar la relación entre una clave pública y una identidad.
Existen variados formatos para los certificados digitales, pero los más usuales se rigen por el estándar
UIT-T X.509. Y una implementación de X.509 es Secure Sokets Layer (SSL). Otra es IPSec.
Los puntos 1 y 4 son el contenido fundamental del certificado (identidad y clave pública asociada), el resto
son datos imprescindibles para poder validar el certificado e información general.
Esta información se firma de forma digital por la autoridad emisora del certificado. De esa forma, el
receptor puede verificar que esta última ha establecido realmente la asociación.
Garantiza que en el certificado digital constan los datos reales del solicitante, impidiendo así que
alguien que se haga pasar por él obtenga un certificado digital a nombre del usuario.
Garantiza que dicho certificado lo ha emitido la Autoridad Certificadora y, por tanto, que no está
falsificado.
44 de 103
U2 Seguridad Lógica
Una vez verificada la identidad del solicitante, la CA crea el certificado digital y se lo entrega al
solicitante.
La creación del certificado supone la creación de dos claves, una privada y una pública.
Habitualmente, la creación de las claves, tanto pública como privada, tiene lugar de forma
automática en el ordenador del usuario que solicita el certificado digital:
Garantiza que nadie más tiene acceso a ella durante todo el proceso.
No sucede lo mismo con la clave pública ya que, aunque también es creada automáticamente en el
ordenador del usuario, es enviada a la CA para que la custodie.
Si no tiene lugar en el ordenador del usuario, la CA podría quedarse con una copia de la clave
privada... ¡OJO!
Podríamos preguntarnos:
¿qué pasaría si no confiáramos en la FNMT y en los DNIs que expide a nombre del Ministerio
del Interior?
Hay que tener en cuenta que los certificados digitales poseen una fecha de emisión y una
caducidad, por lo que podrán ser emitidos, renovados y revocados.
Un certificado puede ser renovado, a petición del titular, porque está próxima su [Link]
certificado puede ser revocado, tanto por el titular como por la CA porque:
2. El certificado digital también podrá ser utilizado, gracias a la clave pública, para enviar mensajes
cifrados de modo que sólo el destinatario podrá leerlos.
Por ejemplo dos usuarios que utilizan las dos características características para comunicarse
el uno con el otro:
Con lo cual:
45 de 103
U2 Seguridad Lógica
Actividad -4-
Tarea:
Mostrar retroalimentación
Una PKI (Public Key Infrastructure) engloba todo el software y componentes de hardware junto con
los usuarios, políticas y procedimientos que permiten la creación y gestión de certificados digitales
basados en criptografía asimétrica o de clave pública.
El objetivo principal de la PKI es la gestión eficiente y confiable de las claves criptográficas y los
certificados que pueden ser utilizados en pocesos de autenticación y garantizando la integridad,
confidencialidad y no repudio.
Los formatos de codificación más comunes son:
Recomendación: tener ambos certificados para realizar cualquier tipo de transacción a través de Internet.
46 de 103
U2 Seguridad Lógica
Actividad -5-
Enunciado:
En los apartados anteriores hemos nombrado el estándar X.509 como uno de los mas
utilizados en los cerificados digitales.
Tarea:
Haz un breve resumen sobre el estándar X.500 y el X.509 y la relación entre ellos.
47 de 103
U2 Seguridad Lógica
Casos prácticos
48 de 103
U2 Seguridad Lógica
Formato:
La ACL se representa por tres campos separados por ":".
[Tipo]:[Calificador]:ListaPermisos[,...]
Tipo:
"u" Usuario
"g" Grupo
"o" Otro
"m" Máscara
Calificador:
ListaPermisos:
Cadena estándar rwx (las cadenas se pueden remplazar por "-" si no queremos dar
acceso de ese tipo)
Cadena simbólica + ^
Utilidades:
NOTA:
Hay que crear todos los archivos, directorios, usuarios y grupos que aparecen en el caso
práctico.
1. Mostrar ACL:
NOTA
Si la salida de umask no coincide con la dada se puede ejecutar la orden $ umask 0002 para que,
en esta sesión, el sistema trabaje con esta máscara de permisos y coincida con los apuntes.
La acl para un directorio, al cual no se le ha asignado una acl explícitamente, coge los permisos de
umask:
$ umask 0002
¿qué significa el 0002? ¿qué permisos está otorgando a los archivos? ¿y a los directorios?
Con este valor de umask crea un directorio datos en tu home (~) y comprueba que ésto es cierto. La
acl para el directorio datos es:
$ getfacl datos
# file: datos
# owner: emifsud
# group: emifsud
user::rwx
group::rwx
other::r-x
Creamos en nuestro home (~) un archivo con la orden touch.
49 de 103
U2 Seguridad Lógica
$ ls -al archivo
Nota -1-: antes de ejecutar la orden comprobar los permisos existentes para comparar después de
establecer la ACL.
Nota -2-: si algún modificador no se entiende utilizar la ayuda (man comando).
Ejemplos:
setfacl:configura ACLs para archivos y directorios, asignando la lista de control de acceso.
getfacl: obtiene la lista de control de acceso del archivo o directorio dado.
En el directorio ~/datos hay un archivo llamado archivo1 (créalo) y queremos dar permisos de
lectura y escritura al usuario prueba (crea el usuario).
$ setfacl -m user:prueba:rw- ~/datos/archivo1
$ getfacl ./datos/archivo1
# file: datos/archivo1
# owner: emifsud
# group: emifsud
user::rw-
user:prueba:rw-
group::rw-
mask::rw-
other::r--
Ahora queremos que todos los archivos o directorios creados dentro de un directorio archivos en
~/datos puedan ser leídos y modificados por el usuario prueba, la orden es la siguiente:
$ setfacl -d -m u:prueba:rw- ~/datos/archivos/
$ getfacl ./datos/archivos
# file: datos/archivos
# owner: emifsud
# group: emifsud
user::rwx
group::rwx
other::r-x
default:user::rwx
default:user:prueba:rw-
default:group::rwx
default:mask::rwx
default:other::r-x
Algunas opciones de setfacl son:
Opción Descripción
50 de 103
U2 Seguridad Lógica
Opción Descripción
Opción Descripción
Nota: Los comandos cp y mv copian o mueven cualquier ACLs asociado con archivos y directorios.
3. ACL por defecto
Las ACLs por defecto permiten indicar cuál es el juego de ACLs que queremos que se apliquen
automáticamente a los nuevos ficheros y directorios que se creen dentro de un directorio dado. Se
dice en estos casos que los permisos se heredan desde el directorio padre.
La sintaxis es idéntica a la de una ACL normal, pero se debe usar además la opción -d:
Los permisos de una ACL por defecto de un directorio se transfieren a los archivos y subdirectorios de
dicho directorio de dos formas:
El subdirectorio hereda la ACL por defecto del directorio padre en calidad tanto de ACL por
defecto como de ACL de acceso.
El archivo hereda la ACL por defecto como ACL de acceso.
Si el directorio padre no dispone de una ACL por defecto, los bits de permiso definidos en umask se
restan de los permisos al pasar por parámetro mode, y el resultado se asigna al nuevo objeto.
Si existe una ACL por defecto para el directorio padre, los bits de permiso asignados al nuevo
objeto se corresponden con la porción coincidente de los permisos del parámetro mode y con
aquellos que se definen en la ACL por defecto. El comando umask se descarta en este caso.
Ejemplo de ACL por defecto:
Previamente sabemos que midirectorio1 (creado con umask 0002) tiene estas características:
# file: midirectorio1
# owner: emifsud
# group: emifsud
user::rwx
group::rwx
other::r-x
Y que sobre midirectorio1 hemos ejecutado la orden siguiente:
$setfacl -m u:prueba:rwx,g:mascotas:rwx midirectorio1
Comprobamos que despues de ejecutar el siguiente setfacl
$setfacl -d -m g:mascotas:r-x midirectorio1
La opción -d del comando setfacl hace las siguientes modificaciones (opción -m) en la ACL por
defecto y el resultado es el siguiente:
$ getfacl midirectorio1
# file: midirectorio1
# owner: emifsud
# group: emifsud
user::rwx
user:prueba:rwx
group::rwx
group:mascotas:rwx
51 de 103
U2 Seguridad Lógica
mask::rwx
other::r-x
default:user::rwx
default:group::rwx
default:group:mascotas:r-x
default:mask::rwx
default:other::r-x
El comando getfacl muestra tanto la ACL de acceso como la ACL por defecto.
La ACL por defecto se compone de todas las líneas que comienzan por default.
Aunque se ejecutó solamente el comando setfacl con una entrada para el grupo mascotas para
obtener la ACL por defecto, el comando setfacl ha copiado automáticamente las entradas restantes
de la ACL de acceso para crear una ACL por defecto válida.
Las ACL por defecto no tienen un efecto inmediato en los permisos de acceso. Únicamente
intervienen cuando se crean los objetos de sistemas de archivos. Estos nuevos objetos
solamente heredan permisos de la ACL por defecto de sus directorios padre.
4. Utilización de máscaras (ACL extendida)
Una ACL extendida (extended) contiene además una entrada mask (máscara) y puede incluir varias
entradas del tipo named user (usuario identificado por su nombre) y named group (grupo identificado
por su nombre).
Los permisos definidos en las entradas owner y other siempre tienen vigencia.
Excepto la entrada mask, el resto de entradas (named user, owning group y named group) pueden
estar activadas o bien enmascaradas. Si se han definido permisos tanto en las entradas mencionadas
en primer lugar como en la máscara, tendrán validez. Los permisos que sólo han sido definidos en la
máscara o en la propia entrada, no tienen validez.
5. Ejemplo de utilización
1. Asignamos con umask la máscara de permisos por defecto del sistema. Cualquier archivo o directorio
creado con posterioridad tendrá dicha máscara de permisos.
$umask 027
52 de 103
U2 Seguridad Lógica
group::r-x
other::---
Asi es una ACL estándar.
3. Ahora asignamos al usuario alumno y al grupo alumno rwx:
$setfacl -m u:alumno:rwx,g:alumno:rwx dir1
La ACL resultante se muestra con el comando getfacl.
$ getfacl dir1
# file: dir1
# owner: admin
# group: admin
user::rwx
user:alumno:rwx
group::r-x
group:alumno:rwx
mask::rwx
other::---
Se ha generado una entrada mask automáticamente para reducir todas las entradas de group class a
un denominador común. Además, setfacl adapta automáticamente las entradas mask a las opciones
que se modifiquen (siempre que no se haya desactivado esta función con -n).
mask define los permisos de acceso máximos que tienen validez para todas las entradas de la group
class. Entre estas se incluyen named user, named group y owning group. Los bits de permiso de
group class mostrados al ejecutar ls -dl dir1 equivalen a la entrada mask.
$ ls -dl dir1
drwxrwx---+ 2 admin admin 4096 oct 14 19:47 dir1
La primera columna de la salida tiene un signo + que hace referencia a una ACL extendida.
4. Según la salida del comando ls, los permisos de la entrada mask incluyen también permiso de
escritura. Normalmente, estos bits de permiso también indicarían que el owning group (aquí: admin)
tendría así mismo derechos de escritura para el directorio dir1. No obstante, los permisos de acceso
realmente válidos para para el owning group consisten en la intersección de los permisos definidos para el
owning group y mask, es decir, r-x en nuestro ejemplo. Aquí tampoco se han modificado los permisos de
owning group después de añadir las entradas ACL.
La entrada mask puede modificarse con setfacl (opcion mask) o con chmod.
$getfacl dir1
# file: dir1
# owner: admin
# group: admin
user::rwx
group::r-x
mask::r-x
other::---
Después de haber retirado el permiso de escritura a la group class por medio del comando chmod, la
salida del comando ls ya le indica que los bits de mask han sido adaptados en consecuencia a través
del comando chmod.
Como se puede ver, el único que posee permiso de escritura sobre el directorio dir1 es el propietario.
Esto se ve aún más claramente en la salida del comando getfacl.
Además, getfacl añade a cada entrada un comentario informando de que los bits de permiso
realmente válidos no son los definidos inicialmente, ya que la entrada mask se encarga de filtrarlos.
53 de 103
U2 Seguridad Lógica
Por supuesto, se puede volver a en cualquier momento al estado original con el comando chmod
correspondiente:
$chmod g+w dir1
$ls -dl dir1
drwxrwx---+ ... admin admin ... dir1
$getfacl dir1
# file: dir1
# owner: admin
# group: admin
user::rwx
user:alumno:rwx
group::r-x
group:alumno:rwx
mask::rwx
other::---
Tarea:
1. Ejecuta las órdenes siguientes y explica detalladamente lo que hace cada una de ellas.
Incluye la salida generada por cada una de las órdenes.
$getfacl dir1
# file: dir1
# owner: admin
# group: admin
user::rwx
user:alumno:rwx # effective: r-x
group::r-x
group:alumno:rwx # effective: r-x
mask::r-x
other::---
Todas las capturas deben ser incluidas en el documento global de la práctica de la unidad junto
con las explicaciones que correspondan.
54 de 103
U2 Seguridad Lógica
Simular un caso real de aplicación de ACL sobre los archivos de una partición.
Preparación de la tarea
Crea en tu equipo GNU/Linux los usuarios fulano y jefe (con la contraseña que quieras) y los
grupos programadores y directores. Asigna fulano al grupo programadores y jefe al grupo
directores.
Dentro del directorio miproyecto crea tres archivos: fichero1, fichero2 y fichero3 y
cambia los permisos para que tengan permiso rwx el propietario y el grupo y ninguno el resto:
NOTA:
Los archivos pertenecen al usuario con el que cada alumno se conecta en su máquina.
Tarea:
1. Escribe los comandos que utilizas para:
2. Agrega ahora un nuevo usuario llamado mengano al grupo programadores y comprueba que puede
entrar el directorio miproyecto y leer o modificar los ficheros.
Una vez comprobado, quita los permisos de lectura y ejecución al directorio miproyecto a este usuario y
comprueba que no puede entrar al directorio. Escribe el comando que has usado para denegar los
permisos al usuario mengano.
3. Crea una máscara acl en el directorio miproyecto que indique que los permisos máximos que va a
tener cualquier usuario que no sea el propietario o el resto (other), sean de lectura o ejecución.
Escribe el comando que has usado. Ahora comprueba si el usuario fulano o mengano o jefe pueden crear
archivos en el directorio miproyecto.
¿Porqué?
Todas las capturas deben ser incluidas en el documento global de la práctica de la unidad junto
con las explicaciones que correspondan.
55 de 103
U2 Seguridad Lógica
1. Introducción
En el ámbito de los dispositivos routers, las ACLs son listas de condiciones que se aplican al tráfico que
viaja a través de la interfaz del router.
Las ACL indican al router qué tipo de paquetes aceptar o rechazar en base a las condiciones establecidas
en ellas y que permiten la administración del tráfico y aseguran el acceso, bajo esas condiciones, hacia y
desde una red.
La aceptación y rechazo se pueden basar en la dirección origen, dirección destino, protocolo de capa
superior y números de puerto.
Por lo tanto, una ACL es un grupo de sentencias que define cómo se procesan los paquetes que:
En principio si las ACL no están configuradas en el router, todos los paquetes que pasen a través del
router tendrán acceso a todas las partes de la red.
Es posible crear ACL en protocolos de red enrutados, como el Protocolo de Internet (IP) y el Intercambio
de paquetes de internetwork (IPX), entre otros. Se debe definir una ACL para cada protocolo enrutado
habilitado en la interfaz.
Además, se necesita crear una ACL por separado para cada dirección, una para el tráfico entrante y otra
para el saliente.
Como hemos comentado, las ACL se definen según el protocolo, la dirección o el puerto. Por ejemplo, si
el router tiene dos interfaces configuradas para IP, IPX y AppleTalk, se necesitan 12 ACLs separadas. Una
ACL por cada protocolo, multiplicada por dos por dirección entrante y saliente, multiplicada por dos por el
número de interfaces.
Se puede configurar una ACL por protocolo, por dirección y por interfaz.
Una ACL por protocolo: para controlar el flujo de tráfico de una interfaz, se debe definir una ACL
para cada protocolo habilitado en la interfaz.
Una ACL por dirección: las ACL controlan el tráfico en una dirección a la vez de una interfaz.
Deben crearse dos ACL por separado para controlar el tráfico entrante y saliente.
Una ACL por interfaz: las ACL controlan el tráfico para una interfaz, por ejemplo, Fast Ethernet 0/0.
Cuando el router está decidiendo si se envía o bloquea un paquete, el IOS prueba el paquete,
verifica si cumple o no cada sentencia de condición, en el orden en que se crearon las sentencias.
Una vez que se verifica que existe una coincidencia, no se siguen verificando otras sentencias de
condición .
Por lo tanto, Cisco IOS verifica si los paquetes cumplen cada sentencia de condición de arriba hacia
abajo, en orden. Cuando se encuentra una coincidencia, se ejecuta la acción de aceptar o rechazar y ya
no se continua comprobando otras ACL.
Por ejemplo, si una ACL permite todo el tráfico y está ubicada en la parte superior de la lista, ya no se
verifica ninguna sentencia que esté por debajo. Si no hay coincidencia con ninguna de las ACL existentes
en el extremo de la lista se coloca por defecto una sentencia implícita deny any (denegar cualquiera). Y,
aunque la línea deny any no sea visible sí que está ahí y no permitirá que ningún paquete que no
coincida con alguna de las ACL anteriores sea aceptado. Se puede añadir de forma explícita por aquello
de 'verla' escrita y tener esa tranquilidad.
Veamos el proceso completo:
1. Cuando entra una trama a través de una interfaz, el router verifica si la dirección de capa 2 (MAC)
concuerda o si es una trama de broadcast.
2. Si se acepta la dirección de la trama el router busca una ACL en la interfaz entrante.
56 de 103
U2 Seguridad Lógica
1. ACLs estándar
Sintaxis: Las ACL estándar en un router Cisco siempre se crean primero y luego se asignan a una
interfaz.
El comando de configuración global access-list define una ACL estándar con un número entre 1 y 99.
wild-mask: indica con 0 el bit a evaluar y con 1 indica que el bit correspondiente se ignora. Por ejemplo, si
queremos indicar:
In: tráfico a filtrar que ENTRA por la interfaz del router out : tráfico a filtrar que SALE por la interfaz del
router.
Para la creación de ACL estándar en importante:
Antes de aplicar cualquier ACL a una red, es importante confirmar que exista conectividad
completa. Si no se prueba la conectividad en la red antes de aplicar una ACL, probablemente la
resolución de problemas sea más difícil.
Nos planteamos: ¿dónde instalar la ACL? ¿en qué router? ¿en qué interfaz de ese router?.
En este caso no habría problema porque solo tenemos un router, el Router0. Pero la regla siempre es:
ACL estandar: instalar la ACL lo más cerca posible del destino (no especifican
direcciones destino).
Veamos algunos ejemplos. Los gráficos indican la topología de red con la que se va a trabajar.
Para asignar IP podemos sustituir la nube por un servidor.
57 de 103
U2 Seguridad Lógica
EJEMPLO 4:
Utilizamos la herramienta de simulación Packet Tracer con una topología de red muy sencilla,
formada por un router, dos switch y 2PCs, cada uno de ellos en una subred.
58 de 103
U2 Seguridad Lógica
Los pasos para crear una ACL en el router son tres (A, B, y C):
A) Supongamos que queremos crear en un Router0 una ACL con el número 1 (numACL) que deniegue el
host [Link]. Desde configuración global:
C) Por último utilizamos el comando de configuración de interfaz ip access-group para activar la ACL
actual en la interfaz como filtro de salida:
Para mostrar información de la interfaz IP que nos indique si hay alguna ACL asociada a dicho interfaz:
2. ACLs extendidas
Las ACL extendidas filtran paquetes IP según:
Las ACLs extendidas usan un número dentro del intervalo del 100 al 199.
59 de 103
U2 Seguridad Lógica
numACL: Identifica número de lista de acceso utilizando un número dentro del intervalo
100-199
protocolo: IP, TCP, UDP, ICMP, GRE, IGRP
fuente | destino: Identificadores de direcciones origen y destino
mascara-fuente | mascara-destino: Máscaras de wildcard
operador: lt, gt, eq, neq
operando: número de puerto
established: permite que pase el tráfico TCP si el paquete utiliza una conexión establecida.
Ejemplo:
En el esquema anterior, denegar solo telnet a la subred [Link].
ACL extendida: lo más cerca posible del origen del tráfico denegado. Así el tráfico no
deseado se filtra sin atravesar la infraestructura de red.
Tarea:
1. Estudiar los Ejemplos 1, 2 y 3 utilizando la topología dada. Se trata de entender y aprender el
funcionamiento de estas acl's.
2. Utilizando la misma topología de red que en el Ejemplo4, definir una ACL estándar que permita el
trafico de salida de la red [Link]/24. Incluir al menos una captura de Packet Tracer que muestre que
la ACL se está ejecutando sobre el router.
2. Eliminar la ACL anterior y definir una ACL estándar que deniegue un host concreto ([Link].
Incluir al menos una captura de Packet Tracer que muestre que la ACL se está ejecutando sobre el router.
3. En el esquema anterior, denegar FTP entre las subredes y permitir todo lo demás.
Todas las capturas deben ser incluidas en el documento global de la práctica de la unidad junto
con las explicaciones que correspondan.
60 de 103
U2 Seguridad Lógica
John The Ripper es una aplicación cuyo objetivo es descifrar contraseñas sencillas utilizando
diccionarios. Es capaz de romper varios algoritmos de cifrado o hash, como DES, SHA-1 y
otros que veremos mas adelante.
John the Ripper es capaz de autodetectar el tipo de cifrado de entre muchos disponibles, y se
puede personalizar su algoritmo de prueba de contraseñas. Eso ha hecho que sea uno de los
más usados en este campo.
Existen versiones de John para Ubuntu GNU/Linux, Windows, DOS, BeOS, y OpenVMS. La
página oficial del proyecto es [Link]
Ubuntu 18.04 tiene en su pool de aplicaciones una versión de John que es suficiente para
conocer su funcionamiento.
3. Preparar la ejecución
Crea varios usuarios en tu sistema GNU/Linux (con adduser o desde el entorno gráfico) y
llámalos por ejemplo prueba1, prueba2 y prueba3. Asígnales contraseñas débiles, como por
ejemplo 1234, o el mismo nombre de usuario o bien una palabra del diccionario castellano.
Vamos a comprobar si john puede descifrar estas contraseñas en el siguiente punto.
4. Ejecutar John
De esta forma le estás pasando como parámetro el archivo de contraseñas que debe intentar
descifrar. John va a intentar descubrir las contraseñas de todos los usuarios del archivo con distintas
técnicas.
Cuando termina la ejecución muestra las contraseñas encontradas. Podemos verlo también con la
orden:
4.2 Si tan solo se quiere utilizar el modo básico, es decir, que sólo pruebe con contraseñas parecidas al
nombre de usuario ejecutar:
$ sudo john --single /etc/shadow
No password hashes left to crack (see FAQ)
61 de 103
U2 Seguridad Lógica
Tener en
cuenta que ya ha encontrado las contraseñas, y por ese motivo muestra este mensaje. Si se ejecutara
esta orden antes de la anterior realizaría el trabajo de búsqueda.
4.3 Si se quiere utilizar un diccionario diferente al de por defecto, ejecutar:
En la página web se pueden encontrar diferentes diccionarios en varios idiomas, pero son de pago.
Podeis descargaros [Link] (hay que descomprimir) desde [Link]
/languages/Spanish/
4.4 Para realizar un ataque de fuerza bruta probando con combinaciones de números, caracteres,
mayúsculas y minúsculas.
[Link]
fuerza-bruta/
[Link]
Tarea:
1. Mirando la ayuda de la aplicación y las opciones, contesta a las siguientes cuestiones:
¿Cómo consultas las contraseñas descubiertas por el programa una vez ha finalizado?
¿Cómo le indicas a john que utilice un fichero de diccionario para que realice un ataque por
diccionario?
¿Cómo le indicas que sólo descubra la contraseña de determinados usuarios del archivo de
contraseñas en vez de todos?
Responde a las preguntas en el archivo global de los casos prácticos de la unidad indicando el nº de
caso y apartado correspondiente.
2. Utilización de diccionario
Crea dos usuarios usuario1 y usuario2 cuyas contraseñas serán usuario1! y usuario2?,
respectivamente.
Ejecutar John para que realice un ataque por diccionario utilizando el diccionario spanish
contra el fichero shadow, mostrando las contraseñas obtenidas. Haz una captura que muestre
los resultados obtenidos.
NOTA:
Si aparece el mensaje 'No password hashes left to crack ' busca y elimina del sistema el
archivo [Link]. Estará almacenado en /root/.john/[Link] si el usuario que ha ejecutado
john es root.
62 de 103
U2 Seguridad Lógica
Todas las capturas deben ser incluidas en el documento global de la práctica de la unidad junto
con las explicaciones que correspondan.
63 de 103
U2 Seguridad Lógica
Paso -2-
Después necesitamos encender otra vez el equipo pero esta vez desde un USB o CD bootable con W10.
64 de 103
U2 Seguridad Lógica
Paso -3-
En la pantalla inicial de la instalación le damos a “Siguiente”, después pulsamos en la parte de abajo a la
izquierda "Reparar" el equipo.
Paso -4-
De las 3 opciones que nos aparecen seleccionamos “Solucionar problemas” y después pulsamos
“Opciones avanzadas” y después pulsamos “Símbolo del sistema”.
65 de 103
U2 Seguridad Lógica
Paso -5-
Ya en la consola vamos a la raíz del disco, que en la mayoría de los casos será la unidad C:.
De alli vamos a Windows/System32.
Ahora vamos a renombrar el teclado, tecleamos “rename [Link] [Link]”
Después renombramos la consola de dos con el siguiente comando “rename [Link] [Link]”
Tecleamos “exit” para salir de la consola.
Apagar el equipo.
66 de 103
U2 Seguridad Lógica
Paso -6-
Después de reiniciar aparecerá otra vez la pantalla inicial para introducir la clave, vamos al botón de
accesibilidad y seleccionamos teclado en pantalla, y ahora aparecerá la consola de DOS y podremos
trabajar en lugar de utilizar el teclado en pantalla.
Tecleamos “net user” y nos aparecerá el nombre de los usuarios que están asociados al equipo.
Tecleamos “net user nombreusuario *” y la consola nos pedirá una contraseña nueva para ese usuario,
ponemos la deseada, después confirmamos poniendo la misma y nos aparecerá el mensaje de “Se ha
completado el comando correctamente”
Ya podemos acceder al equipo con ese usuario con nuestra nueva contraseña.
Tarea:
Reproducir todos los pasos y obtener la contraseña de W10.
NOTA
Es posible que haya que desactivar el Defender de Microsoft, por lo tanto hacer este caso práctico con el
equipo desconectado de Internet.
67 de 103
U2 Seguridad Lógica
Velocidad: rápida ejecución en cada una de los intentos de autenticación en el servicio seleccionado
para el ataque de fuerza bruta.
Variedad: Medusa incluye como módulos una gran variedad de servicios a explotar, esto lo hace una
herramienta versátil.
Transparencia: muestra su funcionamiento en tiempo de ejecución.
2. Requerimientos
Hay que utilizar un live-CD o Live-USB con la versión de Kali Linux desde la página oficial del proyecto
[Link] Descargar la iso y crear una máquina virtual con dicha iso.
En la configuración de la máquina virtual dentro de la configuración de red, el adaptador de red eth0
ponerlo como adaptador puente. De esa forma ambas máquinas, anfitriona y virtual pueden comunicarse
entre si ya que están dentro de la misma red.
Ubuntu 16.04 también dispone en su pool de aplicaciones de una versión de Medusa pero se trata de una
versión menos actualizada, pero que también se puede utilizar. Para ello ir a Software de Ubuntu e instalar
la herramienta.
3. Funcionamiento
Arrancar la maquina virtual con KaliLinux con la opción primera. Desde una terminal lanzar el entorno
gráfico con la orden startx.
Si se ha instalado, desde una terminal en Ubuntu ejecutar la orden
#medusa -d
Crear un pequeño diccionario con contraseñas sencillas entre las que estarán incluidas las de los usuarios
de nuestra instalación. Utilizar para la creación un editor de texto (gedit) no un procesador de textos. Este
archivo [Link] estará en un directorio cuyo path deberemos conocer.
Al ejecutar medusa con la opción -d muestra el conjunto de módulos disponibles. Los módulos son los
servicios que podemos atacar.
Opciones:
Requerimientos:
1. En la máquina virtual Kali (desde donde ejecutamos Medusa).
Primero hay que estar seguros de tener el modulo adecuado al servicio que se quiere atacar. Luego
ya se puede lanzar el ataque.
También se ha de disponer de un diccionario adecuado al tipo de ataque que se va a lanzar. En
[Link] existen multitud de diccionarios de todo tipo.
En nuestro caso crearemos un diccionario que llamaremos [Link] y en el escribiremos
con gedit varias contraseñas entre ellas la correcta para el usuario que se quiera probar.
Para realizar los ejemplos hay que tener el servicio activado en la máquina anfitrión. Servicio referido
al módulo de medusa que se va a utilizar. Por ejemplo, si se va a utilizar el servicio ftp para
encontrar la contraseña deberá estar activado el servidor ftp.
Hacer un ataque de fuerza bruta al propio servidor con el usuario elvira y un diccionario de
contraseñas llamado [Link] y servicio SSH:
Tener instalado y activado el servicio OpenSSH. Desde el Software de Ubuntu se puede instalar y al
ser instalado se ejecuta el servidor sshd.
Tarea:
1. Obtener la contraseña para el usuario 'usuario1' utilizando un diccionario elaborado por el alumno para
el servicio ssh.
2. Obtener la contraseña para el usuario 'usuario1' utilizando un diccionario elaborado por el alumno para
el servicio FTP instalando cualquier servidor ftp en la máquina anfitrión y teniéndolo activo. Por ejemplo,
utilizar vsftpd.
2. Obtener capturas en ambos casos que muestren que se ha obtenido la contraseña desde Kali o desde
el propio Ubuntu.
Otras webs donde se pueden obtener diccionarios:
[Link]
[Link]
69 de 103
U2 Seguridad Lógica
1. Pydictor
Pydictor se utiliza para crear un diccionario para fuerza bruta.
Esta herramienta crea la lista de palabras tanto en palabras normales como en diferentes tipos de
cifrado, como cifrado base64.
Pydictor está escrito en Python.
Hay dos métodos para romper la contraseña usando esta herramienta:
crea una lista de palabras normales
crea la lista de palabras en forma base64
Ahora le indicamos sobre qué bases queremos que genere la lista de palabras. En este caso son dígitos.
La sintaxis es la siguiente:
./[Link]: comando
–len: longitud de los caracteres
d: dígitos (se puede utilizar c para minúsculas y L para mayúsculas, incluso puede combinar todas)
<min>: hay que indicar la longitud mínima de caracteres
<max>: hay que indicar la longitud máxima de los caracteres
-o: indica la ruta
<ruta>: la ruta donde se guarda la lista de palabras (diccionario)
En concreto nuestra lista se generará con los siguientes parámetros (solo números de 4 dígitos):
70 de 103
U2 Seguridad Lógica
Siguiendo el mismo esquema generamos una lista de palabras con letras en mayúsculas (-base L) y el
diccionario se llama /root/Escritorio/[Link].
Si se quiere utilizar Pydictor para que genere palabras en Base64, la sintaxis de la orden es la siguiente:
./[Link] –-len <min> <max> -base d –-encode <tipo-codificación> –o <ruta>
./[Link]: comando
–len: longitud de los caracteres
<min>: hay que indicar la longitud mínima de caracteres
<max>: hay que indicar la longitud máxima de los caracteres
–encode: tipo de cifrado/codificación
<tipo-codificación>: codificación
-o: indica la ruta
<ruta>: la ruta donde se guarda la lista de palabras (diccionario)
2. Dymerge
Dymerge es una herramienta en Python que toma varios diccionarios creados anteriormente y los fusiona
en uno solo haciéndolo mas extenso y potente.
Para instalar:
Sintaxis:
python [Link] <ruta1> <ruta2> ... <rutaN> -s –o <ruta3>
Ejecutamos la fusión de los dos diccionarios creados con pydictor desde el directorio dymerge:
# python [Link] /root/Escritorio/[Link] /root/Escritorio/[Link] –s –o
/root/Escritorio/[Link]
Tarea:
71 de 103
U2 Seguridad Lógica
1. Gnome-encfs-manager
Gnome Encfs Manager (GEncfsM) es un gestor gráfico de sistemas de archivos cifrados EncFS, con
soporte para el anillo de claves de Gnome, basado en Cryptkeeper.
La principal ventaja de GEncfsM frente a Cryptkeeper, es la gestión de contraseñas mediante el anillo de
claves de Gnome, que permite guardar las contraseñas de forma segura.
Características:
Gnome Encfs Manager no está disponible en los repositorios oficiales de Ubuntu. Hay que añadir un ppa
en el que este disponible el paquete:
sudo add-apt-repository ppa:gencfsm/ppa
sudo apt-get update
Una vez instalada está disponible desde Ubuntu > Aplicaciones. Tiene una interfaz gráfica muy simple y
fácil entender.
Para ocultarlo y que sólo sea posible acceder a él conociendo la contraseña, debemos clicar en el
72 de 103
U2 Seguridad Lógica
icono del Gestor encfs y desmarcar la casilla del directorio que hemos protegido.
Vemos que ha desaparecido ese directorio.
Para poder acceder de nuevo a él, marcamos la casilla y nos pide la contraseña que hemos
asignado previamente.
Sí que lo mostrará la orden ls -a. Sin embargo, al acceder mediante la terminal nos encontraremos
con los archivos encriptados.
Podemos comprobar que, estando no marcada la casilla del directorio, un simple ls no muestra el
directorio ocultado.
Permitir a otro usuario acceder al directorio (volumen montado).
Podemos forzar a que se ejecute al iniciar la sesión en el sistema. Para ello ir a Preferencias >
Aplicaciones al inicio.
Tarea:
1. Reproducir los pasos dados con Gnome-Encfs-Manager y analizar el funcionamiento de la herramienta.
Comprobar las funcionalidades que proporciona.
2. Instalar DiskCryptor en Windows 10 y probar la herramienta.
3. Comparar ambas herramientas.
NOTA.
Trabajar con archivos creados por el alumno.
Una vez finalizada la práctica eliminar todos los archivos de trabajo en el equipo.
73 de 103
U2 Seguridad Lógica
claves de cifrado
claves de firma
Una vez generada se muestra un resumen con la información de esos pares de claves
En linux los ficheros con las claves se mantienen en el directorio .gnupg del directorio HOME del usuario:
La captura muestra tres grupos de claves creadas en diferentes fechas. El identificador de la primera es
D82C6DE1. Como identificador tambien se puede utilizar el nombre que aparece abajo. En nuestro caso
es "Elvira Mifsud". El campo anterior muestra el num. de bits utilizados (2048) y el algoritmo utilizado, en
este caso RSA (R).
pub indica que es una clave pública y sub una clave subordinada que se crea por defecto.
Para las claves secretas:
$ gpg --list-secret-keys --keyid-format LONG
2. Certificados de revocación de clave pública
74 de 103
U2 Seguridad Lógica
Ejemplo:
Se puede volcar la clave pública a un fichero y distribuirla a otros usuarios para que
puedan enviarnos mensajes.
Sintaxis: gpg --output <fich. destino> --export <id. de la
clave>
Puede guardarse en un fichero ASCII con la opción --armor
Ejemplo:
Se pueden añadir claves públicas de otros usuarios a nuestro anillo de claves públicas.
Sintaxis: gpg --import <fich. clave publica>
Ejemplo:
Hay que enviar el archivo generado por cada uno de vosotros para que los compañeros
puedan importarlo.
$ gpg --list-keys
Aparecerá la lista completa de las claves públicas importadas, incluida la nuestra. Podemos
entonces validar las claves públicas recibidas
5. Servidores de claves
6. Cifrado y descifrado
Sintaxis:
gpg --output <fich. cifrado> --encrypt --recipient <id. clave
destinatario> <fich. plano>
Puede generarse un fichero ASCII con la opción --armor
Se genera una clave simétrica de sesión y se cifra el texto plano con ella
La clave pública del destinatario se usa para cifrar esa clave de sesión
El mensaje PGP generado tiene 2 partes (clave de sesión cifrada + fichero cifrado)
El mensaje final se comprime y opcionalmente se transforma a formato ”texto”
Ejemplo:
75 de 103
U2 Seguridad Lógica
El archivo [Link] contenía el texto: "Hola, esto es una prueba de cifrado GPG"
7. Firma digital
Genera una firma digital para el fichero usando la clave privada de firma sobre el resultado de una
función hash del mensaje.
Pide ”frase secreta” para acceder al anillo de claves privadas
El mensaje PGP resultante contiene (fichero original + resumen firmado) comprimidos
Ejemplo:
Ejemplo:
Puede interesar ”separar” la firma del archivo original y generar una firma acompañante
Sintaxis: gpg --output <fich. firma> --detach-sign <fichero>
El resultado contiene únicamente el fragmento de firma (resumen cifrado con clave privada de
firma)
Ejemplo:
Para verificar una firma se usa el comando: gpg --verify <fich. firmado>
Con firmas acompañantes se debe aportar el archivo con la firma y el archivo original.
Sintaxis: gpg --verify <firma> <fichero original> Ejemplo:
La sintaxis es:
Ejemplo:
...
Tarea:
1. Reproducir los pasos en el equipo personal. Guardar de cada orden ejecutada con éxito la salida
generada.
2. Indica qué tipos de claves asimétricas permite seleccionar y los tamaños. Por defecto ¿cuál utiliza?
3. Explica con detalle la opción --armor.
4. Si cifras el archivo ya cifrado ¿qué pasa?
Todas las capturas y explicaciones pedidas deben ser incluidas en el documento global de la
práctica de la unidad junto con los comentarios que correspondan.
NOTA.
77 de 103
U2 Seguridad Lógica
78 de 103
U2 Seguridad Lógica
Una vez creada lo comprobamos en la interfaz y cerramos la aplicación Seahorse. Es posible que no
aparezca de forma inmediata. Paciencia. Si es necesario cerrar sesión de usuario y volver a abrir sesión.
No reiniciar la máquina.
Cuando la volvemos a abrir en la sección de Claves GnuPG vemos:
Si vemos que no se generan las claves comprobar si existe en el home del usuario una carpeta .gnupg y
borrarla con todo su contenido. Esta carpeta la ha generado gpg en el ejercicio anterior.
3. Cifrar/Descifrar archivos y directorios
Para ello seleccionamos un archivo, hacer clic con el botón derecho del ratón y seleccionar la opción
Cifrar.
79 de 103
U2 Seguridad Lógica
En la ventana que aparece, seleccionamos la clave que hemos creado, y hacemos clic en Aceptar.
Ya cifrado el archivo deberemos tener en la misma carpeta una nueva versión del archivo con la extensión
.pgp.
Si queremos cifrar una carpeta el proceso es exactamente el mismo, sólo que esta vez se nos preguntará
también si deseamos cifrar cada archivo dentro de la carpeta por separado o si queremos crear un archivo
comprimido que luego será cifrado. La segunda opción es la mejor en la mayoría de los casos.
Importante!!!
Hemos de borrar de forma permanente el archivo original. OJO con la papelera! Pero
antes hay que comprobar que el descifrado funciona correctamente.
Si ciframos un directorio, deberíamos encontrar dos nuevos archivos, la versión cifrada con la extensión
.pgp y un archivo comprimido con la versión original del folder. Tanto el comprimido como la carpeta
original, pueden ser borrados después del cifrado.
Para comprobar que el cifrado es OK hay que hacer doble clic en el archivo .pgp, introducir la contraseña.
El archivo original reaparecerá. Si es un directorio, el archivo .zip aparecerá y deberemos extraer el
contenido del mismo.
4. Descifrar archivos en otro equipo
Para descifrar archivos en otro ordenador, hay que exportar nuestra clave privada y luego importarla en
dicho equipo. Esto representa un riesgo de seguridad. Sin embargo, algunas veces puede ser necesario
descifrar archivos en otro ordenador.
Pasos:
1. En el ordenador que hemos creado las claves, iniciamos Seahorse y hacemos clic con el
botón derecho del ratón en nuestra clave personal. En el menú seleccionamos la opción
80 de 103
U2 Seguridad Lógica
Propiedades.
Ahora ya podemos hacer doble clic sobre cualquier archivo cifrado para descifrarlo.
4. Si el otro ordenador no tiene Seahorse instalado (tal vez sea otra distro o una versión vieja
de Ubuntu), copiamos la clave al escritorio, abrimos una terminal y ejecutamos el siguiente
comando (suponemos que gpg está instalado):
gpg nombre_de_archivo.pgp
Hay que reemplazar nombre_de_archivo.pgp con el nombre del archivo a descifrar. Nos pide la
contraseña. Una vez hecho esto, el archivo original se guarda en la misma carpeta donde está
el archivo .pgp.
Importante!!!
1. Deberíamos comprobar que el archivo original y el archivo descifrado
coinciden al menos la primera vez para estar seguros de que la
herramienta funciona bien.
2. Hemos de borrar de forma permanente el archivo original. OJO con la
papelera! Pero antes hay que comprobar que el descifrado funciona
correctamente.
3. La hora y fecha de los ordenadores donde creemos/importemos
/exportemos las claves debe ser correcta. Por varias razones técnicas,
Seahorse y el comando gpg no pueden importar una clave si la hora y
fecha en la PC, es menor que la fecha en la que aparece creada. Por
supuesto, esto significa que si el equipo donde creamos la clave tiene una
fecha errónea, podría darnos muchísimos problemas la creación y uso de
la clave.
Tarea:
1. Reproducir los pasos en el equipo personal. Guardar de cada paso realizado la captura
correspondiente explicando lo que se ha conseguido en dicho paso.
2. Indica qué tipos de claves asimétricas permite seleccionar y los tamaños. Por defecto ¿cuál utiliza?
3. Exporta la clave privada y, si dispones de otro equipo o mediante una máquina virtual, utilizando dicha
clave descifra un archivo que ha sido enviado por correo y descargado en dicha máquina. Realiza el
proceso y compara con el archivo original. Comenta el resultado en el archivo general de la práctica,
81 de 103
U2 Seguridad Lógica
82 de 103
U2 Seguridad Lógica
the serial, lo que viene a decir que el certificado es un certificado RAÍZ de certificación autofirmado, es
decir, no hay jerárquicamente ninguna otra CA por encima de la que estamos creando que valide
nuestro certificado.
Esto significa que cualquier certificado de servidor https que se firme con esta CA, NO va a ser
aceptado por defecto en ningún navegador, a menos que tengan instalado el certificado de nuestra
CA que vamos a crear (como ya se encuentran instalados de serie en la mayoría de navegadores los
certificados de muchas CA's reconocidas internacionalmente).
Observa que una vez seleccionado el Template [default] CA, en la pestaña Extensions, se ha marcado
Certification Authority como tipo de Certificado y con una validez de 10 años.
Esto es así porque en la plantilla por defecto se ha definido esa validez. El programa te permite
generar otra plantilla personalizada con distintos parámetros, como por ejemplo los años de validez.
Por ejemplo, hay algunas CA como la GVA o la FNMT que tienen 20 de años de validez en sus
certificados.
Observa también que en la pestaña Key Usage (utilización de la clave), se ha marcado Firma de otros
certificados (Certificate Sign) y firma de Listas de Revocación de Certificados (CRL Sign). Esto es así
porque éste es el uso habitual de un certificado de una CA: firmar y revocar otros certificados. Marca
en el marco Key Usage la opción Critical.
84 de 103
U2 Seguridad Lógica
En la pestaña Sujeto tienes que escribir los campos que identificarán a la CA.
En la figura se muestra un ejemplo de los valores que se pueden poner. Personalizar con los datos
indicando valores que tengan sentido como si fueran para una CA real y no utilizar acentos.
85 de 103
U2 Seguridad Lógica
Se pueden cambiar para mayor seguridad al tamaño de la clave o el tipo de clave (RSA, DSA). Pulsar
Create.
86 de 103
U2 Seguridad Lógica
La figura anterior muestra el listado de certificados disponibles en la base de datos de XCA que
hemos generado.
La figura siguiente muestra la clave privada generada para la CA.
Llegados a este punto, ya eres una CA (vamos a suponer que reconocida internacionalmente, como
Verisign o Thawte) y tienes capacidad de firmar y revocar certificados a personas o a servidores web
para el protocolo HTTPs.
El siguiente paso es que tu mismo te hagas una petición de firma de un certificado (conocido como
CSR:Certificate Signing Request) para montar un servidor https para un dominio que se va a llamar
[Link]. Puedes realizar la petición desde otro equipo o desde una máquina
virtual que este configurada la tj de red como puente y que tenga instalada la herramienta XCA.
Hacemos la petición de firma de certificado (CSR) para que sea firmado por la CA. El objetivo es
simular una situación real, en la que, para montar un servidor seguro sobre un dominio comprado en
un servidor web y que dicho certificado sea reconocido por cualquier navegador, tienes que solicitarlo
a una CA reconocida, como las citadas anteriormente (y que cobran por ello).
En nuestro caso vamos y para simplificar vamos a emitir desde nuestra CA el certificado de servidor
seguro. Pero la realidad sería implementar una situación como la expresada en los párrafos
anteriores.
87 de 103
U2 Seguridad Lógica
Pulsar en Aceptar.
Ahora el paso siguiente será instalar este certificado en el navegador web que utilicemos. Nosotros lo
vamos a hacer en Firefox.
3. Instalación del certificado de la CA en el navegador
Vamos a importar el certificado desde Firefox. Para ello:
Ir a Editar > Preferencias > Privacidad y Seguridad > Certificados > Ver Certificados > Autoridades >
Importar
Seleccionar el certificado exportado en el paso anterior y seleccionar la opción Confiar en esta
CA para identificar sitio web. Aceptar.
88 de 103
U2 Seguridad Lógica
Parte II
1. Creación de un certificado de servidor seguro
Supongamos que disponemos de un servidor web y queremos crear un certificado que le de
autenticidad y confidencialidad a los datos que maneje.
Ir a la pestaña Certificates > New Certificate. Marcar las opciones indicadas en la figura, incluida
Apply All:
89 de 103
U2 Seguridad Lógica
Ir a la pestaña Source y seleccionar la opción Use this Certificate for signing. Buscar en la lista el
certificado que acabamos de crear. En Template seleccionar HTTPS_server.
Pulsar en Apply all. De esta forma el resto de las pestañas actualizarán sus valores por defecto a la
selección hecha aquí.
Importante
Para que se resuelva este nombre de dominio ficticio habrá que añadir en /etc/hosts una línea que
identifique nuestra IP con dicho nombre.
[Link] [Link]
En XCA pulsar en Generate a new key. Muestra una ventana con los datos y pulsamos en Create. A
continuación indica que la clave se ha generado correctamente.
91 de 103
U2 Seguridad Lógica
Si vamos ahora a la pestaña Extensions vemos las características de nuestro certificado de servidor,
entre ellas el período de validez del mismo, 365 días. Lo dejamos tal y como está.
Por último pulsamos en Aceptar para obtener nuestro certificado de servidor web.
Comprobamos que el certificado del sevidorseguroxca ha sido emitido por nuestra CA:
# a2enmod ssl
El módulo mod_ssl está disponible en el paquete apache2.2-common que se instala junto con la
92 de 103
U2 Seguridad Lógica
instalación de apache2.
El módulo mod_ssl tiene las siguientes directivas de configuración, muchas de las cuales se utilizan
desde el propio archivo de configuración específico del módulo, /etc/apache2/mods-available
/[Link].
La directiva de carga del modulo mod_ssl se encuentra en el archivo /etc/apache2/mods-
available/[Link].
Directiva Descripción
SSLEngine Activa el motor SSL
SSLCACertificateFile Indica el archivo con el certificado de la
Autoridad de Certificación
SLCARevocationFile Archivo con la lista de certificados revocados
(CRL) por la Autoridad de Certificación.
SLCertificateFile Archivo del certificado del servidor que puede
incluir su clave privada.
SLCertificateKeyFile Archivo con la clave privada y codificada del
certificado. Debe estar protegido.
SSLOptions Opciones SSL para directorios.
SSLProtocol Protocolos usados (SSLv2, SSLv3, TLS).
SLRequire Definición de requisitos de acceso.
SLRequireSSL Indica la obligación de usar HTTPS.
SSLUserName Variable que almacena el nombre de usuario.
SSLVerifyClient Nivel de verificación de clientes.
MUY IMPORTANTE
Los nombres y paths dados en el certificado y la clave deben coincidir con los dados en la exportación
del punto 5 siguiente.
Añadir también la linea que identifica a nuestro servidor seguro:
ServerName [Link]
93 de 103
U2 Seguridad Lógica
Pulsar en Aceptar.
94 de 103
U2 Seguridad Lógica
95 de 103
U2 Seguridad Lógica
Comprobamos que el candado no aparece verde. El motivo es porque las imagenes no son seguras.
Se puede comprobar en los detalles del certificado. Para nosotros es suficiente así.
Parte III
1. Creación de un certificado de usuario
El objetivo es crear un certificado para autenticarnos en nuestro servidor seguro. Para ello en lugar de
crear directamente el certificado desde XCA, lo que hacemos es una petición de certificado. Nuestra
CA lo emitirá y luego lo firmará.
Ir a la pestaña Certificate Signing Request > New Request.
En la pestaña Source seleccionar el template [default] HTTPS_client y pulsar Apply all, de esta forma
se ajustan los parámetros en el resto de pestañas.
En la pestaña Sujeto hay que escribir los campos que te identificarán al usuario.
En la siguiente pantalla hay un ejemplo de los valores que se pueden poner. Cambiar personalizando
y evitar usar acentos. Tener en cuenta que Common Name es el nombre del usuario que solicita en
certificado.
Pulsar en Generate a new key.
Pulsar Create y ya hemos generado una petición de firma de certificado. Esta petición de firma de
certificado (también conocido como CSR) es CASI un certificado, porque sólo le falta que una CA lo
verifique, lo autorice y lo firme. Pulsar Aceptar.
96 de 103
U2 Seguridad Lógica
Pulsar Aceptar.
97 de 103
U2 Seguridad Lógica
Tarea:
1. Acceder a [Link] y descargar la última versión disponible para Windows.
Reproducir los pasos para la versión de Windows. Realizar las capturas necesarias que muestren todo el
proceso.
NOTA
En lugar de Apache2 se puede utilizar XAMPP para la tarea.
Todas las capturas deben ser incluidas en el documento global de la práctica de la unidad junto
con las explicaciones que correspondan.
98 de 103
U2 Seguridad Lógica
FNMT ([Link]
Verisign ([Link]
Thawte ([Link]
IPS ([Link]
IMPORTANTE.
Este caso práctico no está dirigido sino que es de investigación por parte del alumno. Por lo tanto, el
alumno decidirá en qué CA va a obtener su certificado digital y documentará todo el proceso de obtención
de dicho certificado.
Si el alumno dispone ya de su propio certificado digital no tiene que realizar este caso práctico.
Tarea:
Realizar capturas del proceso de obtención explicando cada uno de los pasos dados hasta estar en
posesión del certificado.
Incluir todas las capturas y explicaciones en el archivo general de las prácticas de la unidad,
dentro del caso práctico y apartado correspondiente.
99 de 103
U2 Seguridad Lógica
CP -12- EasyRSA
100 de 103
U2 Seguridad Lógica
Noticias
Noticias
Proponemos una serie de casos para ver cómo está el mundo de la seguridad informática…
19 de Enero de 2001
25 de Enero de 2001
Denegación de servicio de las páginas web de Microsoft en los Estados Unidos y Europa.
Febrero 2001
Cientos de empresas austríacas sufrieron robos de datos que permitieron a los crackers hacer
llamadas telefónicas a lugares de todo el mundo, a cuenta de dichas empresas, por supuesto.
4 de Febrero de 2001
Los sistemas del Foro Económico Internacional, reunido en Davos, fueron invadidos por
intrusos. Consiguieron información altamente confidencial y con el número de las tarjetas de
crédito de los más altos mandatarios mundiales.
9 de Marzo de 2001
Abril de 2001
Durante la crisis desatada por el avión‐espía norteamericano, hackers chinos paralizaron por lo
menos veinte sitios web, entre ellos el de la Casa Blanca.
24 de Junio de 2001
El virus CodeRed ya ha producido daños por un valor estimado en 1.200 millones de dólares.
14 de Octubre de 2001
Tras el atentado a las Torres Gemelas, hackers iraníes mantienen paralizada buena parte de la
red informática que brinda servicios a General Electric.
21 de Noviembre de 2001
101 de 103
U2 Seguridad Lógica
Conceptos y vocabulario
Conceptos
Seguridad lógica
ACL
ACL permite un control más preciso que los permisos del archivo por sí solos, al dar al
propietario de un objeto la capacidad de conceder o denegar accesos usuario por usuario.
Es la forma de recuperar una clave probando todas las combinaciones posibles hasta
encontrar aquella que permite el acceso.
Método de cracking que consiste en intentar averiguar una contraseña probando todas las
palabras del diccionario.
Este tipo de ataque suele ser más eficiente que un ataque de fuerza bruta, ya que muchos
usuarios suelen utilizar una palabra existente en su lengua como contraseña para que la clave
sea fácil de recordar, lo cual no es una práctica recomendable.
NAT
IP Spoofing
Técnica usada para defensa del ataque inundación SYN. Recordar que SYN es el bit de
control (flag) dentro del segmento TCP de peticion de conexion.
102 de 103
U2 Seguridad Lógica
Webs de interés
Contenido
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link] — Sitio Web para ACLs
103 de 103