Publicado el 15 de Junio del 2018
1.053 visualizaciones desde el 15 de Junio del 2018
1,6 MB
80 paginas
Creado hace 11a (24/05/2012)
Universitat Polit`ecnica de Val`encia
Apuntes de:
Seguridad en los Sistemas Informáticos
(SSI)
José Ismael Ripoll Ripoll
May 24, 2012
1
2
Contents
Prefacio
1 Introducción
¿Existe un sistema seguro?
1.1 Glosario de términos . . . . . . . . .
1.2 Niveles de seguridad . . . . . . . . .
1.3 Tipos de Ataques . . . . . . . . . . .
1.4
. . . . .
1.5 Técnicas criptográficas . . . . . . . .
1.6 Criptografía de clave secreta . . . . .
1.7 Criptografía de clave pública . . . .
1.8 Funciones de hash . . . . . . . . . .
1.9 Números aleatorios . . . . . . . . . .
1.10 Confidencialidad . . . . . . . . . . .
. . . . . . . . . . . . .
1.11 Firma digital
1.12 Distribución de claves públicas
. . .
1.13 Entidades certificadoras . . . . . . .
1.14 Comunicación segura con PKI . . . .
2 Administración Básica
2.1 El fichero /etc/passwd . . . . . . .
2.2 Crear usuarios
. . . . . . . . . . . .
2.3 Eligiendo un password . . . . . . . .
2.4 Permisos Básicos . . . . . . . . . . .
2.5 Bit SETUID . . . . . . . . . . . . .
2.6 Bit SETGID . . . . . . . . . . . . .
2.7 Problemas del bit SETUID . . . . .
2.8 Chroot . . . . . . . . . . . . . . . . .
2.9 Sudo . . . . . . . . . . . . . . . . . .
2.10 Montar y Desmontar . . . . . . . . .
2.11 Ordenes imprescindibles . . . . . . .
3 Módulos PAM
Introducción . . . . . . . . . . . . . .
3.1
3.2 Name Server Switch (NSS)
. . . . .
3.3 Problemas del NSS . . . . . . . . . .
3.4 PAM . . . . . . . . . . . . . . . . . .
3.5 Configuración de PAM . . . . . . . .
4 Programación en Python
4.1
Introducción . . . . . . . . . . . . . .
4.2 El primer guión Phyton . . . . . . .
ipython . . . . . . . . . . . . . . . .
4.3
4.4 Variables
. . . . . . . . . . . . . . .
4.5 Números . . . . . . . . . . . . . . . .
4.6 Booleanos . . . . . . . . . . . . . . .
4.7 Cadenas . . . . . . . . . . . . . . . .
4.8 Operaciones con cadenas . . . . . . .
4.9 Listas
. . . . . . . . . . . . . . . . .
4.10 Control de flujo . . . . . . . . . . . .
4.11 Tuplas . . . . . . . . . . . . . . . . .
4.12 Conjuntos . . . . . . . . . . . . . . .
4.13 Diccionarios . . . . . . . . . . . . . .
4.14 Clases . . . . . . . . . . . . . . . . .
4.15 Funciones . . . . . . . . . . . . . . .
4.16 Modulos . . . . . . . . . . . . . . . .
4.17 Entrada/Salida . . . . . . . . . . . .
4.18 Operaciones con ficheros . . . . . . .
4.19 Módulos importantes (sys y glob) . .
4.20 Módulos importantes (os) . . . . . .
4.21 Módulos importantes (socket,...)
. .
4.22 Modulos importantes (re) . . . . . .
5 Configuration de red
5.1 Servicios de Red . . . . . . . . . . .
5.2 Driver de red . . . . . . . . . . . . .
5.3 ifconfig . . . . . . . . . . . . . . .
5.4 route . . . . . . . . . . . . . . . . .
5.5 Resolución de nombres (DNS) . . . .
5.6 DNS /etc/resolv.conf . . . . . . .
5.7 inetd . . . . . . . . . . . . . . . . .
5.8 Servicios desde inetd . . . . . . . .
5.9 TCP Wrappers, tpcd . . . . . . . . .
5.10 xinetd . . . . . . . . . . . . . . . . .
6 Programación segura
6.1 Fallos de programación . . . . . . . .
6.2 Desbordamiento de pila . . . . . . .
6.3 Mapa de memoria de un proceso . .
6.4 Programa ejemplo . . . . . . . . . .
6.5 Llamada a una función . . . . . . . .
6.6 Sobreescribir la pila . . . . . . . . .
6.7 Es más fácil de lo que parece . . . .
6.8 Cómo evitarlos los desbordamientos
6.9 Consejos de programación . . . . . .
20
20
21
21
22
22
23
24
24
25
26
26
27
27
28
28
29
29
29
31
31
31
31
32
33
33
33
34
35
36
37
37
37
38
38
39
39
40
40
40
iii
1
1
2
2
2
2
3
3
4
5
5
6
6
7
7
9
9
10
10
11
11
11
12
12
12
12
13
15
15
15
16
16
16
19
19
19
20
i
6.10 Herramientas para auditar código . .
6.11 Stack protect . . . . . . . . . . . . .
6.12 Pila no ejecutable . . . . . . . . . . .
6.13 Pila en posiciones aleatorias
. . . .
6.14 Inyección de SQL . . . . . . . . . . .
6.15 Prevención de inyección de SQL . . .
6.16 Conclusiones
. . . . . . . . . . . . .
7 Registros del sistema
7.1 Una vez han entrado... . . . . . . . .
7.2 Directorio /var/log . . . . . . . . .
7.3 /var/log/wtmp . . . . . . . . . . . .
7.4 El demonio syslogd . . . . . . . . .
7.5 El programa logger . . . . . . . . .
7.6 syslogd + ssh . . . . . . . . . . . .
7.7 Ficheros SETUIDados . . . . . . . .
7.8 Monitorización de los ficheros de log
8 La suite SSH (Secure SHell)
8.1
Introducción . . . . . . . . . . . . . .
8.2 Utilización básica de ssh . . . . . . .
8.3 Claves de usuario . . . . . . . . . . .
8.4 Connection summary . . . . . . . . .
8.5 Copia segura con scp . . . . . . . . .
8.6 Ficheros de Configuración . . . . . .
8.7 Utilización avanzada, ssh-agent . .
8.8 Compartir conexiones
. . . . . . . .
8.9 Redirección de puertos . . . . . . . .
9 Proteger con SSL
Introducción . . . . . . . . . . . . . .
9.1
9.2 stunnel . . . . . . . . . . . . . . . .
9.3 stunnel como cliente
. . . . . . . .
9.4 Certificados y openssl . . . . . . . .
9.5 stunnel (v4) como servidor . . . . .
41
41
41
41
41
42
43
45
45
45
45
46
46
47
47
47
49
49
49
50
51
51
51
52
52
53
55
55
55
56
56
57
9.6 Comprobar el servidor . . . . . . . .
stunnel + xinetd . . . . . . . . . . .
9.7
10 Detección de intrusiones
10.1 Introducción . . . . . . . . . . . . . .
10.2 Message Digest 5, md5sum . . . . . .
10.3 Introducción a Tripwire . . . . . . .
. . . . . . . .
10.4 Tripwire (versión 1.2)
10.5 Ejecución de Tripwire
. . . . . . . .
10.6 Tripwire (versión 2.3)
. . . . . . . .
10.7 Generación de claves . . . . . . . . .
10.8 Ficheros de configuración . . . . . .
10.9 Utilizando tripwire . . . . . . . . . .
10.10Uso avanzado . . . . . . . . . . . . .
11 Scanners y sniffers
11.1 Escaner de puertos: Nmap . . . . . .
11.2 Escáneres de vulnerabilidades . . . .
11.3 OpenVAS . . . . . . . . . . . . . . .
11.4 Servidor openVASd . . . . . . . . . .
11.5 Cliente OpenVAS . . . . . . . . . . .
11.6 Detección de ataques . . . . . . . . .
11.7 Sniffers
. . . . . . . . . . . . . . . .
11.8 sniffit . . . . . . . . . . . . . . . .
11.9 tcpdump . . . . . . . . . . . . . . . .
11.10Detección de sniffers . . . . . . . . .
12 Planes de contingencia
12.1 Introducción . . . . . . . . . . . . . .
12.2 Prepararse para lo inevitable
. . . .
12.3 Síntomas de un ataque . . . . . . . .
12.4 Mantener la calma . . . . . . . . . .
12.5 Estudiar el incidente . . . . . . . . .
12.6 Informar del incidente . . . . . . . .
12.7 Curso acelerado de GnuPGP . . . .
57
57
59
59
59
60
60
61
62
62
62
63
63
65
65
65
66
66
66
68
68
69
70
70
71
71
71
72
73
73
73
74
ii
Prefacio
Este documento contiene los apuntes y el material de apoyo de la asignatura de “Seguridad en los Sistemas
Informáticos” que se imparte en la Escola T`ecnica Superior d’Enginyeria Inform`atica de la Universidat
Polit`ecnica de Val`encia.
La informática, y en especial la seguridad informática, es un campo en continuo cambio y renovación.
Cualquier documento sobre seguridad informática se queda rápidamente obsoleto, y estos apuntes no son
una excepción :-(
Por otra, estos apuntes se ha elaborado con la intención de servir de apoyo a la impartición de las
clases. Puede que algunos temas o conceptos no se expliquen con la extensión y detalle necesarios; siendo
necesario consultar otras fuentes para completar la formación.
Es conveniente disponer de acceso a Internet para poder consultar las dudas y completar los temas.
Para la elaboración de este material se ha utilizado:
• Emacs: el editor por antonomasia.
• El sistema de composición de textos LATEX.
• Los gráficos vectoriales (la mayoría) los he creado con inkscape.
• Para los gráficos de mapa de bits: Gimp.
• Creo que también se merece una mención el gestor de repositorios Subversion.
• Evidentemente, todas estas herramientas bajo el amigable y robusto GNU/Linux (Kubuntu por
concretar).
No imprimas este documento si no es extrictamente necesario
iii
iv
Chapter 1
Introducción
1.1 Glosario de términos
Hacker Persona que utiliza los ordenadores como reto intelectual, con amplios conocimientos informáticos.
Cracker Persona que utiliza ordenadores ajenos para cometer delitos.
Script kiddie Usuario de informática no experto que rompe la seguridad de un sistema usando exploits.
Hacktivist Hacker que utiliza la tecnología para reivindicar sus ideas (sociales, políticas, etc.). Por
ejemplo Anonymous.
Backdoor Puerta trasera. Agujero de seguridad intencionalmente creado por los autores del sistema.
DoS Denial of Service. Denegación de Servicio. Ataque consistente en impedir que un sistema pueda
ofrecer los servicios con normalidad.
Spoofing Suplantación. Mecanismo por el cual la máquina atacante adopta la personalidad (identifi-
cación) de una máquina amiga.
Troyano Código que realiza acciones ilícitas escondido dentro de un programa útil.
Worm Gusano. Programa que hace copias de sí mismo sobre distintas máquinas interconectadas por
una red.
Key logger Dispositivo diseñado para capturar y almacenar lo que el usuario teclea. Puede ser software
o hardware.
Virus Fragmento de código que al ejecutarse inserta copias de sí mismo en otros ejecutables.
Exploit Programa que hace uso de una o más vulnerabilidades para romper la seguridad de un sistema.
Rootkit Conjunto de programas para camuflar el control que el atacante tiene sobre el sistema. Suele
incluir una colección de aplicaciones que reemplazan los binarios del sistema.
Zombie Es un ordenador controlado remotamente por un atacante. Un ordenador que ha sido atacado
con éxito y que el ataque no ha sido descubierto por el propietario.
BotNet colección de robots (software) autónomos que pueden ser controlados remotamente por diversos
medios (IRC / P2P) con propósitos maliciosos.
Las máquinas zombie se aglutinan en las denominadas “botnets”, lo que permite el control unifi-
cado de muchos zombies.
Ingeniería social El arte de utilizar las personas como medio para atacar los sistemas informáticos.
Honeypot Software o conjunto de computadores cuya intención es atraer a atac
Comentarios de: Seguridad en los Sistemas Informáticos (SSI) (0)
No hay comentarios