View/Open - Instituto Politécnico Nacional

Anuncio
Instituto Politécnico Nacional
Centro de Investigación en Computación
DIRECTORIO DE ADMINISTRACION DE
APLICACIONES, LLAMADAS DE SISTEMA
Y UTILITARIOS DEL SISTEMA OPERATIVO LINUX
T
E
S
I
S
QUE PARA OBTENER EL GRADO DE
MAESTRO EN CIENCIAS DE LA COMPUTACIÓN
P R E S E N TA
EL ING. MANUEL ALEJANDRO SOTO RAMOS
DIRECTOR DE TESIS: DR. FELIPE ROLANDO MENCHACA GARCIA
MÉXICO, D.F.
Junio 2008
RESUMEN
Los sistemas informáticos se han convertido en parte fundamental de nuestro
método de vida, cada día incrementa el número de actividades relacionadas
con el almacenamiento e intercambio de información en formato electrónico. De
la misma forma, también han incrementado el número de amenazas
informáticas orientadas a obtener, manipular, negar o destruir la información
almacenada en los sistemas electrónicos.
Como consecuencia, la seguridad informática en la actualidad es un aspecto al
que se le presta mucha atención, la mayoría de las acciones se enfocan en la
prevención, pero no es algo que se pueda garantizar debido a que depende de
múltiples factores, los cuales abarcan desde el mismo código del programa,
pasando por los mecanismos y las políticas de seguridad del lugar hasta llegar
a la actuación del usuario del equipo. De modo tal, que la detección y el tiempo
de respuesta ante intrusiones toma relevancia.
Con base a lo descrito anteriormente surge esta investigación, orientada al
conocimiento de las amenazas informáticas, las metodologías de los sistemas
de prevención y detección de intrusos, con las cuales se propone una
metodología de detecciones basada en la integridad de la información para los
sistemas operativos Linux.
Se implementa esta metodología en un entorno de red con un elemento de
análisis en cada cliente y un servidor que recopila, procesa y almacena la
información de manera automática en intervalos de tiempo previamente
establecidos, utilizando como referencia un directorio constituido por la
información sensible para el funcionamiento de cada uno de los sistemas.
Algunas de las contribuciones de este trabajo son la reducción del tiempo de
detección de intrusiones en los directorios del sistema operativo y la generación
de reportes en un elemento centralizado, lo que permite el análisis de varios
equipos de cómputo.
Las pruebas realizadas permiten determinar la capacidad de detección de
intrusiones de la herramienta propuesta, determinar la cantidad de recursos
utilizados y el tiempo requerido para el análisis de los equipos de cómputo.
ABSTRACT
The computer systems have become an essential part of our method of life,
every day increases the number of activities related to the storage and
exchange of information in electronic format. In the same way, also they have
increased the number of cyber threats aimed at obtaining, handling, deny or
destroy the data stored in electronic systems.
As a result, computer security at present is an aspect to which have much
attention, most actions are focused on prevention, but is not something that can
be guaranteed because it depends on many factors, which include from the
same program code, through the mechanisms and security policies of the place
until it reaches the user's performance of the computer. So, that the detection
and the response time before intrusions take relevance
With base to the described thing previously, this research oriented to the
knowledge of cyber threats, methods of prevention systems and intrusion
detection, which proposes a methodology based on detections integrity of
information for Linux operating systems.
This methodology is implemented in a networked environment with an element
of analysis in each client and a server that collects, processes and stores
information automatically at intervals of time previously established, using as
references a directory consisting of sensitive information for operation of each
of the system.
Some of the contributions of this work are the reduction of intrusion detection
time of intrusions in the directories operating system and the generating reports
in a centralized element, allowing the analysis of several computers counting.
The realised tests conducted to determine the ability of intrusion detection tool
of the proposal, determine amount of used resources and the time required for
analysis of the computers.
A mis padres que me regalaron
lo mas maravilloso que existe
en este mundo.......
La vida y su amor.
Por ser mi maestro, guía, ejemplo, cómplice, motivador y todas las cosas que es
imposible describir; Por ser mi amigo y confiar en mi, por los momentos que me
regalas de tu tiempo aun cuando ya es de madrugada, por todo el cariño que me has
dado, espero darte muchos momentos de satisfacción como este, es la única forma en
que puedo devolver lo que tu haces por mi Papá
Por preocuparte siempre, por tus regaños y caricias, por alentarme y brindarme un
hogar lleno de amor, por darme consejos y ser una persona triunfadora que trabaja
cada día por su familia, por los días que nos hacías falta y no te teníamos cerca;
gracias Mamá.
A Faby por ser mi hermanita y compartir muchos años de travesuras y juegos, a Dany
por su buen humor en cualquier momento (aun en los peores), a Giovanni por su
ejemplo de esfuerzo y actitud, a Luis Antonio por ser parte de un nuevo ciclo dentro
de nuestra vidas, a todos les agradezco la infinidad de veces que me han ayudado. Se
que siempre estaremos juntos por encima de las diferencias que lleguemos a tener.
Por la cantidad interminable de veces que interrumpiste mi trabajo para compartir tu
tiempo conmigo. Porque tu llegada a nuestra familia le dio un giro a nuestras vidas,
trajiste la tranquilidad y armonía de regreso, llenas de color y vida la casa con tus
risas, por todas las veces que subiste las escaleras para abrazarme y hacer que
renovara las ideas plasmadas en este trabajo, te quiero muchísimo Luisma.
A mis “hermanos” los Chuchos por haberme invitado a ser parte de esta hermandad,
por ganar esos dos campeonatos y por todos los partidos que perdimos. De forma
especial, por aquel día en que me salvaron de cometer un error hubiera evitado que
estuviera donde hoy estoy y ser lo que soy, por aquel viaje a Puebla, les estaré
siempre agradecido.
Por escucharme siempre, acompañarme en las etapas difíciles, por brindarme un buen
consejo, hacerme poner siempre los pies en la tierra, enseñarme el valor de las cosas
y de las personas, por crecer junto a mi, por jugar conmigo y por hacerme ver siempre
mis errores sin maquillaje; por buscar lo mejor para mi y ser ese tipo de persona que
me hace sentir seguro de tener un buen amigo, gracias Compaigre.
A Marco Antonio Fragozo Olvera, mi papí, por los años de amistad y ser siempre
alguien que me apoya en lo que me propongo, por tu forma de enseñarme tantas
cosas de esta vida, por ser como un hermano mayor para mi, gracias por incluirme
en tu familia, que Dios te cuide siempre y tengas la felicidad junto a Faby.
Casi 10 años de camino juntos con altibajos, diferencias y promesas que regularmente
hemos cumplido. No siempre será así, tendremos caminos separados pero quisiera
contar contigo si algún día lo necesito, cuídate y mucha suerte David.
A mis amigos del CONA, los profesores Ángeles, Silver, Mónica, Sonia, Raúl, Jose
Jorge, Charly, Paty y Neta por hacerme la estancia dentro del trabajo muy divertida,
por sus consejos, apoyo, bromas y por dejarme ser parte de ese grupo.
A todos mis niños, siempre me motivaron a crecer como persona, no seré el mejor
profesor que tengan, pero nunca dejare de intentarlo. Gracias por todas las muestras
de afecto que me han brindado desde mi llegada al plantel, me permitieron compartir
conocimientos con ustedes y espero haberlos motivado a ser mejores cada día.
A Paty por acompañarme en el camino de este trabajo, hubiera terminado muchísimo
tiempo después sin tu ayuda, gracias por doblegar mi obsesión de hacerlo todo y
hacerme ver mis errores, por hacer de un instante común algo especial....
cuando puedo compartirlo contigo.
A los niños CIC: Adrian, Adriana, Obdulia, Edgar, Lilis, Arrianita, Hector, Isma, David,
Mochis, Josué y todos los del niños del cic-fut, gracias por regalarme de su tiempo y
dejarme conocerlos.
Al doctor Felipe Rolando Menchaca le agradezco todo el tiempo que me regalo y
compartió sus conocimientos, por todo el apoyo que me brindo desde mi llegada a
este centro pero sobre todo, por ser un gran ejemplo de motivación y superación.
A mis sinodales por el tiempo invertido en la revision del material y la aportación de su
experiencia en este trabajo.
Al CONACYT por el apoyo brindado para la realización de los estudios dentro de este
centro.
Si pudiera escribir el nombre de todas las personas
que han colaborado a que presente este trabajo
necesitaría bastantes hojas, si debiera agradecer
a todas las personas que me han apoyado, enseñado
y acompañado hasta el día de hoy; ocuparía mas
hojas que las de esta tesis; por esta razón, les estoy
agradecido por su aportación a la realización de mis
metas y les pido una disculpa, ya que sin ser menos
importantes omití su nombre.
Índice.
Índice
Pág.
Lista de figuras…………………………………………………………………….… VI
Lista de tablas………………………………………………………………………… VIII
INTRODUCCIÓN.
Antecedentes……………………………………………...……………....... IX
Planteamiento del problema……………………………………………….
IX
Objetivos……..………………………………...…………………………….
X
Justificación…………………………………………………...……………... XI
Beneficios Esperados………………………………………………......….
XII
Alcances…………………………………………………………………….... XIV
Límites………………………………………..………………………............ XV
Organización de la Tesis……………………………………………...……. XV
CAPÍTULO 1. ESTADO DEL ARTE.
1.1 Historia de los sistemas de auditoria y detección de intrusos….……. 2
1.2 Estructura de los sistemas de detección de intrusos……………….. 3
1.2.1 Definición de IDS……..…………………………………………… 3
1.2.2 Elementos de los sistemas de identificación de intrusos………. 5
1.2.2.1 Fuentes de Información…………...………………………….. 5
1.2.2.2 Análisis………………………………………..…………............. 6
1.2.2.3 Respuesta……………………………………………..…………. 6
1.2.2.4 Capacidades de generación de reportes y archivado………. 7
1.2.2.5 Estrategia de Control………………………………………….. 7
1.2.2.6 Tiempo de análisis…………………………………………….. 8
1.2.3 Métodos de detección de anomalías……………………………… 8
1.2.3.1 Métodos detección de anomalías alternativas……………… 9
1.3. Situación actual de los sistemas IDS………………………………... 12
1.4 Herramientas de detección de intrusos en Linux………………….… 13
1.4.1. Snort…………..………………………………………………………14
1.4.2. Tripwire………………………………………………………………. 14
1.4.3. Inotify…………………………..………………………………….… 16
I
Índice.
Pág.
CAPÍTULO 2. MARCO TEÓRICO.
2.1 La seguridad informática………………………………………………..… 17
2.1.1 Elementos a proteger………………………………………………... 17
2.1.2 Intrusos o atacantes…………………………………………………. 18
2.1.3 Amenazas lógicas……………………………………………………. 19
2.1.4 Los mecanismos de prevención más habituales en Linux……… 21
2.1.5 Canales de comunicación seguros SSH………………………….. 23
2.1.6 Estándares de seguridad…………………………………………… 26
2.2 Arquitectura del sistema operativo Linux………………………….......
27
2.2.1 Breve historia de GNU/Linux…………………………………..…..
28
2.2.2 Distribuciones Linux………………………………………………...
28
2.2.3 Características generales de Linux……………………………….. 29
2.2.4. Directorios en Linux………………………………………………… 30
2.2.4.1 Sistema de directorios……………………………………….. 31
2.2.4.2 Las cuentas de los usuarios………………………………... 33
2.2.4.3 Mecanismos de protección……………………………….… 33
2.2.4.4 Los archivos de inicialización del sistema…………..…….. 35
2.2.4.5 Detección de archivos que comprometen la seguridad....
35
2.4.4.6 Modificación del sistema de directorios……………….….
35
2.4.4.7 Modificación del esquema de permisos…………………..
38
2.2.4.8 Escalamiento de permisos………………………………….. 38
2.2.4.9 Detección de modificaciones en los archivos del sistema. 39
2.2.5 Procesos……………………………………………………………… 40
2.2.6 Intérprete de comandos…………………………………………….
41
2.2.7 Sistema de almacenamiento de sucesos………………………..
42
2.2.7.1 El demonio syslogd…. ………………………………………..….. 42
2.2.7.2 Auditoria de seguridad……………………………………………
2.3 Entorno de trabajo del servidor de monitoreo………………….…….
42
43
2.3.1 Servidor de páginas web…………………………………………... 43
2.3.2 Servidor de base de datos………………………………………...
43
2.4 Comentarios finales……………………………………………………...
44
II
Índice.
Pág.
CAPÍTULO 3. ANÁLISIS Y DISEÑO DEL SISTEMA.
3.1 Análisis y diseño del sistema de detección de intrusos....................... 45
3.2 Requerimientos……………………………………………………………. 45
3.3 Análisis de los requerimientos………………………………………….. 47
3.4 Arquitectura general del sistema…..………………………………..……. 48
3.4.1 Capas de diseño…………………………………………………….. 51
3.4.2 Tiempos de respuesta y de análisis…………………………..….
52
3.4.3 Uso de recursos……………………………………………………... 52
3.4.4 Plataformas………………………………………………………….. 52
3.5 Descripción de los procesos……………………………..……………..
53
3.6 Modelo funcional…………………………………………………………. 55
A) Conexión segura…………………………………………………… 56
B) Análisis de sistema cliente……………………………………….. 58
C) Búsqueda de cambios…………………………………………..… 60
D) Base de datos modificaciones……………………………………... 62
E) Impresión de informes…………………………………………….. 64
F) Generación de perfil de usuario………………………………..… 66
G) Administración y actualización de cambios…………………....
68
H) Sistema de respaldo………………………………………………. 70
CAPÍTULO 4. IMPLEMENTACIÓN DEL SISTEMA.
4.1 Estructura de la aplicación…………………………………………….… 73
4.2 Sistema de detección de intrusos DAYUSOL………………………… 74
4.2.1. Entorno de red………………………………………………………. 75
4.2.2. Canal de comunicación seguro…………………………………… 76
4.2.3 Análisis de sistema (sensor)……………………………………….. 77
4.2.4. Directorio de aplicaciones…………………………………………
79
4.2.4.1. Detección de modificaciones……………………………………... 80
4.2.4.2. Base de datos intrusiones………………………………………. 82
4.2.4.3. Generación de perfil de usuario………………………………..
82
4.2.4.4. Políticas de análisis de integridad……………………………...
82
4.3 Administración y actualización de cambios…………………………….. 85
III
Índice.
Pág.
4.3.1. Base de datos de estadísticas y reportes de incidentes………
85
4.3.2. Reportes de intrusiones usando correo electrónico……………. 87
4.4 Respaldo de archivos……………………………………………………. 87
4.4.1. Políticas de respaldo de información…………………………….. 87
4.4.2. Respaldo y restauración de datos …..…………………………… 88
4.4.3. Espacio y encriptación…………………………………………….. 88
4.5. Comentarios finales……………………………………………………… 88
CAPÍTULO 5. PRUEBAS DEL SISTEMA DAYUSOL
5.1 Sistema de directorios del cliente DAYUSOL……………………….
89
5.1.1 Utilitarios del sistema DAYUSOL………………………………… 91
5.2. Actualización de cambios de DAYUSOL……………………………. 93
5.3. Interfaz grafica de usuario y reportes………………………………..
93
5.3.1. Alarma de DAYUSOL mediante correo electrónico……………. 96
5.4. Análisis de fiabilidad e integridad de los sistemas DAYUSOL……… 97
5.4.1. Técnicas utilizadas para la evaluación
de detección de intrusos... ……………………………………. 97
5.4.1.1. Modificaciones DAYUSOL……………………………………... 98
5.4.1.2. Instalación de software mediante gestores de paquetes....... 100
5.4.1.3. Modificación de permisos, usuario, grupo, guid………..…
102
5.5. Pruebas de rendimiento para DAYUSOL en el cliente………………. 106
5.5.1. Pruebas de rendimiento para el cliente 192.168.1……………… 106
5.5.2. Utilización de recursos en el cliente 192.168.1.10…………....
107
5.4.3. Utilización de recursos en el cliente 192.168.1.11………........ 108
5.4.3. Utilización de recursos en el cliente 192.168.1.20……………. 109
5.5. Comentarios finales……………………………………………………. 110
CAPITULO 6. CONCLUSIONES Y TRABAJOS A FUTURO
6.1. Conclusiones………………………………………………………..……. 111
6.2. Trabajos a futuro……………………………………………………..… 112
IV
Índice.
Pág.
BIBLIOGRAFÍA…...…………………………………..……………………………..… 113
GLOSARIO………………………………………………..………………………….… 115
ANEXO 1. Manual de usuario……………………………………………………….. 119
ANEXO 2. Políticas y código fuente…………………………………………..…. 123
V
Índice de figuras.
Índice de figuras
Nombre
Pág
Figura 1.1. Tipos de intrusiones…………………………………………………..
Figura 1.2. Clasificación de los IDS………………………………………………
Figura 1.3. Estado de arte de los IDS…………………………………………….
Figura 1.4. Diagrama de flujo de Tripwire………………………………………..
Figura 1.5. Generacion de reportes de Tripwire…………………………………
Figura 1.6. Reportes de Tripwire Enterprise……………………………………..
4
7
12
15
16
16
Figura 2.1. Arquitectura cliente-servidor de SSH………………………………..
Figura 2.2. Arquitectura de SSH…………………………………………………..
Figura 2.3. Canal de comunicación cifrado usando SSH………………………
Figura 2.4. Autenticación de SSH usando llaves públicas……………………..
Figura 2.5. Sistema de directorio de archivos Linux.……………………………
Figura 2.6. Arquitectura del sistema operativo Linux…………………………...
24
25
26
26
33
37
Figura 3.1. Esquema general del sistema………………………………………..
Figura 3.2. Modelo funcional………………………………………………………
Figura 3.3. Diagrama de estados…………………………………………………
Figura 3.4. Gráfico de Estados de Conexión Segura…………………………...
Figura 3.5. Diagrama de actividades del sistema Conexión Segura………….
Figura 3.6. Gráfico de Estados de Análisis de sistema…………………………
Figura 3.7. Diagrama de actividades del sistema Análisis……………………..
Figura 3.8. Gráfico de estados de Búsqueda de cambios……………………..
Figura 3.9. Diagrama de actividades del sistema Análisis……………………..
Figura 3.10. Gráfico de estados de Base de datos modificaciones…………...
Figura 3.11. Diagrama de actividades del sistema Base de datos
modificaciones………………………………………………………..……………..
Figura 3.12. Gráfico de Estados de Impresión de Informes…………………...
Figura 3.13. Diagrama de actividades del sistema Impresión de Informes…..
Figura 3.14. Gráfico de Estados de Generación de perfil de usuarios………..
Figura 3.15. Diagrama de actividades del sistema Impresión de Informes.....
Figura 3.16. Gráfico de Estados de Administración y actualización de
cambios………………………………………………………………………………
Figura 3.17. Diagrama de actividades del sistema administración y
actualización de cambios…………………………………………………………..
Figura 3.18. Gráfico de Estados del sistema Respaldos……………………….
Figura 3.19. Diagrama de actividades del sistema Respaldos………………...
Figura 3.20. Casos de uso del IDS……………………………………………….
Figura 3.21. Arquitectura de la metodología propuesta………………………...
48
55
56
57
57
58
59
60
61
62
Figura 4.1. Arquitectura de DAYUSOL…………………………………………..
Figura 4.2. Diagrama de entorno de red DAYUSOL…………………………...
Figura 4.3. Integridad de archivos utilizando funciones compendio…………..
Figura 4.4. Estructura del directorio de usuarios DAYUSOL…………………..
Figura 4.5. Estructura detallada del directorio REMOTO………………………
Figura 4.6. Búsqueda de modificaciones………………………………………...
Figura 4.7. Dase de datos Entidad-Relación de DAYUSOL…………………...
74
75
76
79
80
81
86
63
64
65
66
67
68
69
70
71
71
72
VI
Índice de figuras.
Nombre
Figura 5.1. Escenario de pruebas de DAYUSOL………………………………..
Figura 5.2. Árbol de directorio de cliente de DAYUSOL………………………..
Figura 5.3. Árbol de directorio de cliente de DAYUSOL después la de
detección de intrusos……………………………………………………………….
Figura 5.4. Líneas del archivo de reporte después la de detección de
intrusos……………………………………………………………………………….
Figura 5.5. Contenido del archivo instalados…………………………………….
Figura 5.6. Árbol de directorio de cliente de DAYUSOL con los respaldos de
/etc y /usr…………………………………………………………………………….
Figura 5.7. Consulta del estado de los clientes en DAYUSOL2008…………..
Figura 5.8. Tablas de la base de datos DAYUSOL208…………………………
Figura 5.9. Interfaz REPORTE DE RED…………………………………………
Figura 5.10. Interfaz REPORTE DE HOST………………………………………
Figura 5.11. Interfaz REPORTE DETALLADO………………………………….
Figura 5.12. Reportes en formato electrónico (.PDF)…………………………..
Figura 5.13. Bandeja de entrada de correo electrónico con los reportes de
DAYUSOL……………………………………………………………………………
Figura 5.14. Contenido del correo electrónico enviado por DAYUSOL………
Figura 5.15. Elementos detectados por DAYUSOL en el cliente Router……..
Figura 5.16 Elementos detectados por DAYUSOL en el cliente Moniton…….
Figura 5.17. Elementos detectados por DAYUSOL en el cliente Alexin……...
Figura 5.18. Elementos detectados por DAYUSOL en la instalación de
paquetes con APT…………………………………………………………………..
Figura 5.19. Registros de DAYUSOL 2008 de los paquetes instalados con
APT……………………………………………………………………….................
Figura 5.20. Reporte de RED de DAYUSOL posterior a la intrusión Zeus y
Remote Shell….………………………………………………………………….....
Figura 5.21. Reporte de HOST de DAYUSOL posterior a la intrusión Zeus y
Remote-Shell………………………………………………………………………..
Figura 5.22. Reporte DETALLADO de DAYUSOL posterior a la intrusión
Zeus y Remote-Shell……………………………………………………………….
Figura 5.23. Correo electrónico recibido debido a la intrusión Zeus y
Remote-Shell………………………………………………………………………..
Figura 5.24. Detección del montaje de dispositivos en el mismo análisis de
la intrusión Zeus y Remote-Shell………………………………………………….
Figura 5.25 Recursos utilizados por DAYUSOL en cliente Router……………
Figura 5.26 Recursos utilizados por DAYUSOL en cliente Moniton…………..
Figura 5.27 Recursos utilizados por DAYUSOL en cliente Alexin…………….
Figura 5.28 Recursos utilizados por DAYUSOL en cliente Alex-lap-hp………
Figura 5.28 Carga de trabajo durante el análisis con DAYUSOL en cliente
Alex-lap-hp…………………………………………………………………………..
Pag
89
90
90
91
92
92
93
93
94
95
96
96
97
97
98
99
100
101
102
103
104
104
105
105
107
108
109
110
110
VII
Índice de tablas.
Índice de tablas.
Nombre
Pág.
Tabla 2.1. Posibles combinaciones de permisos……………………………….... 34
Tabla 3.1. Nivel de riesgo de directorios en el sistema operativo Linux……….
Tabla 3.2. Parámetros de validación de permisos de los archivos……………..
Tabla 3.3. Política de propiedades de archivo……………………………………
Tabla 3.4. Política integridad de archivo…………………………………………..
Tabla 3.5. Procesos principales del IDS propuesto………………………………
Tabla 3.6. Crear perfil del cliente…………………………………………………...
Tabla 3.7. Instalar perfil del cliente…………………………………………………
Tabla 3.8. Programación de ejecución…………………………………………….
Tabla 3.9. Establecer método de autenticación…………………………………..
Tabla 3.10. Establecer método de conexión………………………………………
Tabla 3.11. Establecer estructura de análisis……………………………………..
Tabla 3.12. Establecer métodos de análisis de integridad………………………
Tabla 3.13. Establecer métodos de impresión de reportes de análisis………...
Tabla 3.14. Mostar estado del cliente……………………………………………...
Tabla 3.15. Descripción de Conexión segura……………………………………..
Tabla 3.17. Descripción análisis del cliente……………………………………….
Tabla 3.18. Descripción de búsqueda de cambios……………………………….
Tabla 3.19. Descripción de base de datos de modificaciones…………………..
Tabla 3.20. Descripción de impresión de informes……………………………….
Tabla 3.21. Descripción de generación de perfil de usuario…………………….
Tabla 3.22. Descripción de administración y actualización de cambios……….
Tabla 3.23. Descripción del sistema de respaldos……………………………….
49
50
50
50
53
53
54
54
54
54
54
54
55
55
56
58
60
62
64
66
68
69
Tabla 4.1. Especificaciones del entorno de red de DAYUSOL………………….
Tabla 4.2. Especificaciones del SSH implementado en DAYUSOL……………
Tabla 4.3. Especificaciones de estructura de archivos en DAYUSOL…………
Tabla 4.4. Especificaciones de compendios en DAYUSOL……………………..
Tabla 4.5. Resumen de sensores de DAYUSOL…………………………………
Tabla 4.6. Directorio de aplicaciones de DAYUSOL……………………………..
Tabla 4.7. Estructura de políticas de DAYUSOL…………………………………
Tabla 4.8. Estructura de políticas de DAYUSOL…………………………………
Tabla 4.9. Políticas y riesgo implementados en DAYUSOL…………………….
Tabla 4.10. Programaciones de análisis utilizadas en DAYUSOL……………...
Tabla 4.11. Base de datos de estadísticas y reportes de DAYUSOL………….
75
76
77
78
78
80
83
83
84
85
86
Tabla 5.1. Resumen de modificaciones en el cliente Router……………………
Tabla 5.2. Resumen de modificaciones en el cliente Moniton…………………..
Tabla 5.3. Resumen de modificaciones en el cliente Alexin…………………….
Tabla 5.4. Resumen de modificaciones con la instalación de paquetes……….
Tabla 5.5. Características de hardware del cliente Router………………………
Tabla 5.6. Características de hardware del cliente Miniton……………………..
Tabla 5.7. Características de hardware del cliente Alexin……………………….
Tabla 5.8. Características de hardware del cliente Alex-lap-hp………………...
98
99
100
101
106
106
108
109
VIII
Introducción.
INTRODUCCIÓN.
Este apartado plantea los antecedentes, la definición del problema, la
justificación, los objetivos que se buscan alcanzar; además de los
beneficios esperados al término del proyecto de investigación.
Antecedentes.
La seguridad informática es un aspecto al que se le presta mucha atención en la actualidad;
como consecuencia del valor que se le ha dado a la información almacenada en los equipos
de cómputo y al desarrollo de grandes redes como lo es internet; las empresas e
instituciones aceptan los riesgos de este entorno de intercomunicaciones distribuido y se
preocupan cada vez mas por la seguridad de sus sistemas.
Una parte importante de la seguridad de la información en los equipos de cómputo recae en
el sistema operativo, la forma en que está diseñado, las políticas de seguridad que
implementa, la gestión de los usuarios y los permisos de realizar determinadas tareas, el
tiempo que transcurre entre la detección de un error en la programación (bug) y la
corrección de este, además de los sistemas de protección instalados [1].
Un sistema de protección utilizado en los equipos de cómputo actualmente es la detección
de intrusos (IDS), básicamente es una herramienta que permite al administrador del sistema
detectar ataques informáticos, monitorear su comportamiento, incrementar la seguridad y
reducir las vulnerabilidades frente ataques de diversas características [2]. Lo que se
persigue con esta herramienta es disminuir los incidentes de ataques a los que se ven
sometidos los sistemas informáticos, el manejo de estos cuando ya se han realizado, las
medidas que se deben tomar para restaurar el sistema y las adecuaciones para evitar que
sucedan otra vez, además de la generación de reportes de incidentes para tener un análisis
de los riesgos a los que se enfrentan.
En este contexto, es necesario realizar un análisis de los marcos de referencia de la
administración del sistema operativo, las amenazas informáticas existentes, las
metodologías de funcionamiento de los sistemas de detección de intrusos y las herramientas
que se implementan para este propósito.
El presente trabajo de tesis aborda el diseño de una metodología y su implementación para
la de detección de modificaciones en el sistema operativo Linux; hace uso del conocimiento
de las amenazas informáticas existentes, el almacenamiento de los informes del sistema, los
conceptos de integridad de la información, las técnicas criptográficas que proporcionan la
base de autenticación y la certificación de los usuarios en sistemas electrónicos.
Planteamiento del Problema.
Se ha observado un incremento notable de usuarios de equipo de cómputo con plataformas
Linux en los últimos años [3]; gradualmente, también ha crecido el número de software
malicioso generado para este sistema operativo [4]. Por esta razón, muchos desarrolladores
en todo el mundo se dan a la tarea de crear programas que mejoren la seguridad de los
sistemas, sin embargo no siempre se puede estar completamente protegido.
En algún momento, el equipo presentará vulnerabilidad y esta será aprovechada por alguien
con malas intenciones; por lo que existe la posibilidad de una intrusión, si el sistema no
cuenta con las herramientas necesarias para la detección, el administrador podría pasar
IX
Introducción.
días en saber que ha sucedido un ataque informático, mientras mas tiempo transcurra
desde la intrusión, el volumen de información que podría ser afectada se incrementa [1].
Este aspecto se vuelve más complejo en un entorno de red, donde el número de equipos de
cómputo se incrementa.
Con base en los aspectos anteriores, surge esta investigación enfocada a proporcionar una
metodología de detección de intrusos de los sistemas de archivos de los equipos de
cómputo en un entorno de red, con el fin de identificarlas, determinar una posible intrusión y
recaudar evidencia suficiente para sustentar la tomar de decisiones sobre las medidas
necesarias para contrarrestar el posible daño realizado.
Objetivos.
Objetivo General.
El objetivo que se plantea esta tesis es desarrollar e implementar una metodología de
detección de modificaciones del sistema de archivos Linux, con la capacidad de reconocer
intrusiones, tipificarlas y generar un informe. En base a una política de seguridad, determinar
la fiabilidad del sistema de archivos de acuerdo a los elementos detectados y el riesgo que
representan para el óptimo funcionamiento o integridad de la información almacenada.
Objetivos Específicos.
• Analizar la estructura de directorios del sistema operativo Linux y definir el
riesgo de seguridad que representa la modificación de cada uno de ellos.
• Diseñar una metodología que permita obtener las propiedades significativas
de los archivos del sistema operativo y validar la integridad de la información
contenida en cada uno de ellos.
• Crear un sistema de directorios en un elemento central dentro de una red, el
cual permita almacenar la información de identificación de los archivos
obtenida previamente de cada equipo de cómputo.
• Diseñar e implementar una base de datos que permita almacenar los datos de
las modificaciones detectadas.
• Implementar una herramienta informática que permita el análisis,
almacenamiento, determinación de las probables intrusiones, generación de
reportes de elementos detectados y actualización del estado de cada equipo.
• Implementar un entorno de red que
reconocimiento y detección de intrusiones.
permita
realizar
pruebas
de
• Analizar el uso de recursos de hardware necesarios para el análisis de
detección de modificaciones implementado.
X
Introducción.
Justificación.
La seguridad de los sistemas informáticos es uno de los principales problemas con
los que podemos encontrarnos hoy en día. Resulta de vital importancia la
conservación, almacenamiento e integridad de la información en formato electrónico,
ya que esta ha pasado de ser un elemento abstracto de baja importancia, a ser
considerada incluso como un activo dentro del capital de las empresas [5].
La tarea de análisis de un equipo de computo requiere de herramientas de
procesamiento electrónico de información y conocimiento de las amenazas
informáticas, debido a que el proceso de instalación, configuración y revisión de
múltiples sistemas resulta tedioso, en ocasiones, es imposible de realizar por una
sola persona dedicada a la seguridad informática, por lo cual se automatizan
algunas de estas tareas, con lo que se consigue reducir notablemente el tiempo de
respuesta ante incidentes informáticos.
Algunos factores como el aumento de las amenazas informáticas, la necesidad de
conectarse a redes de dispositivos a gran escala como internet y un bajo
cumplimiento de las políticas de seguridad, incrementan el riesgo de ser víctimas de
un ataque informático. Para enfrentar estas amenazas, existen herramientas para
hacer de un sistema Linux un elemento confiable para el procesamiento de la
información, la mayoría de ellas de uso libre en versiones básicas, algunas otras con
costo para versiones de tipo empresarial, pero en general, son herramientas
independientes y la instalación es opcional a la distribución del sistema operativo [6].
Un elemento de seguridad en los sistemas Linux es el sistema de bitácoras, el cual
consiste en llevar un registro de casi todos los procedimientos, recursos, usuarios y
errores que se generan durante el uso del equipo de cómputo. Este elemento es
flexible, debido a que permite almacenar información dependiendo de reglas
configurables, pero, no existe una metodología para revisar esta información y
determinar elementos que comprometan la integridad del sistema. Por lo tanto se
tiene un volumen de información muy grande, sin clasificar y casi imposible de
revisar minuciosamente por parte del administrador del sistema [6].
La revisión de la integridad de la información almacenada toma relevancia debido a
la probabilidad de las modificaciones que pudieran presentarse sin autorización,
estas modificaciones sobre la información sensible del sistema podrían comprometer
su funcionamiento.
Otro elemento consiste en la revisión de las llamadas al sistema, el cual permite una
restricción sobre el tipo de contenido que se ejecuta dentro de un entorno Linux, esta
técnica requiere para su correcta aplicación una base de comportamiento de cada
uno de los ejecutables del sistema y la verificación de este, se aplica en tiempo real
por lo que se puede bloquear contenido no deseado [6].
Los elementos de seguridad descritos anteriormente permiten detectar intrusiones,
en un escenario ideal, un sistema de detección necesita reconocer las variaciones
en la estructura de los sistemas de archivos, programas, procesos o permisos de
ejecución en cuanto ocurren, es decir en tiempo de ejecución; pero esto, exige
XI
Introducción.
demasiados recursos al sistema y merman su rendimiento. Otra opción disponible
consiste en analizar un proceso o acción cuando ha finalizado su ejecución y se han
registrado los cambios, con el objetivo de saber que objeto fue ejecutado o
modificado, bajo que privilegios y por cuanto tiempo [7].
Las herramientas de detección pueden pertenecer al sistema operativo o instalarse
de manera opcional y permiten la reducción del tiempo de respuesta ante un
incidente informático [6].
Beneficios Esperados.
Con el desarrollo de este trabajo de investigación, se pretende contar con una metodología
para generar un directorio de referencia consistente en las aplicaciones, llamadas al sistema
y algunos utilitarios del sistema operativo Linux. Esta metodología será implementada en un
entorno de red, lo que permitirá la ejecución de un banco de pruebas específicas, que sirva
como referencia para determinar su confiabilidad y el desempeño de esta en ambientes de
trabajo reales.
La herramienta a desarrollar cumplirá con los siguientes aspectos:
1. Proporcionar confiabilidad y validación del software instalado por el administrador del
sistema, utilizando técnicas de criptografía y una base de datos en un medio de
almacenamiento seguro.
2. Reducir la ejecución de código no autorizado o modificado por parte de los usuarios del
sistema, restringiendo las aplicaciones que les son permitidas dependiendo de su actividad
específica.
3. Implementar la metodología presentada para obtener reportes de los análisis realizados a
los equipos de cómputo y obtener reportes fáciles de entender en el menor tiempo posible.
4. Con lo anterior se pretende reducir el tiempo de detección de cambios de la estructura de
directorios del sistema operativo, proporcionando al administrador un informe oportuno del
estado del equipo.
Alcances.
La herramienta de seguridad generada en este trabajo permitirá analizar cotidianamente las
modificaciones de programas que trabajan con el sistema operativo Linux; tomando como
base el reporte emitido, el administrador determinara las estrategias a seguir después de
que el sistema de archivos muestre alguna modificación.
Los análisis de los equipos se efectuarán en intervalos de tiempo bien definidos y sin la
intervención o supervisión del administrador del sistema, la conexión, análisis y
almacenamiento de los cambios será trabajo directo de la aplicación. El sistema de
detección de intrusiones permitirá el análisis de varios equipos de cómputo dentro de un
entorno de red, considerando un esquema cliente - servidor para la implementación.
XII
Introducción.
Límites.
La capacidad de análisis y de almacenamiento de información depende del número de
clientes analizados, de las prestaciones de hardware y de la tecnología de red utilizada para
la transferencia de datos.
Esta herramienta constituye una opción dentro de las herramientas de protección de los
sistemas informáticos, no existe una a solución integral o única, deben utilizarse
conjuntamente un grupo de elementos de protección y prevención para obtener un sistema
informático fiable; los elementos mas utilizados son los firewalls, analizadores de red y
monitores de recursos [1]. Además, al ser una herramienta pasiva, es necesaria la
intervención humana para las tareas de configuración, diseño de políticas de seguridad y la
determinación de procedimientos o estrategias a seguir cuando reporta una posible intrusión
o modificaciones del sistema de archivos.
Organización de la Tesis.
La información documental de este trabajo se encuentra organizada de la siguiente manera:
Capítulo 1. Estado del arte de los sistemas actuales de identificación de intrusos y las
técnicas que implementan.
Capítulo 2. Proporciona los conceptos básicos de seguridad informática, las
amenazas existentes y los fundamentos sobre el funcionamiento de la herramienta
de detección de intrusos.
Capítulo 3. Se muestra el modelo de los subsistemas planteados para cumplir los
objetivos y los cuales se utilizarán para la generación de la metodología de detección
de modificaciones del sistema de archivos, así mismo, se describe la arquitectura de
los procedimientos de análisis del sistema, los métodos de autenticación, las
técnicas de certificación y la codificación electrónica.
Capítulo 4. Se resumen los pasos necesarios para la implementación de la
herramienta de seguridad propuesta y los recursos utilizados para cumplir este
propósito. También se describe la generación de la base de datos y los esquemas de
seguridad utilizados en el desarrollo del sistema informático.
Capítulo 5. Se describen las pruebas realizadas a la herramienta desarrollada y los
resultados obtenidos, los criterios considerados para la evaluación de la herramienta
en cuestiones de fiabilidad, recursos de carga en el cliente, entre otros aspectos.
Capítulo 6. Se analizan los objetivos frente a los logros obtenidos, se establecen
recomendaciones y se proponen trabajos futuros.
XIII
Capitulo 1. Estado del arte.
CAPITULO 1. ESTADO DEL ARTE.
Este capítulo presenta el estado actual de los sistemas de
detección de intrusiones existentes, los desarrollos que se han
realizado en materia de seguridad informática y las técnicas
utilizadas para la detección de anomalías.
A finales de la década de los noventas, muy poca gente tomaba en serio el tema de la
seguridad de las computadoras; por una parte, la red de intercomunicación mas
grande del mundo llamada Internet, iba creciendo exponencialmente, redes
importantes se adherían a ella cada día; por otro lado, el desarrollo tecnológico
disminuyo el precio de los sistemas informáticos y puso al alcance de miles de
usuarios la adquisición de equipos de cómputo. En 1988, se protagonizo el primer gran
incidente de la seguridad informática, un programa desarrollado por Robert Tappan
Moris se convirtió en el gusano de Internet, miles de equipos de cómputo conectados
a la red se vieron inutilizados durante días, se calcula que el costo de la reparación
por el daño causado por el gusano fue de entre 200 y hasta 53,000 dólares en cada
equipo infectado [6].
Desde ese momento, el tema de la seguridad en sistemas operativos y redes ha sido
un factor vital para los administradores de sistemas informáticos. Poco después de
este incidente, la agencia DARPA (Defense Advanced Research Projects Agency)
creó el CERT (Computer Emergency Response Team), un grupo formado en su mayor
parte por voluntarios calificados de la comunidad informática, cuyo objetivo principal es
facilitar una respuesta rápida a los problemas de seguridad que afectan a los equipos
de computo.
Con esta referencia y a casi 20 años de distancia, podemos hacer un análisis similar,
tomando ahora como elemento fundamental el crecimiento de los usuarios con
sistemas operativos sobre plataforma Linux y su acceso a Internet. El número de
usuarios que utilizan el sistema operativo Linux ha crecido de manera sorprendente
[3], no solo son usuarios que realizan aplicaciones de trabajos escolares o pequeños
desarrollos de software. En la actualidad, se tienen servidores de correo, páginas web,
bases de datos, entre muchas otras aplicaciones; hay empresas muy grandes
utilizando esta plataforma, incluso, algunos países como Brasil, Venezuela, Ecuador,
India, Sudáfrica, China y Corea del Sur han decidido hacer oficial el uso de software
de código abierto en sus dependencias gubernamentales[3]. Por otro lado, el acceso a
la red mas grande del mundo se ha vuelto algo casi indispensable; la convergencia de
tecnologías de comunicación le ha permitido un desarrollo vertiginoso, hoy se puede
acceder a internet desde muchas partes, utilizando diferentes tipos de conexión
(alambrica, inalámbrica) y una variada cantidad de dispositivos (teléfonos móviles,
PALM, PC). Esto implica, que el número de usuarios conectados e intercambiando
información sea extremadamente grande, pero por desgracia, varios de ellos no tienen
las mejores intensiones y en algún momento pretenderán obtener beneficios de una
manera no adecuada, podrían ganar acceso a información o algún otro recurso que no
le pertenezca, incluso hacer un mal uso de ellos o destruirlos.
Por estas razones, debemos hacer hincapié en la necesidad de contar con sistemas
que procesen, almacenen e intercambien nuestra información de manera fiable,
comenzaremos a describir los términos de la seguridad informática, los riesgos que
existen, los métodos para proveer de fiabilidad al sistema operativo, los avances en
materia de prevención y las soluciones disponibles para hacer frente a esta
problemática.
1
Capitulo 1. Estado del arte.
Dentro de este trabajo de investigación nos enfocaremos a los equipos de cómputo y
los elementos que permiten brindarle seguridad. Uno de los aspectos fundamentales
es el sistema operativo, la seguridad en este punto se implementa haciendo uso de
mecanismos propios de su diseño como son: protección de la memoria, control de
acceso a los archivos, protección de los recursos del sistema, entre otros. Estos
elementos no son suficientes y requieren el complemento de otras herramientas de
análisis, prevención y manejo de errores.
En el mundo existe un gran número de herramientas que permiten realizar análisis
completos del sistema operativo Linux, algunos realizan auditorías y otros permiten
establecer mecanismos de seguridad, con el fin de evitar que los ataques se repitan;
estas herramientas han evolucionado de la misma forma en que lo ha hecho el
sistema operativo, algunas han sido incluidas como módulos de una distribución, otras,
han incrementado su funcionalidad desde su aparición hasta llegar a ser de tipo
empresarial [1]. Entre estas herramientas de seguridad destacan los sistemas de
detección de intrusiones (IDS), los cuales son elementos de software o hardware que
automatizan el proceso de monitorear los eventos que ocurren en equipos de cómputo
o red, analizándolos en busca de signos de problemas de seguridad.
Las herramientas de detección de intrusos basadas en host permiten incrementar la
seguridad en los sistemas informáticos, mediante el análisis de anomalías o de uso
indebido del equipo; la información proporcionada por estos elementos, permite
determinar las características de las violaciones, las técnicas necesarias para
solucionar el problema específico y generación de reportes de eventos [7].
1.1 Historia de los sistemas de auditoria y detección de intrusos.
La seguridad en los sistemas de información se remonta a los primeros elementos de
comunicación existentes en la década de los 50s, la empresa Bell Telephone System,
de Estados Unidos, estableció la necesidad de utilizar auditorías mediante el
Procesamiento Electrónico de Datos (EDP), rompiendo con el anterior sistema basado
en los tradicionales informes de papel. Posteriormente, el Departamento de Defensa
empleó numerosos recursos en los años 70 para la investigación de políticas de
seguridad, directrices y pautas de control de lo que denominaban sistemas de
confianza. Estos esfuerzos culminaron con la Iniciativa de Seguridad de 1977 [2]. Los
Sistemas de Confianza son aquellos sistemas que emplean los suficientes recursos de
hardware y software para permitir el procesamiento simultáneo de una variedad de
información confidencial o clasificada, el documento publicado por el Departamento de
Defensa trata el tema de las auditorías y los objetivos de un mecanismo de monitoreo
[7].
A medida que el número de ordenadores crecía, también lo hacia el número de
eventos a analizar al grado de que esta tarea se volvía humanamente imposible.
James P. Anderson fue la primera persona en documentar la necesidad de un
mecanismo que automatizara la revisión de los eventos de seguridad y describió el
concepto de Monitor de Referencias en 1980 [2]. Propuso un sistema de clasificación
que distinguía entre ataques internos y externos, basado en si los usuarios tenían
permiso de acceso o no al ordenador y debía distinguir entre el comportamiento
normal o inusual de las cuentas basándose en patrones de uso, creados a partir del
análisis de estadísticas de comportamiento de usuario.
2
Capitulo 1. Estado del arte.
Entre 1984 y 1986 se desarrollo el Sistema Experto de Detección de Intrusos (IDES),
un modelo que definía un sistema de detección de intrusiones en tiempo real. Este
proyecto proponía una correspondencia entre actividad anómala y el uso indebido,
entendiendo por anómala, aquella actividad inusual en un contexto estadístico [4].
Usaba perfiles para describir a los sujetos del sistema (principalmente usuarios), y
reglas de actividad para definir las acciones que tenían lugar (eventos de sistema o
tiempos de CPU).
En la década de los 90s, en la Universidad de California, fue desarrollado el Sistema
de Monitoreo de Red (NSM) para trabajar en una estación UNIX de Sun. Fue el primer
sistema de detección de intrusiones que monitoreaba el tráfico de red, utilizando los
datos del propio tráfico como principal fuente de datos [2]. Los anteriores sistemas
utilizaban los eventos de sistema o registraban las pulsaciones de teclado. El
funcionamiento del NSM es la base de los sistemas de detección de intrusiones de red
hoy en día.
1.2 Estructura de los sistemas de detección de intrusos.
La detección de intrusiones es el fruto de la aplicación del Procesamiento Electrónico
de Datos (EDP) a las auditorías de seguridad, utilizando mecanismos de identificación
de patrones y métodos estadísticos [4].
1.2.1 Definición de IDS.
La detección de intrusiones es el proceso de monitorear los eventos que ocurren en un
sistema de computadoras o en una red, y analizarlos en busca de signos de
intrusiones, las que se definen como intentos de comprometer la confidencialidad,
integridad, disponibilidad, o traspasar los mecanismos de seguridad de una
computadora o una red [4]. Las intrusiones son causadas por atacantes que acceden
al sistema por Internet, usuarios del sistema que intentan ganar privilegios adicionales
para los cuales no están autorizados, y usuarios autorizados que usan indebidamente
los privilegios que tienen. Los sistemas de detección de intrusiones, o SDI (también
conocidos como IDS, siglas en inglés), son productos de hardware o software que
automatizan este proceso de monitoreo y análisis [7].
La detección de intrusos se puede realizar a partir de la caracterización anómala del
comportamiento y del uso que hacen de los recursos del sistema. Este tipo de
detección pretende cuantificar el comportamiento normal de un usuario. Para una
correcta distinción hay que tener en cuenta las tres distintas posibilidades que existen
en un ataque:
•
Penetración externa: Se define como la intrusión que lleva a cabo un usuario o
un sistema de computadores no autorizado desde otra red.
•
Penetración interna: Es aquella que lleva a cabo el usuario interno que excede
sus permisos de acceso.
•
Abuso de recursos: Se define como el abuso que un usuario lleva a cabo sobre
unos datos o recursos de un sistema al que está autorizado su acceso.
3
Capitulo 1. Estado del arte.
La idea central de este tipo de detección es el hecho de que la actividad intrusiva es
un subconjunto de las actividades anómalas [4]. Sin embargo en la mayoría de las
ocasiones una actividad intrusiva resulta del agregado de otras actividades
individuales que por sí solas no constituyen un comportamiento intrusivo de ningún
tipo; las diferentes intrusiones que puede reconocer un IDS son:
1. Intrusivas pero no anómalas. Se les denomina falsos negativos y en este caso la
actividad es intrusiva pero como no es anómala no se consigue detectarla. Se
denominan falsos negativos porque el sistema erróneamente indica ausencia de
intrusión.
2. No intrusivas pero anómalas. Se denominan falsos positivos y en este caso la
actividad es no intrusiva, pero como es anómala el sistema la detecta como intrusiva.
Se denominan falsos positivos, porque el sistema erróneamente indica la existencia de
intrusión.
3. Ni intrusiva ni anómala. Son negativos verdaderos, la actividad es no intrusiva y se
indica como tal.
4. Intrusiva y anómala. Se denominan positivos verdaderos, la actividad es intrusiva y
es detectada.
El la figura 1.1 se muestra gráficamente las intrusiones que puede reconocer un IDS,
considerando si la intrusión esta dentro de lo normal o anómalo y la correspondencia
de estos con los ataques o un evento inofensivo.
Figura 1.1. Tipos de intrusiones [4].
4
Capitulo 1. Estado del arte.
1.2.2 Elementos de los sistemas de identificación de intrusos.
A continuación se mencionan los principales elementos de un sistema de identificación
de intrusos, los cuales difieren de acuerdo a las técnicas implementadas para la
realización de cada uno de ellos.
1.2.2.1 Fuentes de Información.
Se describen las diferentes fuentes de información de eventos usadas para determinar
si una intrusión ha tenido lugar. Estas fuentes pueden provenir de diferentes niveles
del sistema, siendo mas comunes las de monitoreo de red, host, y aplicación.
•
Basados en Red: La mayoría de los sistemas de detección de intrusiones
comerciales son basados en red. Estos IDS detectan ataques capturando y
analizando paquetes de red. Escuchando en un segmento de red o un switch,
un IDS basado en red puede monitorear el tráfico de red afectando a múltiples
hosts que estén conectados al segmento de red, y de esta manera proteger a
estos hosts. Los IDS basados en red a menudo consisten de un conjunto de
sensores de propósito simple o hosts ubicados en varios puntos de una red.
Estas unidades monitorean el tráfico de red, realizando un análisis local del
tráfico y reportando ataques a una consola de administración central. Como los
sensores están limitados a ejecutar el IDS, pueden ser asegurados más
fácilmente contra ataques. Muchos de estos sensores están diseñados para
ejecutarse en modo furtivo, para hacer más difícil para un atacante determinar
su presencia y ubicación [2].
•
Basados en Host: Operan sobre información recolectada de un sistema de
cómputo individual. (Los IDS basados en aplicación son un subconjunto de los
IDS basados en Host) Este punto de ventaja permite analizar actividades con
gran confiabilidad y precisión, determinando exactamente que procesos y
usuarios están involucrados en un ataque particular sobre el sistema operativo.
Adicionalmente, a diferencia de los IDS basados en red, estos IDS pueden
“ver” el resultado de un ataque frustrado, ya que pueden acceder y monitorear
directamente los archivos de datos y procesos del sistema usualmente blancos
de los ataques. Los IDS basados en host normalmente utilizan dos tipos de
fuente de información, los seguimientos de auditoria del sistema operativo, y
los logs del sistema. Los seguimientos de auditoria del sistema operativo son
usualmente generados en el núcleo del sistema, y por esto son más detallados
y mejor protegidos que los logs. Sin embargo, los logs del sistema son mucho
menos obtusos y mucho más pequeños que las auditorias, y son además
mucho más fáciles de entender. Algunos IDS basados en host están diseñados
para soportar una infraestructura de IDS de administración y reportes
centralizada que puede permitir una simple consola de administración analizar
varios hosts. Otros generan mensajes en formatos que son compatibles con
sistemas de administración de red [2][4].
•
Basados en aplicación: Los IDS basados en aplicación son un subconjunto
especial de los IDS basados en Host que analizan los eventos que ocurren
dentro de una aplicación de software. La fuente común de información utilizada
por los IDS basados en aplicación son los archivos log de las transacciones de
las aplicaciones.
5
Capitulo 1. Estado del arte.
La habilidad para interactuar con la aplicación directamente, con conocimiento
especifico de la aplicación, incluido en el motor de análisis, permite a los IDS
basados en aplicación detectar comportamiento sospechoso cuando los
usuarios autorizados exceden su autorización. Esto es porque tales problemas
aparecen más comúnmente en la interacción entre el usuario, los datos, y la
aplicación [2].
1.2.2.2 Análisis.
La parte de los sistemas de detección de intrusiones que realmente organiza e
interpreta los eventos derivados de las fuentes de información, decidiendo cuando
esos eventos indican que están ocurriendo intrusiones o que ya han ocurrido. Los tipos
más comunes de análisis son detección de uso indebido y detección de anomalías.
•
Detección de usos indebidos (misuse): El análisis encuentra algo conocido
como malo. Para encontrar usos indebidos se comparan firmas con la
información recogida en busca de coincidencias. Es la técnica usada por la
mayoría de los sistemas comerciales [2][4][7].
•
Detección de anomalías: Busca patrones anormales de actividad. Para la
detección de anomalías se manejan técnicas estadísticas que definen de forma
aproximada lo que es el comportamiento usual o normal. Hay puntos fuertes y
débiles asociados con esta aproximación, y parece ser que los IDS más
efectivos usan mayormente métodos de detección de usos indebidos con
componentes de detección de anomalías. Utilizan técnicas como: Detección de
umbral, medidas estadísticas, medidas basadas en reglas, incluyendo redes
neuronales, algoritmos genéticos y modelos de sistemas inmunes [2][4][7][9].
1.2.2.3 Respuesta
El conjunto de acciones que el sistema toma una vez este detecta una intrusión.
Típicamente son agrupadas en medidas activas y pasivas, donde las activas
involucran alguna intervención automatizada por parte del sistema, y las pasivas
involucran reportar por parte del IDS a los humanos, sus hallazgos, de quienes se
espera tomen alguna acción basados en esos reportes[2][1].
•
Respuestas activas: Afectan al progreso del ataque, pueden ser llevadas a
cabo de forma automática por el sistema, o mediante intervención humana.
Estas acciones pueden ser de diversa naturaleza; no obstante, la mayoría se
pueden clasificar en estas tres categorías principales: ejecutar acciones contra
el intruso, corregir el entorno y recopilar más información. Se debe tener gran
cuidado en cuanto a las acciones a tomar y obtener asesoramiento legal antes
de realizar cualquier respuesta al ataque [4][7].
•
Respuestas pasivas: Consisten en el envío de información al responsable
dejando en él la toma de decisiones. En los primeros detectores de intrusiones,
todas las respuestas eran pasivas. Por muy afinados que sean los mecanismos
de respuesta automática, hay ocasiones en que un sistema no tiene la
responsabilidad suficiente para tomar una decisión. Las alarmas por pantalla
son una de las alarmas más comunes entre los sistemas de detección de
intrusiones.
6
Capitulo 1. Estado del arte.
Un mensaje en una ventana indica al usuario que se ha cometido una posible
intrusión, acompañando a veces el mensaje con información adicional, como la
dirección del posible atacante, el protocolo usado, etc. Muchas veces, el
contenido de estas alarmas puede ser configurado. Otra de las posibles
formas de recibir respuestas pasivas es a través del correo electrónico o
mensajes a un teléfono móvil. Algunos sistemas de detección de intrusiones
comerciales están integrados con mecanismos de gestión de redes [2][4].
En la Figura 1.2 se muestra la clasificación de los IDS de acuerdo a las fuentes de
información, las técnicas de análisis y las estrategias de respuesta que implementan,
todas ellas descritas anteriormente
Figura 1.2. Clasificación de los IDS [2].
1.2.2.4 Capacidades de generación de reportes y archivado.
Muchos de los IDS comerciales, proveen capacidades para generar reportes y otros
documentos de información detallada. Algunos pueden dar reportes de los eventos del
sistema e intrusiones detectadas sobre un periodo particular (por ejemplo una semana
o un mes). Algunos proveen estadísticas o logs generados por el IDS en formatos
apropiados para la inclusión en un sistema de bases de datos [1][7].
1.2.2.5 Estrategia de Control.
Estrategia de control se refiere a como los elementos de un IDS están controlados, y
además, como la entrada y la salida del IDS es administrada [1][7].
•
Centralizada: Bajo estrategias de control centralizadas, toda la monitorización,
detección y los reportes son controlados directamente desde una ubicación
central.
7
Capitulo 1. Estado del arte.
•
Parcialmente distribuida: La monitorización y la detección son controladas
desde un nodo de control local, con reportes jerárquicos a una o más
ubicaciones centrales.
•
Totalmente distribuida: La monitorización y la detección se hacen usando una
aproximación basada en agentes, donde las decisiones de respuesta se toman
en el lugar de análisis.
1.2.2.6 Tiempo de análisis.
Es el tiempo que pasa entre los eventos que son monitorizados y el momento que se
realiza el análisis de dichos eventos.
•
Basado en Intervalos (Modo Batch): El flujo de información desde los puntos de
monitorización a los motores de análisis no es continuo; la información es
manejada de una manera similar a los esquemas de comunicación
“almacenamiento y envío”. Muchos de los primeros IDS basados en host
usaban este esquema de tiempo, ya que confiaban en los registros de auditoria
del sistema operativo, los cuales eran generados como archivos. Los IDS
basados en intervalos no pueden desempeñar respuestas activas [2].
•
Tiempo real (Continuos): Operan con alimentación de información continua
desde las fuentes de información. Este es el esquema de tiempo predominante
para los IDS basados en red, los cuales consumen información desde los flujos
de tráfico de red. El término tiempo real es usado en el control de procesos.
Esto significa que la detección desempeñada por un IDS de tiempo real
produce resultados lo suficientemente rápido como para permitir al IDS tomar
acciones que afecten el progreso del ataque detectado [2].
1.2.2 Métodos de detección de anomalías.
Los detectores de anomalías identifican comportamiento inusual o anormal
(anomalías) en un host o una red. Funcionan sobre la suposición de que los ataques
son diferentes de la actividad normal (legítima) y pueden por lo tanto ser detectados
por sistemas que identifican estas diferencias. Los detectores de anomalías
construyen perfiles representando el comportamiento normal de los usuarios, hosts, o
conexiones de red. Estos perfiles son construidos de datos históricos recolectados
sobre un período normal de operación. Posteriormente, los detectores recogen datos
de eventos y usan una variedad de medidas para determinar cuando las actividades
monitoreadas se desvían de lo normal.
Las medidas y técnicas usadas en la detección de anomalías incluyen:
•
Detección de umbral [4]. Este sistema es conocido también como detección de
umbral y disparador (threshold and trigger). En este caso, se cuenta el número
de veces que ocurren los elementos que forman los perfiles de cada usuario, y
se comparan estos datos con valores de umbral (algún nivel establecido como
permisible).
8
Capitulo 1. Estado del arte.
•
Medidas estadísticas [4]. Los sistemas estadísticos pueden ser de tipo
paramétrico o no paramétrico. Los primeros son aquellos cuyas distribuciones
son conocidas de antemano, para encajar en un patrón particular. Por ejemplo,
en las primeras versiones de IDES, la distribución utilizada era la Gaussiana o
normal. La mayoría de las primeras soluciones basadas en medidas
estadísticas utilizaban aproximaciones de tipo paramétrico. Los enfoques
estadísticos no paramétricos, por tanto, trabajan con perfiles de
comportamiento que no se basan en distribuciones preestablecidas, en cambio
son “aprendidas” de un conjunto de valores históricos, observados sobre el
tiempo.
•
Medidas basadas en reglas [4]. Son similares a las medidas estadísticas no
paramétricas, en que los datos observados definen el uso de patrones
aceptable, pero difiere en que esos patrones son especificados como reglas,
no como cantidades numéricas.
Otras medidas utilizadas para este propósito son las redes neuronales, algoritmos
genéticos y modelos de sistemas inmunes, solo las dos primeras métricas son usadas
en los IDS actuales. Desafortunadamente, los detectores de anomalías y los IDS
basados en ellos producen frecuentemente un gran número de falsas alarmas, ya que
los patrones normales de comportamiento de usuario y sistema pueden variar
ampliamente. A pesar de este defecto, la detección de anomalías se hace valida
porque son capaces de detectar nuevas formas de ataques, a diferencia de los IDS
basados en firmas que dependen de encontrar patrones de ataques pasados.
1.2.2.1 Métodos detección de anomalías alternativas.
Aparte de los métodos de detección antes mencionados, han ido apareciendo nuevas
soluciones, aplicables a la detección de usos indebidos o a la detección de anomalías,
las posibilidades en el campo de la detección son enormes. Cualquier sistema
relacionado con técnicas de aprendizaje, reducción de datos, o toma de decisiones se
puede aplicar de algún modo a la detección de intrusiones. Estas técnicas son
utilizadas en conjunción con otras más tradicionales, para refinar los procesos de
detección.
•
Sistema inmune: Consiste en aprovechar las similitudes existentes entre el
sistema inmune del organismo y la detección de intrusiones, basadas en la
identificación de lo que es propio al sistema y lo ajeno al mismo. El sistema es
capaz de reconocer comportamientos extraños al organismo (antígenos). Los
antígenos, en el contexto de un sistema computacional con usuarios y
comportamientos individuales; estas técnicas no deberían utilizarse de forma
única, sin el apoyo de algún otro mecanismo de detección complementario.
Algunos ataques, tales como los de condición de carrera, enmascaramiento, o
violaciones de políticas de sistema no hacen uso de procesos privilegiados, por
lo que no son detectados por este enfoque [2].
•
Genética: Los algoritmos genéticos también son de gran utilidad en la
detección de intrusiones, son un método de análisis de datos avanzado, un
algoritmo genético es una búsqueda basada en la mecánica de la selección
natural y de la genética natural. Combina la supervivencia del más apto entre
estructuras de secuencias con un intercambio de información estructurado,
aunque aleatorio, para constituir así un algoritmo de búsqueda que tenga algo
9
Capitulo 1. Estado del arte.
de las genialidades de las búsquedas humanas. Cada solución será
representada a través de una cadena de 0s y de 1s o cromosomas que se
verán entonces sometidos a una imitación de la evolución de las especies:
mutaciones y reproducción por combinación. Como se favorece la
supervivencia de los más "aptos" (las soluciones más correctas), se provoca la
aparición de híbridos cada vez mejores que sus padres. Al despejar los
elementos más aptos, se garantiza que las generaciones sucesivas estarán
cada vez más adaptadas a la resolución del problema. Para utilizar algoritmos
genéticos en la detección de intrusiones, los desarrolladores han definido
vectores de hipótesis para los datos de eventos, donde los vectores pueden
indicar si ha habido una intrusión o no. Entonces, la hipótesis se somete a
prueba para determinar si es válida. Con los resultados de la prueba, se
desarrolla una versión mejorada (evolucionada) de la hipótesis. Este proceso
se repite hasta encontrar una solución [2].
•
Minería de datos (Data mining): Según apuntan algunos, la minería de datos es
el sucesor de la estadística clásica. Ambos llevan al mismo fin, el cual es
construir modelos compactos y comprensibles que relacionen la descripción de
una simulación y un resultado relacionado con dicha descripción. Su diferencia
reside en que las técnicas de minería de datos construyen su modelo de forma
automática, mientras que las técnicas estadísticas clásicas deben ser
manejadas por un profesional. La detección de intrusiones que utiliza técnicas
de minería de datos es similar a la basada en reglas. Intenta descubrir patrones
fiables de características de sistema que puedan definir pautas de
comportamiento de sistema y usuario. Estos conjuntos de características de
sistema son procesados mediante métodos de inducción por motores de
detección que identifican tanto anomalías como usos indebidos. La minería de
datos extrae modelos a partir de grandes cantidades de información. Tiene la
peculiaridad de encontrar relaciones ente los datos que serían más difíciles de
detectar mediante otros métodos de análisis. Entre los algoritmos disponibles
para aplicar la minería de datos sobre datos de auditoría predominan tres:
clasificación, análisis de enlace, y análisis de secuencia.
Clasificación: Asigna los datos a una serie de categorías predefinidas. Los
algoritmos de clasificación determinan clasificadores, tales como árboles de
decisión o reglas. En la detección de intrusiones, los clasificadores deciden si
los datos de auditoría pertenecen a una categoría normal o anómala.
Análisis de enlace: Identifica las relaciones y correlaciones entre los campos en
el cuerpo de los datos. Un algoritmo de análisis de enlace óptimo reconoce el
conjunto de características de sistema más adecuado para revelar intrusiones.
Análisis de secuencia: Crea patrones de secuencias. Estos algoritmos pueden
identificar aquellos eventos que suelen ocurrir juntos, y proporcionar medidas
estadísticas de tiempo para mejorar la detección de intrusiones. Estas medidas
ayudan en la detección de ataques basados en denegación de servicio.
Una de las ventajas de la minería de datos es que mejoran el rendimiento, la
manejabilidad y reducen el tiempo de trabajo, además de su rapidez, también
son considerados por su sencillez. Estas técnicas permiten trabajar con
importantes cantidades de información sin problemas [2][4].
10
Capitulo 1. Estado del arte.
•
Detección basada en agentes: Los agentes son aplicaciones de software que
realizan funciones de monitorización en máquinas. Funcionan de forma
autónoma, es decir, son sólo controlados por el sistema operativo, no por otros
procesos. Los agentes están siempre en funcionamiento, siendo posible la
comunicación y cooperación entre ellos si es necesario. El grado de
complejidad de los agentes es variable. Pueden realizar tareas sencillas como
registrar el número de ocasiones en que un usuario entra al sistema, o más
complejas como la búsqueda de evidencias de ciertos ataques, de acuerdo con
determinados parámetros. Además, tienen la capacidad de responder de forma
muy precisa ante posibles intrusiones, por ejemplo, modificando prioridades de
procesos y de acuerdo a sus características, los agentes se pueden utilizar
tanto en detección de anomalías como de usos indebidos.
Como estos agentes se pueden comunicar entre sí, pueden realizar de forma
individual tareas simples, de forma que la tarea conjunta sea más compleja, sin
embargo, este sistema también tiene sus desventajas, si un monitor falla, los
datos enviados por los transmisores-receptores conectados a él, dejarán de
llegar[2][4][7].
•
Sistemas trampa (Honeypot): En vez de repeler las acciones de los atacantes,
utilizan técnicas para monitorizarlas y registrarlas, para así aprender de ellos,
un honeypot no es un sistema de detección de intrusiones, pero puede ayudar
a mejorar sus métodos de detección y aportar nuevos patrones de ataque. Esta
diseñado para engañar a los intrusos, poder estudiar sus actividades, y así
aprender de sus métodos. Se basa en la idea de conocer al enemigo para
poder combatirlo, los sistemas están diseñados para imitar el comportamiento
de aquellos sistemas que puedan ser de interés para un intruso, comúnmente,
poseen mecanismos de protección para que un atacante con éxito no pueda
acceder a la totalidad de la red [2][4].
•
Verificador de integridad de archivos: Un verificador de integridad de ficheros
es una herramienta utilizada por sistemas de detección de intrusiones,
normalmente los basados en máquina, para mejorar sus capacidades. Aplican
funciones resumen, u otros métodos de cifrado robustos, a ficheros críticos de
sistema, comparando los resultados con una base de datos de referencia, y
comunicando los posibles cambios o diferencias.
Hay varias razones por las que utilizar este tipo de herramientas para detectar
intrusiones. Un atacante puede alterar o eliminar ficheros para no dejar
evidencias de su actividad. Además, puede querer instalar algún troyano que le
permita obtener el control de la máquina. O incluso puede dejar una puerta
trasera que le deje volver a entrar en el sistema. Los verificadores de integridad
de ficheros no sólo pueden servir para detectar intrusiones a través de los
cambios encontrados en ficheros. También son de gran ayuda durante un
análisis forense, facilitando la identificación del ataque o método utilizado [8].
Además, ayudan a devolver a la normalidad un sistema, optimizando el
proceso de restauración [2][4][7].
En la Figura 1.3 se presentan las estrategias de análisis de detección de anomalías y
usos indebidos, además de la clasificación de las técnicas implementadas, esto
representa el estado actual de los sistemas de identificación de intrusos.
11
Capitulo 1. Estado del arte.
Figura 1.3. Estado de arte de los IDS.
1.3. Situación actual de los sistemas IDS.
A pesar de todos los avances realizados, estos sistemas no tienen el nivel de madurez
deseado. La mayoría comparte una serie de aspectos pendientes de ser mejorados;
sus principales puntos débiles y necesidades podrían ser descritos en los siguientes
aspectos:
Falsos positivos. Son aquellas alarmas que emite el detector cuando identifica
erróneamente un ataque o intrusión. El problema llega cuando el número de este tipo
de alarmas es inaceptablemente alto. Este inconveniente se agrava con los falsos
negativos, en los que el detector no reconoce un ataque cuando ha ocurrido [2].
Heurística. Este tipo de detectores contiene una base de datos con patrones de
ataques que comparan con la actividad que analizan. Un ataque conocido, modificado
ligeramente, puede ser totalmente indetectable por un detector de este tipo. La
adopción de técnicas heurísticas, tal como han hecho los fabricantes de antivirus, es
sólo una de las medidas que utilizarán los IDS en el futuro para corregir esta situación
[2].
Estandarización. Los productos de detección de intrusiones actuales no utilizan ningún
estándar en diversos aspectos de su metodología. La adopción de estándares no sólo
solucionaría problemas de compatibilidad y entendimiento entre los productos
existentes; sino que permitiría a las empresas que se dedican al desarrollo de estos
productos afrontar de forma conjunta un problema común [2].
Algunos de los aspectos en los que sería aplicable un estándar son: un protocolo de
comunicación, un lenguaje genérico para la detección de alarmas, o una definición de
un conjunto de reglas para personalizar el motor de detección. Hay algunos
organismos que han dedicado importantes esfuerzos en el ámbito de la
12
Capitulo 1. Estado del arte.
estandarización y normalización de los IDSs, pero muchos de los fabricantes de
detectores de intrusiones prefieren patentar sus propias soluciones antes que adoptar
un estándar [7].
Encriptación. Compartir el mismo medio físico para establecer diferentes
comunicaciones obliga a utilizar algún tipo de algoritmo de cifrado para proteger la
información [9]. Aunque la encriptación en las comunicaciones es un obstáculo para el
trabajo de los IDS de red, ya que el cifrado anula las capacidades de interpretación de
los datos, hay formas de solventarlo. Una de las más recurridas consiste en la
implantación de agentes en las máquinas que participan en la comunicación [7]. Será
imprescindible el uso de técnicas de encriptación para establecer enlaces seguros
entre los elementos de un IDS, como por ejemplo, entre los sensores y el sistema
central.
Protocolos. En el caso de IPv6 esto es especialmente sensible, ya que sus
características le permiten construir túneles sobre redes IPv4. Es muy probable que
los fabricantes de detectores de intrusiones tengan en cuenta esta característica en
sus futuros productos [2][7].
Sobrecarga de alarmas. Cuando se despliega un IDS en una gran corporación puede
llegar a generar miles de alarmas al día. Gestionarlas puede convertirse en una labor
imposible si no se disponen de los medios adecuados. Aunque hay algunas
soluciones, este aspecto aún necesita mejorarse [2].
Recursos. Con el aumento del tráfico de red también crecen las necesidades de
recursos de sistema por parte de los detectores. Una de las soluciones que se están
empezando a aplicar consiste en la fabricación de soluciones específicas basadas en
hardware, que alivien en cierto modo la carga de proceso a la que están sometidos los
sistemas de detección [2][7].
Aún no existe una exigencia formal sobre la formulación y aplicación de estándares en
la industria de la detección de intrusiones, esto dependerá de las decisiones tomadas
por las organizaciones responsables de los productos más importantes. Las nuevas
tecnologías se desarrollan a un ritmo vertiginoso, y los retos de seguridad deben
atenderse a la misma velocidad.
Los detectores de uso indebido pueden reconocer ataques conocidos, siendo posible
la actualización de sus bases de ataques periódicamente de forma similar a como ya
se hace con los antivirus y los detectores de anomalías[4], son una de las
herramientas de seguridad más prometedoras, pudiendo detectar ataques no
conocidos, valiéndose de gran variedad de métodos de análisis; es vital considerar a
los IDS son una herramienta sumamente importante dentro de los mecanismos de
seguridad, pero no son la solución definitiva. Están principalmente diseñados para
reducir la carga de trabajo de los administradores de seguridad, realizando diversos
análisis sobre los datos disponibles en el sistema, también, ayudan a fortalecer la
seguridad de los sistemas, y combinados con otras herramientas brindan un alto grado
de protección[10].
1.4 Herramientas de detección de intrusos en Linux.
En la actualidad existe un número muy grande de herramientas de detección de
intrusos, algunas de las cuales son desarrolladas por los mismos administradores de
los equipos en algún lenguaje de programación como Perl, o lenguaje C. Por otro lado,
tenemos paquetes propios de cada distribución, que permiten hacer las tareas de
13
Capitulo 1. Estado del arte.
monitoreo o supervisión del sistema, de las cuales podemos destacar las mas
utilizadas para la detección de intrusos o la integridad de los archivos en los sistemas
operativos Linux.
1.4.1Snort [11].
Creada por Marty Roesh, Snort es uno sistemas de detección de intrusiones de red
mas populares, basa su funcionamiento en reglas y soporta algunas funciones de
detección de anomalías; es una herramienta de software libre capaz de realizar
análisis de tráfico en tiempo real, así como registrar paquetes en redes; Este sistema
tiene la ventaja de funcionar bajo gran variedad de plataformas.
Puede realizar análisis de protocolos, búsqueda y comparación de contenidos, puede
detectar gran variedad de ataques y sondeos, tales como desbordamientos de buffer,
escaneo sigiloso de puertos, ataques CGI, intentos de identificación de sistema
operativo, etc. También, puede utilizarse como un rastreador de paquetes (sniffer),
como registrador de paquetes, y como detector de intrusiones de red; proporciona una
interfaz de usuario de fácil manejo y emite reportes de los análisis realizados, además
de que está escrito en código fuente abierto, el cual se puede obtener en su sitio
oficial.
1.4.2 Tripwire [12].
La herramienta Tripwire es un comprobador de integridad para archivos y directorios
de sistemas Unix: compara un conjunto de estos objetos con la información sobre los
mismos, almacenada previamente en una base de datos, y alerta al administrador en
caso de que haya cambiado algo. La idea es simple: se crea un resumen de cada
archivo o directorio importante al instalar el sistema, y esos resúmenes se almacenan
en un medio seguro, de forma que si alguno de los archivos es modificado (por
ejemplo, por un atacante que sustituye un programa por una versión troyanizada o
añade una entrada al archivo de contraseñas) Tripwire envía una alerta la próxima vez
que se realice la comprobación. Para generar esos resúmenes se utilizan funciones
hash, de forma que es casi imposible que dos archivos generen el mismo resumen;
concretamente Tripwire implementa md2, md4, md5, CRC-16 y CRC-32.
Fue diseñado por el Dr. Eugene Spafford en 1992, para 1997 fundó Tripwire Inc. que
trajo consigo un producto de perfil empresarial denominado Tripwire para servidores.
En el año 2000 esta herramienta se convirtió en un producto con capacidad
multiplataforma, y se separo el proyecto Tripwire Open Source Linux Edition para los
sistemas de código abierto utilizando la Licencia Pública General de GNU.
Las diferencias de esta herramienta en sus versiones empresariales y Open Source
GNU, consisten en que la primera posee una mejor presentación de informes, una
más amplia plataforma de apoyo, y, con el componente opcional Tripwire Manager, la
centralización de la presentación de informes además de una interfaz gráfica de
usuario.
Las principales características de Tripwire Enterprise incluyen una fácil configuración
de las políticas de evaluación, la detección de los cambios en tiempo real,
administración centralizada en una consola con interfaz gráfica de usuario web, una
base de datos centralizada que almacena los cambios históricos, la GUI es fácil de
usar y también, la integración con los sistemas de gestión de cambios, que permite
cambios automatizados de acuerdo a perfiles y permisos. Esta herramienta tiene un
14
Capitulo 1. Estado del arte.
costo que varía de acuerdo al número de equipos supervisados y cuenta con soporte
de servicio y configuración.
Por su parte, Tripwire Open Source se encuentra en la versión 2.4.0, la cual contiene
una mejora de la funcionalidad de las secuencias de comandos para compilar en una
gama más amplia de sistemas operativos de tipo POSIX (Linux / BSD / UNIX). Está
disponible en los repositorios de las distribuciones Debian, Ubuntu, RedHat y SuSe,
que son de las más utilizadas.
La metodología que implementa se resume en el diagrama de flujo que se
muestra en la Figura 1.4. la forma de detección es aplicable a un solo equipo y
realizando análisis con la aplicación instalada en el mismo.
Figura 1.4. Diagrama de flujo de Tripwire[12].
Los reportes generados por esta herramienta en su versión Open Source son desde
una terminal de comandos, en la Figura 1.5 se muestran las imágenes del resumen del
análisis, en la versión empresarial donde destaca la generación de los gráficos y la
interfaz web para desplegar el contenido de los datos desde algo general hasta la
presentación de detalles de cambios detectados (ver Figura 1.6).
15
Capitulo 1. Estado del arte.
Figura 1.5. Generación de reportes de Tripwire[12].
Figura 1.6. Reportes de Tripwire Enterprise[12].
1.4.3 Inotify [13].
Esta es una herramienta de auditoria del sistema de archivos Linux, es un subsistema
del kernel de Linux que ofrece la posibilidad de monitorear ciertos archivos o
directorios para recibir notificaciones de eventos en los mismos. Viene por defecto en
las distribuciones que tienen un kernel 2.6.13 o superior. Esencialmente, monitorea
sobre los i-nodos de cada archivo; cuando el núcleo realiza alguna acción como
copiar, borrar, mover, entre otras, lo hace mediante llamadas al sistema; todas estas
llamadas son capturadas por el modulo de Inotify, el cual realiza un seguimiento a los
i-nodos que esta acción afecta. Esto supone un monitoreo del sistema de archivos en
tiempo real.
Desafortunadamente, en los sistemas Linux, puedes borrar enlaces a i-nodos para
borrar un archivo, debido a que algunos existen solo como vínculos hacia los archivos
que físicamente están almacenados en otra dirección, o puedes hacer que apunte a
otro i-nodo, pero el i-nodo antiguo seguirá ahí y puedes seguir escribiéndolo o
leyéndolo, esta es una razón por la cual en Linux es posible sobrescribir un archivo
mientras está abierto, que es lo que pasa cuando se actualizan los paquetes. Esto
significa una gran desventaja para el sistema cuando detecta cambios en la
eliminación de archivos con enlaces.
16
Capítulo 2. Marco teórico.
CAPÍTULO 2. MARCO TEÓRICO.
Este capítulo sirve como sustento a la investigación de la tesis,
presenta los conceptos de seguridad de los sistemas
informático, los riesgos y amenazas actuales. Se describen las
características del sistema operativo Linux y su esquema de
seguridad.
2.1 La seguridad informática.
La seguridad es una característica de cualquier sistema, la cual nos indica que el
sistema está libre de todo peligro, daño o riesgo. Para el caso de sistemas operativos
o redes de computadores, la seguridad es muy difícil de conseguir y se adopta el
término de fiabilidad, el cual expresa probabilidad de que un sistema se comporte tal y
como se espera [6].
Se entiende que mantener un sistema fiable, consiste básicamente en garantizar tres
aspectos: confidencialidad, integridad y disponibilidad.
La confidencialidad nos dice que los objetos de un sistema han de ser accedidos
únicamente por elementos autorizados a ello, y que esos elementos autorizados no
van a convertir esa información en disponible para otras entidades. La integridad
significa que los objetos solo pueden ser modificados por elementos autorizados, y de
una manera controlada. La disponibilidad indica que los objetos del sistema tienen que
permanecer accesibles a elementos autorizados, es lo contrario de la negación de
servicio [14].
Generalmente tienen que existir los tres aspectos descritos para que haya seguridad;
un sistema Linux puede proporcionarlos, pero, dependiendo del entorno en que un
sistema trabaje, corresponderá a sus responsables dar prioridad a un cierto aspecto
de la seguridad y determinar los criterios para que estos aspectos se cumplan.
2.1.1 Elementos a proteger.
Los tres elementos principales a proteger en cualquier sistema informático son el
software, el hardware y los datos. Por hardware entendemos el conjunto formado por
todos los elementos físicos de un sistema informático, como las CPUs, las terminales,
el cableado, los medios de almacenamiento secundario o tarjetas de red. Por software,
podemos entender el conjunto de programas lógicos que hacen funcional al hardware,
tanto sistemas operativos como aplicaciones, y por datos, el conjunto de información
lógica que manejan el software y el hardware, por ejemplo paquetes que circulan por
un cable de red o entradas de una base de datos.
Habitualmente los datos constituyen el principal elemento de los tres a proteger, ya
que es el más amenazado y seguramente el más difícil de recuperar. La pérdida de
una aplicación puede entenderse como un programa de sistema, o el propio núcleo de
Linux. Este software se puede restaurar sin problemas desde su medio original (por
ejemplo, el CD-ROM con el sistema operativo que se utilizó para su instalación). Sin
embargo, en caso de pérdida de una base de datos o de un proyecto de un usuario, no
tenemos un medio base desde el que restaurar; se debe contar con el uso de un
sistema de copias de seguridad, a menos que la política de copias sea muy estricta, es
difícil restaurar los datos al estado en que se encontraban antes de la pérdida [14] [15].
17
Capítulo 2. Marco teórico.
Los tres elementos descritos anteriormente, están expuestos a diferentes amenazas,
la taxonomía más elemental de estas amenazas se puede clasificar en cuatro grandes
grupos [15] [16]:
•
Interrupción. Un objeto del sistema se pierde, queda inutilizable o no disponible.
•
Intercepción. Un elemento no autorizado consigue un acceso a algún
determinado objeto del sistema.
•
Modificación. Es una intercepción, además, consigue modificar el objeto. Un
caso especial de la modificación es la destrucción, que se entiende como una
modificación que inutiliza al objeto afectado.
•
Fabricación. Es una modificación, destinada a conseguir un objeto similar al
atacado de forma que sea difícil distinguir entre el objeto original y el
“fabricado”.
2.1.2 Intrusos o atacantes.
Para evaluar la seguridad informática, se debe clasificar en grupos a los posibles
elementos que tienen el potencial de atacar a los sistemas de computo; se suele
identificar a los atacantes únicamente como personas; esto tiene sentido si hablamos
de responsabilidades por un delito informático. Es preferible hablar de elementos y no
de personas, el sistema puede verse perjudicado por múltiples entidades aparte de
humanos, como por ejemplo programas, catástrofes naturales, un intruso, un gusano,
o un simple error del administrador [17].
La clasificación de los intrusos o atacantes está conformada de la siguiente manera:
•
Personas: La mayoría de ataques al sistema van a provenir en última instancia
de personas que, intencionada o no intencionadamente, pueden causar
enormes pérdidas. Los diferentes tipos de personas que de una u otra forma
pueden constituir un riesgo para los sistemas y generalmente se dividen en dos
grandes grupos:
Atacantes pasivos. Exploran por el sistema pero no lo modifican o destruyen.
Atacantes activos. Dañan el objetivo atacado, o lo modifican a su favor.
Generalmente los curiosos y los crackers realizan ataques pasivos.
•
Ingeniería social. El propósito de este método es conseguir, mediante mentiras
o engaños, que alguien facilite la información necesaria para poder llevar a
cabo posteriores ataques. Normalmente, este tipo de información se facilita sin
que el usuario sepa siquiera que está comprometiendo la seguridad de sus
sistemas. Son varios los métodos que puede utilizar para obtener información o
que se le permita un acceso que debería estar restringido.
•
Autoridad falsa. Consiguen información simplemente convenciendo a la víctima
de que están en una posición en la que esa información les es necesaria, por
ejemplo, diciendo que son un jefe superior o supervisor de sistemas.
•
Suplantación. La suplantación es una versión de la autoridad falsa en la que se
adopta la personalidad de un individuo que realmente existe, es mucho más
18
Capítulo 2. Marco teórico.
fácil si está hablando a través del teléfono, mediante un correo, en un chat o
mediante un mensaje instantáneo.
•
Personal. Las amenazas a la seguridad de un sistema provenientes del
personal de la propia organización rara vez son tomadas en cuenta; se
presupone un entorno de confianza donde a veces no existe, por lo que se
pasa por alto el hecho de que casi cualquier persona de la organización,
incluso el personal ajeno a la infraestructura informática (secretariado, personal
de seguridad, personal de limpieza y mantenimiento) puede comprometer la
seguridad de los equipos.
•
Crackers. Los entornos de seguridad media son un objetivo típico de los
intrusos, ya sea para revisarla, para utilizarlas como enlace hacia otras redes o
simplemente por diversión. De esta forma, un atacante solo ha de utilizar un
escáner de seguridad contra el dominio completo y luego atacar mediante un
simple exploit los equipos que presentan vulnerabilidades; esto convierte a las
redes de las empresas o a las de proveedores de servicios de internet, en un
objetivo fácil para intrusos que pueden utilizar toda la red para probar nuevos
ataques o como nodo intermedio en un ataque a otros organismos, sin
desearlo, se convierten en un apoyo a los intrusos que atacan sistemas
teóricamente más protegidos, como los militares.
•
Intrusos remunerados. Este es el grupo de atacantes que suele afectar más a
las grandes empresas o a organismos de defensa. Se trata de intrusos con
gran experiencia en problemas de seguridad y un amplio conocimiento del
sistema, que son pagados por una tercera parte generalmente para robar
secretos o simplemente para dañar la imagen de la entidad afectada.
2.1.3 Amenazas lógicas.
Bajo la etiqueta de amenazas lógicas encontramos a todo tipo de programas que de
una forma u otra pueden dañar un sistema creados de forma intencionada para ello.
Se considera software malicioso (malware), los errores de los programadores también
constituyen una amenaza denominada agujeros (bugs) [9].
Software incorrecto. Las amenazas más habituales a un sistema Linux provienen de
errores cometidos de forma involuntaria por los programadores de sistemas o de
aplicaciones y una situación no contemplada en la etapa de diseño. A estos errores de
programación se les denomina bugs, y a los programas utilizados para aprovechar uno
de estos fallos y atacar al sistema se les denomina exploits [15].
Puertas traseras. Durante el desarrollo de aplicaciones grandes o de sistemas
operativos es habitual entre los programadores insertar “atajos” en los sistemas
habituales de autenticación del programa o del núcleo que se está diseñando. A estos
atajos se les denomina puertas traseras, y con ellos se consigue mayor velocidad a la
hora de detectar y depurar fallos. Algunos programadores pueden dejar estos atajos
en las versiones definitivas de su software para facilitar un mantenimiento posterior,
para garantizar su propio acceso, o simplemente por descuido [9].
La cuestión es que si un atacante descubre una de estas puertas traseras va a tener
un acceso global a los datos, lo que obviamente supone un grave peligro para la
integridad del sistema.
19
Capítulo 2. Marco teórico.
Bombas lógicas. Son partes de código de ciertos programas que permanecen sin
realizar ninguna función hasta que son activadas; la tarea que realizan no es la original
del programa, sino que generalmente se trata de una acción perjudicial. Los
activadores más comunes de estas bombas lógicas pueden ser la ausencia o
presencia de ciertos archivos, la ejecución bajo un determinado usuario o la llegada de
una fecha concreta [9].
Canales cubiertos. También denominados canales ocultos, son vías de comunicación
que permiten a un proceso transferir información de forma que viole la política de
seguridad del sistema; su detección suele ser difícil, y algo tan simple como el puerto
abierto en una máquina puede ser utilizado a modo de canal por un intruso [9].
Virus. Es una secuencia de código que se inserta en un archivo ejecutable
(denominado huésped), de forma que cuando el archivo se ejecuta, el virus también lo
hace, insertándose a sí mismo en otros programas. En Linux los virus no suelen ser un
problema de seguridad grave, debido a que presenta una clara definición de usuarios,
grupos, propietarios de archivos y permisos. En Linux, un virus puede afectar
únicamente al usuario que ejecute el programa maligno [9].
Gusanos. Es un programa capaz de ejecutarse y propagarse por sí mismo a través de
redes, en ocasiones portando virus o aprovechando bugs de los sistemas a los que
conecta para dañarlos. Al ser difíciles de programar su número no es muy elevado,
pero el daño que pueden causar es muy grande. Puede automatizar y ejecutar en
unos segundos todos los pasos que seguirá un atacante humano para acceder a el
sistema [6] [15][17].
Caballos de Troya. Los troyanos o caballos de Troya son instrucciones escondidas en
un programa de forma que este parezca realizar las tareas que un usuario espera de
él, pero que realmente ejecute funciones ocultas sin el conocimiento del usuario.
Pueden clasificarse de acuerdo a su método de propagación en tres categorías:
•
Programa caballo de Troya. Un programa malicioso que llega enmascarado
como cualquier otra cosa, pero que se salta en secreto, las medidas de
seguridad de los sistemas.
•
Código fuente modificado. Una copia del código fuente de un programa que ha
sido modificado con el fin de que incluya alguna puerta trasera o algún agujero
de seguridad.
•
Programas sustituidos. Después de un ataque, es posible que un cracker
sustituya algunos programas del sistema por otras versiones que incluyan alguna puerta trasera o que le permitan ocultar su actividad.
Los troyanos llegan frecuentemente en forma de juegos, reproductores multimedia,
programas para comprometer archivos o cualquier otro programa de interés, algunos
otros métodos son: mensajes en los grupos de noticias, correos indeseados (spam),
correcciones a problemas de seguridad o pruebas de seguridad, noticias falsas de
actualizaciones, entre otros [4] [9] [10].
Programas conejo o bacterias. Bajo este nombre se conoce a los programas que no
hacen nada útil, sino que simplemente se dedican a reproducirse hasta que el número
de copias acaba con los recursos del sistema (memoria, procesador, disco),
produciendo una negación de servicio.
20
Capítulo 2. Marco teórico.
Técnicas salami. Se conoce al robo automatizado de pequeñas cantidades de bienes
(generalmente dinero) de una gran cantidad origen. El hecho de que la cantidad inicial
sea grande y la robada pequeña hace extremadamente difícil su detección, su uso
más habitual es en sistemas bancarios.
Herramientas de seguridad. Cualquier herramienta de seguridad representa un arma
de doble filo: de la misma forma que un administrador las utiliza para detectar y
solucionar fallos en sus sistemas o en la subred completa, un potencial intruso las
puede utilizar para detectar esos mismos fallos y aprovecharlos para atacar los
equipos. No se puede basar la seguridad de un sistema en el supuesto
desconocimiento de sus problemas por parte de los atacantes. Si como
administradores no se utilizan herramientas de seguridad que muestren las
debilidades de los sistemas (para corregirlas), es seguro que un atacante no va a
dudar en utilizar tales herramientas para explotar las debilidades encontradas [18] [19].
2.1.4 Los mecanismos de prevención más habituales en Linux.
Para proteger los sistemas se debe realizar un análisis de las amenazas potenciales
que puede sufrir, las perdidas que podrán generar, y la probabilidad de su ocurrencia.
A partir de este análisis se diseña una política de seguridad que defina
responsabilidades y reglas a seguir para evitar tales amenazas o minimizar sus
efectos en caso de que se produzcan. A los mecanismos utilizados para implementar
esta política de seguridad se les denomina mecanismos de seguridad; son la parte
más visible del sistema de seguridad, y se convierten en la herramienta básica para
garantizar la protección de los sistemas o de la propia red.
Los mecanismos de seguridad se dividen en tres grandes grupos: de prevención, de
detección y de recuperación. Los mecanismos de prevención son aquellos que
aumentan la seguridad de un sistema durante el funcionamiento normal de este,
previniendo la ocurrencia de violaciones a la seguridad; por ejemplo, el uso de cifrado
en la transmisión de datos se puede considerar un mecanismo de este tipo, ya que
evita que un posible atacante escuche las conexiones hacia o desde un sistema Linux
en la red [19].
Por mecanismos de detección se conoce a aquellos que se utilizan para detectar
violaciones de la seguridad o intentos de violación [14] [17] [19]; ejemplos de estos
mecanismos son los programas de auditoría como Tripwire [12]. Finalmente, los
mecanismos de recuperación son aquellos que se aplican cuando una violación del
sistema se ha detectado, para retornar a este a su funcionamiento correcto; ejemplos
de estos mecanismos son la utilización de copias de seguridad o el hardware
adicional. Dentro de este último grupo de mecanismos de seguridad encontramos un
subgrupo denominado mecanismos de análisis forense, cuyo objetivo no es
simplemente retornarlo a su modo de trabajo normal, sino averiguar el alcance de la
violación, las actividades de un intruso en el sistema, y la puerta utilizada para entrar;
de esta forma se previenen ataques posteriores y se detectan ataques a otros
sistemas de una red [8] [9].
Para la seguridad de los sistemas, se enfatiza en el uso de mecanismos de prevención
y de detección; evitar un ataque, detectar un intento de violación, o detectar una
violación exitosa inmediatamente después de que ocurra es mucho más productivo y
menos comprometedor para el sistema que restaurar el estado tras una penetración
de la máquina. Si se consiguiera un sistema sin vulnerabilidades y cuya política de
seguridad se implementara mediante mecanismos de prevención de una forma
completa, no serian necesarios los mecanismos de detección o recuperación [17].
21
Capítulo 2. Marco teórico.
Aunque esto es imposible de conseguir en la práctica, será en los mecanismos de
detección, y sobre todo en los de prevención donde se basa el peso de la seguridad
informática.
Mecanismos de autenticación e identificación. Estos mecanismos hacen posible
identificar entidades del sistema de una forma única, y posteriormente, autenticarlas
(comprobar que la entidad es quien dice ser). Son los mecanismos más importantes
en cualquier sistema, ya que forman la base de otros mecanismos que basan su
funcionamiento en la identidad de las entidades que acceden a un objeto [17] [18].
Mecanismos de control de acceso. Cualquier objeto del sistema ha de estar protegido
mediante mecanismos de control de acceso, que controlan todos los tipos de acceso
sobre el objeto por parte de cualquier entidad del sistema. Dentro de Linux, el control
de acceso más habitual es el discrecional (Discretionary Access Control,DAC),
implementado por los bits de lectura, escritura y ejecución y las listas de control de
acceso para cada archivo (objeto) del sistema; sin embargo, también se permiten
especificar controles de acceso obligatorio (Mandatory Access Control, MAC) [16] [17].
Mecanismos de separación. Cualquier sistema con diferentes niveles de seguridad ha
de implementar mecanismos que permitan separar los objetos dentro de cada nivel,
evitando el lujo de información entre objetos y entidades de diferentes niveles siempre
que no exista una autorización expresa del mecanismo de control de acceso. Los
mecanismos de separación se dividen en cinco grandes grupos, en función de como
separan a los objetos: separación física, temporal, lógica, criptográfica y
fragmentación. Dentro de Linux, el mecanismo de separación más habitual es el de
separación lógica o aislamiento, implementado en algunos sistemas mediante una
Base Segura de Cómputo (Trusted Computing Base, TCB), implementados por
SELinux (Linux Security Enviroment) [17] [18].
Mecanismos de seguridad en las comunicaciones. Es especialmente importante para
la seguridad de nuestro sistema el proteger la integridad y la privacidad de los datos
cuando se transmiten a través de la red. Para garantizar esta seguridad en las
comunicaciones, se utilizan mecanismos que basan su funcionamiento en la
criptografía y se utilizan en mayor medida los protocolos seguros como SSH o
Kerberos [17].
Criptografía. Es la herramienta fundamental para asegurar la privacidad, secrecía o
confidencialidad de los datos, es un término proveniente de raíces griegas que
significa escritura oculta, recientemente, ha sido descrita, como el arte o ciencia de
desarrollar y usar mecanismos para transformar los datos en ilegibles para cualquiera,
excepto para el destinatario [16]. Se utilizan técnicas que permiten modificar la
información de entrada mediante algún tipo de algoritmo matemático, el resultado, es
una transformación de la información ya sea para ocultarla o determinar su integridad;
el proceso inverso resulta muy complejo si no se conocen las técnicas y los datos
semillas utilizados para la transformación.
Esto proporciona varios aspectos de la seguridad informática, primero, la
confidencialidad: evitar que personas no autorizadas tengan acceso a los datos, y
segundo, autenticación: proveer un método para certificar que nuestros datos son
efectivamente nuestros ante los destinatarios y por ultimo, la integridad: que el
contenido de la información no sea alterado. Las principales técnicas de encriptación
son:
22
Capítulo 2. Marco teórico.
•
Encriptamiento de llave secreta. Denominada también de cifrado simétrico se
basa en utilizar una misma llave (patrón de la semilla de codificación) para
encriptar y para desencriptar la información. Ejemplos de este tipo de sistemas
son Blowfish, DES y RC4, las desventajas de este método son, principalmente,
la necesidad de verificar que cada entidad conserva secreta la llave y el
problema de entregar la llave secreta a todos los usuarios de manera que no
sea vulnerable a la intercepción[18][19].
•
Encriptamiento de Llave Pública. Denominada también cifrado asimétrico,
reemplaza la llave única por un par de llaves llamadas pública y privada. La
llave publica se compartida a los usuarios con los que intercambia información
y es utilizada para cifrar la información cuando se desea compartir algo, solo se
puede descifrar la información recibida haciendo uso de la llave privada del
receptor. Un ejemplo de este tipo de cifrado es el RSA y el DSA, la desventaja
de este sistema radica en el tiempo de cifrado y descifrado debido a que no se
usa el mismo elemento [18].
•
Compendios y resúmenes criptográficos. Las sumas de comprobación,
compendio o función hash, es una cadena de texto generada por un algoritmo
matemático que permite verificar si dos archivos son idénticos. El cambio de un
solo bit en uno de esos archivos hará que esas cadenas sean diferentes. La
herramienta más utilizada en la actualidad para realizar comprobaciones de
suma es MD5, conocida como cadena resumen, esta es la suma de
comprobación con el cifrado más fuerte de las que se usan habitualmente. Una
función hash criptográfica acepta como entrada un conjunto de datos y genera
como salida un resultado de longitud fija casi siempre más pequeña que el
mensaje original [19] [20].
•
Firmas Digitales. Esta basado en el esquema de llave publica RSA, el ISO/IEC
9796 fue el primer estándar internacional publicado en 1991, para el 1994 fue
considerado como el elemento de seguridad mas importante en Estados
Unidos, debido a que permite establecer relaciones de confianza entre dos
entidades. Al igual que en un ambiente de relaciones personales, esta marca
debe identificar a la entidad de manera única; en la práctica, el remitente
somete los datos por enviarse a una función que los resume digitalmente
(función compendio o hash). Este resultado lo encripta con su llave privada y lo
agrega como firma al mensaje original.
El receptor certifica que el mensaje proviene del propietario de la llave pública
con que desencripta el mensaje compendiado, si el compendio descifrado
concuerda con el compendio del mensaje original, obtiene datos de los cuales
ha validado su origen y su integridad [19] [20].
2.1.5 Canales de comunicación seguros SSH.
Basado en un protocolo llamado SSH, la cual es una especificación para realizar una
comunicación segura en entorno de red. El Secure Shell es una herramienta poderosa
que permite realizar tareas en un equipo de manera remota, es decir, un equipo puede
realizar actividades desde otro utilizando un entorno de comunicación como la red o el
internet. Cubre los aspectos de autenticación, encriptacion e integridad de la
información de los datos transmitidos en la red, para los sistemas Linux se cuenta con
el Open-SSh, el cual está basado en la especificación SSH-2 (Versión 2 del protocolo
23
Capítulo 2. Marco teórico.
SSH) [22]. Permite ejecutar remotamente comandos y hacer transferencias seguras de
archivos.
Secure Shell (SSH) es un programa usado para asegurar la comunicación entre dos
entidades, utiliza una arquitectura cliente - servidor, donde los clientes SSH pueden
conectarse a los servidores, como se muestra en la figura 2.1. Se utiliza para ejecutar
comandos remotos de forma segura y sirve como un reemplazo de Telnet, permite
realizar una utilidad de copia de seguridad remota, sustituyendo a los protocolos
tradicionales, como el Protocolo de transferencia de Archivos (FTP) y Protocolo de
Copias Remotas (RCP) [22].
Figura 2.1. Arquitectura cliente-servidor de SSH.
SSH garantiza los siguientes aspectos en una comunicación cliente-servidor [22]:
•
Privacidad de los datos. Utilizar un algoritmo de encriptación fuerte, significa
proteger los datos de intrusos, típicamente, las redes basadas en IPv4 no
garantizan la privacidad de los datos. Cualquiera que tenga acceso a un host o
a la red puede acceder a los datos que viajan por ella.
•
Integridad de las comunicaciones. La información intercambiada no puede ser
alterada, el protocolo SSH-2 usa la comprobación de integridad criptográfica,
que verifica que los datos transmitidos no han sido cambiados y también, que
realmente viene a partir del otro extremo de la conexión. SSH-2 usa algoritmos
basados en MD5 y SHA-1.
Md5 es uno de los algoritmos criptográficos de reducción más utilizados en
todo el mundo, fue desarrollado por Ronald Rivest del Instituto Tecnologico de
Massachusetts. Desde el año de 1996 se publico una vulnerabilidad de este
algoritmo por el método de colisiones, a pesar de haber sido considerado
criptográficamente seguro en un principio, en agosto del 2004, Xiaoyun Wang,
Dengguo Feng, Xuejia Lai y Hongbo Yu anunciaron el descubrimiento de
colisiones de hash para MD5, el ataque demostrativo requirio una hora de
cálculo con un clúster IBM P690 [4]. Este método es critico para aplicaciones
que generan en tiempo de operación el resumen hash y lo mantienen como
herramienta de autenticacion, para nuestro caso, el método será almacenado
de una fuente fiable y sera comprobado en subsecuentes análisis, por lo que
se considera apropiado su uso.
24
Capítulo 2. Marco teórico.
•
Autenticación. Se valida la identidad del receptor y el emisor en una
comunicación. Cada conexión SSH implica dos autenticaciones: el cliente
verifica la identidad del servidor SSH (la autenticación de servidor), y el
servidor verifica la identidad del usuario que solicita el acceso (la autenticación
de usuario). La autenticación de servidor asegura que el servidor SSH es
genuino, no un impostor, que se protege contra el utilizando su conexión de red
a una máquina diferente.
La autenticación de servidor también protege contra ataques " el hombre en
medio ", en el que el atacante se coloca ser visto entre el cliente y el servidor,
fingiendo ser el cliente sobre un lado y el servidor sobre el otro, engañando a
ambos lados y leyendo todo su tráfico en el proceso. Hace uso de llaves DSA
para autenticar al anfitrión de la sesión y sólo le permite una conexión por cada
cliente.
•
Autorización. Se permite el control de acceso a usuarios autorizados
únicamente. Reenvío o tuneleo para encriptar programas o aplicaciones
basadas en TCP/IP. El medio de autorización decide lo que alguien puede o no
puede hacer. Esto ocurre después de la autenticación. El acceso a sesiones de
conexión interactivas, el puerto TCP y el despliegue de ventanas gráficas
puede ser controlado todo. Los métodos de cifrado y los algoritmos utilizados
para SSH se basan en normas de la industria tales como 3DES, Blowfish,
Twofish, AES y RSA.
La estructura de SSH está basada en tres capas que definen el método de
autenticación que utilizarán, cabe mencionar que este protocolo autentica en ambos
sentidos, al cliente en el servidor y al servidor en el cliente. La capa superior se
encarga de la autorización y los elementos permitidos por cada sesión, por último se
determinan los recursos disponibles para el cliente. En la figura 2.1 se muestran las
capas que conforman SSH y la parte que ocupan dentro del protocolo TCP/IP.
Figura 2.2. Arquitectura de SSH [22].
SSH gestiona un canal de comunicación seguro entre el cliente y el servidor mediante
un proceso de peticiones y autenticaciones. En la figura 2.3 se muestra una
representación del canal cifrado y establecido entre el cliente y servidor de SSH.
25
Capítulo 2. Marco teórico.
Existen varios métodos para aplicar la validación de un usuario solicitante de una
conexión SSH y el servidor, el uso de contraseña o password, una frase secreta que
es la semilla del archivo de autenticación y el uso de llaves públicas
Figura 2.3. Canal de comunicación cifrado usando SSH.
Llave pública. En este esquema, se hace uso de un cifrado asimétrico, utiliza un par de
llaves llamadas pública y privada. La llave pública es compartida a los usuarios con los
que se intercambia información y es utilizada para cifrar la información cuando se
desea compartir algo, sólo se puede descifrar la información recibida haciendo uso de
la llave privada del receptor. Un ejemplo de este tipo de cifrado es el RSA y el DSA, el
cual se muestra en la figura 2.4, donde se muestran las llaves del cliente y del
servidor, la llave de sesión generada para cada conexión y la necesidad de contar en
el servidor con un reconocimiento de la llave publica del cliente mediante su llave
privada
Figura 2.4. Autenticación de SSH usando llaves públicas.
2.1.6. Estándares de seguridad.
Un estándar es comúnmente aceptado como la norma de fabricación de acuerdo a un
modelo o un patrón; pueden ser un conjunto de reglas establecida para caracterizar un
producto o un método de trabajo. Dentro de la seguridad informática, han existido un
gran número de aportaciones en diversas áreas, por lo que se han tenido que unificar
criterios o generar acuerdos que permitan un desarrollo bien organizado de los
avances en esta materia.
Existen varios estándares internacionales relacionados con seguridad informática que
se consideran importantes en la actualidad o que deben ser referenciados por su
importancia histórica [4] [23].
•
El RFC2196 Site Security Handbook. Ofrece una guía práctica para quienes
intentan asegurar servicios e información, generado por la Internet Engineering
Task Force (IETF).
26
Capítulo 2. Marco teórico.
•
El estándar británico BS 7799. Es un estándar aceptado ampliamente que ha
sido utilizado como base para elaborar otros estándares de seguridad de la
información, incluyendo el ISO 17799 y el ISO 27001. Fue desarrollado por el
British Standards Institute.
•
El estándar IS 15408. Elaborado por la La Organización Internacional para la
Estandarización (International Organization for Standardization, ISO). Este
estándar, The Common Criteria for Information Technology Security Evaluation
v2.1 (ISO IS 15408) es una mezcla mejorada de ITSEC, el Canadian Criteria, y
el US Federal Criteria.
•
La Serie Arco Iris - Rainbow Series- (Orange Book ) (E.U.) Una importante
serie de documentos es la Rainbow Series, que describe varios estándares de
seguridad desarrollados en los Estados Unidos. El Orange Book corresponde
directamente al diseño de sistemas de auditoría y monitoreo; base fundamental
de los IDS. Es un material utilizado para el desarrollo de esta investigación
debido a que plantea los principios fundamentales del control de acceso a los
sistemas y la integridad de los archivos.
•
ISO 11131:1992. Banking and Related Financial Services; Sign-on
Authentication. La Organización Internacional para la Estandarización y la
Comisión Electrónica Internacional (IEC), forman el sistema especializado para
la estandarización internacional, de ellos desprende el ISO/IEC 27001
publicado en 2005, el cual describe Tecnologías de la información, Técnicas de
seguridad y Sistemas de gestión de seguridad de la información. Es una guía
que define la metodología para la implementación, diseño, uso y adecuación de
la seguridad de la información; los apartados A 10.10.10 y A 12.3, están
destinados a la auditoria y monitoreo de los sistemas respectivamente.
2.2 Arquitectura del sistema operativo Linux.
La creciente popularidad de Linux se debe entre otras razones a su extraordinaria
estabilidad, acceso libre al código fuente (lo que permite personalizar el
funcionamiento y permite verificar el funcionamiento real) y a la abundancia de
documentación relativa a los procedimientos.
Cada día existen mas programas que están disponibles para este sistema, y la calidad
de los mismos aumenta de versión a versión. La gran mayoría de los mismos viene
acompañados del código fuente y se distribuyen gratuitamente bajo términos similares
a los del núcleo. Existen numerosas distribuciones de Linux ensambladas por
empresas (caso de SuSE, RedHat), fundaciones (caso de Debian, Gentoo, UBUNTU)
e incluso administraciones públicas. Cada distribución suele incluir software adicional,
incluyendo software que facilita la instalación del sistema.
Este apartado está enfocado a describir de manera breve la especificación que
conforma la estructura del sistema operativo Linux, en cualquiera de sus distribuciones
incluye una base comúnmente llamada núcleo; los módulos con los que interactúa, las
aplicaciones disponibles y el funcionamiento general; cabe destacar, que la taxonomía
de la estructura del sistema operativo será parte fundamental del desarrollo del
proyecto de tesis.
27
Capítulo 2. Marco teórico.
2.2.1 Breve historia de GNU/Linux.
El sistema operativo Linux tiene sus orígenes en la plataforma Unix, Unix nació en los
años 60, de un proyecto bajo control del Instituto Tecnológico de Massachusetts (MIT),
los laboratorios Bell y General Electric. En 1966, un grupo de investigadores de los
Laboratorios Bell desarrolló un sistema operativo experimental llamado MULTICS
(Información multiplexada y Sistema de Computación). En 1969 se rediseña el SO
basado en MULTICS y se denomina Unix, para 1973, escribieron el núcleo de Unix en
lenguaje C, un lenguaje de programación de alto nivel, a diferencia de la mayoría de
los sistemas, los cuales estaban escritos en lenguaje ensamblador [24].
El Unix en C se podía mantener más fácilmente, y podía trasladarse a otras máquinas
casi sin problemas. En 1982 AT&T lanza la primera versión comercial de Unix, el cual,
fue concebido para entornos grandes como potentes servidores de internet,
básicamente, para el entorno empresarial y por lo tanto bastante caro. La idea de
desarrollar un clon de Unix que aportara toda su potencia y de costo accesible para
todo el mundo, trajo el surgimiento de FreeBSD, OpenBSD y Linux.
Estos clones de Unix respetan sus normas y sus estándares (POSIX), son de código
fuente abierto y están bajo la cobertura de la GPL, la Licencia Publica General GNU; lo
que representa obtener el código fuente y que esto no genere un costo.
Linux fue generado en Finlandia en 1991 cuando Linus B. Torvalds, estudiante de la
Universidad de Helsinki, partiendo de un pequeño sistema Unix denominado Minix.
Linus decidió difundir el código fuente por Internet, de manera gratuita y con el nombre
de Linux (contracción de Linus y Unix) [26].
La versión era pequeña y se enriqueció debido al uso de de algunos programas GNU,
como la bash, el compilador GCC, entre otros. El número de personas que
comenzaron a colaborar en el proyecto creció de manera importante, hasta llegar a los
cientos de colaboradores; se entregó la primera versión estable de Linux denominada
1.0 en marzo de 1994 [27]. Actualmente, Linux es un sistema Unix completo, estable,
que sigue evolucionando y que cada día gana nuevos adeptos. Durante muchos años
Linux perteneció, casi por completo al mundo universitario, ahora que el Internet llega
a millones de usuarios, Linux se está extendiendo a pasos agigantados, incluso en el
mundo empresarial. Linux funciona sobre muchas plataformas como los procesadores
x86, 64 bits, Alpha, Sparc, Amiga, Atari y los MAC.
2.2.2 Distribuciones Linux.
Una distribución es un conjunto de aplicaciones reunidas por un grupo, empresa o
persona para permitir instalar fácilmente un sistema Linux, se destacan por las
herramientas para configuración y sistemas de paquetes de software a instalar. La
base del software incluido con cada distribución incluye el núcleo Linux y las
herramientas GNU, al que suelen adicionarse también varios paquetes de software
procedentes de muchos otros proyectos casi todas con Licencia GPL [27].
La base del sistema de cada distribución es muy parecida, incluyendo paquetes
básicos del proyecto GNU, un intérprete de comandos y algunas utilidades como son
bibliotecas, compiladores y editores de texto. Estos componentes (esenciales para un
sistema operativo) en conjunto, nos proporcionan el ambiente funcional necesario para
la utilización de los más diversos programas y aplicaciones. Algunas de las ventajas
que ofrece el sistema operativo se mencionan a continuación [26]:
28
Capítulo 2. Marco teórico.
•
Precio. Debido a que su licencia es GNU, podemos descargarlo gratuitamente
desde Internet o comprarlo a un precio muy bajo.
•
Requerimientos. Actualmente los sistemas operativos necesitan muchos
recursos del sistema para ejecutarse con fluidez, Linux, al poder funcionar
exclusivamente en modo texto sin la necesidad de cargar un entorno grafico
puede ejecutarse en cualquier maquina a partir de un i386.
•
Estabilidad. Al tener un núcleo basado en UNIX, hereda esa estabilidad que
siempre ha caracterizado a los sistemas UNIX.
•
Seguridad. A nivel de servidor podemos encontrar que la seguridad de
GNU/Linux frente a otros servidores de código cerrado del mercado es mucho
mayor.
•
Multitarea real. Es posible ejecutar varios procesos simultáneamente.
•
Velocidad. Debido a la multitarea real que incorpora, y que no es necesario
cargar su entorno gráfico para ejecutar servicios o aplicaciones, hacen que su
velocidad sea muy superior a otros sistemas operativos que necesitan
necesariamente cargar un entorno gráfico para su funcionamiento.
•
Código fuente. El paquete incluye el código fuente, por lo que es posible
modificarlo y adaptarlo a nuestras necesidades libremente. Sin olvidar que se
puede analizar totalmente su funcionamiento.
•
Entorno de programación. Es ideal para la programación, se puede programar
para otros sistemas operativos; está extensamente documentado, y existen
múltiples herramientas para el programador.
•
Crecimiento. Su sistema de crecimiento, gracias a la licencia GNU, el código
abierto, y la gran comunidad de miles de programadores en todo el mundo, es
de los más rápidos que existen en la actualidad.
2.2.3 Características generales de Linux [25].
La historia de los sistemas operativos es un recuento de diversas soluciones a los
diferentes problemas que se han ido encontrando; por mencionar algunos de estos
tenemos el de la concurrencia de procesos, la memoria compartida, la comunicación
entre los procesos, el soporte a múltiples usuarios, etcétera. Los cuales, han sido
superados por la evolución de estos con respecto a los requerimientos de sus
usuarios.
En los sistemas operativos actuales de código libre o comercial, podemos generalizar
los siguientes aspectos:
•
Multitarea. La palabra multitarea describe la capacidad de ejecutar varios
programas al mismo tiempo sin detener la ejecución de cada aplicación. Se le
denomina multitarea prioritaria porque cada programa tiene garantizada la
oportunidad de ejecutarse, y se ejecuta hasta que el sistema operativo da
prioridad a otro programa, por medio del modulo planificador para que se
ejecute. Linux y otros sistemas operativos multitarea consiguen el proceso de
prioridad supervisando los procesos que esperan para ejecutarse, así como los
29
Capítulo 2. Marco teórico.
que se están ejecutando. El sistema programa cada proceso para que
disponga de las mismas oportunidades de acceso al microprocesador. El
resultado es que las aplicaciones parecen estar ejecutándose al mismo tiempo
(en realidad hay una segmentación del tiempo de ejecución de millonésimas de
segundo entre una ejecución y otra). Linux también es capaz de gestionar
máquinas con varios microprocesadores, obteniendo la capacidad de procesar
paralelamente varios procesos (tantos como microprocesadores tenga la
máquina). Esto es lo que se llama concurrencia real.
•
Multiusuario. La capacidad de Linux para asignar el tiempo de microprocesador
simultáneamente a varias aplicaciones ha derivado en la posibilidad de ofrecer
servicio a diversos usuarios a la vez, ejecutando cada uno de ellos una o más
aplicaciones. La característica más relevante de Linux y sus funciones de
multiusuario y multitarea, es que más de una persona puede trabajar con la
misma máquina simultáneamente desde la misma terminal o desde terminales
distintas.
•
Shell programable. Dentro del shell existe la sintaxis de los comandos de Linux.
La programación del shell de ofrece la característica para personalizar su
sistema y hacerlo mas amigable o para simplificar muchas de las aplicaciones
que se requieren ejecutar, permitiendo realizar una serie de procesos en
segundo plano (background) para poder trabajar en otros.
•
Independencia de dispositivos. Permite la adaptabilidad del núcleo en cuanto a
la visualización de dispositivos nuevos en el sistema, ya que ve a estos
dispositivos como enlaces, o simples controladores. No obstante, si existiese
algún problema con algún dispositivo, y al tener el código libre, siempre se
puede programar un controlador para un dispositivo que no exista, cosa que no
es posible realizar en otro sistema operativo comercial.
•
Comunicaciones y redes. La superioridad de UNIX sobre otros sistemas
operativos es evidente en sus utilidades y conexión en red, por lo que Linux
incluye posibilidades de conexión en red tan ajustadamente acopladas como
ningún otro sistema operativo, posee la flexibilidad incorporada y podemos
mencionar que Internet nació y se creo en un mundo UNIX.
•
Portabilidad. La portabilidad es simplemente la posibilidad de transportar un
sistema operativo de una plataforma a otra sin que se vea alterado su
comportamiento. En la actualidad, Linux es capaz de correr en múltiples
plataformas, como pueden ser el i386, ALPHA, PowerPC, etcétera.
2.2.4. Directorios en Linux [5] [25].
La información de los sistemas operativos Linux se organiza en lo que llamamos
directorios, estos son elementos contenedores, almacenan archivos o directorios; la
estructura que siguen es jerárquica y siempre dependen de un directorio principal
denominado raíz (/). Es importante este concepto debido a la estructura basada en
directorios del sistema Linux, la cual sirve como base de referencia para todas las
actividades; todos los elementos son tratados como directorios, algunos de estos
almacenan archivos que determinan la funcionalidad del sistema operativo, los
dispositivos de entrada o salida, incluso, los procesos son tratados como directorios
virtuales.
30
Capítulo 2. Marco teórico.
2.2.4.1 Sistema de directorios.
Es la parte del sistema responsable de la administración de los datos en los
dispositivos de almacenamiento; debe proporcionar los medios necesarios para un
almacenamiento seguro y privado de la información. La información dentro de los
sistemas Linux esta organizada en forma de directorios; los archivos se identifican en
la estructura de directorios por la ruta (PATH) en la que se localizan y la estructura de
directorios hace uso del sistema de archivos jerárquico estándar (File System
Hierarchy Standard, FHS), esta estructura de directorios se describe de manera breve
a continuación.
/
Directorio raíz: Solo hay una raíz, es el único directorio que no contiene
directorio padre, a partir de este se generan todos los demás. Contiene un
archivo con la imagen binaria de arranque del núcleo de Linux; esta imagen se
carga en memoria al iniciarlo y se mantiene allí hasta que se apaga. Solamente
el administrador del sistema debe tener derecho se ejecución, modificación y
lectura de este directorio.
/bin
Directorio de binarios: Contiene los ejecutables básicos del sistema,
normalmente se encuentran los programas de uso común para los usuarios,
como son la copia de archivos, la visualización, el listado del contenido de
directorios, etc. Son las aplicaciones del sistema y de este directorio depende
el funcionamiento correcto de la interfaz de comandos.
/sbin
Directorio de binarios de superusuario: Contiene los ejecutables del
administrador del sistema.
/usr
Directorio de usuarios: De este directorio se generan los directorios de trabajo
de cada uno de los usuarios; Algunos sistemas han adoptado por incluir los
directorios de trabajo de los usuarios en el “/home/”; para dar una mejor
organización de este directorio que contiene elementos de trabajo con los
usuarios en el entorno de trabajo en red.
/urs/bin
Contiene los programas ejecutables que son de tamaño
considerablemente grande, los cuales se utilizan menos que los
contenidos en /bin.
/usr/lib
Contiene los archivos de biblioteca, utilizados por los
compiladores de lenguajes como FORTRAN, Pascal, C, etc.
Estos contienen básicamente funciones, en un formato
especifico, que pueden ser invocadas desde estos lenguajes.
/usr/man
Contiene las páginas del manual en el disco del equipo de
computo.
/usr/local
Este directorio son generalmente utilizados para que contengan
archivos ejecutables que no forman parte de Linux, cualquier
utilidad desarrollada por los usuarios debería estar almacenada
en este lugar.
/home Directorio de usuarios del equipo: Se localizan los directorios de los usuarios
del sistema en las cuales guardan sus archivos y configuraciones personales.
31
Capítulo 2. Marco teórico.
/root
Directorio del root: Es el directorio de trabajo del administrador del sistema
operativo, o superusuario “root”.
/etc
Este directorio contiene órdenes y las configuraciones específicas del sistema,
entre ellas las necesarias para arrancar, también contiene las configuraciones
globales del software instalado; estas órdenes y configuraciones se guardan en
un directorio aparte porque la mayoría de ellas solo pueden ser ejecutadas por
usuarios privilegiados.
/tmp
Se utiliza para almacenamiento temporal de información.
/var
Contiene archivos variables, como pueden ser las colas de impresión.
/boot Es donde se encuentran los archivos de arranque, así como el núcleo que se
cargará en el inicio.
/dev
Este directorio contiene todos los dispositivos (devices) empleados para la
comunicación con dispositivos periféricos; tales como impresoras, discos,
terminales, etc. Un archivo de dispositivo es reconocido por el núcleo como un
elemento de Entrada-Salida; esto es denominado independencia de dispositivo,
y permite emplear las mismas funciones para trabajar con cualquier dispositivo
tratándolo como un archivo ordinario.
/proc Este directorio guarda la información sobre los procesos que hay en ejecución
y sobre el sistema en general (CPU, memoria); es una copia de lo que está en
la memoria, por lo tanto, cada proceso ejecutado o terminado, realizara
modificaciones sobre este directorio.
/lib
Contiene la biblioteca de funciones necesarias para el compilador de C.
Contiene las bibliotecas compartidas, esenciales en el sistema.
/media Este directorio sirve para “montar” los dispositivos de almacenamiento
externos; las unidades de CD, DVD, las memorias USB, los discos duros
externos, terminales, impresoras, etc.
Como puede apreciarse en la figura 2.5, la estructura del árbol es bastante grande, se
ha descrito solo los directorios de un nivel debajo de la raíz, esta estructura jerárquica
permite distribuir las prioridades de los directorios y la importancia de sus contenidos.
El uso inapropiado de las características de un directorio o de un archivo constituye un
riesgo de seguridad. Los controles de acceso a recursos y los usuarios del sistema
son el esquema de seguridad del sistema operativo. Estos conceptos serán
retomados en los capítulos posteriores debido a la importancia y clasificación de los
elementos contenidos en los directrios, la estructura será clasificada de acuerdo al
nivel de riesgo que implica la modificación de los archivos que contiene y la relación
con el funcionamiento del sistema.
32
Capítulo 2. Marco teórico.
Figura 2.5. Sistema de directorio de archivos Linux.
2.2.4.2 Las cuentas de los usuarios.
La mayoría de los sistemas Linux suelen tener un gran número de usuarios, y cada
uno de ellos tiene una cuenta desde la cual accede al sistema. Normalmente, cuando
se crea una cuenta, el administrador del sistema se encarga de que ésta cumpla unas
normas mínimas de seguridad que no comprometan en modo alguno la seguridad del
sistema. Pero a veces, los usuarios modifican su contenido y sin cuenta ponen en
peligro la integridad de sus propios datos y, consecuentemente, la seguridad de todo
el sistema, ya que estas vulnerabilidades pueden ser aprovechadas por los intrusos
informáticos para afianzarse aún más en el sistema. Vamos a centrarnos en aquellos
aspectos relacionados con la seguridad de las cuentas de los usuarios, como pueden
ser los permisos y el propietario de los archivos o directorios, así como de los archivos
de arranque e inicialización del Shell. Este aspecto es importante considerando que en
el recae la mayor parte de la seguridad del sistema, la información donde se
almacenan los usuarios validos de Linux es en /etc/users. Técnicamente no es posible
trabajar en el ambiente Linux si no se tiene un usuario reconocido por el sistema,
razón por la cual, muchos de los intrusos intentan obtener este archivo con permisos
de escritura, o de lectura para ingresar como otro usuario con privilegios.
El usuario que existe en los sistemas Linux como administrador es root, este usuario
tiene la capacidad de decidir sobre todas las acciones del equipo, por ser el
administrador posee privilegios sobre todos los elementos del sistema. Un usuario no
administrador debería tener permisos restringidos y solo sobre algunos elementos del
sistema, inicialmente toda su información se maneja dentro del directorio /home.
2.2.4.3 Mecanismos de protección.
El sistema de archivos de los sistemas Linux proporciona una serie de mecanismos
para controlar quién y qué se puede realizar con los archivos almacenados. Estos
mecanismos son los permisos, el identificador de propietario (User ID, UID) y el
identificador de grupo (Group ID,GID) que poseen todos y cada uno de los archivos y
directorios del sistema.
33
Capítulo 2. Marco teórico.
•
Los permisos, el propietario y el grupo. Los permisos son un conjunto de 9 bits
que controlan quién puede leer, escribir y ejecutar o acceder a un determinado
archivo o directorio, respectivamente. Estos 9 bits se encuentran agrupados de
tres en tres siguiendo el patrón rwx y cada uno de estos grupos de 3 bits se
representa mediante un número octal. En la tabla 2.1 aparecen las ocho
posibles combinaciones que se pueden realizar con cada grupo de 3 bits.
Octal
0
1
2
3
4
5
6
7
Binario
000
001
010
011
100
101
110
111
Permisos
----x
-w-wx
r-r-x
rwrwx
Tabla 2.1. Posibles combinaciones de permisos.
El primer grupo corresponde a los permisos del propietario del archivo, el
segundo a los permisos del grupo y el tercero a los permisos del resto de los
usuarios.
La aplicación de cada uno de estos grupos de permisos depende del UID y el
GID. Si el UID coincide con el UID del archivo al que se desea acceder, se
aplicarán los permisos correspondientes al propietario, si el UID es distinto al
del archivo pero el GID coincide, se aplican los permisos para el grupo. Si no
coinciden ni el UID ni el GID, se aplicarán los permisos correspondientes al
resto de los usuarios. Junto a estos 9 bits aparecen otros 3 que afectan a la
operación de los archivos ejecutables y directorios: el bit SUID, el bit SGID y el
bit sticky.
•
Los bits SUID y SGID. Los bits SUID y SGID, con código octal 4000 y 2000,
respectivamente, se aplican principalmente a archivos ejecutables. Estos bits
permiten que el usuario que ejecuta el programa pueda acceder a archivos que
de otra forma no podría. Cuando se ejecuta un programa con el bit SUID
activado, el proceso que ejecuta el programa adopta durante toda la ejecución
de éste el UID del propietario. Con el bit SGID ocurre lo mismo, excepto que la
identidad que se adopta es la del grupo. Cuando un programa tiene activado el
bit SUID, aparece una 's', en vez de una 'x', en los permisos del propietario del
archivo. Si se activa el bit SGID, la 's' aparecerá en los permisos del grupo.
•
El bit sticky. El bit sticky (código octal 1000) puede utilizarse tanto en
programas como en directorios. Cuando se utiliza sobre un programa, éste
queda continuamente cargado en memoria, de manera que no hay necesidad
de hacer intercambios de páginas entre memoria principal y secundaria. Si el
bit sticky se activa sobre un directorio, ningún usuario puede borrar o
renombrar en ese directorio archivos que pertenezcan a otros usuarios.
Este bit es especialmente útil en directorios de escritura pública como /tmp, ya
que evita que cualquier usuario pueda borrar o modificar los archivos de los
demás. Para identificar un programa o directorio con el bit sticky activado, tan
sólo se debe comprobar que la 'x' de los permisos del resto de los usuarios del
sistema ha sido sustituida por una 't'.
34
Capítulo 2. Marco teórico.
•
Cambio de los permisos, el propietario y el grupo. Todos los permisos se
pueden modificar mediante el programa chmod. El propietario y el grupo de un
archivo se pueden cambiar mediante los programas chown y chgrp,
respectivamente. El programa chown sólo puede ser utilizado por el
superusuario, mientras que el programa chgrp puede ser utilizado por el
superusuario o cualquier usuario, siempre que éste sea el propietario del
archivo y pertenezca al grupo al que se va a cambiar el archivo.
2.2.4.4 Los archivos de inicialización del sistema.
Los archivos de inicialización del sistema, tales como /etc/rc. config, /sbin/init. d/*,
/etc/rc o /etc/rc. d/*, son el lugar ideal para que un intruso coloque un mecanismo que
le permita acceder al sistema. Estos archivos y directorios deberían estar protegidos
contra escritura, de forma que el superusuario sea el único que pueda modificarlos. A
fin de evitar riesgos, estos archivos deberían ser periódicamente revisados, con idea
de detectar posibles modificaciones que pudieran poner en peligro la integridad del
sistema.
El archivo /etc/profile. El archivo /etc/profile es el primero que se ejecuta una vez que
el usuario ha cedido al sistema. Este archivo es común para todos los usuarios y
normalmente contiene inicializaciones y valores de variables predeterminados, así
como alias globales para todo el sistema. A este archivo sólo debería poder acceder
para escritura el superusuario, ya que si un intruso consigue acceder a él, las
consecuencias podrían ser desastrosas. Lo más normal es que los permisos de este
archivo sean 644.
2.2.4.5 Detección de archivos que comprometen la seguridad.
Aparte de los archivos propios de root,, en las cuentas de los usuarios pueden existir
determinados archivos que pueden resultar conflictivos. Entre ellos podemos encontrar
los archivos con el bit SUID o el bit SGID activados, archivos ejecutables, e incluso un
archivo oculto .rhosts que permita el acceso remoto a nuestra cuenta.
•
Archivos con los bits SUID/SGID activados. Los archivos con los bits SUID o
SGID activados son peligrosos por dos razones. La primera es que los archivos
con algunos de estos bits activados, sobre todo si se tratan de shell scripts,
pueden poner en peligro la seguridad del sistema si están implementados
siguiendo unas normas mínimas de seguridad. La segunda razón, la que más
nos interesa, es que normalmente uno de los métodos más utilizados por los
intrusos para acceder al sistema adoptando la identidad de otro usuario son los
shells o los programas que ejecutan un shell y que tienen el SUID activado. Si
se detecta la presencia de este tipo de archivos en cuentas de los usuarios, el
sistema ganaría en seguridad.
2.4.4.6 Modificación del sistema de directorios.
Todas las modificaciones que se realizan al sistema de directorios en Linux son
manejadas por una interfaz, la cual permite interacción con el núcleo del sistema
operativo y este a su vez, realiza la interacción con el dispositivo físico. De esta
manera, cada modificación o acceso a el sistema de archivos se realiza haciendo uso
de llamadas al sistema. Solo nos interesan para este trabajo de investigación las
35
Capítulo 2. Marco teórico.
relacionadas con el sistema de archivos, en la figura 2.6 se muestra un esquema de la
interfaz de llamadas al sistema que implementa el núcleo de Linux.
El usuario puede utilizar diversos métodos que modifican o consultan el sistema de
archivos, entre los que podemos mencionar:
Desde el intérprete de comandos.
•
rm
Eliminación de archivos y directorios pertenecientes al cliente, con
permisos de ejecución y escritura.
•
mv
Mover o renombrar archivos y directorios pertenecientes al cliente, con
permisos de ejecución y escritura.
•
vi
Generación de archivo mediante un editor de texto, se almacena el
archivo con el nombre del usuario como propietario y el grupo al que
pertenece, se asignan permisos según máscara predeterminada por el
administrador.
•
ln
Generación de enlaces suaves o fuertes de un archivo o directorio, se
almacena el archivo con el nombre del usuario como propietario y el grupo al
que pertenece, se asignan permisos según mascara predeterminada por el
administrador.
Desde las aplicaciones.
•
Las aplicaciones que trabajan directamente con la generación o edición de los
archivos como pudieran ser un editor de palabras, hojas de cálculo, editores de
imágenes, entre muchas otras, hacen uso de llamadas al sistema para la
manipulación de la información dentro del sistema de directorios y archivos.
(sys_open, sys_exit, creat, close, read, write).
La instalación o desinstalación de paquetes.
• Existen varios métodos para agregar programas o eliminarlos, pero la
metodología es casi siempre la misma, obtener un paquete de archivos
comprimidos, crear una carpeta para descomprimir dentro los archivos, generar
los archivos compilados a partir del código fuente, incluir dependencias
funcionales de otros paquetes instalados o solicitar la instalación de las
librerías necesarias para el funcionamiento .Por último, instalar el paquete de
acuerdo a los archivos de configuración, los parámetros de ruta, usuario,
permisos de ejecución y documentación necesaria para la utilización del
software.
Este procedimiento puede hacerse desde la línea de comandos, llevando consigo
algunas operaciones de configuración adicionales. El usuario autorizado para instalar
paquetes es únicamente el administrador del sistema (root), los usuarios solo pueden
instalar software que quedará dentro de su directorio /home y el cual no estará
disponible para otros usuarios ni ejecutado fuera de este nivel, incluso, si existen
dependencias funcionales del paquete con otros que se ejecutan como administrador
estas no serán realizadas y la instalación quedará incompleta o no funcionará el
software.
36
Capítulo 2. Marco teórico.
Figura 2.6. Arquitectura del sistema operativo Linux.
Algunas de las herramientas que facilitan el trabajo de instalación de software son los
gestores de paquetes, los cuales mantienen una base de datos de los paquetes
disponibles en repositorios y permiten mantener un sistema de archivos actualizados.
En el caso de las distribuciones Linux Basadas en Debían, los paquetes disponibles
para el Sistema Operativo se encuentran empaquetados en un formato comprimido
con extensión”.deb”. Estos paquetes han sido probados para una distribución derivada
directa, existen otros paquetes con extensiones diferentes que funcionan en esta
distribución, pero deben ser instalados de manera manual, debido a la diferencia de la
estructura de directorios principalmente.
Algunas de las herramientas utilizadas para la actualización de software, instalación y
eliminación de paquetes son las siguientes:
•
Apt-get: Interfaz en línea de órdenes de APT (Advanced Package Tool),
herramienta para la gestión de paquetes de software del Proyecto Debian. Es
básicamente una biblioteca de funciones de C++ empleada por otros
programas. Almacena una lista de los servidores en internet (repositorios)
donde se encuentran los paquetes disponibles. ``/etc/apt/sources.list''
•
Permite la instalación, desinstalación y actualización de algún paquete.
Además de mantener una base de datos de todos los paquetes instalados en el
equipo.
•
Aptitude: Es una interfaz para APT, muestra una lista de paquetes de software
que permiten elegir de modo interactivo la instalación o eliminación de éstos.
Cuenta con un sistema de búsqueda de patrones que facilitan las relaciones de
dependencia funcional de los paquetes. Está diseñado para GNU/Debian, y se
extendió hacia otras distribuciones basadas en paquetes RPM. Es básicamente
una biblioteca de funciones que provee la interfaz gráfica consistente en menús
desplegables.
37
Capítulo 2. Marco teórico.
•
Synaptic: Es una interfaz gráfica GTK+ de APT para el sistema de gestión de
paquetes de Debian. Utiliza un sistema de paquetes .deb, pero también puede
ser utilizado en sistemas basados en paquetes RPM. Permite la actualización
de paquetes, modificación de repositorios, actualización y eliminación de
paquetes, además de un sistema de búsqueda de patrones en un entorno muy
sencillo de utilizar, su interfaz permite realizar la mayoría de las tareas con
algunos clicks del mouse.
La instalación de paquetes no es una tarea cotidiana, es decir, no sucede con mucha
frecuencia y sólo el administrador lo puede realizar; en el mejor de los casos un
usuario puede agregar programas dentro de su directorio. Por esta razón, al encontrar
alguna instalación o eliminación de los programas debemos suponer que la tarea la
realizó el administrador del sistema, en caso contrario, habría alguna intrusión y ésta
debería verse reflejada en el reporte de integridad.
2.4.4.7 Modificación del esquema de permisos.
Se describen a continuación, los comandos que permiten la modificación de las
propiedades de usuario, grupo y permisos de los archivos del sistema Linux, son parte
de las llamadas de sistema operativo.
•
Chown: Este comando permite la modificación del propietario del archivo, al
realizar copias de archivos, éstos obtienen siempre como propietario al usuario
que realiza la operación, de la misma manera ocurre con la creación de
archivos. Un archivo no podrá ser eliminado si no es el propietario del archivo o
el usuario administrador del sistema.
•
Chgrp: Este comando permite la modificación del grupo al que pertenece el
archivo, los usuarios pertenecientes al mismo grupo tendrán privilegios de
acuerdo al sistema de permisos que posea el archivo.
•
Chmod: Este comando permite la modificación del esquema de permisos que
tienen el propietario, los usuarios del grupo y todos los demás usuarios del
sistema. Se implementa en agrupamientos de 3 bits que son colocados en
decimal para facilitar su interpretación, corresponden a usuario, grupo, y todos
los demás. El último agrupamiento es un conjunto especial que le permite
ejecutarse bajo otro propietario o grupo
2.2.4.8 Escalamiento de permisos.
A continuación veremos los problemas de seguridad en los que puede estar implicado
el sistema de archivos o los archivos existentes, definiendo como escalamiento de
permisos a todo acceso por parte de un usuario a recursos no permitidos, por medio
de abuso de recursos, explotación de bug o cualquier otra técnica.
Archivos de dispositivos: Los archivos de dispositivos son el mecanismo que nos
proporcionan los sistemas Linux para comunicarnos con el hardware y los dispositivos
del sistema. Este mecanismo proporciona una gran flexibilidad, sobre todo a los
programadores, que no se tienen que preocupar por el tipo de dispositivo que se esté
utilizando, pero tiene el inconveniente de que puede comprometer la seguridad del
sistema si un intruso consigue acceder a cualquiera de ellos sin autorización. Existen
38
Capítulo 2. Marco teórico.
dispositivos, que permiten acceder a la memoria del sistema. Lógicamente, a este
archivo sólo debería poder acceder, tanto para lectura como para escritura, el
superusuario, ya que si un intruso consigue acceder a él podría, entre otras muchas
cosas, modificar sus privilegios, cambiar los permisos de los procesos, modificar los
datos que se encuentren en memoria, obtener las contraseñas de los usuarios e
incluso bloquear el sistema. Algo parecido pasaría con otros archivos de dispositivos,
como, por ejemplo, los que permiten acceder a las distintas particiones de los discos
duros, modems, redes, terminales, etc. Parece lógico pensar que la existencia de
archivos de dispositivos en el sistema supone un verdadero peligro, y realmente lo es
si sus permisos no están debidamente protegidos o no están correctamente
establecidos.
Una práctica bastante común en los intrusos informáticos consiste en crear archivos
de dispositivos en el sistema tras haber accedido a él como root. Normalmente suelen
crearlos en directorios ocultos y darles nombres de programas del sistema. Todo
archivo de dispositivo que no se encuentre en el directorio /dev puede ser considerado
como sospechoso. Los archivos de dispositivos pueden ser creados mediante el
programa mknod. Lógicamente, este programa debe estar bien protegido, de forma
que sólo pueda ser ejecutado por el superusuario.
Archivos del sistema con el bit SUID activado: Si un intruso consigue acceder al
sistema como superusuario, lo más normal es que se las ingenie de alguna manera
para mantener los privilegios la próxima vez que acceda al sistema. De entre todas las
posibilidades existentes, una de las más utilizadas es la creación de programas con el
bit SUID activado propiedad del superusuario. Si un intruso coloca este tipo de
programas en la cuenta de un usuario, resulta muy fácil detectar, pero si el intruso
decide ocultar el programa en uno de los directorios en los que se almacenan los
archivos del sistema y además le asigna el nombre de uno de estos programas, puede
ser casi imposible detectarlo.
Caballos de Troya en los directorios públicos del sistema: Otro mecanismo muy
utilizado por los intrusos informáticos consiste en la creación de caballos de Troya en
los directorios públicos del sistema. Estos caballos de Troya suelen ser programas
ejecutables para que el usuario no pueda conocer su contenido. Normalmente, estos
programas crean archivos .rhosts, modifican los permisos de determinados archivos
del directorio de entrada del usuario, añaden líneas conflictivas en los archivos de
arranque del shell o crean shells con el bit SUID activado. Todos estos métodos
persiguen un objetivo común: obtener los privilegios del usuario que ejecuta el caballo
de Troya.
2.2.4.9 Detección de modificaciones en los archivos del sistema.
Si se produce un ataque en el sistema, es muy probable que el intruso modifique o
cree determinados archivos para facilitar su entrada en el sistema en una próxima
ocasión. Una práctica bastante extendida consiste en modificar el comportamiento de
diversos programas del sistema, como Is o ps, de forma que no sean información que
pueda delatar su presencia.
Otra práctica muy común consiste en crear shell scripts con el bit SUID activado y
ocultarlos entre los archivos del sistema. Esta práctica, aunque efectiva, podría ser
detectada fácilmente, ya que el administrador podría comprobar periódicamente la
presencia de este tipo de archivos en el sistema. Pero de todas estas prácticas, una
de las más difíciles de detectar es la modificación los propios programas del sistema.
39
Capítulo 2. Marco teórico.
Un intruso podría modificar el programa login de forma que introduciendo un nombre
de usuario determinado pudiera ceder al sistema como root. Otra alternativa podría ser
modificar el programa passwd para que todas las contraseñas de los usuarios
quedaran almacenadas en archivo o fueran enviadas por correo electrónico a una
dirección determinada.
La única manera de detectar este tipo de modificaciones en los archivos es mantener
una base de datos con los datos de los archivos e información adicional como un
checksum o un resumen e ir comparándola periódicamente con los datos de los
archivos almacenados actualmente en el sistema. Si se detecta cualquier variación
entre los datos almacenados y los datos de los archivos del sistema, es muy probable
que un intruso haya modificado algún archivo. Lo normal sería incluir en la base de
datos aquellos directorios que contengan programas clave del sistema, como, por
ejemplo, /bin, /usr/bin, /sbin o /usr/sbin, junto a otros que el administrador considere
también importantes o piense que pueden resultar conflictivos.
Una vez creada la base de datos, tendremos información suficiente para detectar
cualquier modificación que se pudiera producir sobre los archivos de los directorios
especificados. Para comprobar si se ha producido algún tipo de modificación sobre
cualquiera de los archivos, se debe ejecutar algún procedimiento de búsqueda de
diferencias.
2.2.5 Procesos [5] [17] [19].
Los procesos son programas que se encuentran en ejecución, puede haber mas de un
programa ejecutándose al mismo tiempo, debido a que Linux es multitarea, pero no
dos procesos al mismo tiempo en el sentido de que solo existe un procesador en el
equipo de computo. Cuando un programa es leído por el sistema operativo y cargado
en memoria para ejecutarse se convierte en proceso; a estos se les asignan recursos
para que puedan ejecutarse correctamente, podemos citar algunos como: memoria,
CPU, dispositivos de entrada-salida, etc.
Cada proceso en Linux tiene asociado un número que lo identifica; este número es
asignado por el núcleo y se denomina identificador de proceso o PID (process
identifier); además del PID, los procesos tienen asignado otro número denominado
PPID (parent PID), que identifica al proceso padre del proceso. La generación de
procesos, es un concepto que deriva del manejo de hilos, procesos que generan a
otros procesos, los cuales se multiplexan en el tiempo de atención del procesador. Los
tres estados básicos en los que se puede hallar un proceso se describen a
continuación:
1.- El proceso se esta ejecutando- Sólo puede haber un proceso en este estado
debido a que solo hay un procesador, el CPU es compartido en tiempo por todos los
procesos, se alternan de acuerdo a su prioridad.
2.-El proceso está durmiendo- Se encuentra en este estado cuando no puede
proseguir su ejecución por faltarle algún recurso o porque esta esperando la
terminación de una operación de entrada-salida
3.-El proceso no dispone de procesador- Se encuentra listo para ejecutarse y continúa
su ejecución cuando se lo indique el planificador de CPU o scheduler.
40
Capítulo 2. Marco teórico.
El núcleo como eje del sistema operativo, se encarga de la administración de las
direcciones de memoria, la creación, ejecución y destrucción de los procesos, la
administración del sistema de interrupciones y el de excepciones, el sistema virtual de
archivos, los dispositivos de entrada y salida, los sistemas de memoria cache, los
diferentes sistemas de archivos y los procesos de comunicación entre todos los
elementos anteriores. Cuando se agregan al núcleo módulos para que trabajen como
herramientas del sistema, la relación de ejecución y control pasa a ser perteneciente
del Kernel, por lo cual, de estos últimos también se encarga el núcleo.
El objetivo de un análisis del núcleo del sistema, refiere al monitoreo directo de la
administración de los procesos y el manejo de los módulos que se instalan; la
modificación o creación de estos, debe ser comparada con una base de datos fiable
para determinar el estatus del sistema, previendo códigos maliciosos en procesos no
permitidos o en módulos del núcleo que pudieran haber sido modificados.
2.2.6 Intérprete de comandos [5] [17] [28].
El shell o intérprete de comandos es el interfaz básico que permite comunicarse con la
computadora y arrancar los programas guardados en una unidad de almacenamiento.
Internamente, es un programa que espera a que se le introduzca una orden o
comando para ejecutarlo, tras lo cual vuelve a quedarse a la espera del siguiente
comando. Esta funcionalidad básica es un punto común que tienen todos los
intérpretes de comandos de cualquier sistema operativo.
Dependiendo del shell y de los recursos a su disposición, aparecen diversas
extensiones que constituyen un autentico lenguaje de programación que se
encuentran en todos los sistemas operativos Linux; algunos de los elementos
importantes de una shell son:
•
El prompt, es un indicativo de que la shell esta lista para recibir nuevos
comandos, las variables de entorno permiten al usuario asignar o acceder a
cierta información, la cual es valida solo mientras la shell que el usuario esta
usando continué cargada en memoria. Cuando el usuario sale del sistema (log
out) esta información se pierde.
•
La entrada y salida estándar son unas abstracciones que proporcionan al
programador una forma unificada de leer y escribir datos desde un programa,
la entrada inicialmente apunta al teclado, pero, el usuario puede hacer que la
entrada estándar apunte a un archivo de datos o a otro recurso; lo mismo
ocurre con la salida estándar, esta apunta por defecto a la pantalla, pero un
usuario puede manipularla de tal manera que apunte a un archivo, la
impresora, etcétera.
•
Una tubería, es una forma de conectar la salida de un programa con la entrada
de otro programa automáticamente. Este concepto permite que varios
programas puedan encadenarse y hacer que los resultados de un comando
puedan tratarse como datos a procesar por el siguiente. Una característica
principal de un sistema operativo multitarea es que puede aparentar que esta
ejecutando varios procesos a la vez.
La interfaz de comandos es un elemento importante en la realización de esta tesis, se
utiliza la Bourn Shell (Bash) para la búsqueda y recopilación de información del
sistema de archivos.
41
Capítulo 2. Marco teórico.
2.2.7 Sistema de almacenamiento de sucesos [5] [17].
Todos los eventos de un sistema operativo Linux pueden ser almacenados, desde el
acceso de los usuarios, hasta el uso de archivos o intentos de modificaciones no
permitidas; la información de estos eventos es almacenada en archivos de texto plano
denominados bitácoras, algunos ejemplos de eventos son: conexión de los usuarios,
llamadas al sistema, errores de programas, etc.
Aunque muchos de los archivos de bitácora son comunes en cualquier sistema, su
localización, o su formato, pueden variar entre diferentes sistemas Linux. Estas
referencias son utilizadas por elementos de búsqueda de intrusiones o de seguridad
forense para determinar el punto en que el sistema fue corrompido.
2.2.7.1 El demonio syslogd.
Linux maneja todos sus procesos con un control comúnmente llamado demonio, los
demonios se encargan del manejo de los procesos específicos de cada tarea, existen
así, demonios de impresión, del trabajo con archivos, la interfaz gráfica, el que verifica
el funcionamiento generalizado del sistema se llama syslog.
El demonio syslogd se lanza automáticamente al arrancar un sistema Linux, y es el
encargado de guardar informes sobre el funcionamiento de la máquina. Recibe
mensajes de las diferentes partes del sistema y los envía y/o almacena en diferentes
localizaciones, tanto locales como remotas, siguiendo un criterio definido en el archivo
de configuración (/etc/syslog.conf), donde se especifican las reglas a seguir para
gestionar el almacenamiento de mensajes del sistema.
Es muy importante este sistema de monitoreo, ya que es el elemento de seguridad
implementado por el propio sistema, todo lo que ocurra en el sistema es registrado por
este demonio, incluyendo los fallos, los intentos de conexión o los intentos de
intrusión.
2.2.7.2 Auditoria de seguridad.
El hecho de examinar los registros de las bitácoras se denomina auditoria de
seguridad del sistema, el análisis de esta permite detectar intentos de ataque, uso
indebido de los recursos o actividades sospechosas; existen desventajas; debido a la
gran cantidad de información que potencialmente se registra, puede hacer difícil
detectar problemas por el volumen de datos a analizar.
La auditoria puede ser utilizada para reconstruir eventos después de que haya
ocurrido un problema; los daños pueden ser fácilmente evaluados, localizando con
precisión, cuando, como y porque ocurrió el problema. Puede ayudar en el proceso de
recuperación de archivos utilizando el control de cambio realizados en este; puede
asistir en la detección de intrusos, examinando los registros cuando son creados o
después de producido el hecho, detectar cambios en el rendimiento del sistema por
algún virus o gusano; incluso, permite comprobar si el sistema opera normalmente o
existe un incremento notable de uso de los recursos a consecuencia de algún ataque.
42
Capítulo 2. Marco teórico.
2.3 Entorno de trabajo del servidor de monitoreo.
Los sistemas de monitoreo tienen un gasto de recursos de cómputo grande
dependiente de la técnica de identificación que implementen, aunado a esto, pueden
contar con su propio entorno de aplicación y presentación, lo cual representaría una
carga extra para el sistema huésped. Con el objetivo de realizar una herramienta
portable, ligera y fácilmente configurable, se pueden utilizar tecnologías que
implementan estos últimos dos aspectos, permitiendo enfocar el desarrollo de la
herramienta en el aspecto de análisis de posibles intrusiones; a continuación se
mencionan dos herramientas fundamentales de trabajo para el acceso y
almacenamiento de la información.
2.3.1 Servidor de páginas web.
Los servidores web son sistemas que proporcionan recursos utilizando el protocolo de
transferencia de hipertexto (http por sus siglas en ingles), esta diseñado para transferir
páginas desarrolladas en lenguaje HTML haciendo uso de una interfaz de
comunicación implementada en navegadores (browser). El servidor se encarga de
proporcionar los recursos que le son solicitados por un equipo denominado cliente.
Permite una muy alta disponibilidad de la información a múltiples usuarios dentro de
una red y es el método mas difundido de conexión en internet en la actualidad. El
conjunto aplicado para este servidor lo constituyen básicamente un lenguaje de
programación y una base de datos, destacando la pila de aplicaciones Linux, Apache,
PHP / Perl /Phyton, MySQL (LAMP).
En particular, el servidor HTTP Apache esta diseñado para plataformas Linux /GNU,
pero puede ser implementado incluso en Windows. Su desarrollo comenzó en 1995
por parte de la Apache Software Fundation, actualmente se encuentra en la versión
2.2. Entre sus aspectos más destacables podemos mencionar la modularidad,
capacidad de mensajes de error configurables, uso de técnicas de autenticación y su
conexión a bases de datos. Apache tiene amplia aceptación dentro de los usuarios de
red, llegando a ser empleado en el 48% de los sitios web en el mundo en el año 2005,
en el desarrollo de este proyecto, será una pieza fundamental, ya que almacenara el
gestor de reportes que permitirá dispones de la información desde cualquier punto de
la red.
2.3.2 Servidor de base de datos.
Los sistemas de base de datos permiten el almacenamiento, modificación y consulta
de volúmenes muy grandes de información en tiempos muy cortos. MySQL es un
sistema de gestión de base de datos relacional, utiliza el lenguaje de consultas
estructurado (SQL), es desarrollado por la empresa Open Source.
MySQL Se puede instalar en diferentes plataformas, implementa socket TCP/IP para
la conexión con los clientes, entre muchas otras cosas. La versión mas reciente es la
5.0 que soporta transacciones, procedimientos almacenados, conectividad segura,
maneja la licencia GPL y una licencia privativa que brinda soporte y servicios
adicionales por parte de la empresa.
43
Capítulo 2. Marco teórico.
2.4 Comentarios finales.
En este capítulo se dio una introducción a la problemática de la seguridad de la
información y un contexto de las amenazas existentes, además de los mecanismos de
detección de intrusos en los sistemas de cómputo. Se proporcionó una panorámica del
problema y de la relación e interdependencia de los sistemas de seguridad con el
sistema operativo. Posteriormente, se dio una introducción de los esquemas y
elementos que utilizan los sistemas de detección de intrusos, destacando algunas de
las ventajas de conformidad a las técnicas que se implementan; haciendo una
mención importante en las recomendaciones que existen para el diseño de este tipo
de sistemas. Se describió de manera somera la arquitectura del sistema de archivos
Linux, elemento en que recaerá la mayor importancia de nuestro desarrollo; y por
ultimo, se hizo mención de los elementos que por construcción pudieran representar
una portabilidad y un soporte a la gestión de recursos e información dentro de una red
de área local.
44
Capitulo 3. Análisis y diseño del sistema.
CAPÍTULO 3. ANÁLISIS Y DISEÑO DEL SISTEMA.
A lo largo de este capítulo se muestra la metodología utilizada
para el análisis de los sistemas de archivos Linux y la detección
de intrusiones, los requerimientos para la generación de un
esquema de directorios referencia, la búsqueda de cambios, la
arquitectura de los procedimientos de monitoreo, el diseño de
la base de datos de modificaciones, los métodos de
autenticación y codificación.
3.1 Análisis y diseño del sistema de detección de intrusos.
En este capitulo se retoman los diseños de funcionamiento de los sistemas de
detección de intrusos descritos en el capítulo 1, se define un esquema del nivel de
riesgo que constituye una intrusión para cada uno de los directorios del árbol de
archivos del sistema operativo Linux. Posteriormente, se describen las características
que permiten la identificación y reconocimiento de modificaciones de un archivo
incluyendo técnicas criptográficas.
Continuamos con el análisis de los requerimientos mínimos del sistema, considerando
los elementos que intervienen en la operación y las restricciones propias determinadas
por cuestiones de seguridad, recursos disponibles, tecnologías utilizables entre otros.
Realizado análisis de requerimientos, se procede al modelado del sistema, este
modelo será desarrollado en subsistemas funcionales, los cuales corresponden a
elementos específicos de acción del sistema. Cada subsistema tiene relación funcional
con los demás, por lo tanto, será descrito en diagramas de actividades, los cuales
incluyen descripción de los elementos encargados de ejecutar los procedimientos
necesarios.
Para finalizar, se diseña el modelo de una base de datos relacional, la cual permita
almacenar datos de la integridad del sistema analizado, sirva de base fiable de
monitoreo y permita la actualización de las anomalías detectadas. Además, será
utilizada como plataforma para la generación de reportes y estadísticas de los equipos
analizados.
3.2 Requerimientos.
Para crear un diseño, se debe restringir el campo de acción del sistema, definir los
recursos necesarios y las limitaciones o lineamientos, se enfoca en la descripción de lo
que debe de hacer, dejando a la etapa de implementación el cómo se debe hacer.
3.2.1 Dominio de acción.
Las capacidades del sistema están fundamentadas en los siguientes elementos:
•
Obtención de una huella digital del sistema de archivos de un equipo de
cómputo en producción.
•
Traslado seguro de la información obtenida en el cliente hacia el servidor.
•
Almacenamiento de la huella digital en un equipo servidor.
45
Capitulo 3. Análisis y diseño del sistema.
•
Crear en el servidor una estructura de directorios que sirva como base fiable
para los análisis posteriores.
•
Generación de informes de cambios en la huella digital del sistema obtenida en
el análisis del equipo de cómputo en producción.
•
Actualización de los cambios permitidos de la estructura de archivos del equipo
de cómputo en producción.
Esta breve descripción permite bosquejar el comportamiento global del sistema, se
enfatiza el análisis de aspectos imprescindibles, algunos como son: la integridad de la
información, el medio de comunicación entre equipos de cómputo, los protocolos
utilizados para realizar la transferencia de información, la seguridad de la información,
los mecanismos de búsquedas de diferencias y la actualización de las posibles
modificaciones permitidas.
Integridad- Utilizar técnicas criptográficas existentes para la obtención y validación de
la integridad de información electrónica. Se puede hacer uso de herramientas propias
del sistema operativo.
Medio de comunicación- Se debe de contar con un medio de comunicación que
permita el intercambio de información entre los equipos de cómputo. Este canal debe
de implementar un estándar comercial para garantizar la conectividad del sistema. Las
redes de comunicación actuales utilizan una topología basada en el modelo OSI; el
alcance del sistema debe ser una red de área local (LAN), utilizando la pila de
protocolos TCP/IP.
De acuerdo al tipo de red que se tenga, el sistema deberá ser adaptable, tendrá la
capacidad de trabajar en una red interna, con direcciones privadas y fijas. Los
ambientes donde se manejan asignación de direcciones de red de manera dinámica
no serán aplicables para esta herramienta. La capacidad del sistema debe estar
limitada por el número de direcciones IP disponibles en el segmento de red que se
utiliza. Este entorno debe permitir la comunicación de los equipos hacia internet.
Políticas de seguridad- Las políticas son el conjunto de reglas que se establecen para
llevar a cabo un esquema de seguridad, estas reglas son aplicables a diferentes
niveles del sistema. Se deben diseñar políticas propias de cada entorno, pero es
indispensable para nuestro desarrollo crear un conjunto de reglas bien definido,
basado en los principales materiales de seguridad informática expuestos como
referencia en este trabajo. Se recomienda crear una política restrictiva y adecuarla con
base a las características de los usuarios del equipo de cómputo.
Privacidad y autenticación- El sistema operativo Linux cumple con estos dos niveles
por construcción, el acceso a la red no establece un esquema que cubra estos
aspectos, por lo tanto, se debe implementar un esquema que garantice el
cumplimiento de autenticar a los involucrados en una comunicación de red y la
privacidad de la información que se intercambian.
Estaciones de trabajo y servidores- No puede existir una red de comunicaciones sin
estaciones de trabajo y servidores, incluso, el servidor se integra como parte de la red.
El análisis puede realizarse a cualquiera de las dos clases de equipos sin
adecuaciones extra.
46
Capitulo 3. Análisis y diseño del sistema.
Administración centralizada- El análisis e identificación de modificaciones, la
administración de los cambios en la estructura, la creación de perfiles y la
programación de análisis se realizan de manera centralizada en el servidor de
monitoreo.
3.3 Análisis de los requerimientos
De acuerdo a las anteriores premisas, consideremos plantear una propuesta del
funcionamiento general del sistema, la descripción de los componentes principales y
las políticas que se utilizan para detectar las intrusiones:
•
Tomando como principio la identificación de intrusos basados en host, se
contara con un sensor que recolecte información de un sistema de cómputo
individual; con la capacidad de acceder y monitorear directamente los archivos
de datos y procesos del sistema usualmente blancos de los ataques.
•
Habilitado para soportar una infraestructura de IDS de administración y
reportes centralizados, permite a un equipo de cómputo de administración
rastrear varios hosts. Implementa la detección de usos indebidos; comparando
características especificas de los archivos y su huella digital, con la información
almacenada en la base de datos fiable en busca de coincidencias.
•
La forma de respuesta del sistema es pasiva; la cual consiste en el envío de
información al responsable correspondiente, dejando recaer en él la toma de
decisiones; por muy afinados que sean los mecanismos de respuesta
automática, hay ocasiones en que un sistema no tiene la capacidad suficiente
para tomar una decisión. Las alarmas por pantalla son utilizadas para este
propósito, enviando un mensaje dentro de una ventana indicando al
administrador una posible intrusión, acompañando al mensaje con información
adicional, como: los archivos que has sufrido modificaciones o eliminados, la
fecha y hora en que se realizó el análisis, entre otros; el contenido de estas
alarmas puede ser configurado, en casos considerados sensibles para el
funcionamiento del sistema se cuenta con la opción de enviar un correo
electrónico al administrador del sistema.
•
Para la generación de reportes y archivado de los documentos de información
detallada, se usa un manejador de base de datos, algunas de las ventajas de
esta implementación podrían ser: reportes de los eventos del sistema e
intrusiones analizados de manera rápida sobre un periodo particular de tiempo,
además de proveer estadísticas de los eventos generados por el IDS en
formatos apropiados.
•
Se utiliza un control centralizado; es decir, la recolección de información de los
sensores, detección y los reportes son administrados directamente desde una
ubicación central y está basado en intervalos de tiempo (Modo Batch); donde,
el flujo de información desde los sensores al motor de análisis no es continuo;
la información se maneja en esquemas de comunicación de almacenamiento y
envió. En la figura 3.1 se presenta el esquema descrito anteriormente.
•
En una analogía con un sistema de seguridad basado en cámaras: Se
colocaran sensores (cámaras fotográficas) para tomar instantáneas de
directorios previamente seleccionados del sistema de archivos de un equipo.
47
Capitulo 3. Análisis y diseño del sistema.
La primera imagen adquirida por el sensor será enviada al servidor y servirá
para crear la estructura de directorios, será considerada la base fiable. En un
tiempo posterior, el servidor solicitara al sensor capturar una imagen del equipo
cliente y enviarle esta información, el servidor recibe la nueva imagen, compara
ambas imágenes (la almacenada fiable y la actual) y busca modificaciones, en
caso de encontrarlas, genera el archivo de reporte con las incidencias
detectadas.
CLIENTE
CLIENTE
CLIENTE
CLIENTE
CLIENTE
Comandos
Consola
SERVIDOR
Almacenamiento
Respuesta
BD
ANALISIS
Figura 3.1. Esquema general del sistema.
3.4 Arquitectura general del sistema.
EL sistema de detección de intrusos basado en políticas de seguridad tiene esta
arquitectura:
•
Las reglas de acceso y los mecanismos para especificarlas.
•
Los mecanismos de supervisión de archivos modificados
•
Las acciones correspondientes para el manejo de archivos modificados.
•
Generación de reportes
•
Actualización de modificaciones no permitidas en el servidor
1.- Las Políticas de seguridad.
Pueden implementarse políticas de seguridad definiendo reglas, por mencionar
algunas, se pueden establecer reglas para supervisar los accesos al sistema, los
48
Capitulo 3. Análisis y diseño del sistema.
permisos con los que se accede, etc. Las reglas de acceso especifican qué partes
serán supervisadas y qué tipos de acceso constituyen una violación; estas reglas se
establecen como una mascara de selección para el usuario o los grupos que usan el
recurso. Son diseñadas por el administrador del sistema y almacenadas en el
directorio del servidor de monitoreo.
Se determinan los lineamientos para formar políticas en el capitulo siguiente en base a
los esquemas de seguridad [17][18][21] y al propuesto por Tripwire [12]. Estos
lineamientos pueden ser ajustados a los requerimientos de cada entorno donde se
implemente y los servicios que proporciona.
En la tabla 3.1 Se define un nivel de riesgo para considerar la importancia de los
contenidos de los directorios o archivos para el funcionamiento general del sistema.
Nivel de riesgo
Alto (High)
Características de los elementos
• Archivos ejecutables
• Archivos ejecutables SUID o GUID.
• Directorio del administrador del sistema (/root)
• Directorio de archivos de inicio y nucleo (/boot)
• Directorio de aplicaciones del sistema operativo solo
utilizables por el administrador (/bin)
• Directorio de librerías utilizadas por las aplicaciones del
sistema operativo, solo utilizables por el administrador
(/lib)
• Directorio de configuración de usuarios, contraseñas,
servicios, código fuente de aplicaciones, administrador de
paquetes (/etc)
• Directorio de archivos y aplicaciones disponibles sin
permiso de escritura para lo usuarios no administradores
de Linux (/usr)
Medio (Medium)
• Directorios de esquemas de dispositivos utilizables (/dev)
• Directorio de montaje de dispositivos de intercambio de
información (/media)
• Directorio de aplicaciones del sistema con permiso de
ejecución para los usuarios no administradores de Linux
Bajo (Low)
• Directorio de elementos variables , almacena bitácoras y
publicaciones del servidor web(/var)
• Directorio de usuarios no administradores de Linux
(/home)
• Directorio virtual de ejecución de procesos y estado del
sistema (/proc)
Tabla 3.1. Nivel de riesgo de directorios en el sistema operativo Linux.
Esta clasificación está basada en los aspectos de significantes de la seguridad y el
impacto que representan las intrusiones en estos directorios. El nivel Alto esta formado
por elementos críticos que representan puntos de vulnerabilidad muy importantes, el
nivel Medio se forma de elementos que no son críticos, pero son significativos para la
seguridad del sistema, por ultimo, el nivel bajo esta formado por los elementos que
representan un impacto mínimo en la seguridad del sistema.
Cabe destacar que esta clasificación esta basada en las especificaciones estándar de
Tripwire [12], existen diferencias en la composición de los elementos y niveles debido
a que en este desarrollo se pretende analizar directorios completos y Tripwire [12] esta
orientado al análisis de archivos específicos.
49
Capitulo 3. Análisis y diseño del sistema.
El directorio /proc es un elemento virtual que define el estado del sistema, es un
directorio dinámico que no será analizado en este desarrollo debido a la
conceptualización del tiempo de análisis propuesto en esta metodología. El entorno de
realizar análisis en tiempos establecidos y no en tiempo real limitan la aplicación de
este directorio.
Las políticas también deberán introducir el concepto de escalamiento de permisos, por
lo tanto se consideran imprescindibles mecanismos de identificación de permisos con
los que cuenta el directorio y la detección de modificaciones no deseadas en éste
sentido. Se deben considerar los propietarios y los grupos a los que pertenecen los
archivos analizados, sobre todo los del superusuario (root) por tener privilegios
administrativos dentro del entorno Linux. En la tabla 3.2 se muestra el esquema
determinado para la formulación de políticas que validen los permisos de los archivos.
SUID,
GUID
1 bit
Permisos
Permisos Permisos
usuario
grupo
3 bits
3 bits
Permisos
otros
3 bits
Propietario y grupos
Propietario Grupo del
archivo
propietario
Tabla 3.2. Parámetros de validación de permisos de los archivos.
Los archivos dentro de Linux pueden ser invocados desde otro lugar o con otro
nombre siempre que existan simbólicamente enlaces, esto podría suponer un riesgo
cuando se realizan a elementos fundamentales del sistema como son todas las
aplicaciones propias de root. Se añaden a la lista de lineamientos un referente del
número de enlaces simbólicos que posee cada archivo al momento de verificar sus
propiedades. Por ultimo, el tamaño de un archivo perteneciente a un nivel de riesgo
Alto puede determinar una intrusión, debido a que la modificación supondría la
inserción de código malicioso [9].
Estos lineamientos suponen el control de las propiedades de un archivo dentro del
esquema del sistema operativo Linux, estos no son suficientes y se debe realizar la
validación del contenido de cada archivo con la implementación de algún algoritmo
criptográfico que determine la integridad de los datos.
La tabla 3.3 muestra el esquema que tendrán las políticas de las propiedades para
cada uno de los archivos analizados y la tabla 3.4 muestra el esquema de las políticas
de integridad.
Enlaces
Política propiedades de archivo
Nombre Permisos Propietario
y grupos
Tamaño
Tabla 3.3. Política de propiedades de archivo.
Nombre
Política integridad de archivo
Resumen criptográfico (huella digital)
Tabla 3.4. Política integridad de archivo.
2.- El comprobador de integridad.
La idea principal es usar copias de diferentes instantes de tiempo del sistema de
almacenamiento para descubrir los cambios no deseados en el sistema. Se propone
50
Capitulo 3. Análisis y diseño del sistema.
tener una huella digital realizada por resumen que se almacena en directorios y usar
esta información para limitar el análisis a un número pequeño de directorios.
Estos datos serán comparados con los almacenados en el directorio correspondiente;
obteniendo las diferencias. Si existen, se genera un archivo con los elementos
modificados y se almacena en el directorio correspondiente.
3.- Las acciones del sistema.
Siempre que una intrusión se descubre, se debe actualizar los cambios registrados en
la base de datos.
4.- Generación de reportes.
El servidor de monitoreo deberá presentar el estado de los equipos analizados en una
interfaz fácil de entender, se podrá solicitar la generación de un archivo de reporte
para imprimir la información y contar con evidencia de las intrusiones. Este tipo de
documentos permiten conocer el nivel de seguridad que guarda cada equipo y en
cierto grado, la seguridad que presenta la red.
5.-Actualización de modificaciones permitidas en el servidor.
Si las modificaciones que se presentan no son autorizadas por el administrador, este
podrá aislar al sistema, realizar los análisis correspondientes y restaurar el
funcionamiento del sistema. Resuelto el problema de la intrusión, se puede solicitar al
administrador la restauración del sistema de archivos al último punto fiable conocido;
transfiriendo al equipo cliente los datos almacenados como respaldos. Se recomienda
construir el directorio de cada cliente inmediatamente después de que su sistema ha
sido instalado y actualizado.
3.4.1 Capas de diseño.
La construcción de un modelo engloba aspectos que pueden ser separados para
facilitar su comprensión y diseño, a continuación se describen los elementos y las
capas en que se agruparon:
Presentación. El servidor de monitoreo tendrá 2 tipos de comunicación con el
administrador. La primera es mediante consola de comandos, la cual permite realizar
movimientos, actualizaciones y generación de perfil de usuario. La segunda consiste
en una interfaz gráfica de usuario para la actualización y generación de reportes,
diseñada para un navegador web, esta basada en el protocolo http.
Lógica de aplicación. En esta se definen los objetos que representan funciones de los
requisitos de aplicación:
a) Estructura de directorios
b) Integridad de los archivos
c) Permisos de archivos
d) Canal de comunicación
51
Capitulo 3. Análisis y diseño del sistema.
e) Seguridad de la información
f) Motor de búsqueda de diferencias
g) Motor de reportes
h) Interfaz con el sistema de archivos
i) Interfaz con el sistema generador de políticas
j) Interfaz con el sistema generador de reportes
k) Interfaz con el sistema de actualizaciones
Almacenamiento. Se decide tener una estructura de directorios con archivos en texto
plano para la etapa de integridad y base de datos fiable. Considerando los aspectos de
velocidad y el volumen de almacenamiento.
Para el sistema de reporte de cambios se hace uso de un gestor de base de datos el
cual permite actualizar los cambios realizados en el sistema en un corto tiempo y
generar el estado de los equipos.
3.4.2 Tiempos de respuesta y de análisis.
El uso de herramientas de procesamiento electrónico de información reducen
notoriamente el tiempo en que se realiza una tarea, la identificación de un cambio en
la estructura del sistema podría tardarse horas si no se usa una herramienta como
esta. Se considera que el análisis dependerá directamente del volumen de información
y el tráfico de la red. El tiempo de respuesta ante un incidente de intrusión baja
considerablemente, llegando a ser responsabilidad del administrador el
aprovechamiento de la información entregada por el sistema.
3.4.3 Uso de recursos.
Los recursos de un equipo de cómputo son muy valiosos, lo anterior, tiene un peso
mayor cuando se habla de servidores de aplicación; se analizará el rendimiento del
equipo cuando la herramienta de auditoria se está ejecutando. El tráfico en la red es
otro aspecto importante a considerar.
Las políticas de seguridad bien diseñadas permitirían un desempeño mayor, esto se
traduce en programar los análisis cuando los equipos presenten menos carga de
trabajo.
3.4.4 Plataformas.
Este desarrollo está diseñado para atender una problemática del sistema operativo
Linux, en sus distribuciones derivadas de Debían principalmente, derivado de que la
estructura que maneja su directorio de archivos es idéntica, la portabilidad a otra
distribución dependería de la estructura que manejen y la disposición de sus archivos
de configuración.
52
Capitulo 3. Análisis y diseño del sistema.
3.5 Descripción de los procesos.
Una técnica muy útil para determinar el diseño de un sistema es definir los procesos
principales que lo componen, haciendo uso de técnicas para el modelado, en la tabla
3.5 se presentan los casos de uso considerados como esenciales.
La funcionalidad nos servirá para dividir el sistema en elementos importantes, las
piezas deben mantener un equilibrio entre la colaboración con las demás y una
independencia de su funcionamiento.
Se recurre en este punto a bosquejar los elementos que interactúan, con el objetivo de
establecer la relación de comunicación o dependencia entre ellos. Los siguientes
casos de uso describen de manera abstracta para el sistema los participantes y las
acciones que realizan.
REFERENCIA
R1.1
R1.2
R1.3
R1.4
R1.5
R1.6
R1.7
R1.8
R1.9
R1.10
FUNCIÓN
El sistema realiza un análisis de la integridad de
archivos para un equipo
El sistema realiza una prueba de disponibilidad
del equipo en la red LAN
El sistema permite diseñar un archivo de políticas
para el análisis del equipo
El sistema utiliza un módulo para realizar la
conexión segura entre el cliente y el servidor de
monitoreo
El sistema implementa un módulo para garantizar
la autenticación del cliente frente al servidor de
monitoreo
El sistema implementa un módulo para realizar el
análisis de integridad de los archivos del sistema
del cliente
El sistema implementa un módulo de búsqueda
de modificaciones del análisis del cliente
El sistema contiene un módulo para actualizar el
estado del sistema y los cambios generados en la
base de datos.
El sistema contiene una interfaz de despliegue de
resultados para el administrador
El sistema contiene un módulo de edición y
actualización del estado del equipo
CATEGORIA
Evidente
Oculto
Evidente
Oculta
Oculta
Oculta
Oculta
Oculto
Evidente
Evidente
Tabla 3.5. Procesos principales del IDS propuesto.
CASO DE USO
Tipo
Descripción
Crear perfil del cliente
Primario
El administrador abre la aplicación y diseña políticas
para el análisis del sistema cliente
El sistema registra los parámetros
El sistema almacena los perfiles de usuario y deja
listo para el análisis
Tabla 3.6. Crear perfil del cliente.
53
Capitulo 3. Análisis y diseño del sistema.
CASO DE USO
Tipo
Descripción
Instalar perfil de cliente
Primario
El administrador mueve el archivo perfil de usuario al
directorio correspondiente
El sistema abre el archivo y lee los parámetros
El sistema ejecuta un análisis para generar la
arquitectura de almacenamiento del cliente
Tabla 3.7. Instalar perfil del cliente.
CASO DE USO
Tipo
Descripción
Programación de ejecución
Primario
El administrador programa el intervalo de tiempo en
que se ejecutaran los análisis del sistema
El sistema almacena los cambios de los periodos de
ejecución y deja listo para efectuarlos
Tabla 3.8. Programación de ejecución.
CASO DE USO
Tipo
Descripción
Establecer método de autenticación
Primario
El administrador determina el método de
autenticación del sistema cliente
El sistema almacena los elementos necesarios para la
autenticación y deja listo para efectuarlos
Tabla 3.9. Establecer método de autenticación.
CASO DE USO
Tipo
Descripción
Establecer método de conexión
Primario
El cliente solicita una conexión al servidor
El servidor solicita autenticación
El cliente se autentica de manera correcta
El servidor establece un canal de comunicación
segura
Tabla 3.10. Establecer método de conexión.
CASO DE USO
Tipo
Descripción
Establecer estructura de análisis
Primario
Se debe establecer el procedimiento para efectuar el
almacenamiento de el análisis del sistema cliente
El sistema servidor almacena la información del
análisis realizado al cliente
Tabla 3.11. Establecer estructura de análisis.
CASO DE USO
Tipo
Descripción
Establecer métodos de análisis de integridad
Primario
El cliente aplica técnicas compendio a la estructura de
sus archivos
El servidor busca diferencias entre su base fiable y el
análisis realizado al cliente
Tabla 3.12. Establecer métodos de análisis de integridad.
54
Capitulo 3. Análisis y diseño del sistema.
CASO DE USO
Tipo
Descripción
Establecer métodos de impresión de los reportes de
análisis
Primario
El usuario solicita al servidor el informe de estado de
un cliente
El servidor consulta la base de datos y muestra los
resultados
El usuario solicita la generación de un archivo en
formato de impresión
El servidor genera el archivo en formato electrónico.
Tabla 3.13. Establecer métodos de impresión de reportes de análisis.
CASO DE USO
Tipo
Descripción
Mostrar estado del cliente
Primario
El administrador solicita el estado de un cliente
El servidor despliega el estado del cliente
El administrador realiza las consultas de elementos
detallados correspondientes.
El servidor muestra los informes detallados de los
elementos detectados como intrusos
Tabla 3.14. Mostar estado del cliente.
3.6 Modelo funcional.
El resultado de este análisis de procedimientos y comunicaciones, produce un
esquema del sistema en su nivel más alto, en el cual se pueden distinguir los
elementos de software implicados sin especificar su relación.
Figura 3.2. Modelo funcional.
La figura 3.2 muestra los subsistemas que permiten el funcionamiento de la aplicación
de monitoreo, almacenamiento, comparación y generación de reportes.
A.
B.
C.
D.
E.
F.
G.
H.
Conexión segura
Análisis de sistema
Búsqueda de cambios
Base de datos modificaciones
Impresión de informes
Generación de perfil de usuario
Actualización de cambios
Sistema de respaldos
55
Capitulo 3. Análisis y diseño del sistema.
Las relaciones entre ellos permiten agruparlos en tres bloques que funcionalmente son
enlazados. Para incrementar el nivel de especificación de cada módulo, será
importante considerar la figura 3.3, un diagrama que representa la funcionalidad
definida en cuatro grandes bloques: el establecimiento de una conexión segura, el
análisis de integridad del equipo cliente, un sistema motor de búsquedas de cambios y
un generador de informes y reportes impresos.
Figura 3.3. Diagrama de estados
A continuación se describen los subsistemas basándose en los casos de uso y la
relación de comunicación y dependencia funcional, utilizando como base los casos de
uso y los diagramas de estado.
A) Conexión segura.
Objetivo: Permitir la comunicación del sistema cliente y el servidor de monitoreo. La
tabla 3.15 describe las acciones y respuestas del sistema para establecer la conexión.
Acción
1. Este caso comienza cuando el servidor
de monitoreo desea realizar una
ejecución de análisis
3. El servidor de monitoreo solicita una
conexión de datos segura
5. El servidor de monitoreo puede
ejecutar las siguientes acciones:
• Análisis de sistema
• Respaldo de cliente
• Ejecución de comandos
• Cambio de configuración del
cliente
Respuesta del sistema
2.El sistema realiza una prueba de
disponibilidad del equipo en la red LAN
4. El sistema implementa un módulo para
garantizar la autenticación del cliente
frente al servidor de monitoreo
El sistema utiliza un módulo para realizar
la conexión segura entre el cliente y el
servidor de monitoreo.
6. El sistema ejecuta las acciones
seleccionada en el cliente y cierra el
canal de comunicación al finalizar
Tabla 3.15. Descripción de Conexión segura.
56
Capitulo 3. Análisis y diseño del sistema.
LLAVE VALIDA
USUARIO AUTORIZADO
ENVIAR
PETICIÓN DE
CONEXION
ESTABLECER
CONEXIÓN
AUTENTICAR
CLIENTE
[CORRECTA]
CONECTAR
CANAL SEGURO
CAMBIAR
CONFIGURACIÓN
ENVIAR
ARCHIVOS
EJECUTAR
COMANDO
REMOTO
RECIBIR
ARCHIVOS
DESCONECTAR
CANAL SEGURO
CERRAR
CONEXIÓN
Figura 3.4. Gráfico de Estados de Conexión Segura.
SERVIDOR
AUDITORIA
CLIENTE
ENVIAR
PETICIÓN
ACEPTAR
PETICIÓN
ENVIAR
AUTENTICACIÓN
VALIDAR
AUTENTICACIÓN
SISTEMA DE
RESPALDOS
[CORRECTO]
SOLICITAR
CANAL SEGURO
BUSCAR
ARCHIVO
POLITICA
ANALISIS DE
SISTEMA
ABRIR
CANAL SEGURO
DESCRITO EN
"ANALISIS DEL
SISTEMA"
EJECUTAR
ANALISIS
SOLICITAR
CERRAR
CANAL
CERRAR
CANAL
EJECUTAR
RESPALDO
DESCRITO EN
"ANALISIS DEL
SISTEMA"
RECIBIR
NOTIFICACIÓN
CANAL
CERRADO
Figura 3.5. Diagrama de actividades del sistema Conexión Segura.
57
Capitulo 3. Análisis y diseño del sistema.
La Figura 3.4 muestra el grafico de estados del proceso comunicación segura, la
Figura 3.5 describe el diagrama de actividades y las entidades involucradas en el
proceso. Esta parte del sistema no será generada, se deberá hacer uso de elementos
que brinden la seguridad de una comunicación de tipo cliente- servidor con los
principios de autentificación, integridad y confidencialidad de los datos transmitidos
(ver Tabla 3.9). Los procedimientos de conexión entre ambas entidades deberán
realizarse de manera automatizada y garantizar un canal de comunicación seguro (ver
Tabla 3.10).
B) Análisis de sistema cliente.
Objetivo: El sistema realiza el análisis de integridad de los archivos del sistema del
cliente y lo almacena en el servidor (ver Tabla 3.17).
Acción
1. Este caso comienza cuando el servidor
inicia un análisis del cliente
2. El servidor de monitoreo solicita
analizar un directorio de acuerdo al
archivo de políticas del cliente.
6. El servidor almacena los datos
recibidos en la estructura del cliente.
Respuesta del sistema
3. El cliente analiza con una herramienta
de búsqueda los directorios requeridos
por el servidor.
7. El análisis termina cuando se ha
obtenido el último directorio especificado
en la política de seguridad del cliente.
8. El servidor cierra el archivo de políticas
del cliente.
4. El cliente aplica técnicas compendio a
la estructura de sus archivos.
5.-El cliente envía la información
recolectada al servidor.
Tabla 3.17. Descripción análisis del cliente.
Este punto del sistema representa el sensor del IDS, por lo tanto, se encargara de
iniciar su labor cuando el servidor lo indique, todos los parámetros de análisis le serán
enviados de manera secuencial, realiza los análisis sobre los directorios del cliente y
entrega la información obtenida al servidor (ver Figura 3.6).La herramienta de
búsqueda no se programara, se considera implementar métodos propios del sistema
operativo.
CONSULTAR
PERFIL DE
USUARIO
REALIZAR
ANÁLISIS
TRANSFERIR
INFORMACIÓN
DEL CLIENTE
A SERVIDOR
i
ALMACENAR
INFORMACIÓN
EN SERVIDOR
CERRAR
PERFIL DE
USUARIO
Figura 3.6. Gráfico de Estados de Análisis de sistema.
58
Capitulo 3. Análisis y diseño del sistema.
El proceso inicia cuando el servidor abre el archivo de políticas del cliente, lee de
manera secuencial las órdenes de análisis que deberá ejecutar el sensor y espera la
respuesta de este, almacenando la información en un archivo temporal. La
confirmación del estado correcto del sensor se realiza transfiriendo las aplicaciones
que realizaran la operación al servidor y comprobando su integridad (ver Figura 3.7).
SERVIDOR MONITOREO
CLIENTE
BUSCAR
DIRECTORIO
DEL CLIENTE
OBTENIDO DE
"GENERACION DE
PERFIL DE
USUARIO"
BUSCAR
ARCHIVO DE
POLITICAS
SOLICITAR
ARCHIVOS
DE INTEGRIDAD
ENVIAR
ARCHIVOS DE
INTEGRIDAD
COPIAR
ARCHIVOS
VALIDAR
INTEGRIDAD
BUSCAR
ARCHIVO
POLITICA
[CORRECTOS]
ESCRIBIR
RIESGO
EN REPORTE
GUARDAR EN
EL DIRECTORIO
DEL CLIENTE
ANALIZAR
ESTRUCTURA
DE DIRECTORIO
GENERAR
FUNCIÓN
COMPENDIO DE
LOS ARCHIVOS
ENVIAR
ESTRUCTURA
Y COMPENDIOS
DE ARCHIVOS
CERRAR
ARCHIVO DE
POLITICAS
Figura 3.7. Diagrama de actividades del sistema Análisis.
59
Capitulo 3. Análisis y diseño del sistema.
C) Búsqueda de cambios.
Objetivo: El sistema implementa un módulo de búsqueda de modificaciones del
análisis del cliente, el cual busca diferencias entre su base fiable y el análisis realizado
al cliente. La Tabla 3.18 describe la acción que se realiza y la respuesta obtenida del
sistema para este proceso.
Acción
1. Este caso se inicia de manera
inmediata cuando se termino el análisis
de directorio del cliente.
3. El servidor de monitoreo abre el
directorio que obtuvo del análisis
6.El servidor de almacena el archivo de
reporte obtenido en el directorio del
cliente
Respuesta del sistema
2.El sistema realiza una búsqueda de la
estructura del directorio del cliente en el
servidor
4. El sistema
compara directamente
archivo del servidor de monitoreo y del
cliente en busca de modificaciones
5. Las diferencias encontradas entre los
archivos son enviadas a un archivo de
reporte.
El grado de riesgo que esta modificación
representa debe estar categorizado en
distintos niveles (ver Tabla 3.1).
7. El caso termina cuando el sistema
cierra el directorio del cliente y deja listo
para actualizar el estado del cliente
Tabla 3.18. Descripción de búsqueda de cambios.
Este proceso se realiza tomando como elemento el proceso anterior, en el cual el
sensor entrega un reporte al servidor. El servidor localiza el directorio del cliente y
extrae el contenido de los directorios correspondientes a la base fiable, compara estos
elementos con los entregados por el sensor y genera un reporte de incidencias,
describiendo los elementos que difieren, sus parámetros de configuración de archivo
(ver Tabla 3.3) y su comprobación de integridad (ver Tabla 3.4). La Figura 3.8 describe
los estados de este procedimiento.
BUSCAR
DIRECTORIO
CLIENTE
BUSCAR
DIRECTORIO
ANÁLISIS
ANALIZAR
DIRECTORIO
CLIENTE-ANÁLISIS
ACTUALIZAR
REPORTES
CLIENTE
Figura 3.8. Gráfico de estados de Búsqueda de cambios.
60
Capitulo 3. Análisis y diseño del sistema.
La Figura 3.9 detalla las actividades que se realizan durante la búsqueda de cambios,
los involucrados durante este proceso son el servidor y el motor de base de datos. El
servidor realiza el procedimiento de comparación de los archivos y la generación de
reporte de elementos, mientras que la base de datos se encargara de registrar la fecha
de análisis y el resumen de los elementos entregados por el reporte del servidor. Si
existen modificaciones a la estructura, estas serán reportadas y se adoptara la nueva
base de datos como elemento fiable (política permisiva), el anterior esquema de
referencia será desplazado y renombrado con la fecha del análisis. En este punto, el
servidor puede enviar las alarmas correspondientes en base al reporte emitido.
Figura 3.9. Diagrama de actividades del sistema Análisis.
61
Capitulo 3. Análisis y diseño del sistema.
D) Base de datos modificaciones
Objetivo: El sistema contiene un módulo para actualizar el estado del sistema
considerando los elementos encontrados en el reporte del análisis, posteriormente,
actualiza los elementos generados en la base de datos. La Tabla 3.19 describe las
acciones que se realizan en este proceso y la respuesta del sistema.
Acción
1. Se inicia cuando se ha terminado la
búsqueda de cambios. El sistema de
monitoreo abre el archivo de reporte de
diferencias.
3. El servidor de monitoreo establece la
conexión con el servidor web
4. El servidor web establece la conexión
con la base de datos
6. El servidor de auditoría actualiza el
archivo de reporte.
Respuesta del sistema
2.El sistema obtiene todos los elementos
modificados y el riego que representan
4. El sistema
compara directamente
archivo del servidor de monitoreo y del
cliente en busca de modificaciones
5. El sistema de base de daros almacena
los cambios en el cliente correspondiente
El sistema calcula el nivel de riesgo del
cliente y actualiza la fecha de análisis del
equipo.
Se cierra la conexión con la base de
datos.
7. El sistema determina el estado
dependiendo del número de elementos
afectados y el riesgo de cada uno de
acuerdo a la política previamente
diseñada
Tabla 3.19. Descripción de base de datos de modificaciones.
Este proceso involucra la lectura detallada del reporte almacenado en el directorio del
cliente, permite determinar la naturaleza de los elementos identificados y la inclusión
de estos dentro de la base de datos de modificaciones (ver Figura 3.10).
BUSCAR
DIRECTORIO
DEL CLIENTE
ANALIZAR
REPORTE
MODIFICAR
ARCHIVOS
GUARDAR
CAMBIOS
ACTUALIZAR
ESTADO
DEL CLIENTE
ADMINISTRADOR
Figura 3.10. Gráfico de estados de Base de datos modificaciones.
62
Capitulo 3. Análisis y diseño del sistema.
Las actividades detectadas sobre el sistema de archivos se restringen en la
agregación, eliminación y modificación de alguno de los parámetros de los archivos.
Dependiente del número de elementos y el riesgo que representan para la seguridad
se determinara la fiabilidad del sistema (ver Figura 3.11).
El estado del sistema será definido en base al riesgo que pudieran presentar las
intrusiones detectadas. Considerando los siguientes niveles:
•
•
•
•
Fiable- Se han detectado elementos de nivel de riesgo bajo.
Fiabilidad media. Se han detectado elementos de nivel de riesgo medio y de
nivel de riesgo bajo.
Fiabilidad baja. Se han detectado elementos de nivel de riesgo medio y de
riesgo bajo, el número total de estos elementos es considerable y requiere
atención.
No fiable. Se ha detectado un elemento de riesgo alto.
Figura 3.11. Diagrama de actividades del sistema Base de datos modificaciones.
63
Capitulo 3. Análisis y diseño del sistema.
E) Impresión de informes.
Objetivo: Diseñar una interfaz de usuario que permita el despliegue de resultados del
análisis para el administrador y generar un reporte del cliente en formato impreso. La
Tabla 3.20 describe las acciones y las respuestas del sistema durante este proceso.
Acción
1. Este caso comienza cuando el
administrador solicita un reporte de
estado del cliente
5. El administrador solicita un informe
impreso
4. El servidor de monitoreo cierra el
archivo de políticas del cliente
Respuesta del sistema
2. El sistema busca la información del
directorio del clientes
3. El sistema conecta el servidor web y la
base de datos, consulta los datos del
cliente.
El sistema entrega los datos utilizando la
interfaz grafica de usuario.
El servidor web genera el archivo en
formato electrónico portable (pdf) y lo
almacena en la estructura de directorio
del cliente.
7. Termina cuando se ha finalizado la
creación del reporte
Tabla 3.20. Descripción de impresión de informes.
La generación de reportes consiste en la presentación de los datos de los análisis en
un formato fácil de entender, organizado de manera tal que presente un elemento de
consulta y respuesta. La aplicación debe ejecutarse directamente sobre un navegador
web y utilizando las prestaciones de la base de datos, constituye la interfaz grafica de
usuario donde los reportes desplegados por pantalla serán trasladados a un
documento electrónico para su posterior impresión (ver Figura 3.12).
Figura 3.12. Gráfico de Estados de Impresión de Informes.
64
Capitulo 3. Análisis y diseño del sistema.
Los elementos involucrados en este proceso son varios, el gestor de base de datos
solo será configurado para que se puedan extraer los valores seleccionados por el
administrador. La plataforma de consulta esta basada en un servidor de páginas web y
el administrador debe interactuar con este elemento por medio de un navegador. La
Figura 3.13 detalla las actividades del sistema de generación de informes.
Se diseñan solo las consultas que permitan la representación de la información en
lenguaje html. La impresión de los informes se puede realizar directamente desde el
navegador o la generación de un documento electrónicamente portable.
ADMINISTRADOR
SERVIDOR WEB
BASE DE DATOS
SERVIDOR
MONITOREO
INICIA
NAVEGADOR
INICIA
APLICACIÓN
REPORTES
[DISPONIBLE]
ENVÍA
FORMULARIO
SELECCIONA
CLIENTE
SOLICITA
INFORMACIÓN
DEL CLIENTE
BUSCA
REGISTRO
CLIENTE
DESPLIEGA
INFORMACIÓN
NO DISPONIBLE
[EXISTE]
DESPLIEGA
INFORMACIÓN
DEL CLIENTE
SELECCIONA
FORMATO
IMPRESO
ENVÍA
INFORMACIÓN
DEL CLIENTE
CREA
ARCHIVO
IMPRESO
ALMACENA
REPORTE
IMPRESO
ACTUALIZA
DIRECTORIO
DEL CLIENTE
Figura 3.13. Diagrama de actividades del sistema Impresión de Informes.
65
Capitulo 3. Análisis y diseño del sistema.
F) Generación de perfil de usuario.
Objetivo: Diseñar un archivo de políticas para el análisis del sistema cliente, en base a
las aplicaciones y los requerimientos o servicios del sistema. Programar el intervalo de
análisis y la opción del sistema de respaldos. La Tabla 3.21 describe las acciones
correspondientes a este proceso y las respuestas del sistema.
Acción
1. Este caso comienza cuando el
administrador solicita el análisis de un
equipo, el cual no cuenta con un archivo
de políticas de seguridad dentro del
sistema de monitoreo
El administrador abre la aplicación en una
terminal de comandos
3. El administrador diseña políticas para
el análisis del sistema cliente.
Seleccionando aspectos como:
Ip del equipo cliente
Directorios supervisados
Nivel de riesgo de los directorios
Supervisión de programas instalados
Estructura de directorios de monitoreo
Sistema de respaldo de directorios
4. El administrador mueve el archivo
perfil de usuario al directorio
correspondiente a las políticas del
servidor de monitoreo. Programa los
intervalos de ejecución del análisis.
Respuesta del sistema
2. El sistema presenta una interfaz de
tipo comando y abre un archivo
predefinido de políticas
4 .El sistema almacena los perfiles de
usuario y deja listo para el análisis
7. El sistema abre el archivo y lee los
parámetros
El sistema ejecuta un análisis para
generar
la
arquitectura
de
almacenamiento del cliente.
Termina cuando se ha finalizado la
creación del reporte.
Tabla 3.21. Descripción de generación de perfil de usuario.
El diseño de políticas requiere conocimiento del entorno y múltiples aspectos de
seguridad, para facilitar el trabajo de diseño se cuenta con un archivo previamente
definido en el cual solo deberán activarse las líneas correspondientes a los
requerimientos. La Figura 3.14 muestra los estados de generación de perfil de usuario.
Figura 3.14.Gráfico de Estados de Generación de perfil de usuarios
66
Capitulo 3. Análisis y diseño del sistema.
La Figura 3.15 muestra los elementos involucrados en este proceso y su interrelación,
cabe destacar que en este punto se deben definir los parámetros que sirvan de base
de conocimiento. Este archivo de políticas será ejecutado por el sensor del IDS en el
equipo cliente, la información entregada por este servirá para construir el árbol de
directorios en el servidor. El archivo de políticas de usuario deberá contener
parámetros de configuración básicos como:
•
•
•
•
•
Dirección IP del cliente
Ruta donde se creara la estructura de directorios
Reglas de análisis de directorios del cliente (Ordenadas de acuerdo al riesgo
ver Tabla 3.9)
Reglas de utilitarios
Líneas de actualización de reportes y base de datos
Los posteriores análisis serán utilizando la misma política generada para el cliente y
podrán agregarse o suprimirse funcionalidades.
Figura 3.15. Diagrama de actividades del sistema Impresión de Informes.
67
Capitulo 3. Análisis y diseño del sistema.
G) Administración y actualización de cambios.
Objetivo: Implementar un módulo de edición y actualización del estado del sistema
cliente. Actualizar las base de datos analizando la información del estado del cliente.
La Tabla 3.22 describe las acciones y respuestas del sistema durante este proceso.
Acción
1. Este caso de uso inicia cuando el
administrador solicita editar el estado de
un cliente. Abre la aplicación web y
solicita la acción de actualización de
estado del cliente.
3. El administrador realiza los cambios
De conformidad a la lectura de el tipo de
archivo y su riesgo.
Determina permitir o negar la
modificación detectada
5. El sistema termina cerrando la interfaz
de actualización.
Respuesta del sistema
2. El servidor presenta una interfaz de
tipo WEB, consistente en un formulario.
4 .El sistema almacena los perfiles de
usuario. Actualiza la base de datos y el
directorio del cliente. Determina el nuevo
estado del cliente y deja listo para el
reporte.
Tabla 3.22. Descripción de administración y actualización de cambios.
Existen dos métodos para modificar el estado de un cliente:
El primero consiste en la actualización automática debido a la detección de intrusos en
el cliente, el archivo de reporte es procesado y actualiza la base de datos, la cual
genera un nuevo perfil de consideración a los elementos registrados.
El segundo consiste en la modificación por parte del administrador, esta interfaz
permite el manejo directo de la información, no será desarrollada en este proyecto, por
lo que se emplea un manejador de base de datos que permita la gestión de este
elemento utilizando una interfaz web. Este procedimiento debe realizarse después de
un análisis de los elementos detectados y la restauración del sistema cliente. La Figura
3.16 muestra los estados de la administración y actualización de cambios de un
cliente.
ABRIR
ARCHIVO
BUSCAR
ARCHIVO DE
REPORTE
ACTUALIZAR
REPORTES EN
BASE DE DATOS
EDITAR
ESTADO
CLIENTE
[SIN MODIFICACIONES]
ALMACENAR
CAMBIOS DEL
CLIENTE
Figura 3.16. Gráfico de Estados de Administración y actualización de cambios.
68
Capitulo 3. Análisis y diseño del sistema.
La Figura 3.17 detalla las actividades que se realizan durante la actualización de
cambios. Es importante resaltar que la restauración del sistema consiste en resolver
los problemas de seguridad detectados y la posterior búsqueda de los elementos
dentro de la base de datos para su eliminación.
La base de datos deberá ser restaurada hasta antes de la intrusión, proceso que
conlleva eliminar el archivo actual de referencia y renombrar el archivo referencia
fiable anterior (almacenada en la misma carpeta y renombrada con la fecha del
análisis).
ADMINISTRADOR
SERVIDOR WEB
SOLICITA
ACTUALIZAR
CLIENTE
ACEPTA
PETICIÓN
SELECCIONA
CLIENTE
ENVÍA
FORMULARIO
[OTRO CLIENTE]
SOLICITA
INFORMACIÓN
DEL CLIENTE
BASE DE DATOS
SERVIDOR
MONITOREO
BUSCA
INFORME
DE CAMBIOS
DESPLIEGA
INFORMACIÓN
NO DISPONIBLE
[EXISTE]
DESPLIEGA
INFORMACIÓN
DEL CLIENTE
ENVÍA
INFORMACIÓN
DEL CLIENTE
ENVÍA
ACTUALIZACIÓN
DE CAMBIOS
ACTUALIZA
REGISTRO
DEL CLIENTE
SELECCIONA
CAMBIOS
PERMITIDOS
ACTUALIZA
DIRECTORIO
DEL CLIENTE
Figura 3.17. Diagrama de actividades del sistema administración y actualización de cambios.
69
Capitulo 3. Análisis y diseño del sistema.
H) Sistema de respaldos
Objetivo: El sistema de monitoreo permite realizar respaldos de el sistema cliente,
almacena directorios en el servidor. Este elemento no es un elemento de monitoreo
estrictamente, pero permite la recuperación de información imprescindible para el
cliente. La Tabla 3.23 describe las acciones y respuestas durante este proceso.
Acción
1. Este caso de uso inicia cuando el
administrador solicita crear respaldos del
cliente. Inicia después de un análisis y
debe estar especificada en el archivo de
políticas.
3. El servidor de monitoreo almacena el
archivo de respaldo en la estructura del
directorio del cliente y le asigna la fecha
de creación.
Respuesta del sistema
2. El servidor recibe estructura de
directorios
definidos
para
ser
respaldados.
Aplica un método de compresión y
agrupa la estructura en un archivo único.
Envía el archivo de respaldo al servidor
de monitoreo
4. El sistema termina cuando el archivo
de respaldo ha sido almacenado
Tabla 3.23. Descripción del sistema de respaldos.
Este elemento forma parte de los utilitarios que puede implementar el sistema, la
Figura 3.18 muestra los estados del sistema de respaldos. Este procedimiento fue
considerado en esta etapa por ser un elemento muy importante dentro del aspecto de
seguridad [12]. El almacenamiento de copias de respaldo en un medio seguro puede
permitir la recuperación de información sensible después de haber sufrido algún
ataque o pérdida por errores o fallas de hardware.
Figura 3.18. Gráfico de Estados del sistema Respaldos.
La Figura 3.19 detalla las actividades del sistema de respaldos, el sistema debe de
comprimir la información para optimizar el uso de los recursos en el servidor y
disminuir el tiempo de transferencia entre equipos. La política de almacenamiento
deberá diseñarse sobre elementos de información sensibles o de alta importancia
(archivos de configuración). Solo se deben especificar las reglas dentro del archivo de
políticas y el IDS deberá emplear las aplicaciones del sistema operativo para
ejecutarlas.
El sistema de respaldos no es el único utilitario que se puede implementar, se pueden
realizar extracción de archivos de configuraciones, análisis de paquetes instalados y la
obtención del nombre del host cliente para realizar autenticación de servicios de red.
70
Capitulo 3. Análisis y diseño del sistema.
SERVIDOR
AUDITORIA
CLIENTE
BUSCAR AUDITORIA
DE RESPALDO
BASE DE
DATOS
EC
TO
R
IO
]
BUSCAR ESTRUCTURA
DE DIRECTORIO
[O
TR
O
D
IR
COMPRIMIR DIRECTORIO
ALMACENAR ARCHIVO
DIRECTORIO CLIENTE
ENVIAR ARCHIVO
DE RESPALDO
ACTUALIZAR FECHA
RESPALDO
ACTUALIZAR REGISTRO
DEL CLIENTE
CERRAR ARCHIVO
DE POLITICAS
Figura 3.19. Diagrama de actividades del sistema Respaldos.
La descripción de casos de uso permite determinar el grado de interacción existente
entre el sistema y los usuarios, el concepto de la herramienta es utilizar la
potencialidad del procesamiento electrónico de datos. Por lo tanto, solo las
operaciones de configuración y adecuación del sistema son realizadas por el
administrador del sistema, todos los demás casos son aplicados de manera
independiente por el sistema.
Figura 3.20. Casos de uso del IDS.
El planteamiento anterior sirve como base para el modelado de los subsistemas, los
casos antes mencionados describen el método de acción de cada bloque funcional y
su relación. Las restricciones propias de cada elemento serán descritas en la
implementación.
71
Capitulo 3. Análisis y diseño del sistema.
CLIENTE
SENSOR
SERVIDOR
CONTROL CENTRALIZADO
CANAL DE
COMUNICACIÓN
SEGURO
DATOS
1
2
DETECCION DE
MODIFICACIONES
3
4
BITACORA
ALERTA
6
5
7
REPORTE
8
10
REPORTE
WEB
RESPONSABLE
DE SEGURIDAD
9
DATOS DE
FORENCIA
BASE DE
DATOS
Figura 3.21. Arquitectura de la metodología propuesta.
72
Capitulo 4. Implementación del sistema.
CAPÍTULO 4. IMPLEMENTACIÓN DEL SISTEMA.
En este capítulo se describe la estructura del directorio de
aplicaciones, la generación de la base de datos, los esquemas
de seguridad utilizados y las especificaciones de los servidores
utilizados.
4.1 Estructura de la aplicación.
A partir del nombre de la investigación, se determinó asignar a la herramienta el
nombre de DAYUSOL y en lo consiguiente se referirá a esta cuando se hable de la
aplicación de la metodología del IDS propuesto.
En el desarrollo de DAYUSOL, se implementaron varias herramientas como la
conexión segura entre equipos, el servidor de páginas WEB, la base de datos y una
interfaz grafica web, por mencionar algunos.
El sistema puede ser implementado en diferentes ambientes, de hecho, solo es
necesario cubrir los aspectos fundamentales del diseño para conseguir que la
herramienta funcione.
Cabe destacar que el motor de búsqueda, la actualización de los registros de base de
datos fiable y la administración del directorio de aplicaciones, constituyen la esencia de
la herramienta planteada en el capitulo anterior, el sistema de respaldos y de la
generación de reportes son módulos clasificados como utilitarios, ya que no son
indispensables para la detección de intrusiones, pero facilitan la presentación de los
datos recabados y proporcionan elementos para la restauración del sistema.
Basándose en los tres elementos fundamentales, la construcción del entorno del
trabajo no ha sido programada completamente, se hace uso de aplicaciones propias
del sistema operativo que se encuentran en paquetes disponibles para la distribución
Debian.
Se implementa un modelo de IDS de host, utiliza un método de detección de
intrusiones basado en una estructura de directorio fiable y una base de datos para
realizar el análisis. Su patrón de referencia es la integridad de los archivos del sistema,
es asíncrono dependiente de los intervalos de tiempo en que se programan los
análisis, el sistema de tiene una estructura centralizada, además, de la capacidad del
sistema para analizar varios clientes al mismo tiempo.
Se tienen tres sistemas dedicados a tareas específicas, el primero de ellos se ha sido
nombrado sistema de integridad, contempla aspectos como la seguridad de los datos,
la fiabilidad de la comunicación entre el cliente y el servidor y la integridad de los
archivos.
El segundo es denominado sistema de reporte de integridad y estadísticas, permite al
administrador obtener la información de un cliente de DAYUSOL y basa su
funcionamiento en el subsistema anterior, proporciona los resultados de los análisis
realizados, de forma tal que se notifican las posibles intrusiones y los riesgos que
estas representan. Se utiliza un navegador web en este subsistema, debido
principalmente, a la flexibilidad que representa el generar contenido independiente de
la plataforma donde será desplegado.
73
Capitulo 4. Implementación del sistema.
Por último, el sistema de respaldo, permite hacer copias de los archivos del cliente en
el servidor de monitoreo, este utilitario no es considerado fundamental debido a las
limitaciones de almacenamiento, pero bien delimitado, será una herramienta muy
importante considerando el costo que representa la pérdida de información.
4.2 Sistema de detección de intrusos DAYUSOL.
Esta parte constituye la pieza fundamental del IDS, su implementación se basa en
algunos bloques funcionales definidos en el capítulo anterior, los cuales
interconectados permiten realizar análisis automatizados. Los bloques funcionales
utilizados para el funcionamiento de este sistema son:
•
•
•
•
•
•
Conexión segura
Análisis de sistema (sensor)
Detección de modificaciones
Base de datos
Generación de perfil de usuario
Administración y actualización de cambios
CLIENTE
SENSOR
SERVIDOR
CONTROL CENTRALIZADO
CANAL DE
COMUNICACIÓN
SEGURO
DATOS
1
2
DETECCION DE
MODIFICACIONES
3
4
BITACORA
ALERTA
6
5
7
REPORTE
8
10
REPORTE
WEB
RESPONSABLE
DE SEGURIDAD
9
DATOS DE
FORENCIA
BASE DE
DATOS
Figura 4.1. Arquitectura de DAYUSOL.
La Figura 4.1 describe la arquitectura de DAYUSOL, la intervención del administrador
se hace necesaria en algunas partes del sistema, principalmente en las que se refieren
a tareas de decisión sobre los aspectos de configuración y actualización. Transfiriendo
al responsable del uso de la herramienta la capacidad de definir el desempeño del
esquema de seguridad, haciendo recaer al mismo tiempo la responsabilidad que
implica identificar los elementos relevantes de la seguridad de cada equipo y la
privacidad de los datos manejados en el servidor.
74
Capitulo 4. Implementación del sistema.
4.2.1. Entorno de red.
Se requiere implementar un entorno de red donde se cumpla con las especificaciones
IEEE 802.3 y la especificación IEEE 802.11. La implementación de DAYUSOL se
realizó en el laboratorio de Redes, utilizando la infraestructura propia del edificio del
Centro de Investigación en Computación del IPN con las características mostradas en
la Tabla 4.1.
Recurso
Implementación
Tipo de red
Tecnología
Especificación
Red de área local LAN
LAN Ethernet
LAN inalámbrica
1000Base-T
Medio de comunicación
UTP categoría 5
Topología
Estrella
Clase de red
Protocolos
Puertos
Clase C
TCP/IP
Servidor (IDS)
Clientes
Características
Especificación IEE 802
IEEE 802.3
IEEE 802.11
Norma de cableado
EIA/TIA-568-B
EIA/TIA 569
Máximo 254 host
23 SSH, 80 HTTP,
23 SSH
Tabla 4.1. Especificaciones del entorno de red de DAYUSOL.
Figura 4.2. Diagrama de entorno de red DAYUSOL.
La Figura 4.2 muestra el entorno donde se implemento DAYUSOL, la comunicación
con el cliente inalámbrico se realizo usando un punto de acceso de tecnología IEEE
802.11.
75
Capitulo 4. Implementación del sistema.
4.2.2. Canal de comunicación seguro.
El sistema tiene definida una comunicación entre un servidor de monitoreo y el cliente
de análisis, la infraestructura de una red LAN no garantiza un canal libre de ser
escuchado. Es decir, la comunicación entre los equipos de la red es en claro, por lo
que cualquier usuario podría escuchar la información que se envía por ella y en el peor
de los casos, obtener información de archivos que no le pertenecen [9].
Por esta razón, se establece un canal que permita la seguridad de la información, la
integridad de ésta y que no exista una suplantación. Para esto se requiere un canal
seguro entre ambas partes, un traslado de información cifrada y un método de
autenticación del Cliente y el Servidor.
Previendo facilidad en la configuración del sistema, se decidió hacer uso de un
esquema de seguridad eficiente y de fácil aplicación, el de Shell seguro (SSH). El
sistema operativo cuenta con las aplicaciones de OpenSSh cliente y OpenSSh
servidor; se encuentran en los repositorios de la distribución y deben ser instaladas
como un paquete adicional. Es requisito que los clientes permitan la ejecución de
comandos remotos por lo que se instala en ellos el OpenSsh Server y el servidor
DAYUSOL será el cliente de la conexión.
Para realizar la conexión entre entidades se utiliza el método de llave pública. La parte
pública de la llave será almacenada en los servidores-SSH, que en este caso serán los
elementos que se desean analizar, mientras que la parte privada de la llave debe
guardarse en un directorio seguro del sistema cliente-SSH, en nuestro caso es el
servidor de IDS. El tipo de llaves que se pueden generar son RSA y DSA, la llave RSA
utilizada es de 1024 bits de longitud.
El esquema será el siguiente: un servidor-SSH posee una lista de claves públicas,
cada una asociada a un usuario. Cuando uno de dichos usuarios trata de conectarse
al servidor-SSH, el servidor comprueba que efectivamente el cliente es quién dice ser
mediante un algoritmo de clave pública, de manera que sólo el cliente legítimo que
posea la correspondiente clave privada podrá autentificarse. La Tabla 4.2 resume los
recursos utilizados para la configuración del modulo que permite establecer el canal de
comunicación seguro.
Recurso
Implementación
Cliente de OpenSsh
Servidor de IDS
Servidores de OpenSsh
Clientes de análisis
Características
Llave privada
/root/.ssh/id_rsa
Llave pública
id_rsa.pub [DAYUSOL]
Llave privada
/root/.ssh/id_rsa
Host permitidos
known_hosts/id_rsa.pub
[DAYUSOL]
Tabla 4.2. Especificaciones del SSH implementado en DAYUSOL.
76
Capitulo 4. Implementación del sistema.
4.2.3 Análisis de sistema (sensor).
Teniendo el canal de comunicación establecido, se procede a la búsqueda y análisis
de los directorios dentro de la máquina del cliente. Los parámetros de análisis son
configurables y dependen del diseño de las políticas del cliente.
El elemento que opera como sensor es un ejecutable, el cual obtiene información del
cliente y utiliza el canal de comunicación para enviarla al elemento de control
centralizado. Para obtener la información de las características del sistema de archivos
el análisis del cliente se realiza en 2 partes:
•
Análisis de la estructura de directorios. Se analiza la estructura de los
directorios del cliente, verificando parámetros de propietario, usuario, grupo,
número de enlaces, entre otros. Los parámetros configurables serán explicados
en la sección 4.2.4.4. El árbol de directorios se analiza recursivamente con la
función propia del sistema operativo llamada find, para obtener todos los
nombres de los archivos y sus propiedades, los resultados son almacenados
en un archivo de texto plano. Al finalizar el cliente envía el archivo al servidor
DAYUSOL. Se implementa definiendo los parámetros de búsqueda de los
archivos ya sea en base a sus permisos, propietario, grupo, fecha de acceso,
entre otros.
Para el sensor de esta herramienta se plantea el esquema descrito en la tabla
4.3.
Elemento
Aplicación
Ruta del directorio de búsqueda
Criterio de búsqueda
Tipo de elemento
Información del elemento
Descripción
Find ( /usr/bin/find)
Ruta absoluta (/)
Permisos , usuarios, fechas de acceso
Archivos (f)
Permisos (%m)
Enlaces (%n)
Usuario
(%u)
Grupo
(%g)
Tamaño (%s)
Ruta
(%p)
Tabla 4.3. Especificaciones de estructura de archivos en DAYUSOL.
Un ejemplo de la instrucción quedaría de la siguiente manera:
/usr/bin/find / -perm +6111 -type f -printf "%m %n %u %g %s %p\n"
El criterio de búsqueda determinara los elementos que se almacenan y
analizan, los parámetros de búsqueda pueden variar y están especificados en
el manual de la aplicación find de Linux.
•
Análisis de integridad de archivos. Se obtiene una huella digital de los archivos
del cliente, aplicándoles un algoritmo de sumatoria o compendio. Para la
obtención de huella digital existen varios algoritmos de compendio, el que se
utiliza en DAYUSOL es el Md5 (Message-Digest Algorithm 5 o Algoritmo de
firma de mensajes 5). Es el algoritmo hash más usado, procesa mensajes de
una longitud arbitraria en bloques de 512 bits generando un compendio de 128
bits. Cualquier cambio en el archivo producirá una huella digital diferente.
77
Capitulo 4. Implementación del sistema.
Figura 4.3. Integridad de archivos utilizando funciones compendio.
Para la implementación de DAYUSOL se usan firmas digitales con algoritmo
MD5, utilizando un programa del sistema operativo llamado md5sum. El
procedimiento es poner como entrada el archivo y obtener una huella de 128
bits, la cual servirá de referencia de integridad (ver Figura 4.3), en un archivo
de texto plano se van almacenando el nombre del archivo, su ruta dentro del
árbol de directorios y su huella digital. Al finalizar el análisis se cierra el archivo
y se envía al servidor. La Tabla 4.4 detalla las especificaciones de compendios
para DAYUSOL.
Elemento
Aplicación
Ruta del directorio de búsqueda
Criterio de búsqueda
Tipo de elemento
Acción si se encuentra el elemento
Descripción
Find ( /usr/bin/find)
Ruta absoluta (/)
Permisos , usuarios, fechas de acceso
Archivos (f)
Generar archivo compendio (md5sum)
Tabla 4.4. Especificaciones de compendios en DAYUSOL.
Un ejemplo de la instrucción quedaría de la siguiente manera:
/usr/bin/find / -perm +6111 -type f -exec /usr/bin/md5sum {} \;
Existe también el SHA-1 (Secure Hash Algorithm 1 o Algoritmo de Hash
Seguro 1). El cual toma como entrada un mensaje de longitud máxima 264 bits
(más de dos mil millones de gigabytes) y produce como salida un compendio
de 160 bits. Se puede implementar cambiando la herramienta md5sum por
sha1sum o sus variantes de 256 y 512 bits.
Se deben enviar este par de elementos para la obtención de la estructura del sistema
de directorios y la obtención de la integridad de la información mediante un
compendio. La tabla 4.5 muestra el resumen de los sensores utilizados por DAYUSOL.
Recurso
Estructura de Directorio
Integridad de Archivos
Implementación
Características
Find
Se ejecuta en el cliente
/usr/bin/find
md5sum
Función Hash (compendio)
Se ejecuta en el cliente
/usr/bin/md5sum
SHA-1
Función Hash (compendio)
Se ejecuta en el cliente
/usr/bin/sha-1
Búsqueda de archivos y
sus propiedades dentro de
directorios
Huella digital de 128 bits
Uso de algoritmo MD5
Huella digital de 160 bits
Uso de algoritmo SHA-1
Tabla 4.5. Resumen de sensores de DAYUSOL.
78
Capitulo 4. Implementación del sistema.
4.2.4. Directorio de aplicaciones.
La información obtenida de los análisis de los clientes es almacenada en archivos de
texto plano, entre otros aspectos, debido al número de elementos que se obtienen de
cada análisis y la velocidad con la que se pueden hacer las comparaciones.
Para facilitar el almacenamiento se utiliza un esquema inherente a la construcción del
sistema operativo: jerarquía y clasificación de la información en base a su contenido.
Por lo cual se implementa una estructura de directorios, el nivel más alto de ésta será
el nombre del cliente de DAYUSOL. La Figura 4.4 muestra la estructura del directorio.
Dentro del directorio se tiene un elemento para revisar las herramientas de hash,
previendo la fiabilidad de la herramienta de análisis, este elemento se conoce como
LOCAL. Otro directorio al mismo nivel es el POLITICAS, donde se almacenan las
directivas de análisis aplicables al cliente, pueden diseñarse más de una política para
cada uno de los clientes, pero deberá tenerse cuidado de sólo implementar una,
debido a que esto cambiará la estructura del directorio.
La estructura de almacenamiento de los resultados del análisis del cliente está bajo el
directorio denominado REMOTO (B). El cual contiene al directorio ESTRUCTURA (C)
y al directorio COMPENDIOS (C). El esquema de directorio DAYUSOL divide el nivel
de riesgo asignado a consideración del administrador del sistema, se definieron los
niveles ALTO, MEDIO y BAJO (D). Los archivos que almacenan las características del
sistema de archivos del cliente y los compendios se almacenan en texto plano (E) (ver
Figura 4.5).
Los resultados del análisis de integridad de los clientes se almacenan dentro del
directorio REPORTES.
Los utilitarios del sistema dependen del administrador, las características
implementadas en este desarrollo es la identificación de paquetes instalados, pero se
puede extender hasta el uso de recursos, el control de usuarios, el traslado de
bitácoras para el análisis, por mencionar algunos. La Tabla 4.6 resume la estructura
del directorio de aplicaciones de DAYUSOL.
CLIENTE
POLITICAS
Cliente.pol
PAQUETES
REMOTO
compendios
REPORTES
estructuras
LOCAL
Md5sum
Libc.so.6
Ld-linux.so
Figura 4.4. Estructura del directorio de usuarios DAYUSOL.
79
Capitulo 4. Implementación del sistema.
Recurso
Implementación
Características
Almacenamiento de
Directorios
Directorio de Usuario
Directorio de aplicaciones
Directorio LOCAL
Directorio REMOTO
Directorio POLITICAS
Directorio REPORTE
Almacenamiento de
utilitarios
Directorio de utilitarios
Directorio PAQUETES
Directorio RESPALDOS
*Directorio BITACORAS
*Directorio RECURSOS
*Directorio CONFIGURACION
Tabla 4.6. Directorio de aplicaciones de DAYUSOL.
A
CLIENTE
B
REMOTO
C
ESTRUCTURA
COMPENDIO
D
RIESGO
ALTO
RIESGO
MEDIO
RIESGO
BAJO
RIESGO
ALTO
RIESGO
MEDIO
RIESGO
BAJO
E
Figura 4.5. Estructura detallada del directorio REMOTO.
4.2.4.1. Detección de modificaciones.
Las modificaciones de los archivos de trabajo son normales: se eliminan, agregan,
modifican entre otras cosas, pero los archivos de configuración, de servicios o de
mensajes del sistema no debieran cambiar, excepto por el usuario root. Las
modificaciones de estos elementos no solo contemplan el contenido de la información,
las modificaciones de sus permisos, usuarios propietarios o grupo al que pertenecen
producen un ataque en el sistema, es muy probable que el intruso modifique o genere
estos archivos para facilitar su entrada en el sistema en una próxima ocasión.
80
Capitulo 4. Implementación del sistema.
Una práctica bastante extendida consiste en modificar el comportamiento de diversas
aplicaciones del sistema, de forma que no pueda delatar su presencia o crear shell
scripts con el bit SUID activado y ocultarlos entre los archivos del sistema, entre las
modificaciones más difíciles de detectar encontramos las que se producen sobre los
propios programas del sistema. La única manera de detectar este tipo de
modificaciones en los archivos es mantener una base de datos con los datos de los
archivos e información adicional como un resumen criptográfico, e ir comparándola
periódicamente con los datos de los archivos almacenados actualmente en el sistema
servidor DAYUSOL.
Se hace evidente que la metodología propuesta e implementada hasta el momento no
detectará todas las intrusiones, ya que se conoce la información que envían los
sensores, solo se tendrá la capacidad de detectar las intrusiones realizadas
directamente sobre archivos de directorios específicos.
Figura 4.6. Búsqueda de modificaciones.
El elemento que realiza la búsqueda de cambios es un script de Shell que utiliza el
programa diff, propio del sistema operativo Linux. El archivo diff encuentra diferencias
entre dos archivos. La diferencia es clasificada en AGREGADO, MODIFICADOACTUALIZADO Y ELIMINADO, cada uno de los cuales es enviado como una línea a
un archivo de texto.
La Figura 4.6 describe el proceso de revisar los elementos enviados por el sensor con
base en los almacenados en el servidor DAYUSOL, si se detecta cualquier variación
entre los datos almacenados y los datos enviados por el sensor durante el análisis, es
muy probable que un intruso haya modificado algún archivo, considerando la base de
datos fiable organizada en el directorio REMOTO, cada uno de los archivos
almacenados en el directorio DAYUSOL es abierto y comparado línea por línea en
busca de modificaciones, si existen, éstas son enviadas directamente al archivo
REPORTE, los eventos que pueden presentarse son:
AGREGADO. El archivo no existía, es incluido en la estructura del directorio y se
obtiene su huella digital.
MODIFICADO. El archivo ya existía pero han sido modificados sus propiedades o su
contenido, se registran los cambios, es incluido en la estructura y se obtiene su huella
digital.
81
Capitulo 4. Implementación del sistema.
ACTUALIZADO: El archivo que fue modificado se almacena para conocer las
propiedades y comparar el tipo de modificaciones realizadas, la información del
anterior archivo es retirada de la estructura.
ELIMINADO. El archivo existía y ha sido removido, se elimina su registro de la
estructura de directorios y se elimina su registro del archivo de compendios.
El procedimiento se repite para cada uno de los archivos enviados por el sensor, las
modificaciones sobre el directorio son actualizadas, es decir, el archivo enviado por el
servidor se considera la nueva base fiable y el archivo del servidor pasara a ser un
resguardo del estado anterior con la correspondiente fecha de ejecución de la
actualización.
4.2.4.2. Base de datos intrusiones.
Motor de comparación de modificaciones, agregaciones y eliminación de archivos.
El número de incidentes, el riesgo de cada una de ellas y la determinación del estado
de los equipos clientes de DAYUSOL se realiza empleando una base de datos que
almacena todos estos aspectos.
El módulo de actualización de la base de datos de incidentes permite usar el archivo
REPORTE y generar las consultas necesarias para actualizar la base de datos de
cada equipo. La primera vez que se genera el Directorio de aplicaciones, también se
genera la base de datos de incidentes del cliente.
El estado actual del equipo se determina dependiendo del número de elementos
detectados en el análisis y el grado de riesgo que representan. Los registros de los
elementos detectados deberán ser resueltos por el administrador y actualizada en la
base de datos.
Posteriormente, el administrador deberá confirmar la información de la base de datos
hacia el directorio de aplicaciones, mediante la ejecución de un programa que modifica
la estructura del Directorio del cliente DAYUSOL. Se realiza de esta manera para
incrementar la fiabilidad de la herramienta.
4.2.4.3. Generación de perfil de usuario
La generación de perfil de usuario implica tipificar los elementos que serán objeto de
monitoreo y análisis en el equipo cliente, establecer los intervalos de monitoreo,
además, la activación de cada usuario y el intercambio de llaves públicas entre el
cliente y el servidor de monitoreo.
4.2.4.4. Políticas de análisis de integridad
Las políticas son todas las recomendaciones que se establecen para materializar un
entorno de seguridad, en nuestro caso, estas reglas serán expresadas en un
documento que servirá de guía para el servidor; se establece la ubicación del
directorio del cliente, los directorios analizados, el nivel de riesgo de cada uno de los
elementos, además de los utilitarios que se pueden implementar. La siguiente tabla
muestra el resumen de las características de las políticas de los clientes de
DAYUSOL, ésta puede ser editada al criterio del administrador.
82
Capitulo 4. Implementación del sistema.
La base de generación de las reglas corresponde a los criterios expresados en el
sistema base de TRIPWIRE [12], los elementos y su correspondiente nivel de riesgo
son retomados para la implementación en DAYUSOL los criterios, valores y su
correspondiente política están expresados en la Tabla 4.7
Recurso
Directorio de datos
Riesgos de seguridad
Define los directorios a
examinar
Define las propiedades
del archivo analizado.
Revisión de paquetes
Implementación
Características
/home/dayusol/usuarios
ALTO
5
MEDIO
3
BAJO
1
000
/ Ejecutables, suid,guid
010
/bin
020
/boot
030
/etc
040
/usr
050
/dev
060
/lib
070
/mnt
080
/opt
090
/var
100
/home
110
/proc
120
/sbin
130
/media
140
/custom
150
/user
Permisos
%m %n %u %g %s %p
Dpkg
Directorio del cliente
Niveles
de
riesgo,
dependientes del uso del
equipo cliente.
Estructura de directorios
de primer nivel de Linux,
capacidad
de
establecimiento de hasta
10
niveles
en
cada
directorio.
Características del archivo
descritas en la Tabla 4.2.
Define
los
paquetes
instalados
Tabla 4.7. Estructura de políticas de DAYUSOL.
Las reglas a implementarse para los equipos en este trabajo de investigación se
proporcionan en el anexo 2, una muestra de la estructura de las reglas se describen
en la Tabla 4.8, la Tabla 4.9 resume los directorios del sistema de archivos Linux y los
niveles de riesgo asignados..
Regla
Archivos
ejecutables
Archivos del
directorio /bin
Archivos del
directorio /boot
Implementación
Características
Huella digital
(Md5)
Características
Huella digital
(Md5)
Características
Huella digital
(Md5)
/usr/bin/find / -xdev -perm +6111
-type f -printf "%m %n %u %g %s %p\n"
/usr/bin/find / -xdev -perm +6111
-type f -exec /usr/bin/md5sum {} \;
/usr/bin/find /bin -type f -perm +666
-printf "%m %n %u %g %s %p\n"
/usr/bin/find /bin -type f -perm +666
-exec /usr/bin/md5sum {} \;
/usr/bin/find /boot -type f -perm +666
-printf "%m %n %u %g %s %p\n"
/usr/bin/find /boot -type f -perm +666
-exec /usr/bin/md5sum {} \;
Tabla 4.8. Estructura de políticas de DAYUSOL.
83
Capitulo 4. Implementación del sistema.
Nivel
de
riesgo
ALTO
Descripción
Aplicaciones
(ejecutables)
/bin
/root
/boot
/etc
/usr
/lib
/sbin
MEDIO
/media
BAJO
/opt
/mnt
/lost+found
/var
/proc
(no
implementado)
/home
Propiedad de root
Bit suid
Bit guid
Programas ejecución root
Propiedad de root
Archivos del administrador
Archivos de arranque
Configuración
• Usuarios
• Contraseñas
• Servicios
• Dispositivos
• Red
• Puertos
• Programación de tareas
Solo lectura. Ejecución y modificación restringida a root,
Información sobre las aplicaciones de los usuarios
• Código fuente de aplicaciones.
• Manuales de ayuda de las aplicaciones.
• Aplicaciones de root ejecutables por los usuarios no
administradores
Librerías. Recursos que son utilizados por las
aplicaciones.
Programas de ejecución de los usuarios para el trabajo
con Shell. Propiedad del administrador
Montaje de dispositivos
• Ópticos de lectura-escritura
• Almacenamiento removible
Permitir lectura y escritura
Aplicaciones opcionales de los usuarios.
Igual que el directorio /media (menor uso)
Recuperación de archivos. Uso exclusivo de root
Contenido variable
• Logs del sistema
• Servidor web
Procesos del sistema, variable de acuerdo al
comportamiento y lo servicios utilizados.
Importante fuente de análisis de comportamiento dinámico
Carpeta personal de los usuarios
Política del sistema operativo (644)
Tabla 4.9. Políticas y riesgo implementados en DAYUSOL.
Esta política se diseña con un editor de textos, los criterios de selección de los
elementos de cada necesidad se determinan con los parámetros del comando find, las
descripción detallada de la implementación de las políticas para los equipos se
encuentra en el Anexo 2. La activación del perfil consiste en intercambiar las llaves
públicas entre el servidor de SSH y el cliente SSH. Ejecutar manualmente el análisis y
mover el archivo de políticas dentro de la estructura de directorios del cliente.
84
Capitulo 4. Implementación del sistema.
La programación de los eventos de análisis se realiza con la herramienta cron, propia
del sistema operativo, en el cual se pueden especificar los intervalos de tiempo y el
archivo de políticas que se debe de utilizar para el análisis. La programación del
análisis de cada equipo se definió en una vez por día y en un horario nocturno, este
intervalo de tiempo se puede modificar de acuerdo al entorno, la Tabla 4.10 describe
los horarios y la configuración del archivo de programación de tareas.
Programación de ejecución de
DAYUSOL
Cada 20 minutos de lunes a viernes
Una vez cada día a las 2 de mañana
Descripción de la tarea en cron
[Minuto Hora Día Mes Año]
*/20 * 2-5 * *
02***
Tabla 4.10. Programaciones de análisis utilizadas en DAYUSOL.
Cabe destacar que esta parte del sistema fue diseñada de modo que el administrador
se involucre directamente en la generación de los perfiles y no han sido automatizados
los procesos con el objetivo de incrementar la seguridad de DAYUSOL.
Para nuestra implementación se seleccionaron todos los directorios de primer nivel,
con el fin de monitorear cualquier cambio en la estructura de directorios, pero a
consecuencia, el volumen de información manejado es mayor.
4.3 Administración y actualización de cambios.
Esta parte de DAYUSOL está encargada de usar los resultados del motor de
búsqueda de modificaciones e insertarlos en la base de datos del usuario. La
herramienta está escrita en PHP 5, que es un lenguaje de programación con
capacidad de ejecución en línea de comandos y en entornos WEB.
Inicialmente se toma el archivo denominado REPORTE, se consulta cada una de las
líneas de éste y son convertidas en una consulta que permite agregar todos los
elementos modificados, así como sus características dentro de la base de datos de
cada usuario.
La creación de la base de datos se realiza para cada uno de los equipos de acuerdo a
sus requerimientos de seguridad. Y los reportes se generan a partir del análisis de la
información contenida para cada usuario, el despliegue de resultados se realiza
utilizando una interfaz Web.
4.3.1. Base de datos de estadísticas y reportes de incidentes
Se tiene una base de datos para la administración de los reportes de incidentes,
siguiendo con los principios de entidad- relación y las formas normales del diseño este
esquema se muestra en la Figura 4.7.
La Tabla 4.11 describe la funcionalidad de la base de datos DAYUSOL. Se almacenan
los datos descriptivos de los clientes, las intrusiones detectadas incluyendo los tipos
de modificación de cada una, además del estado de cada cliente. Este elemento es el
soporte de los procesos de generación del estado y la interfaz grafica de usuario, la
administración de la base de datos se realiza con un gestor propio de MySQL5, pero
se puede implementar en cualquier gestor que soporte el esquema entidad – relación.
En el Anexo 2 se incluye la descripción de la base de datos DAYUSOL.
85
Capitulo 4. Implementación del sistema.
Figura 4.7. Dase de datos Entidad-Relación de DAYUSOL
Recurso
Estructura de la base de
datos de cada equipo
Reporte de análisis de
integridad individual
Reporte de Incidentes
Nivel de riesgos y estado
del sistema
Reporte de Actualización
/reparación de cada
equipo
Estadísticas del total de
sistemas
Implementación
Características
Base
de
DAYUSOL2008
datos Integridad
referencial,
Implementación en Mysql
Determinación de nivel de
fiabilidad del equipo cliente
Formulario
“Reporte Selección de estado del
Cliente” y “Fiabilidad Host” cliente.
Fiabilidad
del
cliente
dependiente del número
de elementos detectados y
su riesgo.
Módulo reportes
Número de elementos de
la red y fiabilidad.
Archivo “Reporte Cliente”
en formato electrónico de
lectura (PDF).
Política de seguridad
RIESGOS: ALTO, MEDIO,
BAJO.
Estado del sistema: Fiable,
No fiable, indeterminado.
Formulario “Actualización
Actualiza
elementos
de elementos”
detectados.
Determinación del estado
del cliente.
Reporte “Reporte de red”
Archivo “Reporte de Red”
en formato electrónico de
lectura (PDF).
Tabla 4.11. Base de datos de estadísticas y reportes de DAYUSOL.
86
Capitulo 4. Implementación del sistema.
4.3.2. Reportes de intrusiones usando correo electrónico.
Las intrusiones son reportadas en la base de datos, el administrador de DAYUSOL
podrá conocer el estado de los equipos de la red usando los datos almacenados en la
base descrita anteriormente. Pero existen casos que podrían considerarse como
críticos, situaciones donde la respuesta ante un incidente debe ser lo mas breve
posible, por lo que el administrador debe ser notificado justo después de que la
intrusión se ha detectado.
Para esta situación se implementa una respuesta del sistema después del análisis
cuando se detectan elementos de nivel de riesgo ALTO, si un cliente obtiene un
estado No fiable después del análisis de DAYUSOL, se envía un correo electrónico al
responsable de administrar la herramienta con un resumen general del estado del
equipo Este método permite reducir el tiempo de respuesta ante un incidente. Se
requiere hacer uso de un servidor de correo que sirva como interfaz de salida para los
mensajes generados por la herramienta DAYUSOL.
4.4 Respaldo de archivos
Este es un aspecto considerado como utilitario dentro de DAYUSOL, los utilitarios son
módulos funcionalmente independientes que pueden ser agregados para incrementar
la funcionalidad de la herramienta, pero su implementación no es indispensable.
Por consideración de importancia fue implementado este módulo en uno de los
clientes y no se aplicó a los demás debido a la infraestructura con la que se cuenta
actualmente. El funcionamiento es muy sencillo, la política del cliente es modificada en
el apartado “Utilitarios de Linux”, para el sistema de respaldo se deben comprimir los
directorios que se desean y recibirlos en el servidor para almacenarlos con la fecha en
que se realizan.
Se utilizo el comando tar para esta tarea, se le puede aplicar un formato de
compresión de tipo gzip con lo que se reduce el tamaño del archivo obtenido del
cliente. El criterio de un sistema de respaldos depende de el nivel de importancia de
cada elemento del sistema, pero en particular para nuestro caso el directorio de
configuraciones toma un alto nivel de importancia, si el sistema es comprometido y se
desea restaurar su funcionamiento será indispensable este grupo de archivos.
4.4.1. Políticas de respaldo de información
Las políticas quedan definidas con el nombre del directorio y los archivos que se
desean respaldar; este conjunto de elementos es comprimido, se almacena en el
servidor, pudiendo tener un apartado destinado sólo para el almacenamiento de
respaldos. La política queda de la siguiente manera:
tar –zcf /tmp/respaldo-etc.tar.gz /etc
Se puede hacer respaldo de otros directorios replicando la línea de políticas,
cambiando el nombre del archivo y el directorio que se desea respaldar.
87
Capitulo 4. Implementación del sistema.
4.4.2. Respaldo y restauración de datos
Los respaldos de información deberán contemplar los archivos de mayor importancia
para cada cliente dependiendo de sus necesidades, la restauración de los datos se
realiza desde una consola de comandos, consultando los datos que se tienen en el
espacio de almacenamiento para el cliente y enviándoles sus archivos desde el
servidor. Es importante hacer un análisis de la pérdida de información, ya que los
motivos de ésta pudieran ser causados por algún intruso o programa que no ha sido
detectado, la restauración de los datos debe hacerse sólo en un sistema cliente fiable.
4.4.3. Espacio y encriptación
Debido a las limitaciones de hardware, resulta muy complicado implementar este
módulo, en un ambiente con mayor capacidad, es posible implementar un sistema de
discos empleados sólo para el fin de respaldos, pudiendo incluso ser en el mejor de
los escenarios un servidor de respaldos. La información puede ser encriptada y de
este modo mejorar la privacidad de los datos almacenados.
4.5. Comentarios finales.
Se han explicado los métodos y las herramientas utilizadas para la implementación de
DAYUSOL, también se describieron los requerimientos para garantizar la funcionalidad
de la herramienta. Todos los elementos son configurables y por lo tanto adaptables
para los diferentes entornos de monitoreo donde se desee implementar. Cabe
destacar que el motor de modificaciones de DAYUSOL, el servidor de páginas WEB, la
base de datos de cambios de MySQL y el servidor de correo se encuentran instalados
dentro del mismo equipo de cómputo.
88
Capitulo 5. Pruebas del sistema DAYUSOL.
CAPÍTULO 5. PRUEBAS DEL SISTEMA DAYUSOL
Este capítulo está enfocado a describir las pruebas a las que
fue sometido el sistema DAYUSOL. Cubre los aspectos de
fiabilidad de análisis, tipos de detecciones y la carga de trabajo
en los clientes.
Es importante hacer un análisis del funcionamiento del sistema en materia de
integridad y detección de intrusos, de igual manera, el analizar la cantidad de recursos
que requiere para su ejecución, el tiempo empleado para realizar análisis o ejecución
de utilitarios, el volumen de información que procesa el servidor, la afectación del
rendimiento del equipo cliente y el trafico generado en la red.
5.1 Sistema de directorios del cliente DAYUSOL.
El directorio que sirve como base de referencia para el análisis debe ser creado
cuando el sistema cliente esta libre de intrusiones, se propone obtener esta referencia
justo después de la instalación del sistema operativo. Para la generación de este
directorio se debe ejecutar las actividades definidas en el capitulo anterior consistentes
diseñar el perfil de usuario.
La Figura 5.1 muestra el entorno de red donde se instaló y sirvió como escenario de
las pruebas de DAYUSOL.
Figura 5.1. Escenario de pruebas de DAYUSOL.
Se utilizaron los siguientes equipos de cómputo:
•
•
•
•
Servidor DAYUSOL. Equipo que funciona como servidor IDS, web y base de
datos.
Router. Equipo router, firewal y cliente 192.168.1.1 de DAYUSOL.
Cliente 192.168.1.10. y Cliente 192.168.1.11. Equipos interfaz 10/100 Ethernet.
Cliente inalámbrico. Equipo portátil con interfaz inalámbrica.
89
Capitulo 5. Pruebas del sistema DAYUSOL.
Las políticas utilizadas para cada elemento descrito en el esquema anterior se
encuentran en el Anexo 2, la conexión y la configuración de los sistemas de conexión
SSH se describen en el Anexo 1, por lo que se parte de tener ya configuradas las
llaves de autenticación en los equipos clientes y las políticas de cada uno de ellos en
el servidor. Las imágenes y tablas mostradas en este apartado son del equipo router.
La primera vez que se ejecuta el análisis, se generan los directorios de referencia y los
archivos correspondientes a las estructuras y los compendios, en la Figura 5.2 se
muestra la estructura del árbol de directorios generado por la herramienta DAYUSOL.
Figura 5.2. Árbol de directorio de cliente de DAYUSOL.
Figura 5.3. Árbol de directorio de cliente de DAYUSOL después la de detección de intrusos.
90
Capitulo 5. Pruebas del sistema DAYUSOL.
Los análisis posteriores se realizan sin la intervención del administrador, los archivos
del directorio de referencia utilizan una política permisiva, es decir, el archivo obtenido
durante el análisis que genere modificaciones es establecido como referencia y el
anterior es almacenado con el nombre de la fecha en que se realizo el análisis. Si no
existen modificaciones solo cambia el archivo de reporte con la fecha en que se realizo
el análisis. La Figura 5.3 muestra el árbol de directorios de un cliente después de un
análisis donde se habían realizado modificaciones y las cuales fueron detectadas por
DAYUSOL.
El archivo de reporte se encuentra en la carpeta correspondiente al mismo nombre,
cuando se identifican modificaciones entre el archivo del sistema almacenado en el
directorio de DAYUSOL y el enviado por el sensor, se agregan líneas describiendo el
elemento, sus parámetros y el tipo de modificación. En la figura 5.4 se aprecia una
parte del archivo de reporte después del análisis de un equipo al que se le modifico su
estructura de archivos.
Figura 5.4. Líneas del archivo de reporte después la de detección de intrusos.
Con estos elementos se comprueba que el sistema funciona en la recolección de la
información, el motor de búsquedas de diferencias y la generación de reportes con las
respectivas intrusiones detectadas.
5.1.1 Utilitarios del sistema DAYUSOL.
Se define para todos los clientes una regla que permite la recolección de información
respecto a los paquetes instalados. La Figura 5.5 muestra un extracto del archivo
instalados que se encuentra dentro del directorio PAQUETES.
91
Capitulo 5. Pruebas del sistema DAYUSOL.
Figura 5.5. Contenido del archivo instalados.
Este archivo sirve como referencia para la detección de modificaciones de los
paquetes instalados en el cliente, la metodología de análisis de este directorio es
idéntica a los descritos anteriormente para la integridad del sistema de archivos.
Los respaldos son implementados en sustitución, es decir que el sistema genera un
directorio RESPALDOS y almacena los datos que le sean indicados en la política del
cliente. En cuestiones de seguridad se pretende restaurar la funcionalidad del sistema,
por lo que se respalda el contenido del directorio /etc. El respaldo debe desactivarse
una vez que se ha generado la estructura de directorios para contar con un punto
fiable.
Los respaldos pueden hacerse sobre los directorios necesarios, la limitante será el
espacio de almacenamiento y el tiempo necesario para realizar este procedimiento. Se
recomienda generar una política solo para respaldos considerando que se requiera
almacenar información adicional a la recuperación del sistema, esto permitirá
establecer periodos diferentes para la realización del respaldo a los análisis de
intrusos. En nuestro caso, se diseño la política para lograr la restauración del sistema
y se procede a desactivar los respaldos. La figura 5.6 muestra el directorio del cliente
donde se aprecia el archivo respaldo.
Figura 5.6. Árbol de directorio de cliente de DAYUSOL con los respaldos de /etc y /usr.
La capacidad de almacenamiento varia dependiendo del equipo, en el caso de extraer
del cliente los archivos de los directorios de nivel de riesgo alto proporciona un
volumen de aproximadamente de 500 Mbytes.
92
Capitulo 5. Pruebas del sistema DAYUSOL.
5.2. Actualización de cambios de DAYUSOL.
La actualización de la base de datos se realiza con los datos que posee el archivo de
reporte después de un análisis del cliente. Esta información es trasladada a la base de
datos intrusiones donde se agregan los registros correspondientes, cabe destacar que
este proceso se realiza de manera automática por lo que no se requiere de la
intervención del usuario. Lo realiza el sistema Base de datos modificaciones.
Las consultas generadas son manejadas por la base de datos instalada en el equipo
servidor y almacenadas en DAYUSOL 2008. La generación del estado del cliente
depende de la cantidad de archivos detectados como intrusión y el riesgo de cada una
de ellas, se almacenan también la fecha y hora del análisis. La Figura 5.7 muestra la
consulta realizada para ver el estado de los clientes y la fecha de su último análisis.
Figura 5.7. Consulta del estado de los clientes en DAYUSOL2008.
Las intrusiones detectadas son almacenadas dentro de la base de datos dependiendo
si es de estructura o compendio, el riesgo y el tipo de modificación. La Figura 5.8
muestra las tablas que componen la base de datos DAYUSOL2008.
Figura 5.8. Tablas de la base de datos DAYUSOL208.
La actualización de los elementos se realiza automáticamente después del análisis, en
caso de que se realicen modificaciones de restauración de un equipo o la revisión de
elemento son intrusivos pero detectados, se deberá realizar por parte del
administrados con el uso de un gestor de base de datos. En nuestro caso se utilizo la
aplicación Phpmyadmin, la cual utiliza una interfaz web.
5.3. Interfaz grafica de usuario y reportes.
En este punto se muestran los resultados de los elementos diseñados para la
presentación de los datos obtenidos por DAYUSOL en el directorio del servidor y
enviados a la base de datos DAYUSOL2008, la función de este elemento es
proporcionar un resumen de la información de manera sencilla y entendible para el
usuario.
93
Capitulo 5. Pruebas del sistema DAYUSOL.
Se generan interfaces graficas de usuario en un entorno web, por lo tanto estas son
almacenadas como paginas de un servidor. Para nuestro caso se utilizo Apache 2.0 y
un preprocesador de texto PHP para realizar las consultas con la base de datos, la
presentación de las graficas y los datos dinámicos.
Se generan tres pantallas diferentes para mostrar de manera ordenada los datos y
facilitar su interpretación, se describen las características a continuación.
•
REPORTE DE RED (ver Figura 5.9):
1.
2.
3.
4.
Numero de equipos clientes
Resumen de fiabilidad de los clientes
Gráfica del estado de la red
Tabla de resumen de análisis de los clientes de DAYUSOL.
a. Número de cliente
b. Nombre de Host
c. Número de archivos (intrusión)
d. Número de modificaciones de paquetes
e. Fecha y hora del último análisis
f. La fiabilidad del cliente
g. Enlace para conocer detalles (Pagina REPORTE DE HOST)
Figura 5.9. Interfaz REPORTE DE RED.
94
Capitulo 5. Pruebas del sistema DAYUSOL.
1
3
2
5
4
4a
4b
4c
4d
4e
Figura 5.10. Interfaz REPORTE DE HOST.
•
REPORTE DE HOST (ver Figura 5.10):
1.
2.
3.
4.
Datos generales del cliente
Resumen de elementos detectados clasificados por el nivel de riesgo
Gráfica del estado del cliente
Tabla de resumen de elementos detectados (integridad)
a. Nivel de riesgo
b. Archivos agregados
c. Archivos eliminados
d. Archivos modificados
e. Archivos actualizados
5. Tabla de resumen de elementos detectados (estructura)
•
REPORTE DE HOST (ver Figura 5.11):
1. Datos generales del cliente
2. Tabla de directorio descriptiva de elementos detectados y el riesgo
a. Nombre del elemento
b. Modificación
c. Características
d. Fecha de detección
3. La tabla de resumen se repite para cada uno de los directorio que se
encuentran en ese nivel de riesgo
95
Capitulo 5. Pruebas del sistema DAYUSOL.
1
2
3
2a
2b
2c
2c
Figura 5.11. Interfaz REPORTE DETALLADO.
Los reportes impresos en formato electrónico portable (PDF) se generan directamente
desde el navegador Firefox-3 con la opción del menú Archivo/Imprimir. Estos formatos
corresponden a lo mostrado en las páginas web de la interfaz para DAYUSOL, por lo
que su generación es sencilla. La figura 5.11 muestra los iconos de los archivos en
formato PDF.
Figura 5.12. Reportes en formato electrónico (.PDF).
5.3.1. Alarma de DAYUSOL mediante correo electrónico.
Las alarmas que maneja DAYUSOL son pasivas, la primera esta reflejada en los
reportes descritos anteriormente, la segunda es el envió de un correo electrónico al
administrador de DAYUSOL, se aplica cuando el cliente presenta un estado de no
fiabilidad.
96
Capitulo 5. Pruebas del sistema DAYUSOL.
Se hace uso de un sistema de alarma mediante un servidor de correo y un mensaje de
resumen de los elementos detectados en el último análisis. La Figura 5.13 muestra la
bandeja de entrada de la cuenta [email protected], la cual fue habilitada para registrar
los reportes de DAYUSOL. La Figura 5.14 muestra el resumen de las intrusiones
detectadas enviado como contenido del mensaje de correo.
Figura 5.13. Bandeja de entrada de correo electrónico con los reportes de DAYUSOL.
Figura 5.14. Contenido del correo electrónico enviado por DAYUSOL.
Las pruebas de funcionamiento se han descrito y se han mostrado los resultados
obtenidos desde el sensor hasta la generación de reportes en formatos impresos las
alarmas de correo electrónico. Los siguientes elementos a considerarse son la
capacidad de análisis de información y los recursos utilizados por cada equipo durante
la operación de DAYUSOL.
5.4. Análisis de fiabilidad e integridad de los sistemas DAYUSOL
Se diseño un banco de pruebas para analizar la fiabilidad y los elementos que puede
detectar DAYUSOL, el monitoreo de los recursos utilizados por los equipos clientes y
servidor se realizo con la herramienta top, el monitoreo del tráfico de la red se realizó
utilizando la herramienta munin [30].
5.4.1. Técnicas utilizadas para la evaluación de detección de intrusos.
Se realizó el análisis en tres etapas diferentes: detección de todas las modificaciones,
la detección de modificaciones mediante la instalación de paquetes y la detección de
intrusos.
97
Capitulo 5. Pruebas del sistema DAYUSOL.
5.4.1.1. Modificaciones DAYUSOL.
Esta etapa estaba enfocada a determinar todas las modificaciones que podía
reconocer DAYUSOL, para logra este cometido se generaron políticas que permitan
analizar todos lo elementos del sistema de archivos excepto el directorio /proc.
Eliminación, modificación y agregación de archivos: La manipulación directa de los
archivos se puede realizar desde la interfaz de la línea de comandos, mediante la
interfaz gráfica o la ejecución de scripts; Se realizaron modificaciones directas de los
usuarios dentro de su directorio (/home/usuario).
Las aplicaciones que se utilizaron para cada equipo fueron Open Office Suite, Gaim y
Mozilla Firefox (Descargas), seleccionadas por ser las que muestran un uso mayor
dentro de los entornos Linux. Las pruebas consistían en la manipulación de los
archivos sin cambio de los permisos o de propietarios, se ejecutaron 5 scripts de Shell
que permitían realizar cambios de la estructura de los directorios en los equipos
clientes. DAYUSOL fue programado para realizar análisis de cada uno de los clientes
en intervalos de una hora, el tamaño de la muestra corresponde a un mes de trabajo
de los equipos.
•
Cliente 192.168.1.1
Nombre: Router.
Consola
Comando
Agregados
35
Eliminados
35
Modificados
35
Total
105
DAYUSOL
105
Script
20
40
20
80
80
Aplicaciones
43
86
82
211
208
Tabla 5.1. Resumen de modificaciones en el cliente Router.
Figura 5.15. Elementos detectados por DAYUSOL en el cliente Router.
98
Capitulo 5. Pruebas del sistema DAYUSOL.
La Tabla 5.1 muestra las modificaciones realizadas en el cliente Router para esta
prueba, se muestran tambien los elementos detectados por DAYUSOL. La Figura 5.15
describe el comportamiento de DAYUSOL frente a las modificacioes realizadas.
El proceso de análisis se realizó sin detener la carga de trabajo a los equipos clientes,
en el caso del equipo cliente Router, se detectó una variación de los elementos
mientras se utilizaba la aplicación Open Office Writer, la cual tenía abiertos archivos y
la modificación de éstos no fue reportada.
Existe una diferencia de 3 elementos entre los archivos modificados por las
aplicaciones y los detectados por DAYUSOL, esto se debe a que las aplicaciones
manejan archivos temporales y durante este tiempo la modificacion se realiza sobre
una copia del archivo, posteriormente se refleja de manera real sobre el archivo.
•
Cliente 192.168.1.10
Nombre: Moniton
La Tabla 5.2 muestra las modificaciones realizadas en el cliente Router para esta
prueba, se muestran tambien los elementos detectados por DAYUSOL. La Figura 5.16
describe el comportamiento de DAYUSOL frente a las modificacioes realizadas.
Consola
Agregados
Eliminados
Modificados
Total
DAYUSOL
Comando
10
50
10
70
70
Script
20
40
20
80
80
Aplicaciones
22
18
43
83
83
Tabla 5.2. Resumen de modificaciones en el cliente Moniton.
Figura 5.16 Elementos detectados por DAYUSOL en el cliente Moniton
99
Capitulo 5. Pruebas del sistema DAYUSOL.
•
Cliente 192.168.1.11
Nombre: Alexin
La Tabla 5.3 muestra las modificaciones realizadas en el cliente Router para esta
prueba, se muestran tambien los elementos detectados por DAYUSOL. La Figura 5.17
describe el comportamiento de DAYUSOL frente a las modificacioes realizadas.
Consola
Agregados
Eliminados
Modificados
Total
DAYUSOL
Comando
40
36
15
91
91
Aplicaciones
Script
30
40
18
88
88
36
3
45
84
84
Tabla 5.3. Resumen de modificaciones en el cliente Alexin.
Figura 5.17. Elementos detectados por DAYUSOL en el cliente Alexin.
Análisis de resultados.
Las graficas muestran la capacidad de detectar modificaciones por parte de
DAYUSOL, los archivos que se detectan pueden ser incluso archivos ocultos o
temporales.
5.4.1.2. Instalación de software mediante gestores de paquetes.
Esta etapa permitiría bosquejar el comportamiento de DAYUSOL frente a una tarea
administrativa poco frecuente como lo es la instalación o desinstalación de paquetes.
Si el procedimiento es realizado por el administrador del equipo cliente debería ser
considerada como un procedimiento permitido, en caso contrario, la instalación de
software se convierte en un procedimiento intrusivo.
100
Capitulo 5. Pruebas del sistema DAYUSOL.
Se hicieron pruebas de instalación y desinstalación de algunas aplicaciones, éstas
requieren de instalación de otros elementos o tienen dependencia funcional, por lo que
el número de archivos detectados en los reportes es bastante alto. Los reportes de
análisis de DAYUSOL muestran todos los cambios realizados mediante la herramienta
APT sin importar la interfaz utilizada. La Tabla 5.4 muestra los detalles de las
modificaciones detectadas en esta prueba...
Las siguientes líneas muestran los paquetes instalados en el equipo cliente Alexin
mediante Synaptic.
•
Stealth versión 1.46-l,
Tamaño: 782 kb.
Prioridad opcional
Dependencias: libbobcat1, libc6, libgcc1, libstdc++6
•
Bluefish 1.0.7-2
Tamaño 6918 kB.
Prioridad opcional
Dependencias: libart-2.0-2, libaspell15, libatk1.0-0, libbonobo2-0, libbonoboui20, libc6, libcairo2, libconfig, libconf2-4, libglib2.0-0, libgnome-keyring0,
libgnome2.0-0, libgnomecanvas2-0, libgnomeui-0, libgnomevfs2, libgtk2.0-0,
libice6, liborbit2, libpango, libpcre, libpopt0, libsm6, libx11-6, libxcursor1,
libxetx6, libfixies3, libxis6, libxinerama1, librandr2, librender1, xpdf-reader, gv,
tetex-bin, tofrodos.
DIRECTORIOS
Ejecutables
Agregados
9
Eliminados
0
Modificados
0
Total
9
DAYUSOL
9
etc
0
0
1
1
1
usr
103
0
5
108
108
home
0
0
3
3
5
Tabla 5.4. Resumen de modificaciones con la instalación de paquetes.
Figura 5.18. Elementos detectados por DAYUSOL en la instalación de paquetes con APT.
101
Capitulo 5. Pruebas del sistema DAYUSOL.
Este es un ejemplo de la instalación de dos paquetes, la mayoría de las instalaciones
realizan un trabajo de copia, compilación y modificación de archivos que superan la
capacidad humana de revisarlos de manera minuciosa. Este análisis refleja todos los
cambios realizados por la instalación de los paquetes stealth, Bluefish y sus
dependencias (ver Figura 5.18), el directorio del usuario muestra archivos temporales
que estaban siendo utilizados durante la ejecución de DAYUSOL, razón por la que la
detección de elementos dentro del directorio /home es de 2 elementos más que no
estaban considerados durante la instalación.
Se comprueba que el análisis entrega el resultado de la modificación de la estructura
de directorios cuando se instalan programas o se desinstalan mediante el método de
APT. Las siguientes líneas son el resultado del reporte generado por DAYUSOL y la
Figura 5.19 muestra la consulta realizada a la base de datos DAYUSOL2008 después
de la instalación de los paquetes.
ADD: Checker
< ii stealth 1.46-1 A stealthy File Integrity Checker
ADD: editor
< ii bluefish 1.0.7-2 advanced Gtk+ HTML editor
ADD: library
< ii libbobcat1 1.15.0-1 run-time (shared) Bobcat library
Figura 5.19. Registros de DAYUSOL 2008 de los paquetes instalados con APT.
El modelo de permisos reduce a un usuario que no es administrador la capacidad de
instalar nuevos programas o la eliminación de éstos, pero no impide que código
malicioso pueda hacerlo. Los directorios de configuración y de instalación de
programas están determinados en un nivel de riesgo ALTO, el usuario que tiene
acceso a la instalación de software en el equipo debe contar con privilegios de
administrador (root). Estos programas se almacenan regularmente en tres rutas
diferentes: El directorio del código fuente, el directorio de los archivos ejecutables y de
configuración y por último, el directorio de la documentación y tutoriales.
5.4.1.3. Modificación de permisos, usuario, grupo, guid.
Una de las razones de existencia de DAYUSOL es la revisión de los permisos que
posee cada archivo dentro de la estructura de directorios, este aspecto es considerado
como el eje de nuestro desarrollo. La estructura que maneja el sistema operativo
restringe el uso, lectura, escritura, ejecución de los archivos de acuerdo a los permisos
que posee para el propietario, grupo y otros (ver Tabla 2.1); cualquier modificación de
estos aspectos puede implicar un riesgo de seguridad o alguna intrusión cuando se
evalúan los directorios de configuración, servicios o aplicaciones.
Los directorios con un nivel de riesgo ALTO dentro de DAYUSOL son revisados para
notificar de la manera más breve al administrador las modificaciones, debido a que los
archivos poseen como propietario al usuario root en la mayoría de los casos, es
común que los intrusos intenten obtener archivos de este propietario o se intenta
introducir archivos con estas características.
102
Capitulo 5. Pruebas del sistema DAYUSOL.
Los intrusos también buscan ejecutar aplicaciones con privilegios de administrador,
para obtenerlo suelen pasar antes por otros usuarios, aprovechan hacer un
escalamiento de privilegios y llegar a su objetivo. Por esta razón, se analizaron
algunos scripts que modifican permisos, propietarios o grupos de los archivos del
sistema; éstos fueron diseñados en Shell y ejecutados en el equipo cliente Alexin para
mostrar la capacidad de detección de DAYUSOL y los resultados que presentaban los
reportes de integridad. Las políticas implementadas se describen en el Anexo 2.
Herramientas instaladas:
•
Zeus. Genera procesos a partir de los existentes para reducir el rendimiento del
sistema, requiere privilegios de root y archivo ejecutable.
•
Remote-Shell. Permite la ejecución de una terminal con privilegios de
administrador desde cualquier sistema utilizando una interfaz web. Requiere un
servidor web y el modulo de php con la ejecución de comandos activada. El
archivo se almacena dentro de la carpeta de publicación del servidor con
propietario root
Estas herramientas son intrusiones, fueron instaladas mediante una memoria usb
directamente sobre el equipo, podrían ser instaladas por intrusos haciendo uso de
cualquier técnica de acceso al equipo.
Las Figura 5.20, 5.21 y 5.22 muestran el detalle de la intrusión detectada por
DAYUSOL después del análisis realizado al cliente Alexin y de haber instalado Zeus y
Remote-Shell.
103
Capitulo 5. Pruebas del sistema DAYUSOL.
Figura 5.20. Reporte de RED de DAYUSOL posterior a la intrusión Zeus y Remote-Shell.
104
Capitulo 5. Pruebas del sistema DAYUSOL.
Figura 5.21. Reporte de HOST de DAYUSOL posterior a la intrusión Zeus y Remote-Shell.
Figura 5.22. Reporte DETALLADO de DAYUSOL posterior a la intrusión Zeus y Remote-Shell.
Debido a que son elementos ejecutables, son detectados como nivel de riesgo ALTO,
por esta razón se modifica el estado de fiabilidad del cliente (ver Figura 5.20) y se
envía el correo correspondiente al administrador de DAYUSOL notificando la intrusión
(ver Figura 5.23).
Destaca la importancia de la detección de otros elementos a la misma hora de la
intrusión, los correspondientes al directorio /media. Se encuentra la detección del
montaje de la unidad usb (ver Figura 5.24), lo cual permitiría reducir las probables
vías de acceso por el cual el sistema fue penetrado. Este aspecto corresponde más a
la forencia informática, pero no deja de ser una contribución para la seguridad del
sistema.
Figura 5.23. Correo electrónico recibido debido a la intrusión Zeus y Remote-Shell.
105
Capitulo 5. Pruebas del sistema DAYUSOL.
Figura 5.24. Detección del montaje de dispositivos en el mismo análisis de la intrusión Zeus y
Remote-Shell.
El cliente fue probado con una aplicación que se situaba en el directorio /home, con
darle permisos de ejecución este se copio y obtuvo permisos de administrador. La
tarea siguiente fue correr varios sripts que le permitían buscar puertos, aplicaciones
con la intención de generar procesos y cuando un proceso real de la maquina se
lanza, este intruso genera otros de idéntico nombre solo para generar carga en el
cliente y posteriormente denegación de servicio.
Es en este punto, donde se considera una opción poco fiable que la evaluación del
estado de un sistema sea realizada por herramientas que se ejecutan sobre el mismo,
si una herramienta intrusiva cambia los programas de diagnostico, DAYUSOL recurre
a un cliente y una entidad para realizar el análisis, con lo cual se logra una fiabilidad
mayor de los resultados obtenidos.
5.5. Pruebas de rendimiento para DAYUSOL en el cliente
Realizar el análisis de un equipo implica hacer uso de sus recursos de hardware del
cliente, los del servidor y del medio que se utiliza para el transporte de los datos entre
estas dos entidades. Este aspecto se considera de importancia y se recomienda
efectuar el análisis de los equipos clientes durante los periodos de actividad baja, pero
en algunos lugares esto resulta imposible de implementar y debe realizarse cuando el
equipo cliente tiene carga de trabajo o se encuentra en producción en el caso de un
servidor.
La tecnología que se utiliza para la transmisión de los datos es un aspecto del cual no
se tiene control, es dependiente del entorno donde se implementa y los equipos de
conmutación disponibles. La red estaba diseñada únicamente para la comunicación de
DAYUSOL, lo que implica que el tráfico interno de la red era casi nulo, todos los
equipos tenían salida hacia internet por medio de un Router implementado en Linux,
permitiendo las actualizaciones de los programas y la instalación de software cuando
se requería.
106
Capitulo 5. Pruebas del sistema DAYUSOL.
Los recursos de hardware del cliente que considerados durante el análisis con
DAYUSOL son los siguientes:
•
•
•
•
Uso de procesador
Memoria RAM
Volumen de información analizado
Tiempo requerido para el análisis
Los análisis de rendimiento fueron tomados de manera manual durante 10 días
diferentes y se realizó el promedio de estos, se utilizaron las herramientas de
monitoreo de recursos cacti y munin.
5.5.1. Pruebas de rendimiento para el cliente 192.168.1.1
Procesador
Pentium IV
700 Mhz
Ejecutables
bin
boot
etc
usr
dev
lib
mnt
opt
sbin
media
home
Total
192.168.1.1 Router
Memoria
Memoria
RAM
swap
255.76
433.77
Mbytes
Mbytes.
Directorios (Mbytes)
Tiempo de
análisis
18.52 seg.
2100
3.6
6.5
23
1400
216
58
4
4
3600
12
74
7501.1
Tabla 5.5. Características de hardware del cliente Router.
107
Capitulo 5. Pruebas del sistema DAYUSOL.
Figura 5.25 Recursos utilizados por DAYUSOL en cliente Router.
La Tabla 5.5 describe los recursos de hardware del cliente Router y la Figura 5.25
muestra el porcentaje de uso de la memoria RAM, procesador y tiempo empleado para
el análisis con DAYUSOL. El cliente esta habilitado como ruteador, cortafuegos,
servidor de páginas web Apache 2.0 y servidor de Base de datos MySQL.
5.5.2. Utilización de recursos en el cliente 192.168.1.10
La Tabla 5.6 describe los recursos de hardware del cliente Miniton y la Figura 5.26
muestra el porcentaje de uso de la memoria RAM, procesador y el tiempo empleado
para el análisis con DAYUSOL.
Procesador
Pentium IV
2.4 Ghz
Ejecutables
bin
boot
etc
usr
dev
lib
mnt
opt
sbin
media
home
Total
192.168.1.10 Miniton
Memoria
Memoria
RAM
swap
255.736
971.924
Mbytes
Mbytes.
Directorios (Mbytes)
Tiempo de
análisis
12.30 seg.
2300
4.8
18
9.7
1800
0.064
154
4
4
6.8
12
128
4441.364
Tabla 5.6. Características de hardware del cliente Miniton.
108
Capitulo 5. Pruebas del sistema DAYUSOL.
Figura 5.26 Recursos utilizados por DAYUSOL en cliente Moniton.
5.4.3. Utilización de recursos en el cliente 192.168.1.11
La Tabla 5.7 describe los recursos de hardware del cliente Alexin y la Figura 5.27
muestra el porcentaje de uso de la memoria RAM, procesador y el tiempo empleado
para el análisis con DAYUSOL.
Procesador
Pentium IV
1.7 Ghz
Ejecutables
bin
boot
etc
usr
dev
lib
mnt
opt
sbin
media
home
Total
192.168.1.11 Alexin
Memoria
Memoria
RAM
swap
516.688
1180.696
Mbytes
Mbytes
Directorios (Mbytes)
Tiempo de
análisis
13 seg.
2600
3.6
12
24
1800
224
58
4
4
3.6
12
8.8
4754
Tabla 5.7. Características de hardware del cliente Alexin.
109
Capitulo 5. Pruebas del sistema DAYUSOL.
Figura 5.27 Recursos utilizados por DAYUSOL en cliente Alexin.
5.4.3. Utilización de recursos en el cliente 192.168.1.20
192.168.1.20 Alex-lap-hp
Memoria
Memoria
Tiempo de
RAM
swap
análisis
Centrino 2
1025.752
967.672
Duo 1.83 Ghz Mbytes
Mbytes
20.25 seg.
Directorios (Mbytes)
Ejecutables
9910
bin
5.2
boot
46
etc
17
usr
2400
dev
132
lib
300
mnt
4
opt
4
sbin
6.9
media
954
home
6900
Total
20679.1
Procesador
Tabla 5.8. Características de hardware del cliente Alex-lap-hp.
La Tabla 5.8 describe los recursos de hardware del cliente Alexin y la Figura 5.28
muestra el porcentaje de uso de la memoria RAM, procesador y el tiempo empleado
para el análisis con DAYUSOL. El cliente utiliza una interfaz inalámbrica para la
comunicación con la red, tiene instalado un servidor de páginas web y una maquina
virtual. Los resultados obtenidos prueban el funcionamiento de DAYUSOL con el
estándar “IEEE802.11 g”.
110
Capitulo 5. Pruebas del sistema DAYUSOL.
Figura 5.28 Recursos utilizados por DAYUSOL en cliente Alex-lap-hp.
Figura 5.28 Carga de trabajo durante el análisis con DAYUSOL en cliente Alex-lap-hp.
La Figura 5.28 muestra el promedio de la carga de trabajo del equipo Alex-lap-hp
durante el análisis de DAYUSOL, esta carga es relativamente baja. La grafica fue
tomada de los reportes de monitoreo de comportamiento con la herramienta cacti.
5.5. Comentarios finales.
Se utilizaron varias herramientas para la obtención de los datos mostrados en las
gráficas. Cabe destacar que los análisis muestran una diferencia en el tiempo
requerido y los recursos utilizados para llevarlo a cabo, dependiente del hardware con
que cuenta cada cliente, por lo cual resulta muy complicado determinar un valor
estándar de volumen de información por unidad de tiempo. El conjunto de pruebas
realizadas para el sistema DAYUSOL estuvieron enfocadas a la demostración de sus
capacidades en cuestión de detección de intrusiones, velocidad de actualización de la
información, recursos utilizados, tiempo y carga de trabajo en cada cliente.
111
Capitulo 6. Conclusiones y trabajos a futuro.
CAPÍTULO 6. CONCLUSIONES Y TRABAJOS A FUTURO
En este capitulo se analizan los objetivos planteados al principio
de el proyecto y se describen los logros alcanzados con el
sistema DAYUSOL, de igual manera, se dejan planteados
proyectos que complementen o fortalezcan esta herramienta.
6.1. Conclusiones
La información que se almacena en los sistemas de cómputo se ha convertido en el
elemento más valioso que estos poseen y está expuesto a un número grande de
amenazas, es por eso que las herramientas de seguridad han cobrado gran
importancia.
Se analizaron los principios de funcionamiento de las amenazas informáticas
existentes y los métodos de detección aplicados actualmente, con base en estos
aspectos se reviso la estructura del sistema de archivos de Linux y la metodología que
aplica para la seguridad de sus elementos.
Con base en los desarrollos comerciales como Tripwire, se propone una metodología
de análisis de intrusos y preservación de la integridad mediante técnicas criptográficas.
Este desarrollo se reflejo en la obtención e implementación de los siguientes
elementos:
•
Un sistema de directorios constituido por la información del sistema de
archivos, organizada de manera jerárquica y almacenada en un servidor
central.
•
Una metodología de detección de intrusiones basadas en las propiedades de
los archivos y la integridad de la información que almacenan.
•
Una base de datos relacional con la capacidad de almacenar las intrusiones
detectadas, actualizable de manera automática después de cada análisis del
cliente.
•
Una interfaz grafica que presenta los resultados de los análisis de los equipos
de manera breve, clara y en un corto tiempo.
La herramienta DAYUSOL fue el resultado de la implementación de los conceptos de
los detectores de intrusos, proporciona a los usuarios administradores de sistemas un
método de detección de intrusos, basado en herramientas propias del sistema
operativo y algoritmos de encriptación de datos.
La arquitectura del IDS es centralizado, basado en monitoreo de integridad y de
respuesta pasiva; la flexibilidad de la herramienta permite, la adecuación de los niveles
de riesgo y la configuración de los directorios dependiente del sistema que se desea
monitorear. Es escalable dentro de un entorno de red, su diseño le permite agregar
nuevos usuarios de manera sencilla.
El tiempo en que se realiza el análisis del cliente de DAYUSOL depende directamente
de la infraestructura donde se implemente el sistema, son fundamentales en este
aspecto, la velocidad del procesador, la capacidad de memoria RAM, el volumen de
información analizado y el tráfico en la red.
111
Capitulo 6. Conclusiones y trabajos a futuro.
Los tiempos entregados por los clientes actuales, muestran una rápida velocidad en la
detección de modificaciones, se puede conocer el estado de un equipo de acuerdo al
número de elementos y el riesgo que éstos representan para la seguridad del sistema.
Dejando al administrador la puesta en marcha de un procedimiento de revisión de los
elementos detectados y las acciones correspondientes.
El sistema de respaldos, es un utilitario de DAYUSOL que puede ser implementado en
un entorno con la infraestructura suficiente, es considerable el costo de un sistema de
almacenamiento dedicado al respaldo de la información de los clientes, por un lado se
tienen que utilizar espacios de almacenamiento bastante grandes para las copias de
información comprimida, en contraparte, se debe estimar el valor de la información y la
sensibilidad que representa la pérdida de este elemento. Debido a nuestras
limitaciones de hardware, no se habilitó esta capacidad para todos los usuarios, pero
se comprobó su correcta aplicación para los directorios de restauración del sistema y
se reporto su funcionamiento en el capitulo 5.
Los beneficios obtenidos de la aplicación de este trabajo de investigación se pueden
resumir en que DAYUSOL realiza la detección de intrusos, cumple satisfactoriamente
con proporcionar estadísticas del estado de los equipos clientes, generar reportes
individuales de los elementos detectados en cada análisis, permitir un conocimiento
oportuno, práctico y fiable al administrador del sistema operativo Linux.
6.2. Trabajos a futuro
Las capacidades de DAYUSOL han sido expuestas a lo largo de esta investigación; no
obstante es posible agregar funcionalidad o compatibilidad con otros sistemas Linux.
•
Extender la funcionalidad de la herramienta para transladar los archivos de
configuración de los equipos clientes al servidor y poder determinar cual fue el
cambio realizado, sobre todo en lo referente a los puertos y servicios.
•
Otro desarrollo propuesto es la creación de un sistema que permita la
búsqueda en internet o la descripción de cada uno de los elementos
encontrados durante el análisis; es común actualizar sistemas y encontrar un
volumen muy grande de archivos detectados, la capacidad de determinar si es
un elemento permitido o no recae en el administrador; contando con una base
de datos descriptora de características de los archivos, se reduciría la carga de
trabajo del administrador durante las tareas de actualización e instalación de
paquetes.
•
La inclusión del esquema obtenido en DAYUSOL con el servicio de directorios
implementado para la restricción, autenticación y validación de clientes en un
entorno de red de servicios distribuidos.
112
Bibliografía
BIBLIOGRAFÍA
[1]
Bandel David A, Linux Security Toolkit. Met Books.
Estados Unidos 2000.
[2]
Departamento de informática. Estado del arte: Sistemas de Detección
de Intrusos.
Mondragón Escuela Politécnica Superior, 2004.
[3]
Contador de Linux, Linux Counter Machine Report.
http://i18n.counter.li.org
[4]
Proctor Paul E., Practical Intrusion Detection Handbook.
Prentice Hall Hispanoamericana S.A. México 2005.
[5]
Garnacho A. Ribagorda & Gallardo Ortiz M. Angel, Seguridad en Unix
Sistemas abiertos e Internet.
Editorial Paraninfo, 1996.
[6]
Korn Peter, Maxima Seguridad en Linux.
Editorial McGraw Hill 2004.
[7]
Baluja García Walter, Los sistemas detectores de intrusos.
Instituto Superior Politécnico José Antonio Echeverría. Facultad de
ingeniería Eléctrica, Ciudad de la Habana, Cuba 2005.
[8]
Zurita Rafael Ignacio, Auditoria de seguridad.
Universidad Nacional del Comahue, Facultad de Economía y
Administración, Licenciatura en Ciencias de la Computación. Buenos
Aires, Argentina, Mayo 2001.
[9]
Anónimo. Linux Hacker.
MacGraw Hill Mexico 2002.
[10]
Villalón Huerta Antonio, Seguridad en Unix y redes.
Versión 1.2, México 2000.
[11]
Snort. Open source network intrusion prevention and detection system.
http://www.snort.org/
[12]
Tripwire. Change Management & Auditing
http://www.tripwire.com/
[13]
Inotify. Monitor Linux file system events with inotify
http://www.kernel.org/pub/linux/kernel/people/rml/inotify/README
[14]
Bace Rebecca & Mell Peter. NIST Special Publication on Intrusion
Detection Systems Intrusion Detection Systems.2003.
National Institute of Standards and Technology. Computer Security
Division
113
Bibliografía
[15]
Garfinkel Simson, Spafford Gene and Shwartz Alan, Practical unix &
internet security.
O’Reilly. Tercera Edición 2003.
[16]
Cheswick B. and Bellovin S., Firewalls and Internet Security: Repelling
the Wily Hacker.
Addison-Wesley, Estados Unidos 1994
[17]
Lehtinen Rick, Rusell Deborah and Gangemi G.T., Computer Security
Basics.
Editorial O´Reilly, Estados Unidos 2006.
[18]
Nombela Juan Jose, Seguridad Informática.
Praninfo y Thomson Editores España 1997.
[19]
Hatch Brian and Lee James, Secretos y soluciones para la seguridad de
Linux, Hackers en Linux.
Mc Graw Hill /Interamericana de España 2004.
[20]
Stamp Mark, Information Security, Pinciples and Practice.
Wiley -interscience 2006.
[21]
McClure Stuart, Scambray Joel y Kurtz George. Hackers, Secretos y
soluciones para la seguridad de redes.
Osborne, McGraw-Hill 2000.
[22]
Barret Daniel J. and Silverman Richard E., SSH The Secure Shell The
Definitive Guide.
O´Reilly, Estados Unidos 2001.
[23]
Escamilla Terry, Intrusion Detection: Network security beyond the
firewall.
Wiley Computer Publishing 1998.
[24]
Stallings William, Operating Systems.
Second Edition. Prentice Hall. 2004
[25]
McCarty Bill. Learning Debian GNU/Linux.
O’Reilly Estados Unidos 1999.
[26]
Linux.org. A free Unix-type operative system.
http://www.linux.org
[27]
GNU. Fundacion para el software libre (FSF).
http://www.gnu.org/home.es.html
[28]
Tansley David, Linux and Unix Shell Programming.
Addison-Wesley Pearson Education 2000.
[29]
Northcutt Stephen, Cooper Mark, Fearnow Matt and Frederick Karen,
Intrusion Signatures and Analisis.
New Riders Publishing 2001.
114
Bibliografía
[30]
Ristic Ivan, Apache Security.
O´Reilly, Estados Unidos 2005.
[31]
Stones Richard and Matthew Neil, Beginning Linux Programming.
2nd Edition. Wrox Press Ltd. 1999.
[32]
Larman Craig, UML y patrones, Introduccion al analisis y diseño
orientado a objetos.
Prentice Hall primera edicion 1999.
[33]
Quigley Ellie, Linux Shells By Examples.
Prentice Hall Estados Unidos 2000.
[34]
Newham Cameron and Rosenblatt Bill, Learning the Bash Shell.
Editorial O´Reilly. Estados Unidos 1998.
[35]
Sklar David and Trachtenberg Adam, PHP Coookbook 2nd Edition.
Editorial O´Reilly, Estados Unidos 2006.
[36]
Sanchez Sebastián, Unix y Linux Guía Práctica.
Editorial Alfaomega, 2000.
[37]
Gilmore W. Jason, Beginning PHP and MySQL 5 From novice to
professional.
Editorial Appres 2006.
[38]
Mako Hill Benjamin, Harris David B.
GNU/Linux 3.1 Bible.
Wiley Publishing, Estados Unidos 2005.
[39]
CERT. Computer Emergency Response Team.
http://www.cert.org/cert/
and Vyas Jaldhar, Debian
115
Bibliografía
GLOSARIO
Autenticación. Métodos o técnicas implementadas para la determinación de la
identidad de un recurso informático, se hace uso de técnicas de conocimiento,
posesión de algún elemento o resolución de un desafío para comprobar que la entidad
es quien dice ser.
Autorización. Definición granular de permisos de acceso concedidos a un
determinado usuario, dispositivo o sistema, habitualmente implementado mediando
listas de control de acceso (ACL).
Base Segura de Cómputo. Estructura de elementos que conforman una referencia
para los elementos de control de acceso, integridad de información y los IDS.
Implementado como la plataforma de los sistemas de monitoreo y auditoria,
Blowfish. Codificador de bloques simétricos, diseñado por Bruce Schneier en 1993 e
incluido en un gran número de conjuntos de codificadores y productos de cifrado
Cifrado. Técnicas que permiten la secrecía de la información utilizando métodos
matemáticos, que proporcionan la ocultación de la información para usuarios no
autorizados. La capacidad de los algoritmos de cifrado es dependiente de la capacidad
de cómputo que se tenga y el tiempo empleado para su ruptura.
Caballo de Troya. Programa que aparentemente, o realmente, ejecuta una función
útil, pero oculta un subprograma dañino que abusa de los privilegios concedidos para
la ejecución del citado programa.
Cifrado. Transformación criptográfica de datos para producir un criptograma o texto
cifrado. El cifrado puede ser irreversible, en cuyo caso no puede realizarse el proceso
de descifrado correspondiente
Colisión. Situación que se produce cuando una función hash, operando sobre
entradas distintas, genera una misma salida. Puede ser de dos tipos:
• Débil: Cuando dado un mensaje se encuentra otro que produce el mismo hash.
• Fuerte: Cuando se encuentra una pareja de mensajes que producen el mismo
hash.
CRC. Código de redundancia cíclica, técnicas de cifrado por medio de bloques de
manera recursiva, el tamaño de los bloques puede ser de 16 o 32 bits
DAC. Discretionary Access Control, Control de acceso discrecional.
Debian. Distribución de Sistema Operativo Linux diseñada para servidores, la versión
más reciente es nombrada Edgy y corresponde a la versión número 4.
Detección de sucesos. Capacidad para la percepción tanto de acciones normales
como de aparente violación de un sistema de información
Función hash o Función resumen (digest). Función de un solo sentido que calcula,
a partir de una cadena de bits de longitud arbitraria, otra, aparentemente aleatoria, de
longitud fija.
116
Bibliografía
Gusano. Es un programa similar a un virus que se diferencia de éste en su forma de
realizar las infecciones. Mientras que los virus intentan infectar a otros programas
copiándose dentro de ellos, los gusanos realizan copias de ellos mismos, infectan a
otros ordenadores y se propagan automáticamente en una red independientemente de
la acción humana.
Huella digital. Se denomina al elemento entregado por un algoritmo de cifrado en
bloques, el cual realizará la función resumen de un archivo. Permite la identificación de
la integridad del contenido de un archivo.
Información sensible. Aquella, así definida por su propietario, que debe ser
especialmente protegida, pues si revelación, alteración, pérdida o destrucción puede
producir daños importantes a alguien o algo.
IPv4. Internet Protocol v4, protocolo de internet versión 4, elemento que permite la
comunicación de equipos en un entorno de red. Dependiente de la pila de protocolos
TCP/IP, esta capa proporciona los elementos de enrutamiento, la versión se
caracteriza por utilizar un conjunto de 28 bits para la identificación de los equipos.
IPv6. Internet Protocol v6, protocolo de internet versión 6, sustituye al protocolo
versión 4, incrementa funcionalidades de seguridad y calidad del servicio, la
identificación del equipo se realiza por agrupamientos de 128 bits.
IDS. Sistema Detector de Intrusos, agente informático que permite identificar
elementos considerados un riesgo o anomalía del funcionamiento del equipo.
Implementan diversas técnicas para la identificación de intrusos y se clasifican
principalmente en los de red y los de host.
LDAP (Lightweight Directory Access Protocol). Es un protocolo a nivel de
aplicación que permite el acceso a un servicio de directorio ordenado y distribuido para
buscar diversa información en un entorno de red. LDAP también es considerado una
base de datos (aunque su sistema de almacenamiento puede ser diferente) al que
pueden realizarse consultas. Es un protocolo de acceso unificado a un conjunto de
información sobre una red.
Linux. Núcleo del sistema operativo basado en la plataforma UNIX, se denomina a los
Sistemas que utilizan el kernel desarrollado por Linus Torvalds en la década de los
90s.
MD5. Algoritmo de cifrado en bloques, genera un resumen único de tamaño fijo de un
archivo.
Objetivo de seguridad. Declaración de la intención de contrarrestar las amenazas
identificadas y/o de cumplir las políticas e hipótesis de seguridad identificadas de la
organización
Penetración. Violación de un sistema de seguridad, lo que permite acceder a los
recursos supuestamente protegidos.
Política de seguridad basada en reglas. Política de seguridad basada en reglas
globales impuestas a todos los usuarios. Estas reglas suelen depender de una
comparación de la sensibilidad de los recursos a los que se accede con los atributos
correspondientes de los usuarios, de un grupo de usuarios o de entidades que actúan
en nombre de los usuarios
117
Bibliografía
SHA-1. Algoritmo hash diseñado por el National Institute for Standards and
Technology (NIST) y la National Security Agency (NSA) estadounidense para
aplicaciones gubernamentales que emplean el algoritmo de firma digital DSA.
Proporciona una salida de 160 bits y basa su diseño en la función MD4.
Scheduler. Panificador de CPU, modulo del sistema operativo que se encarga de la
modificación del estado de los procesos y la programación de la ejecución de acuerdo
a la prioridad y los tipos de ejecución que implementa
Shell. Capa de la estructura del sistema operativo Linux que permite la comunicación
entre las aplicaciones y el núcleo o kernel. Permite la realización de labores como la
modificación de la estructura de directorios, procesos o recursos, su interfaz con el
usuario es la línea de comandos, nivel desde el cual el usuario puede ejecutar
programas o comandos propios de cada distribución.
SSH cliente (Secure Shell client). Cliente de shell seguro. Equipo que obtiene
recursos de un servidor implementando un canal seguro, técnicas de cifrado y
autenticación entre ambas entidades. Se utiliza principalmente para realizar tareas
administrativas de manera remota en los servidores. Implementan técnicas de
autenticación por password, frase encriptada o esquemas de llave pública.
SSH servidor (Secure Shell client). Servidor de Shell seguro. Equipo que
proporciona recursos a un cliente remoto mediante un canal seguro. Actualmente se
utiliza la versión 2 del protocolo SSH.
UBUNTU. Distribución de Sistema Operativo Linux, cuenta con versiones para
escritorio, servidores y de tipo educativo. Se ejecuta con entornos gráficos KDE y
Gnome, debido a su facilidad de instalación y configuración de hardware, es
actualmente la versión más utilizada en el mundo.
118
Anexo 1. Manual de usuario.
ANEXO 1. MANUAL DE USUARIO.
La implementación de la metodología presentada en esta tesis fue denominada
DAYUSOL, el entorno donde se implemento la herramienta es una red de área local,
por lo que se omite la descripción de configuración de las interfaces de red y los
equipos de conmutación.
Instalación
El entorno debe cumplir con las recomendaciones de la implementación presentadas
en el capitulo 4, se requiere contar con un mínimo de 2 equipos.
•
Equipo 1. Servidor DAYUSOL:
Interfaz de red configurada para trabajo en red (IP fija)
Sistema operativo Linux
•
Desde la línea de comandos se puden agregar los paquetes necesarios en esta
etapa. Se requiere instalas el servidor Apache2, los módulos correspondientes
para la integración con PHP y MYSQL además de cliente de SSH, también se
puede utilizar cualquier gestor de paquetes disponible en Linux.
•
Equipo 2. Cliente: Cliente DAYUSOL:
Interfaz de red configurada para trabajo en red (IP fija)
Sistema operativo Linux.
En cada uno de los clientes que se desee ejecutar análisis de DAYUSOL se
debe instalar el servidor de SSH. Se puede realizar desde la línea de
comandos o desde el gestor de paquetes.
Se requiere la generación de una llave pública y una llave privada, en nuestro
caso se hace uso de una llave de tipo RSA, por lo que se procede a generarlas
Configuración de SSH
1. Se generan un par de claves de tipo RSA en el cliente (ssh-keygen)
2. El sistema solicita una frase que servirá de semilla para la generación de
llaves
• Esta frase será requerida siempre que se pida el uso de la llave, puesto
que es la base de la encriptación.
• Se puede dejar en blanco la frase, lo que generara una llave que no está
encriptada. El riesgo de no encriptar el elemento tiene como ventaja la
automatización de las conexiones.
3. El sistema entrega una llave pública y una llave privada en el directorio del
usuario para el que fueron creadas.
• id_rsa es la llave privada.
• id_rsa.pub es la llave pública.
119
Anexo 1. Manual de usuario.
• known_hosts son las claves públicas de los servidores conocidos.
4. Cambiar los permisos a estos archivos para evitar que sean modificados,
dejando la lectura y escritura sólo para el usuario.
5. Copiar la llave pública en el servidor que se va a conectar.
• La llave pública debe almacenarse en el directorio del cliente al que se
desea conectar. En nuestro caso el usuario es root, por lo que la llave
pública deberá quedar almacenada en /root/.ssh/ known_hosts
6. Almacenar la llave privada en un lugar del directorio con seguridad suficiente
para evitar su robo
Configuración del servidor DAYUSOL.
El servidor deberá crear automáticamente la estructura d directorio de cada uno de los
clientes, por lo que es necesario realizar una ejecución de análisis de manera manal.
Se puede copiar el archivo basicas.pol de políticas que viene con la aplicación y que
tiene las características de Tipwire para la determinación de reglas.
Es necesario modificar los parámetros del cliente en la sección correspondiente del
archivo básicas.pol. Se debe colocar la ruta donde será almacenada la estructura del
cliente y la ip asignada al equipo
#Archivo de Políticas del cliente DAYUSOL
# Crear definiciones
# Directorio de datos de los usuarios
DEFINE HOME /home/dayusol/usuarios
# IP o Hostname auditado
DEFINE TARGET 192.168.1.1
Realizada la configuración correspondiente al archivo de políticas, se procede a la
generación del usuario en la base de datos, se deben llenar campos muy básicos con
la información que describan al cliente de DAYUSOL y permitan el almacenamiento de
su información. Se puede utilizar en este punto una interfaz que facilite este trabajo, en
nuestro caso se utilizo Phpmyadmin, se muestra en la figura los campos necesarios
para agregar un nuevo cliente mediante este método.
Se puede hacer uso del programa clientebase.php, el cual puede ser empleado desde
la línea de comandos y deberá ser configurado con los parámetros necesarios para
generar al cliente tales como.
$clientemysql= “nombre”;
$passwdmysql=”passwd”;
$base =”DAYUSOL”
$clienteDAYUSOL= 20;
$ipcliente= 192.168.1.20;
$hostname = “Alex-lap-hp”;
$descripcion = “'Equipo portatil cliente de DAYUSOL”;
Desde la línea de comandos se deberá teclear:
php clientebase.php
120
Anexo 1. Manual de usuario.
Este procedimiento se repite para la inclusión de cada uno de los clientes de
DAYUSOL.
Por ultimo, se debe programar la ejecución de tareas mediante el demonio cron del
sistema, se debe generar en el directorio /etc/cron.d un archivo llamado DAYUSOL, el
cual contenga en cada línea una programación del análisis de cada uno de los
clientes. El contenido del archivo debe quedar como se muestra en el ejemplo:
Reportes de clientes de DAYUSOL
La herramienta solo requiere de un navegador web para desplegar la información, por
lo que se puede utilizar cualquiera de estos elementos que se tengan, se recomienda
restringir el acceso al equipo servidor DAYUSOL para el servidor web y solo sea
consultado de manera local.
En el navegador se debe colocar lo siguiente en el url:
http://localhost/dayusol/REPORTERED.php
Con lo que se desplegara la información disponible de todos los clientes actuales de
DAYUSOL. La información resumida de los clientes se presenta en una tabla en la
parte inferior de la pagina web, El vinculo de la pagina
nos permite mostrar la
información detallada del equipo cliente, enviándonos directamente a la pagina
REPORTEHOST que nos muestra la información de los elementos detectados por
DAYUSOL para un solo cliente.
REPORTE DE RED
121
Anexo 1. Manual de usuario.
REPORTE DE HOST
La pagina de reporte del host muestra un resumen de los elementos detectados
clasificada de acuerdo a la estructura y al los compendios. Las tablas situadas en la parte
inferior permiten mostrar los elementos agrupados de acuerdo al nivel de riesgo. Los
vinculos
,
y
nos permiten navegar a la pagina REPORTE DETALLADO
en la que se pueden apreciar los datos específicos de todas las intrusiones detectadas,
agrupadas en tablas por directorios. Cada vínculo muestra todos los elementos
detectados por nivel de riesgo.
122
Anexo 2. Políticas y código fuente.
ANEXO 2. POLITICAS Y CODIGO FUENTE.
GENERACION DE POLITICAS
La estructura de cada política por directorio es la siguiente:
ETIQUETA EN EL REPORTE
LABEL \n5 000 E UID-GUI Archivos con el bit uid or gid en el cliente pertenecen a root
Etiqueta para el reporte
Nivel de riesgo
Directorio
Tipo de elemento
Descripción del elemento
LABEL \n5
000
E. Estructura de archivo / H.Compendio
UID-GUI Archivos con el bit.
RUTA Y NOMBRE DE ARCHIVO DE ALMACENAMIENTO
CHECK ${ALTO}/estructura.ejecutables
Directorio dentro del cliente ${ALTO}
Nombre de archivo
/estructura.ejecutables
CRITERIO DE BUSQUEDA Y ACCION
/usr/bin/find / -xdev -perm +6111 -type f -printf "%m %n %u %g %s %p\n"
Comando
Directorio de búsqueda
Criterio de búsqueda
Acción para elementos
Encontrados
/usr/bin/find
/
-xdev -perm +6111 -type f
-printf "%m %n %u %g %s %p\n"
POLITICAS DE PRUEBA DE RECONOCIMIENTO.
La política que se muestra a continuación fue aplicada a los clientes de DAYUSOL durante las pruebas de
reconocimiento de modificaciones, se revisan todos los archivos del sistema excepto los del directorio
/proc. Esta política sirve para hacer las pruebas en el sistema cuando se modifican los archivos y para la
prueba de instalación de paquetes con APT.
Cliente Router
192.168.1.1
######################################################################
#Archivo de Políticas del cliente DAYUSOL
# Crear definiciones
# Directorio de datos de los usuarios
DEFINE HOME /home/dayusol/usuarios
# IP o Hostname auditado
DEFINE TARGET 192.168.1.1
#Riesgos de seguridad
#9
PAQUETES
#5
ALTO
#3
MEDIO
#1
BAJO
DEFINE ALTO
DEFINE MEDIO
DEFINE BAJO
ALTO
MEDIO
BAJO
123
Anexo 2. Políticas y código fuente.
#Define los directorios a examinar
#
000
/ uid o guid root
#
010
/bin
#
020
/boot
#
030
/etc
#
040
/usr
#
050
/dev
#
060
/lib
#
070
/mnt
#
080
/opt
#
090
/var
#
100
/home
#
110
/proc
#
120
/sbin
#
130
/media
#
140
/custom
#
150
/user
# Establecer variables personales
# Directorio de Usuario analizado
USE BASE
${HOME}/${TARGET}
# Definicion de ssh-key para la conexion
DEFINE CLIENT root@${TARGET}
# Conectarse al cliente mediante ssh
USE SSH
/usr/bin/ssh root@${TARGET} -q
##############################################
# Traer y revisar el md5sum y sus librerias
#
desde el cliente y revisarlas localmente.
##############################################
LOCAL mkdir -p tmp
# Crear directorio temporal
LOCAL scp ${CLIENT}:/usr/bin/md5sum tmp # Copiar md5sum
LOCAL scp ${CLIENT}:/lib/libc.so.6
tmp # y sus librerias
LOCAL scp ${CLIENT}:/lib/ld-linux.so.2 tmp
#####################################################
# Revisar la integridad de los archivos descargados
# Y si es satisfactoria usar md5sum del cliente
#####################################################
LABEL \nRevision de el programa md5sum y sus librerias
LOCAL CHECK local/md5sum /usr/bin/md5sum tmp/*
LOCAL rm -rf tmp
# Borrar los archivos temporales
########################################################
# Generar la estructura.
# Revisar todos los archivos ejecutables en el equipo cliente
########################################################
LABEL \n5 000 E UID-GUI Archivos con el bit uid or gid en el cliente pertenecen a root
CHECK ${ALTO}/estructura.ejecutables \
/usr/bin/find / -xdev -perm +6111 \( -user root -o -group root \) \
-type f -printf "%m %n %u %g %s %p\n"
LABEL \n5 000 H UID-GUI HASH Archivos con el bit uid or guid en el cliente pertenecen a root
CHECK ${ALTO}/HASH.ejecutables \
/usr/bin/find / -xdev -perm +6111 \( -user root -o -group root \) \
-type f -exec /usr/bin/md5sum {} \;
124
Anexo 2. Políticas y código fuente.
########################################################
# Revisar los archivos no ejecutables riesgo alto
#
########################################################
#Archivos en el directorio /bin
LABEL \n5 010 E Estructura de archivos en /bin
CHECK ALTO/estructura.bin \
/usr/bin/find /bin -type f -not -perm +111-printf "%m %n %u %g %s %p\n"
LABEL \n5 010 H Funcion de integridad en /bin
CHECK ALTO/HASH.bin \
/usr/bin/find /bin -type f -not -perm +111-exec /usr/bin/md5sum {} \;
#Archivos en el directorio /boot
LABEL \n5 020 E Estructura de archivos en /boot
CHECK ALTO/estructura.boot \
/usr/bin/find /boot -type f -not -perm +111-printf "%m %n %u %g %s %p\n"
LABEL \n5 020 H Funcion de integridad en /boot
CHECK ALTO/HASH.boot \
/usr/bin/find /boot -type f -not -perm +111-exec /usr/bin/md5sum {} \;
#Archivos en el directorio /etc
LABEL \n5 030 E Estructura de archivos en /etc
CHECK ALTO/estructura.etc \
/usr/bin/find /etc -type f -not -perm +111-printf "%m %n %u %g %s %p\n"
LABEL \n5 030 H Funcion de integridad en /etc
CHECK ALTO/HASH.etc \
/usr/bin/find /etc -type f -not -perm +111-exec /usr/bin/md5sum {} \;
# Archivos en el directorio /etc
LABEL \n5 031 E Estructura de archivos en /etc
CHECK ALTO/estructura.etc \
/usr/bin/find /etc -type f -not -perm +6111 \
-not -regex "/etc/\(adjtime\|mtab\|hosts\.deny\)" \
-printf "%m %n %u %g %s %p\n"
LABEL \n5 031 H Funcion de integridad en /etc
CHECK ALTO/md5.etc \
/usr/bin/find /etc -type f -not -perm +6111 \
-not -regex "/etc/\(adjtime\|mtab\|hosts\.deny\)" \
-exec /usr/bin/md5sum {} \;
#
#
#
#
#
#
#
#
#
#
#
#Archivos en el directorio /usr
LABEL \n5 040 E Estructura de archivos en /usr
CHECK ALTO/estructura.usr \
/usr/bin/find /usr -type f -not -perm +111-printf "%m %n %u %g %s %p\n"
LABEL \n5 040 H Funcion de integridad en /boot
CHECK ALTO/HASH.usr \
/usr/bin/find /usr -type f -not -perm +111-exec /usr/bin/md5sum {} \;
## Archivos en el directorio /usr/local
## Archivos en el directorio /usr/share
#
# Archivos en el directorio /usr/X11R6/lib
#LABEL \n5 041 E Estructura de archivos en /usr/X11R6/lib
#CHECK ALTO/estructura.usr.X11R6.lib \
#
/usr/bin/find /usr/X11R6/lib -type f \
-not -perm +6111 -printf "%m %n %u %g %s %p\n"
#LABEL \n5 041 H Funcion de integridad en /usr.X11R6/lib
#CHECK ALTO/md5.usr.X11R6.lib \
#
/usr/bin/find /usr/X11R6/lib -type f \
125
Anexo 2. Políticas y código fuente.
#
-not -perm +6111 -exec /usr/bin/md5sum {} \;
## Archivos en el directorio /usr/lib
#LABEL \n5 042 E Estructura de archivos en /usr/lib
#CHECK ALTO/estructura.usr.lib \
# /usr/bin/find /usr/lib -type f -not -perm +6111 \
#
-printf "%m %n %u %g %s %p\n"
#LABEL \n5 042 H Funcion de integridad en /usr/lib
#CHECK ALTO/md5.usr.lib \
# /usr/bin/find /usr/lib -type f -not -perm +6111 -exec /usr/bin/md5sum {} \;
## Archivos en el directorio /usr/sbin
# Archivos en el directorio /lib
LABEL \n5 060 E Estructura de archivos en /lib
CHECK MEDIO/estructura.lib \
/usr/bin/find /lib -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
LABEL \n5 060 H Funcion de integridad en /lib
CHECK MEDIO/HASH.lib \
/usr/bin/find /lib -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
#Archivos en el directorio /sbin
LABEL \n5 120 E Estructura de archivos en /sbin
CHECK MEDIO/estructura.sbin \
/usr/bin/find /sbin -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
LABEL \n5 120 H Funcion de integridad en /sbin
CHECK MEDIO/HASH.sbin \
/usr/bin/find /sbin -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
########################################################
# Revisar los archivos no ejecutables riesgo medio
#
########################################################
#Archivos en el directorio /dev
LABEL \n3 050 E Estructura de archivos en /dev
CHECK MEDIO/estructura.dev \
/usr/bin/find /dev -type f -not -perm +111-printf "%m %n %u %g %s %p\n"
LABEL \n3 050 H Funcion de integridad en /dev
CHECK MEDIO/HASH.dev \
/usr/bin/find /dev -type f -not -perm +111-exec /usr/bin/md5sum {} \;
#Archivos en el directorio /mnt
LABEL \n3 070 E Estructura de archivos en /mnt
CHECK MEDIO/estructura.mnt \
/usr/bin/find /mnt -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
LABEL \n3 070 H Funcion de integridad en /mnt
CHECK MEDIO/HASH.mnt \
/usr/bin/find /mnt -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
#Archivos en el directorio /opt
LABEL \n3 080 E Estructura de archivos en /opt
CHECK MEDIO/estructura.opt \
/usr/bin/find /opt -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
LABEL \n3 080 H Funcion de integridad en /opt
CHECK MEDIO/HASH.opt \
/usr/bin/find /opt -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
126
Anexo 2. Políticas y código fuente.
#Archivos en el directorio /media
LABEL \n3 130 E Estructura de archivos en /media
CHECK MEDIO/estructura.media \
/usr/bin/find /media -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
LABEL \n3 130 H Funcion de integridad en /media
CHECK MEDIO/HASH.media \
/usr/bin/find /media -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
########################################################
# Revisar los archivos no ejecutables riesgo bajo
#
########################################################
#Archivos en el directorio /var
LABEL \n1 090 E Estructura de archivos en /var
CHECK BAJO/estructura.var \
/usr/bin/find /var -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
LABEL \n1 090 H Funcion de integridad en /var
CHECK BAJO/HASH.var \
/usr/bin/find /var -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
#Archivos en el directorio /home
LABEL \n1 100 E Estructura de archivos en /home
CHECK BAJO/estructura.home \
/usr/bin/find /home -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
LABEL \n1 100 H Funcion de integridad en /home
CHECK BAJO/HASH.home \
/usr/bin/find /home -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
#Archivos en el directorio /proc
#LABEL \n1 110 E Estructura de archivos en /proc
#CHECK BAJO/estructura.proc \
# /usr/bin/find /proc -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
#LABEL \n1 110 H Funcion de integridad en /proc
#CHECK BAJO/HASH.proc \
# /usr/bin/find /proc -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
########################################################
# Revision de paquetes instalados
########################################################
LABEL \n9 REVISION DE PAQUETES INSTALADOS
CHECK PAQUETES/instalados \
/usr/bin/dpkg -l '*' | grep 'ii'
Cliente Miniton
192.168.1.10
######################################################################
#Archivo de Políticas del cliente DAYUSOL
# Crear definiciones
# Directorio de datos de los usuarios
DEFINE HOME /home/dayusol/usuarios
# IP o Hostname auditado
DEFINE TARGET 192.168.1.10
#Riesgos de seguridad
127
Anexo 2. Políticas y código fuente.
#9
#5
#3
#1
PAQUETES
ALTO
MEDIO
BAJO
DEFINE ALTO
DEFINE MEDIO
DEFINE BAJO
ALTO
MEDIO
BAJO
#Define los directorios a examinar
#
000
/ uid o guid root
#
010
/bin
#
020
/boot
#
030
/etc
#
040
/usr
#
050
/dev
#
060
/lib
#
070
/mnt
#
080
/opt
#
090
/var
#
100
/home
#
110
/proc
#
120
/sbin
#
130
/media
#
140
/custom
#
150
/user
# Establecer variables personales
# Directorio de Usuario analizado
USE BASE
${HOME}/${TARGET}
# Definicion de ssh-key para la conexion
DEFINE CLIENT root@${TARGET}
# Conectarse al cliente mediante ssh
USE SSH
/usr/bin/ssh root@${TARGET} -q
##############################################
# Traer y revisar el md5sum y sus librerias
#
desde el cliente y revisarlas localmente.
##############################################
LOCAL mkdir -p tmp
# Crear directorio temporal
LOCAL scp ${CLIENT}:/usr/bin/md5sum tmp # Copiar md5sum
LOCAL scp ${CLIENT}:/lib/libc.so.6
tmp # y sus librerias
LOCAL scp ${CLIENT}:/lib/ld-linux.so.2 tmp
#####################################################
# Revisar la integridad de los archivos descargados
# Y si es satisfactoria usar md5sum del cliente
#####################################################
LABEL \nRevision de el programa md5sum y sus librerias
LOCAL CHECK local/md5sum /usr/bin/md5sum tmp/*
LOCAL rm -rf tmp
# Borrar los archivos temporales
########################################################
# Generar la estructura.
# Revisar todos los archivos ejecutables en el equipo cliente
########################################################
LABEL \n5 000 E UID-GUI Archivos con el bit uid o gid en el cliente pertenecen a root
CHECK ${ALTO}/estructura.ejecutables \
/usr/bin/find / -xdev -perm +6111 \( -user root -o -group root \) \
128
Anexo 2. Políticas y código fuente.
-type f -printf "%m %n %u %g %s %p\n"
LABEL \n5 000 H UID-GUI HASH Archivos con el bit uid o guid en el cliente pertenecen a root
CHECK ${ALTO}/HASH.ejecutables \
/usr/bin/find / -xdev -perm +6111 \( -user root -o -group root \) \
-type f -exec /usr/bin/md5sum {} \;
########################################################
# Revisar los archivos no ejecutables riesgo alto
#
########################################################
#Archivos en el directorio /bin
LABEL \n5 010 E Estructura de archivos en /bin
CHECK ALTO/estructura.bin \
/usr/bin/find /bin -type f -not -perm +111-printf "%m %n %u %g %s %p\n"
LABEL \n5 010 H Funcion de integridad en /bin
CHECK ALTO/HASH.bin \
/usr/bin/find /bin -type f -not -perm +111-exec /usr/bin/md5sum {} \;
#Archivos en el directorio /boot
LABEL \n5 020 E Estructura de archivos en /boot
CHECK ALTO/estructura.boot \
/usr/bin/find /boot -type f -not -perm +111-printf "%m %n %u %g %s %p\n"
LABEL \n5 020 H Funcion de integridad en /boot
CHECK ALTO/HASH.boot \
/usr/bin/find /boot -type f -not -perm +111-exec /usr/bin/md5sum {} \;
#Archivos en el directorio /etc
LABEL \n5 030 E Estructura de archivos en /etc
CHECK ALTO/estructura.etc \
/usr/bin/find /etc -type f -not -perm +111-printf "%m %n %u %g %s %p\n"
LABEL \n5 030 H Funcion de integridad en /etc
CHECK ALTO/HASH.etc \
/usr/bin/find /etc -type f -not -perm +111-exec /usr/bin/md5sum {} \;
#
#
#
#
#
#
#
#
#
#
#
# Archivos en el directorio /etc
LABEL \n5 031 E Estructura de archivos en /etc
CHECK ALTO/estructura.etc \
/usr/bin/find /etc -type f -not -perm +6111 \
-not -regex "/etc/\(adjtime\|mtab\|hosts\.deny\)" \
-printf "%m %n %u %g %s %p\n"
LABEL \n5 031 H Funcion de integridad en /etc
CHECK ALTO/md5.etc \
/usr/bin/find /etc -type f -not -perm +6111 \
-not -regex "/etc/\(adjtime\|mtab\|hosts\.deny\)" \
-exec /usr/bin/md5sum {} \;
#Archivos en el directorio /usr
LABEL \n5 040 E Estructura de archivos en /usr
CHECK ALTO/estructura.usr \
/usr/bin/find /usr -type f -not -perm +111-printf "%m %n %u %g %s %p\n"
LABEL \n5 040 H Funcion de integridad en /boot
CHECK ALTO/HASH.usr \
/usr/bin/find /usr -type f -not -perm +111-exec /usr/bin/md5sum {} \;
## Archivos en el directorio /usr/local
## Archivos en el directorio /usr/share
# Archivos en el directorio /usr/X11R6/lib
129
Anexo 2. Políticas y código fuente.
#
#
#LABEL \n5 041 E Estructura de archivos en /usr/X11R6/lib
#CHECK ALTO/estructura.usr.X11R6.lib \
#
/usr/bin/find /usr/X11R6/lib -type f \
-not -perm +6111 -printf "%m %n %u %g %s %p\n"
#LABEL \n5 041 H Funcion de integridad en /usr.X11R6/lib
#CHECK ALTO/md5.usr.X11R6.lib \
#
/usr/bin/find /usr/X11R6/lib -type f \
-not -perm +6111 -exec /usr/bin/md5sum {} \;
## Archivos en el directorio /usr/lib
#LABEL \n5 042 E Estructura de archivos en /usr/lib
#CHECK ALTO/estructura.usr.lib \
# /usr/bin/find /usr/lib -type f -not -perm +6111 \
#
-printf "%m %n %u %g %s %p\n"
#LABEL \n5 042 H Funcion de integridad en /usr/lib
#CHECK ALTO/md5.usr.lib \
# /usr/bin/find /usr/lib -type f -not -perm +6111 -exec /usr/bin/md5sum {} \;
## Archivos en el directorio /usr/sbin
# Archivos en el directorio /lib
LABEL \n5 060 E Estructura de archivos en /lib
CHECK MEDIO/estructura.lib \
/usr/bin/find /lib -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
LABEL \n5 060 H Funcion de integridad en /lib
CHECK MEDIO/HASH.lib \
/usr/bin/find /lib -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
#Archivos en el directorio /sbin
LABEL \n5 120 E Estructura de archivos en /sbin
CHECK MEDIO/estructura.sbin \
/usr/bin/find /sbin -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
LABEL \n5 120 H Funcion de integridad en /sbin
CHECK MEDIO/HASH.sbin \
/usr/bin/find /sbin -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
########################################################
# Revisar los archivos no ejecutables riesgo medio
#
########################################################
#Archivos en el directorio /dev
LABEL \n3 050 E Estructura de archivos en /dev
CHECK MEDIO/estructura.dev \
/usr/bin/find /dev -type f -not -perm +111-printf "%m %n %u %g %s %p\n"
LABEL \n3 050 H Funcion de integridad en /dev
CHECK MEDIO/HASH.dev \
/usr/bin/find /dev -type f -not -perm +111-exec /usr/bin/md5sum {} \;
#Archivos en el directorio /mnt
LABEL \n3 070 E Estructura de archivos en /mnt
CHECK MEDIO/estructura.mnt \
/usr/bin/find /mnt -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
LABEL \n3 070 H Funcion de integridad en /mnt
CHECK MEDIO/HASH.mnt \
/usr/bin/find /mnt -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
#Archivos en el directorio /opt
LABEL \n3 080 E Estructura de archivos en /opt
130
Anexo 2. Políticas y código fuente.
CHECK MEDIO/estructura.opt \
/usr/bin/find /opt -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
LABEL \n3 080 H Funcion de integridad en /opt
CHECK MEDIO/HASH.opt \
/usr/bin/find /opt -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
#Archivos en el directorio /media
LABEL \n3 130 E Estructura de archivos en /media
CHECK MEDIO/estructura.media \
/usr/bin/find /media -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
LABEL \n3 130 H Funcion de integridad en /media
CHECK MEDIO/HASH.media \
/usr/bin/find /media -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
########################################################
# Revisar los archivos no ejecutables riesgo bajo
#
########################################################
#Archivos en el directorio /var
LABEL \n1 090 E Estructura de archivos en /var
CHECK BAJO/estructura.var \
/usr/bin/find /var -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
LABEL \n1 090 H Funcion de integridad en /var
CHECK BAJO/HASH.var \
/usr/bin/find /var -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
#Archivos en el directorio /home
LABEL \n1 100 E Estructura de archivos en /home
CHECK BAJO/estructura.home \
/usr/bin/find /home -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
LABEL \n1 100 H Funcion de integridad en /home
CHECK BAJO/HASH.home \
/usr/bin/find /home -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
#Archivos en el directorio /proc
#LABEL \n1 110 E Estructura de archivos en /proc
#CHECK BAJO/estructura.proc \
# /usr/bin/find /proc -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
#LABEL \n1 110 H Funcion de integridad en /proc
#CHECK BAJO/HASH.proc \
# /usr/bin/find /proc -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
########################################################
# Revision de paquetes instalados
########################################################
LABEL \n9 REVISION DE PAQUETES INSTALADOS
CHECK PAQUETES/instalados \
/usr/bin/dpkg -l '*' | grep 'ii'
Cliente Alexin
192.168.1.11
######################################################################
#Archivo de Políticas del cliente DAYUSOL
131
Anexo 2. Políticas y código fuente.
# Crear definiciones
# Directorio de datos de los usuarios
DEFINE HOME /home/dayusol/usuarios
# IP o Hostname auditado
DEFINE TARGET 192.168.1.11
#Riesgos de seguridad
#9
PAQUETES
#5
ALTO
#3
MEDIO
#1
BAJO
DEFINE ALTO
DEFINE MEDIO
DEFINE BAJO
ALTO
MEDIO
BAJO
#Define los directorios a examinar
#
000
/ uid o guid root
#
010
/bin
#
020
/boot
#
030
/etc
#
040
/usr
#
050
/dev
#
060
/lib
#
070
/mnt
#
080
/opt
#
090
/var
#
100
/home
#
110
/proc
#
120
/sbin
#
130
/media
#
140
/custom
#
150
/user
# Establecer variables personales
# Directorio de Usuario analizado
USE BASE
${HOME}/${TARGET}
# Definicion de ssh-key para la conexion
DEFINE CLIENT root@${TARGET}
# Conectarse al cliente mediante ssh
USE SSH
/usr/bin/ssh root@${TARGET} -q
##############################################
# Traer y revisar el md5sum y sus librerias
#
desde el cliente y revisarlas localmente.
##############################################
LOCAL mkdir -p tmp
# Crear directorio temporal
LOCAL scp ${CLIENT}:/usr/bin/md5sum tmp # Copiar md5sum
LOCAL scp ${CLIENT}:/lib/libc.so.6
tmp # y sus librerias
LOCAL scp ${CLIENT}:/lib/ld-linux.so.2 tmp
#####################################################
# Revisar la integridad de los archivos descargados
# Y si es satisfactoria usar md5sum del cliente
#####################################################
LABEL \nRevision de el programa md5sum y sus librerias
LOCAL CHECK local/md5sum /usr/bin/md5sum tmp/*
LOCAL rm -rf tmp
# Borrar los archivos temporales
########################################################
132
Anexo 2. Políticas y código fuente.
# Generar la estructura.
# Revisar todos los archivos ejecutables en el equipo cliente
########################################################
LABEL \n5 000 E UID-GUI Archivos con el bit uid o gid en el cliente pertenecen a root
CHECK ${ALTO}/estructura.ejecutables \
/usr/bin/find / -xdev -perm +6111 \( -user root -o -group root \) \
-type f -printf "%m %n %u %g %s %p\n"
LABEL \n5 000 H UID-GUI HASH Archivos con el bit uid o guid en el cliente pertenecen a root
CHECK ${ALTO}/HASH.ejecutables \
/usr/bin/find / -xdev -perm +6111 \( -user root -o -group root \) \
-type f -exec /usr/bin/md5sum {} \;
########################################################
# Revisar los archivos no ejecutables riesgo alto
#
########################################################
#Archivos en el directorio /bin
LABEL \n5 010 E Estructura de archivos en /bin
CHECK ALTO/estructura.bin \
/usr/bin/find /bin -type f -not -perm +111-printf "%m %n %u %g %s %p\n"
LABEL \n5 010 H Funcion de integridad en /bin
CHECK ALTO/HASH.bin \
/usr/bin/find /bin -type f -not -perm +111-exec /usr/bin/md5sum {} \;
#Archivos en el directorio /boot
LABEL \n5 020 E Estructura de archivos en /boot
CHECK ALTO/estructura.boot \
/usr/bin/find /boot -type f -not -perm +111-printf "%m %n %u %g %s %p\n"
LABEL \n5 020 H Funcion de integridad en /boot
CHECK ALTO/HASH.boot \
/usr/bin/find /boot -type f -not -perm +111-exec /usr/bin/md5sum {} \;
#Archivos en el directorio /etc
LABEL \n5 030 E Estructura de archivos en /etc
CHECK ALTO/estructura.etc \
/usr/bin/find /etc -type f -not -perm +111-printf "%m %n %u %g %s %p\n"
LABEL \n5 030 H Funcion de integridad en /etc
CHECK ALTO/HASH.etc \
/usr/bin/find /etc -type f -not -perm +111-exec /usr/bin/md5sum {} \;
#
#
#
#
#
#
#
#
#
#
#
# Archivos en el directorio /etc
LABEL \n5 031 E Estructura de archivos en /etc
CHECK ALTO/estructura.etc \
/usr/bin/find /etc -type f -not -perm +6111 \
-not -regex "/etc/\(adjtime\|mtab\|hosts\.deny\)" \
-printf "%m %n %u %g %s %p\n"
LABEL \n5 031 H Funcion de integridad en /etc
CHECK ALTO/md5.etc \
/usr/bin/find /etc -type f -not -perm +6111 \
-not -regex "/etc/\(adjtime\|mtab\|hosts\.deny\)" \
-exec /usr/bin/md5sum {} \;
#Archivos en el directorio /usr
LABEL \n5 040 E Estructura de archivos en /usr
CHECK ALTO/estructura.usr \
/usr/bin/find /usr -type f -not -perm +111-printf "%m %n %u %g %s %p\n"
LABEL \n5 040 H Funcion de integridad en /boot
CHECK ALTO/HASH.usr \
/usr/bin/find /usr -type f -not -perm +111-exec /usr/bin/md5sum {} \;
133
Anexo 2. Políticas y código fuente.
## Archivos en el directorio /usr/local
## Archivos en el directorio /usr/share
#
#
# Archivos en el directorio /usr/X11R6/lib
#LABEL \n5 041 E Estructura de archivos en /usr/X11R6/lib
#CHECK ALTO/estructura.usr.X11R6.lib \
#
/usr/bin/find /usr/X11R6/lib -type f \
-not -perm +6111 -printf "%m %n %u %g %s %p\n"
#LABEL \n5 041 H Funcion de integridad en /usr.X11R6/lib
#CHECK ALTO/md5.usr.X11R6.lib \
#
/usr/bin/find /usr/X11R6/lib -type f \
-not -perm +6111 -exec /usr/bin/md5sum {} \;
## Archivos en el directorio /usr/lib
#LABEL \n5 042 E Estructura de archivos en /usr/lib
#CHECK ALTO/estructura.usr.lib \
# /usr/bin/find /usr/lib -type f -not -perm +6111 \
#
-printf "%m %n %u %g %s %p\n"
#LABEL \n5 042 H Funcion de integridad en /usr/lib
#CHECK ALTO/md5.usr.lib \
# /usr/bin/find /usr/lib -type f -not -perm +6111 -exec /usr/bin/md5sum {} \;
## Archivos en el directorio /usr/sbin
# Archivos en el directorio /lib
LABEL \n5 060 E Estructura de archivos en /lib
CHECK MEDIO/estructura.lib \
/usr/bin/find /lib -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
LABEL \n5 060 H Funcion de integridad en /lib
CHECK MEDIO/HASH.lib \
/usr/bin/find /lib -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
#Archivos en el directorio /sbin
LABEL \n5 120 E Estructura de archivos en /sbin
CHECK MEDIO/estructura.sbin \
/usr/bin/find /sbin -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
LABEL \n5 120 H Funcion de integridad en /sbin
CHECK MEDIO/HASH.sbin \
/usr/bin/find /sbin -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
########################################################
# Revisar los archivos no ejecutables riesgo medio
#
########################################################
#Archivos en el directorio /dev
LABEL \n3 050 E Estructura de archivos en /dev
CHECK MEDIO/estructura.dev \
/usr/bin/find /dev -type f -not -perm +111-printf "%m %n %u %g %s %p\n"
LABEL \n3 050 H Funcion de integridad en /dev
CHECK MEDIO/HASH.dev \
/usr/bin/find /dev -type f -not -perm +111-exec /usr/bin/md5sum {} \;
#Archivos en el directorio /mnt
LABEL \n3 070 E Estructura de archivos en /mnt
CHECK MEDIO/estructura.mnt \
/usr/bin/find /mnt -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
LABEL \n3 070 H Funcion de integridad en /mnt
CHECK MEDIO/HASH.mnt \
134
Anexo 2. Políticas y código fuente.
/usr/bin/find /mnt -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
#Archivos en el directorio /opt
LABEL \n3 080 E Estructura de archivos en /opt
CHECK MEDIO/estructura.opt \
/usr/bin/find /opt -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
LABEL \n3 080 H Funcion de integridad en /opt
CHECK MEDIO/HASH.opt \
/usr/bin/find /opt -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
#Archivos en el directorio /media
LABEL \n3 130 E Estructura de archivos en /media
CHECK MEDIO/estructura.media \
/usr/bin/find /media -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
LABEL \n3 130 H Funcion de integridad en /media
CHECK MEDIO/HASH.media \
/usr/bin/find /media -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
########################################################
# Revisar los archivos no ejecutables riesgo bajo
#
########################################################
#Archivos en el directorio /var
LABEL \n1 090 E Estructura de archivos en /var
CHECK BAJO/estructura.var \
/usr/bin/find /var -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
LABEL \n1 090 H Funcion de integridad en /var
CHECK BAJO/HASH.var \
/usr/bin/find /var -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
#Archivos en el directorio /home
LABEL \n1 100 E Estructura de archivos en /home
CHECK BAJO/estructura.home \
/usr/bin/find /home -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
LABEL \n1 100 H Funcion de integridad en /home
CHECK BAJO/HASH.home \
/usr/bin/find /home -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
#Archivos en el directorio /proc
#LABEL \n1 110 E Estructura de archivos en /proc
#CHECK BAJO/estructura.proc \
# /usr/bin/find /proc -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
#LABEL \n1 110 H Funcion de integridad en /proc
#CHECK BAJO/HASH.proc \
# /usr/bin/find /proc -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
########################################################
# Revision de paquetes instalados
########################################################
LABEL \n9 REVISION DE PAQUETES INSTALADOS
CHECK PAQUETES/instalados \
/usr/bin/dpkg -l '*' | grep 'ii'
135
Anexo 2. Políticas y código fuente.
POLITICAS DE PRUEBA DE INTRUSIONES.
La política que se muestra a continuación fue aplicada a los clientes de DAYUSOL durante las pruebas de
intrusiones, se revisan todos los archivos de riesgo ALTO, las políticas para los deriesgo MEDIO y de
riesgo BAJO se describen en la tabla 4.9, no se implemento la revisión del directorio /proc. Esta política
sirve para hacer las pruebas en el sistema para detectar intrusiones. Se detalla la aplicada al sistema
Router pero la misma fue aplicada a todos los elementos clientes de DAYUSOL.
Cliente Router
192.168.1.1
######################################################################
#Archivo de Políticas del cliente DAYUSOL
# Crear definiciones
# Directorio de datos de los usuarios
DEFINE HOME /home/dayusol/usuarios
# IP o Hostname cliente DAYUSOL
DEFINE TARGET 192.168.1.1
#Riesgos de seguridad
#9
PAQUETES
#7
RESPALDO
#5
ALTO
#3
MEDIO
#1
BAJO
DEFINE ALTO
DEFINE MEDIO
DEFINE BAJO
ALTO
MEDIO
BAJO
#Define los directorios a examinar
#
000
/ uid o guid root
#
010
/bin
#
020
/boot
#
030
/etc
#
040
/usr
#
050
/dev
#
060
/lib
#
070
/mnt
#
080
/opt
#
090
/var
#
100
/home
#
110
/proc
#
120
/sbin
#
130
/media
#
140
/custom
#
150
/user
# Establecer variables personales
# Directorio de Usuario analizado
USE BASE
${HOME}/${TARGET}
# Definicion de ssh-key para la conexion
DEFINE CLIENT root@${TARGET}
# Conectarse al cliente mediante ssh
USE SSH
/usr/bin/ssh root@${TARGET} -q
##############################################
# Traer y revisar el md5sum y sus librerias
#
desde el cliente y revisarlas localmente.
##############################################
LOCAL mkdir -p tmp
# Crear directorio temporal
136
Anexo 2. Políticas y código fuente.
LOCAL scp ${CLIENT}:/usr/bin/md5sum tmp # Copiar md5sum
LOCAL scp ${CLIENT}:/lib/libc.so.6
tmp # y sus librerias
LOCAL scp ${CLIENT}:/lib/ld-linux.so.2 tmp
#####################################################
# Revisar la integridad de los archivos descargados
# Y si es satisfactoria usar md5sum del cliente
#####################################################
LABEL \nRevision de el programa md5sum y sus librerias
LOCAL CHECK local/md5sum /usr/bin/md5sum tmp/*
LOCAL rm -rf tmp
# Borrar los archivos temporales
########################################################
# Generar la estructura.
# Revisar todos los archivos ejecutables en el equipo cliente
########################################################
LABEL \n5 000 E UID-GUI Archivos con el bit uid or gid en el cliente pertenecen a root
CHECK ${ALTO}/estructura.ejecutables \
/usr/bin/find / -xdev -perm +6111 \( -user root -o -group root \) \
-type f -printf "%m %n %u %g %s %p\n"
LABEL \n5 000 H UID-GUI HASH Archivos con el bit uid or guid en el cliente pertenecen a root
CHECK ${ALTO}/HASH.ejecutables \
/usr/bin/find / -xdev -perm +6111 \( -user root -o -group root \) \
-type f -exec /usr/bin/md5sum {} \;
########################################################
# Revisar los archivos no ejecutables riesgo alto
#
########################################################
#Archivos en el directorio /bin
LABEL \n5 010 E Estructura de archivos en /bin
CHECK ALTO/estructura.bin \
/usr/bin/find /bin -type f -not -perm +111-printf "%m %n %u %g %s %p\n"
LABEL \n5 010 H Funcion de integridad en /bin
CHECK ALTO/HASH.bin \
/usr/bin/find /bin -type f -not -perm +111-exec /usr/bin/md5sum {} \;
#Archivos en el directorio /boot
LABEL \n5 020 E Estructura de archivos en /boot
CHECK ALTO/estructura.boot \
/usr/bin/find /boot -type f -not -perm +111-printf "%m %n %u %g %s %p\n"
LABEL \n5 020 H Funcion de integridad en /boot
CHECK ALTO/HASH.boot \
/usr/bin/find /boot -type f -not -perm +111-exec /usr/bin/md5sum {} \;
#Archivos en el directorio /etc
LABEL \n5 030 E Estructura de archivos en /etc
CHECK ALTO/estructura.etc \
/usr/bin/find /etc -type f -not -perm +111-printf "%m %n %u %g %s %p\n"
LABEL \n5 030 H Funcion de integridad en /etc
CHECK ALTO/HASH.etc \
/usr/bin/find /etc -type f -not -perm +111-exec /usr/bin/md5sum {} \;
#
#
#
#
# Archivos en el directorio /etc
LABEL \n5 031 E Estructura de archivos en /etc
CHECK ALTO/estructura.etc \
/usr/bin/find /etc -type f -not -perm +6111 \
-not -regex "/etc/\(adjtime\|mtab\|hosts\.deny\)" \
137
Anexo 2. Políticas y código fuente.
#
#
#
#
#
#
#
-printf "%m %n %u %g %s %p\n"
LABEL \n5 031 H Funcion de integridad en /etc
CHECK ALTO/md5.etc \
/usr/bin/find /etc -type f -not -perm +6111 \
-not -regex "/etc/\(adjtime\|mtab\|hosts\.deny\)" \
-exec /usr/bin/md5sum {} \;
#Archivos en el directorio /usr
LABEL \n5 040 E Estructura de archivos en /usr
CHECK ALTO/estructura.usr \
/usr/bin/find /usr -type f -perm 644 -printf "%m %n %u %g %s %p\n"
LABEL \n5 040 H Funcion de integridad en /boot
CHECK ALTO/HASH.usr \
/usr/bin/find /usr -type f -perm 644 -exec /usr/bin/md5sum {} \;
## Archivos en el directorio /usr/local
## Archivos en el directorio /usr/share
#
#
# Archivos en el directorio /usr/X11R6/lib
#LABEL \n5 041 E Estructura de archivos en /usr/X11R6/lib
#CHECK ALTO/estructura.usr.X11R6.lib \
#
/usr/bin/find /usr/X11R6/lib -type f \
-not -perm +6111 -printf "%m %n %u %g %s %p\n"
#LABEL \n5 041 H Funcion de integridad en /usr.X11R6/lib
#CHECK ALTO/md5.usr.X11R6.lib \
#
/usr/bin/find /usr/X11R6/lib -type f \
-not -perm +6111 -exec /usr/bin/md5sum {} \;
## Archivos en el directorio /usr/lib
#LABEL \n5 042 E Estructura de archivos en /usr/lib
#CHECK ALTO/estructura.usr.lib \
# /usr/bin/find /usr/lib -type f -not -perm +6111 \
#
-printf "%m %n %u %g %s %p\n"
#LABEL \n5 042 H Funcion de integridad en /usr/lib
#CHECK ALTO/md5.usr.lib \
# /usr/bin/find /usr/lib -type f -not -perm +6111 -exec /usr/bin/md5sum {} \;
## Archivos en el directorio /usr/sbin
# Archivos en el directorio /lib
LABEL \n5 060 E Estructura de archivos en /lib
CHECK MEDIO/estructura.lib \
/usr/bin/find /lib -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
LABEL \n5 060 H Funcion de integridad en /lib
CHECK MEDIO/HASH.lib \
/usr/bin/find /lib -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
#Archivos en el directorio /sbin
LABEL \n5 120 E Estructura de archivos en /sbin
CHECK MEDIO/estructura.sbin \
/usr/bin/find /sbin -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
LABEL \n5 120 H Funcion de integridad en /sbin
CHECK MEDIO/HASH.sbin \
/usr/bin/find /sbin -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
########################################################
# Revisar los archivos no ejecutables riesgo medio
#
########################################################
138
Anexo 2. Políticas y código fuente.
#Archivos en el directorio /dev
LABEL \n3 050 E Estructura de archivos en /dev
CHECK MEDIO/estructura.dev \
/usr/bin/find /dev -type f -not -perm +111-printf "%m %n %u %g %s %p\n"
LABEL \n3 050 H Funcion de integridad en /dev
CHECK MEDIO/HASH.dev \
/usr/bin/find /dev -type f -not -perm +111-exec /usr/bin/md5sum {} \;
#Archivos en el directorio /mnt
LABEL \n3 070 E Estructura de archivos en /mnt
CHECK MEDIO/estructura.mnt \
/usr/bin/find /mnt -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
LABEL \n3 070 H Funcion de integridad en /mnt
CHECK MEDIO/HASH.mnt \
/usr/bin/find /mnt -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
#Archivos en el directorio /opt
LABEL \n3 080 E Estructura de archivos en /opt
CHECK MEDIO/estructura.opt \
/usr/bin/find /opt -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
LABEL \n3 080 H Funcion de integridad en /opt
CHECK MEDIO/HASH.opt \
/usr/bin/find /opt -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
#Archivos en el directorio /media
LABEL \n3 130 E Estructura de archivos en /media
CHECK MEDIO/estructura.media \
/usr/bin/find /media -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
LABEL \n3 130 H Funcion de integridad en /media
CHECK MEDIO/HASH.media \
/usr/bin/find /media -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
########################################################
# Revisar los archivos no ejecutables riesgo bajo
#
########################################################
#Archivos en el directorio /var
LABEL \n1 091 E Estructura de archivos en /var/log
CHECK BAJO/estructura.var.log \
/usr/bin/find /var/log -type f -not -perm +037 -printf "%m %n %u %g %s %p\n"
LABEL \n1 091 H Funcion de integridad en /var/log
CHECK BAJO/HASH.var.log \
/usr/bin/find /var/log -type f -not -perm +037 -exec /usr/bin/md5sum {} \;
##SERVIDOR APACHE EN WWW
LABEL \n1 092 E Estructura de archivos en /var/www
CHECK BAJO/estructura.var.www \
/usr/bin/find /var/www -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
LABEL \n1 092 H Funcion de integridad en /var/www
CHECK BAJO/HASH.var.www \
/usr/bin/find /var/www -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
#Archivos en el directorio /home
LABEL \n1 101 E Estructura de archivos en /home
CHECK BAJO/estructura.home.ruteador \
139
Anexo 2. Políticas y código fuente.
/usr/bin/find /home/ruteador -type f -not -perm +111-perm +022, -user ruteador -printf "%m %n %u %g
%s %p\n"
LABEL \n1 101 H Funcion de integridad en /home/ruteador
CHECK BAJO/HASH.home.ruteador \
/usr/bin/find /home/ruteador -type f -not -perm +111 -perm +022, -user ruteador -exec /usr/bin/md5sum
{} \;
#Archivos en el directorio /proc
#LABEL \n1 110 E Estructura de archivos en /proc
#CHECK BAJO/estructura.proc \
# /usr/bin/find /proc -type f -not -perm +111 -printf "%m %n %u %g %s %p\n"
#LABEL \n1 110 H Funcion de integridad en /proc
#CHECK BAJO/HASH.proc \
# /usr/bin/find /proc -type f -not -perm +111 -exec /usr/bin/md5sum {} \;
########################################################
# Revision de paquetes instalados
########################################################
LABEL \n9 REVISION DE PAQUETES INSTALADOS
CHECK PAQUETES/instalados \
/usr/bin/dpkg -l '*' | grep 'ii'
############################################################
#
#Mover el archivo de reporte
#
###########################################################
#LABEL \n
#CHECK REPORTES/usuarios hostname
LOCAL mv ${HOME}/${TARGET}/report ${HOME}/${TARGET}/REPORTES/reporte
LOCAL chmod -R 750 ${HOME}/${TARGET}/
LOCAL php ${HOME}/${TARGET}/REPORTES/basedayusol.php
############################
#Realizar respaldos de clientes
#############################
#
#Agregar los directorios a continuacion de la linea de respaldos
LABEL \n7 700 R RESPALDO DE INFORMACION
CHECK RESPALDOS/registrados
tar -zcf /tmp/respaldo.tar.gz /etc /bin /boot
LOCAL scp ${CLIENT}:/tmp/respaldo.tar.gz ${HOME}/${TARGET}/RESPALDOS/respaldo.tar.gz
rm /tmp/respaldo.tar.gz
140
Anexo 2. Políticas y código fuente.
Ejemplo de política de tripwire para Linux [12]
# /proc changes a lot, so we'll grab what we can
=/proc E+pugi
# Capture these directories
/tmp @@DIR
/mnt @@DIR
/mnt/cdrom @@DIR
/mnt/floppy @@DIR
/mnt/disk @@DIR
/net @@DIR
/misc @@DIR
# root's home - won't change like /home /root @@READ
# critical boot resources including kernel (/boot/vmlinuz)
/boot @@READ
# Critical configuration directories and files
# We capture most things with CONFIG & modify
# the resto
#
/etc @@CONFIG
/etc/inetd.conf @@READ
/etc/rc.d @@READ
/etc/exports @@READ
/etc/mtab @@LOGS
/etc/motd @@LOGS
/etc/group @@READ
/etc/passwd @@LOGS
/etc/shadow @@LOGS
/etc/security @@READ
/etc/pam.d @@READ
/etc/fstab @@READ
/etc/cron.d @@READ
/etc/cron.daily @@READ
/etc/cron.hourly @@READ
/etc/cron.monthly @@READ
/etc/cron.weekly @@READ
/etc/ftpusers @@READ
/etc/hosts @@READ
/etc/hosts.allow @@READ
/etc/hosts.deny @@READ
/etc/login.defs @@READ
/etc/logrotate.conf @@READ
/etc/logrotate.d @@READ
/etc/securetty @@READ
/etc/sendmail.cf @@READ
/etc/ssh @@READ
/etc/sysconfig @@READ
# truncate home - lots of changes in the directory =/home @@READ
# var tree =
/var/spool @@LOGS
/var/log @@LOGS
/var/spool/cron @@LOGS
/var/spool/mqueue @@LOGS
/var/spool/mail @LOGS
# critical binaries
/sbin @@READ
/bin @@READ
/lib @@READ
/usr @@READ
# device files
/dev @@DEV
/usr @@READ
141
Anexo 2. Políticas y código fuente.
CODIGO FUENTE
______________________________________________________________
ACTUALIZA.php
<?php
/*
Autor: Manuel Alejandro Soto Ramos
Fecha: 12-08-07
Centro de Investigación en Computación IPN
Descripción: Programa que abre el archivo del reporte del Cliente de DAYUSOL
Actualiza la base de datos insertando los valores de fecha, archivos agregado, editados,
Modificados y eliminados. Inserta los datos de la estructura y la integridad.
*/
// Niveles de fiabilidad
FIABLE = 1;
FIABILIDAD-MEDIA=2;
FIABILIDAD-BAJA =3;
NO-FIABLE =4;
/* Abrir el archivo de reporte del usuario y cargarlo en una variable desplegarlo línea por línea.
*/
// Abrir archivo del reporte
// REVISAR EL PATH Y LOS PERMISOS. DEBE SER 755 Y UN USUARIO DISTINTO DE ROOT
$fh =fopen('/var/www/reporteador/reporte','r') or die("no se pudo_:$php_errormsg");
$numerohost=10;
while (!feof($fh)){
// separar el texto del archivo en lineas
$line = fgets($fh);
// Eliminar los espacios en blanco del principio y final de cada linea
$lineas= trim ($line);
// Separar las palabras de cada linea cada espacio en blanco
// para obtener una matriz de columnas por cada linea
$palabras = split(" ", $lineas);
// Imprimir cada una de las palabras del renglon separadas por un tabulador
if ($palabras !=""){
$casilla =0;
// echo "<tr>";
foreach ($palabras as $actual) {
$actual2= trim ($actual);
if ($actual2 !=" ") {
/* Generar un arreglo multidimensional con
los valores de cada elemento
el procesado contiene el archivo reporte
en un arreglo sin espacios*/
if ($actual2 == "<"){
$procesado[$renglon][$casilla]= "agregado";
}
else if ($actual2 == ">"){
$procesado[$renglon][$casilla]= "eliminado";
}
else{
$procesado[$renglon][$casilla]= (string) $actual2 ;
}
$casilla = $casilla +1 ;
}
}
$renglon= $renglon +1;
142
Anexo 2. Políticas y código fuente.
}
}
/* Cerrar el archivo de reporte de stealth */
fclose($fh);
//contador de numero de lineas de la matriz $procesado
$numeros = count($procesado);
/* Decision del tipo de accion para ejecutar
de acuerdo al primer campo del renglon
de la matriz $procesado
*/
for ($revisados =0; $revisados <= $numeros; $revisados++){
// Asignar el valor del arreglo al primer campo//
$accion= (string) $procesado[$revisados][0];
echo $accion;
switch ( $accion ){
case "STEALTH" :
include 'conexion.php';
echo " Agregar entrada a base de datos con la fecha";
$meses=$procesado[$revisados][5];
switch ( $meses ){
case "Jan" :
$mesnumero ="1";
break;
case "Feb" :
$mesnumero ="2";
break;
case "Mar" :
$mesnumero ="3";
break;
case "Apr" :
$mesnumero ="4";
break;
case "May" :
$mesnumero ="5";
break;
case "Jun" :
$mesnumero ="6";
break;
case "Jul" :
$mesnumero ="7";
break;
case "Aug" :
$mesnumero ="8";
break;
case "Sep" :
$mesnumero ="9";
break;
case "Oct" :
$mesnumero ="10";
break;
case "Nov" :
$mesnumero ="11";
143
Anexo 2. Políticas y código fuente.
break;
case "Dec" :
$mesnumero ="12";
break;
}
$dias=$procesado[$revisados][6];
$horas= $procesado[$revisados][7];
$alos=$procesado[$revisados][8];
$fechaanalisis = $alos . '-' . $mesnumero . '-' . $dias;
settype($fechaanalisis, "string");
echo $fechaanalisis;
echo $horas;
$sql = "INSERT INTO `ESTADOHOST`
(`CLIENTES_IDHOST`, `FIABILIDAD_TIPO`, `ALTOS`, `BAJOS` ,
`MEDIOS`, `TOTAL`, `FECHAULTIMO`, `HORAULTIMO`)
VALUES
('10','','','','','','$fechaanalisis','$horas' )";
mysql_query($sql);
echo "<br>";
break;
case "5" :
/* OBTENER EL NIVEL DE RIESGO, CLAVE DEL DIRECTORIO
SI ES ESTRUCTURA O HASH */
$riesgo= $procesado[$revisados][0];
$ClaveDir=$procesado[$revisados][1];
$Elemento= $procesado[$revisados][2];
$revisados = $revisados +1;
$cice= $procesado[$revisados][0];
echo $riesgo. $ClaveDir. $Elemento. $revisados. $cice ;
while ( $cice == "ADDED:" || $cice == "REMOVED:" || $cice == "MODIFIED:"){
if ($Elemento == "E"){
$acciones = $procesado[$revisados][0];
switch ($acciones){
case "ADDED:" :
$metodo = 1;
break;
case "REMOVED:" :
$metodo = 2;
break;
case "MODIFIED:" :
$metodo =4;
$revisados = $revisados +1;
$permisos=$procesado[$revisados][1];
$ligas=$procesado[$revisados][2];
$usuario =$procesado[$revisados][3];
$grupo =$procesado[$revisados][4];
$tamano =$procesado[$revisados][5];
$nombreyruta =$procesado[$revisados][6];
$insertando = "INSERT INTO `ESTRUCTURA`
(`NOMBREE`, `CLIENTES_IDHOST`, `ESTADOS_TIPO`,
`MODIFICACION`, `USUARIO`, `GRUPO`, `TAMANO`, `PERMISOS`,
`ENLACES`, `NIVELRIESGO`, `FECHACAMBIO`, `HORA`,
`CLAVEDIRECT`)
VALUES ('$nombreyruta', '$numerohost', '1', '$metodo', '$usuario',
'$grupo', '$tamano', '$permisos', '$ligas', '$riesgo',
'$fechaanalisis','$horas', '$ClaveDir')";
144
Anexo 2. Políticas y código fuente.
mysql_query($insertando);
echo $revisados . "" . "############" . $metodo ."<br>" ;
echo $permisos;
echo $ligas;
echo $usuario;
echo $grupo;
echo $tamano;
echo $nombreyruta;
$metodo=3;
break;
}
$revisados = $revisados +1;
$permisos=$procesado[$revisados][1];
$ligas=$procesado[$revisados][2];
$usuario =$procesado[$revisados][3];
$grupo =$procesado[$revisados][4];
$tamano =$procesado[$revisados][5];
$nombreyruta =$procesado[$revisados][6];
$insertando = "INSERT INTO `ESTRUCTURA`
(`NOMBREE`, `CLIENTES_IDHOST`, `ESTADOS_TIPO`,
`MODIFICACION`, `USUARIO`, `GRUPO`, `TAMANO`, `PERMISOS`,
`ENLACES`, `NIVELRIESGO`, `FECHACAMBIO`, `HORA`,
`CLAVEDIRECT`)
VALUES ('$nombreyruta', '$numerohost', '1', '$metodo', '$usuario',
'$grupo', '$tamano', '$permisos', '$ligas', '$riesgo',
'$fechaanalisis','$horas', '$ClaveDir')";
mysql_query($insertando);
echo $revisados . "" . $metodo ."<br>" ;
echo $permisos;
echo $ligas;
echo $usuario;
echo $grupo;
echo $tamano;
echo $nombreyruta;
}
else if ($Elemento == "H"){
$acciones = $procesado[$revisados][0];
switch ($acciones){
case "ADDED:" :
$metodo = 1;
break;
case "REMOVED:" :
$metodo = 2;
break;
case "MODIFIED:" :
$metodo = 4;
$revisados = $revisados +1;
$sumatoria=$procesado[$revisados][1];
$nombrearchivo=$procesado[$revisados][3];
$insertar = "INSERT INTO `COMPENDIOS`
(`NOMBREHAS`, `CLIENTES_IDHOST`, `ESTADOS_TIPO`,
`MODIFICACION`, `COMPENDIO`, `CLAVEDIRECT`,
`RIESGO`, `FECHA`, `HORA`)
VALUES ('$nombrearchivo', '$numerohost', '1', '$metodo',
'$sumatoria', '$ClaveDir','$riesgo', '$fechaanalisis','$horas')";
145
Anexo 2. Políticas y código fuente.
mysql_query($insertar);
echo $revisados . "" . $metodo ."<br>" ;
echo $nombrearchivo;
echo $sumatoria;
$metodo=3;
break;
}
$revisados = $revisados +1;
$sumatoria=$procesado[$revisados][1];
$nombrearchivo=$procesado[$revisados][3];
$insertar = "INSERT INTO `COMPENDIOS`
(`NOMBREHAS`, `CLIENTES_IDHOST`, `ESTADOS_TIPO`,
`MODIFICACION`, `COMPENDIO`, `CLAVEDIRECT`, `RIESGO`,
`FECHA`, `HORA`)
VALUES ('$nombrearchivo', '$numerohost', '1', '$metodo', '$sumatoria',
'$ClaveDir','$riesgo', '$fechaanalisis','$horas')";
mysql_query($insertar);
echo $revisados . "" . $metodo ."<br>" ;
echo $nombrearchivo;
echo $sumatoria;
}
$revisados = $revisados +1;
$cice= $procesado[$revisados][0];
}
break;
case "3" :
/* OBTENER EL NIVEL DE RIESGO, CLAVE DEL DIRECTORIO
SI ES ESTRUCTURA O HASH */
$riesgo= $procesado[$revisados][0];
$ClaveDir=$procesado[$revisados][1];
$Elemento= $procesado[$revisados][2];
$revisados = $revisados +1;
$cice= $procesado[$revisados][0];
while ( $cice == "ADDED:" || $cice == "REMOVED:" || $cice == "MODIFIED:"){
if ($Elemento == "E"){
$acciones = $procesado[$revisados][0];
switch ($acciones){
case "ADDED:" :
$metodo = 1;
break;
case "REMOVED:" :
$metodo = 2;
break;
case "MODIFIED:" :
$metodo =4;
$revisados = $revisados +1;
$permisos=$procesado[$revisados][1];
$ligas=$procesado[$revisados][2];
$usuario =$procesado[$revisados][3];
$grupo =$procesado[$revisados][4];
$tamano =$procesado[$revisados][5];
$nombreyruta =$procesado[$revisados][6];
$insertando = "INSERT INTO `ESTRUCTURA`
146
Anexo 2. Políticas y código fuente.
(`NOMBREE`, `CLIENTES_IDHOST`, `ESTADOS_TIPO`,
`MODIFICACION`, `USUARIO`, `GRUPO`, `TAMANO`,
`PERMISOS`, `ENLACES`, `NIVELRIESGO`,
`FECHACAMBIO`, `HORA`, `CLAVEDIRECT`)
VALUES ('$nombreyruta', '$numerohost', '1', '$metodo',
'$usuario', '$grupo', '$tamano', '$permisos', '$ligas', '$riesgo',
'$fechaanalisis','$horas', '$ClaveDir')";
mysql_query($insertando);
$metodo=3;
break;
}
$revisados = $revisados +1;
$permisos=$procesado[$revisados][1];
$ligas=$procesado[$revisados][2];
$usuario =$procesado[$revisados][3];
$grupo =$procesado[$revisados][4];
$tamano =$procesado[$revisados][5];
$nombreyruta =$procesado[$revisados][6];
$insertando = "INSERT INTO `ESTRUCTURA`
(`NOMBREE`, `CLIENTES_IDHOST`, `ESTADOS_TIPO`,
`MODIFICACION`, `USUARIO`, `GRUPO`, `TAMANO`,
`PERMISOS`, `ENLACES`, `NIVELRIESGO`,
`FECHACAMBIO`, `HORA`, `CLAVEDIRECT`)
VALUES ('$nombreyruta', '$numerohost', '1', '$metodo',
'$usuario', '$grupo', '$tamano', '$permisos', '$ligas', '$riesgo',
'$fechaanalisis','$horas', '$ClaveDir')";
mysql_query($insertando);
}
else if ($Elemento == "H"){
$acciones = $procesado[$revisados][0];
switch ($acciones){
case "ADDED:" :
$metodo = 1;
break;
case "REMOVED:" :
$metodo = 2;
break;
case "MODIFIED:" :
$metodo = 4;
$revisados = $revisados +1;
$sumatoria=$procesado[$revisados][1];
$nombrearchivo=$procesado[$revisados][3];
$insertar = "INSERT INTO `COMPENDIOS`
(`NOMBREHAS`, `CLIENTES_IDHOST`, `ESTADOS_TIPO`,
`MODIFICACION`, `COMPENDIO`, `CLAVEDIRECT`,
`RIESGO`, `FECHA`, `HORA`)
VALUES ('$nombrearchivo', '$numerohost', '1', '$metodo',
'$sumatoria', '$ClaveDir','$riesgo', '$fechaanalisis','$horas')";
mysql_query($insertar);
$metodo=3;
break;
}
$revisados = $revisados +1;
$sumatoria=$procesado[$revisados][1];
$nombrearchivo=$procesado[$revisados][3];
147
Anexo 2. Políticas y código fuente.
$insertar = "INSERT INTO `COMPENDIOS`
(`NOMBREHAS`, `CLIENTES_IDHOST`, `ESTADOS_TIPO`,
`MODIFICACION`, `COMPENDIO`, `CLAVEDIRECT`, `RIESGO`,
`FECHA`, `HORA`)
VALUES ('$nombrearchivo', '$numerohost', '1', '$metodo', '$sumatoria',
'$ClaveDir','$riesgo', '$fechaanalisis','$horas')";
mysql_query($insertar);
}
$revisados = $revisados +1;
$cice= $procesado[$revisados][0];
}
break;
case "1" :
/* OBTENER EL NIVEL DE RIESGO, CLAVE DEL DIRECTORIO
SI ES ESTRUCTURA O HASH */
$riesgo= $procesado[$revisados][0];
$ClaveDir=$procesado[$revisados][1];
$Elemento= $procesado[$revisados][2];
$revisados = $revisados +1;
$cice= $procesado[$revisados][0];
echo $riesgo. $ClaveDir. $Elemento. $revisados. $cice ;
while ( $cice == "ADDED:" || $cice == "REMOVED:" || $cice == "MODIFIED:"){
if ($Elemento == "E"){
$acciones = $procesado[$revisados][0];
switch ($acciones){
case "ADDED:" :
$metodo = 1;
break;
case "REMOVED:" :
$metodo = 2;
break;
case "MODIFIED:" :
$metodo =4;
$revisados = $revisados +1;
$permisos=$procesado[$revisados][1];
$ligas=$procesado[$revisados][2];
$usuario =$procesado[$revisados][3];
$grupo =$procesado[$revisados][4];
$tamano =$procesado[$revisados][5];
$nombreyruta =$procesado[$revisados][6];
$insertando = "INSERT INTO `ESTRUCTURA`
(`NOMBREE`, `CLIENTES_IDHOST`, `ESTADOS_TIPO`,
`MODIFICACION`, `USUARIO`, `GRUPO`, `TAMANO`,
`PERMISOS`, `ENLACES`, `NIVELRIESGO`,
`FECHACAMBIO`, `HORA`, `CLAVEDIRECT`)
VALUES ('$nombreyruta', '$numerohost', '1', '$metodo',
'$usuario', '$grupo', '$tamano', '$permisos', '$ligas', '$riesgo',
'$fechaanalisis','$horas', '$ClaveDir')";
mysql_query($insertando);
$metodo=3;
break;
}
$revisados = $revisados +1;
148
Anexo 2. Políticas y código fuente.
$permisos=$procesado[$revisados][1];
$ligas=$procesado[$revisados][2];
$usuario =$procesado[$revisados][3];
$grupo =$procesado[$revisados][4];
$tamano =$procesado[$revisados][5];
$nombreyruta =$procesado[$revisados][6];
$insertando = "INSERT INTO `ESTRUCTURA`
(`NOMBREE`, `CLIENTES_IDHOST`, `ESTADOS_TIPO`,
`MODIFICACION`, `USUARIO`, `GRUPO`, `TAMANO`, `PERMISOS`,
`ENLACES`, `NIVELRIESGO`, `FECHACAMBIO`, `HORA`,
`CLAVEDIRECT`)
VALUES ('$nombreyruta', '$numerohost', '1', '$metodo', '$usuario',
'$grupo', '$tamano', '$permisos', '$ligas', '$riesgo',
'$fechaanalisis','$horas', '$ClaveDir')";
mysql_query($insertando);
}
else if ($Elemento == "H"){
$acciones = $procesado[$revisados][0];
switch ($acciones){
case "ADDED:" :
$metodo = 1;
break;
case "REMOVED:" :
$metodo = 2;
break;
case "MODIFIED:" :
$metodo = 4;
$revisados = $revisados +1;
$sumatoria=$procesado[$revisados][1];
$nombrearchivo=$procesado[$revisados][3];
$insertar = "INSERT INTO `COMPENDIOS`
(`NOMBREHAS`, `CLIENTES_IDHOST`, `ESTADOS_TIPO`,
`MODIFICACION`, `COMPENDIO`, `CLAVEDIRECT`,
`RIESGO`, `FECHA`, `HORA`)
VALUES ('$nombrearchivo', '$numerohost', '1', '$metodo',
'$sumatoria', '$ClaveDir','$riesgo', '$fechaanalisis','$horas')";
mysql_query($insertar);
$metodo=3;
break;
}
$revisados = $revisados +1;
$sumatoria=$procesado[$revisados][1];
$nombrearchivo=$procesado[$revisados][3];
$insertar = "INSERT INTO `COMPENDIOS`
(`NOMBREHAS`, `CLIENTES_IDHOST`, `ESTADOS_TIPO`,
`MODIFICACION`, `COMPENDIO`, `CLAVEDIRECT`, `RIESGO`,
`FECHA`, `HORA`)
VALUES ('$nombrearchivo', '$numerohost', '1', '$metodo', '$sumatoria',
'$ClaveDir','$riesgo', '$fechaanalisis','$horas')";
mysql_query($insertar);
}
$revisados = $revisados +1;
$cice= $procesado[$revisados][0];
}
break;
149
Anexo 2. Políticas y código fuente.
case "9":
//OBTENER EL NIVEL DE RIESGO, CLAVE DEL DIRECTORIO
$riesgo= $procesado[$revisados][0];
$ClaveDir=$procesado[$revisados][1];
$Elemento= $procesado[$revisados][2];
$revisados = $revisados +1;
$cice= $procesado[$revisados][0];
echo $riesgo." ". $ClaveDir." ". $Elemento." ". $revisados." ". $cice ;
while ( $cice == "ADDED:" || $cice == "REMOVED:" || $cice == "MODIFIED:"){
if ($Elemento == "P"){
$acciones = $procesado[$revisados][0];
switch ($acciones){
case "ADDED:" :
$metodo = 1;
break;
case "REMOVED:" :
$metodo = 2;
break;
case "MODIFIED:" :
$metodo = 4;
$revisados = $revisados +1;
unset ($PAQUETES);
for ($paquetin =0; $paquetin <= 100 ; $paquetin++){
$simple= trim ($procesado[$revisados][$paquetin]);
//settype($simple, "string");
if ($simple == ""){
}
else {
$PAQUETES[]=$procesado[$revisados][$paquetin];
}
}
$nombrepaquete=$PAQUETES[2];
$verpaquete=$PAQUETES[3];
$descripcion1=$PAQUETES[4] . " " . $PAQUETES[5] ." "
.$PAQUETES[6] . " " .$PAQUETES[7] . " " .$PAQUETES[8];
settype($descripcion1, "string");
$estadopaquete=$PAQUETES[1];
$estadopaquete= trim ($estadopaquete);
if ($estadopaquete == "ii"){
$edopaquete =1;
}
else {
$edopaquete =2;
}
$insertando = "INSERT INTO `PAQUETES`
(`PNOMBRE`, `CLIENTES_IDHOST`, `ESTADOPAQ_TIPO`,
`MODIFICACION`, `DESCRIPCION`, `TIPO`, `VERSION`,
`RIESGO`, `FECHA`, `HORA`)
VALUES ('$nombrepaquete', '$numerohost', '$edopaquete',
'$metodo', '$descripcion1',
'$tipopaquete','$verpaquete','$riesgo',
'$fechaanalisis','$horas')";
150
Anexo 2. Políticas y código fuente.
mysql_query($insertando);
$metodo =3;
break;
}
$tipopaquete=$procesado[$revisados][1];
$revisados = $revisados +1;
unset ($PAQUETES);
for ($paquetin =0; $paquetin <= 100 ; $paquetin++){
$simple= trim ($procesado[$revisados][$paquetin]);
//settype($simple, "string");
if ($simple == ""){
}
else {
$PAQUETES[]=$procesado[$revisados][$paquetin];
}
}
$nombrepaquete=$PAQUETES[2];
$verpaquete=$PAQUETES[3];
$descripcion1=$PAQUETES[4] ." " . $PAQUETES[5] . " "
.$PAQUETES[6]." " .$PAQUETES[7]." " .$PAQUETES[8];
settype($descripcion1, "string");
$estadopaquete=$PAQUETES[1];
$estadopaquete= trim ($estadopaquete);
if ($estadopaquete == "ii"){
$edopaquete =1;
}
else {
$edopaquete =2;
}
$insertando = "INSERT INTO `PAQUETES`
(`PNOMBRE`, `CLIENTES_IDHOST`, `ESTADOPAQ_TIPO`,
`MODIFICACION`, `DESCRIPCION`, `TIPO`, `VERSION`,
`RIESGO`, `FECHA`, `HORA`)
VALUES ('$nombrepaquete', '$numerohost', '$edopaquete',
'$metodo', '$descripcion1',
'$tipopaquete','$verpaquete','$riesgo',
'$fechaanalisis','$horas')";
mysql_query($insertando);
}
$revisados = $revisados +1;
$cice= $procesado[$revisados][0];
}
break;
default:
break;
}
}
Include estado-host.php;
?>
151
Anexo 2. Políticas y código fuente.
___________________________________________________________________________________
BASEDAYUSOL.php
<?
/*
Autor: Manuel Alejandro Soto Ramos
Fecha: 12-08-07
Centro de Investigación en Computación IPN
Descripción: Después de actualizar el sistema con las modificaciones detectadas, se edita el
perfil del cliente de acuerdo a los elementos que tiene y el nivel de riesgo.
*/
// Revisar el numero de elementos insertados y
// Actualizar la base de datos considerando
// el nivel de riesgo
$sql = " SELECT COMPENDIOS.CLIENTES_IDHOST
FROM COMPENDIOS
WHERE COMPENDIOS.CLIENTES_IDHOST = '$numerohost'
AND COMPENDIOS.RIESGO = 5
AND COMPENDIOS.FECHA = '$fechaanalisis'
AND COMPENDIOS.HORA = '$horas' ";
$reso= mysql_query($sql);
$numeral = mysql_num_rows($reso);
echo $numeral;
$sqlest = " SELECT ESTRUCTURA. *
FROM ESTRUCTURA
WHERE ESTRUCTURA.CLIENTES_IDHOST = '$numerohost'
AND ESTRUCTURA.NIVELRIESGO = 5
AND ESTRUCTURA.FECHACAMBIO = '$fechaanalisis'
AND ESTRUCTURA.HORA = '$horas' ";
$rese= mysql_query($sqlest);
$numerale = mysql_num_rows($rese);
echo $numerale;
$numaltos = $numeral + $numerale;
$sql = " SELECT COMPENDIOS.CLIENTES_IDHOST
FROM COMPENDIOS
WHERE COMPENDIOS.CLIENTES_IDHOST = '$numerohost'
AND COMPENDIOS.RIESGO = 3
AND COMPENDIOS.FECHA = '$fechaanalisis'
AND COMPENDIOS.HORA = '$horas' ";
$reso= mysql_query($sql);
$numeral = mysql_num_rows($reso);
echo $numeral;
$sqlest = " SELECT ESTRUCTURA. *
FROM ESTRUCTURA
WHERE ESTRUCTURA.CLIENTES_IDHOST = '$numerohost'
AND ESTRUCTURA.NIVELRIESGO = 3
AND ESTRUCTURA.FECHACAMBIO = '$fechaanalisis'
AND ESTRUCTURA.HORA = '$horas' ";
$rese= mysql_query($sqlest);
$numerale = mysql_num_rows($rese);
echo $numerale;
$nummedios = $numeral + $numerale;
152
Anexo 2. Políticas y código fuente.
$sql = " SELECT COMPENDIOS.CLIENTES_IDHOST
FROM COMPENDIOS
WHERE COMPENDIOS.CLIENTES_IDHOST = '$numerohost'
AND COMPENDIOS.RIESGO = 1
AND COMPENDIOS.FECHA = '$fechaanalisis'
AND COMPENDIOS.HORA = '$horas' ";
$reso= mysql_query($sql);
$numeral = mysql_num_rows($reso);
$sqlest = " SELECT ESTRUCTURA. *
FROM ESTRUCTURA
WHERE ESTRUCTURA.CLIENTES_IDHOST = '$numerohost'
AND ESTRUCTURA.NIVELRIESGO = 1
AND ESTRUCTURA.FECHACAMBIO = '$fechaanalisis'
AND ESTRUCTURA.HORA = '$horas' ";
$rese= mysql_query($sqlest);
$numerale = mysql_num_rows($rese);
echo $numerale;
$numbajos = $numeral + $numerale;
$totelementos = $numaltos + $nummedios + $numbajos;
if ($numaltos >0){
$fiabilidad =1;
}
else if ($numaltos == 0 || $nummedios > 0){
$fiabilidad =2;
}
else if ($numaltos == 0 || $nummedios ==0 || $numbajos > 0){
$fiabilidad =3;
}
else if ($numaltos == 0 || $nummedios < 20 || $numbajos <= 30){
$fiabilidad =4;
}
$perfilhost = " UPDATE `DAYUSOL2008`.`ESTADOHOST`
SET `FIABILIDAD_TIPO` = '$fiabilidad', `ALTOS` = '$numaltos', `BAJOS` = '$numbajos', `MEDIOS` =
'$nummedios', `TOTAL` = '$totelementos'
WHERE `ESTADOHOST`.`CLIENTES_IDHOST` = '$numerohost'
AND `ESTADOHOST`.`FECHAULTIMO` = '$fechaanalisis'
AND `ESTADOHOST`.`HORAULTIMO` = '$horas' ";
mysql_query($perfilhost);
?>
___________________________________________________________________________________
CONEXIÓN.php
<?php
/*
Autor: Manuel Alejandro Soto Ramos
Fecha: 12-08-07
Centro de Investigación en Computación IPN
Descripción: Permite la conexión con el manejador de base de datos, selecciona la base
DAYUSOL, entrega el usuario y contraseña para validarse.
$conex= mysql_pconnect("localhost","root","debian") or DIE ("ERROR EN LA CONEXION");
$db= mysql_select_db("DAYUSOL2008");
?>
153
Anexo 2. Políticas y código fuente.
___________________________________________________________________________________
DETALLEHASH.php
<?php
/*
Autor: Manuel Alejandro Soto Ramos
Fecha: 12-08-07
Centro de Investigación en Computación IPN
Descripción: Realizar consultas a la base de datos y mostrar en el navegador las características
del detalle de los elementos encontrados para el cliente de DAYUSOL y los elementos separados
por directorio de acuerdo al riesgo.
*/
$idcli=$_GET['usuario'];
$nivriesgo =$_GET['riesgo'];
//
// CODIGO PARA LA TABLA DE CARACTERISTICAS
$conex= mysql_pconnect("localhost","root","alejandro2463") or DIE ("ERROR EN LA CONEXION");
$db= mysql_select_db("DAYUSOL2008");
$sql = " SELECT CLIENTES.*, REDDAYUSOL.FECHAULTIMO, REDDAYUSOL.HORAULTIMO
FROM CLIENTES, REDDAYUSOL
WHERE ((CLIENTES.IDHOST ='$idcli')
AND (REDDAYUSOL.CLIENTES_IDHOST = CLIENTES.IDHOST))";
$respuesta = mysql_query($sql);
while($row = mysql_fetch_row($respuesta) )
{
foreach ($row as $registro){
$caracteristicas[]=$registro ;
}
}
mysql_free_result($respuesta);
// codigo para el detalle de compendios.....
if ($nivriesgo == 5){
$despliegue = " ALTO";
}
else if ($nivriesgo == 3){
$despliegue = " MEDIO";
}
else {
$despliegue = " BAJO";
}
// Obtener un arreglo para el indice de directorios
// con riesgo alto. nota.... puede aplicarse para ver los de otro
// Nivel de riesgo cambiando el valor por variable.
$sqlDIR = "SELECT DIRECTORIOS.CLAVEDIRECT , DIRECTORIOS.DIRECTORIO
FROM DIRECTORIOS
WHERE ( DIRECTORIOS.NIVEL_RIESGO = '$nivriesgo'
)
ORDER BY DIRECTORIOS.CLAVEDIRECT ASC ";
$respDIR = mysql_query($sqlDIR);
$d =0;
while($reng = mysql_fetch_row($respDIR) )
{
154
Anexo 2. Políticas y código fuente.
foreach ($reng as $indice){
$guiaDIR[$d][]=$indice ;
}
$d=$d+1;
}
$numDIR = mysql_num_rows($respDIR);
mysql_free_result($respDIR);
$sqlDOBLE = "SELECT DIRECTORIOS.CLAVEDIRECT
FROM DIRECTORIOS
WHERE ( DIRECTORIOS.NIVEL_RIESGO = '$nivriesgo'
ORDER BY DIRECTORIOS.CLAVEDIRECT ASC ";
)
$respDOBLE = mysql_query($sqlDOBLE);
$dos =0;
while($ALE = mysql_fetch_row($respDOBLE) )
{
foreach ($ALE as $indica){
$indiceDIR[]=$indica ;
}
$dos=$dos+1;
}
$numDOBLE = mysql_num_rows($respDOBLE);
mysql_free_result($respDOBLE);
?>
<?PHP
$enterado=0;
while ($enterado < $numDOBLE){
// OBTENER LOS DATOS DEL COMPENDIO Y LAS FECHAS DE MODIFICACION
// ASI COMO EL TIPO DE MODIFICACION...
echo '<table width="100%" border="3" bordercolor="#CCCCCC">';
echo '<tr>';
echo '<td colspan="3"><div align="center"><strong><font color="#000000">';
echo "DIRECTORIO " . $guiaDIR[$enterado][1];
echo '</font></strong></div></td>';
echo '<td colspan="3"><strong>';
echo "RIESGO " . $despliegue ;
echo '</strong> </td>
</tr>' ;
echo '<tr>
<td width="377"><font color="#000000" size="2">NOMBRE</font></td>
<td width="169"><font color="#000000" size="2">MODIFICACION</font></td>
<td colspan="1"><font size="2">HASH (MD5)</font></td>
<td width="113"><font size="2">FECHA</font></td>
<td width="113"><font size="2">HORA</font></td>
</tr>';
$sqlCOMP = "SELECT COMPENDIOS.NOMBREHAS ,TIPOMODIFICACION.DESCRIPCION ,
COMPENDIOS.COMPENDIO ,COMPENDIOS.FECHA ,
COMPENDIOS.HORA
FROM COMPENDIOS , TIPOMODIFICACION
WHERE ( ( COMPENDIOS.CLIENTES_IDHOST = '$idcli')
AND ( COMPENDIOS.ESTADOS_TIPO = 1 )
AND ( COMPENDIOS.CLAVEDIRECT = '$indiceDIR[$enterado]')
AND ( COMPENDIOS.RIESGO = '$nivriesgo')
AND ( COMPENDIOS.MODIFICACION =
TIPOMODIFICACION.OPERACION ) )
155
Anexo 2. Políticas y código fuente.
ORDER BY COMPENDIOS.FECHA ASC ";
$respCOMP = mysql_query($sqlCOMP);
$permitido = mysql_num_rows($respCOMP);
while($reng = mysql_fetch_row($respCOMP) )
{
foreach ($reng as $indice){
echo '<td colspan="1"><div align="left"><font color="#000000"><font size="2">';
echo $indice ;
echo '</font></font></div></td>';
}
echo '</tr>';
}
$enterado = $enterado+1;
echo '</table>';
echo "<br>";
echo "<br>";
}
?>
__________________________________________________________________________________
DETALLEESTRUCTURA.php
<?php
/*
Autor: Manuel Alejandro Soto Ramos
Fecha: 12-08-07
Centro de Investigación en Computación IPN
Descripción: Realizar consultas a la base de datos y mostrar en el navegador las características
del detalle de los elementos de la estructura encontrados para el cliente de DAYUSOL y los
elementos separados por directorio de acuerdo al riesgo
*/
$idcli=$_GET['usuario'];
$nivriesgo =$_GET['riesgo'];
//
// CODIGO PARA LA TABLA DE CARACTERISTICAS
Include conexión.php;
$sql = " SELECT CLIENTES.*, REDDAYUSOL.FECHAULTIMO, REDDAYUSOL.HORAULTIMO
FROM CLIENTES, REDDAYUSOL
WHERE ((CLIENTES.IDHOST ='$idcli')
AND (REDDAYUSOL.CLIENTES_IDHOST = CLIENTES.IDHOST))";
$respuesta = mysql_query($sql);
while($row = mysql_fetch_row($respuesta) )
{
foreach ($row as $registro){
$caracteristicas[]=$registro ;
}
}
mysql_free_result($respuesta);
if ($nivriesgo == 5){
$despliegue = " ALTO";
}
156
Anexo 2. Políticas y código fuente.
else if ($nivriesgo == 3){
$despliegue = " MEDIO";
}
else {
$despliegue = " BAJO";
}
// Obtener un arreglo para el indice de directorios
// con riesgo alto. nota.... puede aplicarse para ver los de otro
// nivel de riesgo cambiando el valor por variable.
$sqlDIR = "SELECT DIRECTORIOS.CLAVEDIRECT , DIRECTORIOS.DIRECTORIO
FROM DIRECTORIOS
WHERE ( DIRECTORIOS.NIVEL_RIESGO = '$nivriesgo'
)
ORDER BY DIRECTORIOS.CLAVEDIRECT ASC ";
$respDIR = mysql_query($sqlDIR);
$d =0;
while($reng = mysql_fetch_row($respDIR) )
{
foreach ($reng as $indice){
$guiaDIR[$d][]=$indice ;
// echo $indice;
}
$d=$d+1;
}
//echo "<br>";
$numDIR = mysql_num_rows($respDIR);
mysql_free_result($respDIR);
$sqlDOBLE = "SELECT DIRECTORIOS.CLAVEDIRECT
FROM DIRECTORIOS
WHERE ( DIRECTORIOS.NIVEL_RIESGO = '$nivriesgo'
ORDER BY DIRECTORIOS.CLAVEDIRECT ASC ";
)
$respDOBLE = mysql_query($sqlDOBLE);
$dos =0;
while($ALE = mysql_fetch_row($respDOBLE) )
{
foreach ($ALE as $indica){
$indiceDIR[]=$indica ;
}
$dos=$dos+1;
}
$numDOBLE = mysql_num_rows($respDOBLE);
mysql_free_result($respDOBLE);
?>
<?PHP
$enterado=0;
while ($enterado < $numDOBLE){
// OBTENER LOS DATOS DE LA ESTRUCTURA Y LAS FECHAS DE MODIFICACION
// ASI COMO EL TIPO DE MODIFICACION..
echo '<table width="100%" border="3" bordercolor="#CCCCCC">';
echo '<tr>';
echo '<td colspan="5"><div align="center"><strong><font color="#000000">';
echo "DIRECTORIO " . $guiaDIR[$enterado][1];
echo '</font></strong></div></td>';
echo '<td colspan="5"><strong>';
echo "RIESGO " . $despliegue ;
echo '</strong> </td>
</tr>' ;
157
Anexo 2. Políticas y código fuente.
echo '<tr>
<td width="377"><font color="#000000" size="2">NOMBRE</font></td>
<td width="169"><font color="#000000" size="2">MODIFICACION</font></td>
<td width="113"><font size="2">USUARIO</font></td>
<td width="113"><font size="2">GRUPO</font></td>
<td width="113"><font size="2">TAMAÑO</font></td>
<td width="113"><font size="2">PERMISOS</font></td>
<td width="113"><font size="2">ENLACES</font></td>
<td width="113"><font size="2">FECHA</font></td>
<td width="113"><font size="2">HORA</font></td>
</tr>';
$sqlCOMP = "SELECT ESTRUCTURA.NOMBREE , TIPOMODIFICACION.DESCRIPCION,
ESTRUCTURA.USUARIO,
ESTRUCTURA.GRUPO , ESTRUCTURA.TAMANO, ESTRUCTURA.PERMISOS,
ESTRUCTURA.ENLACES,
ESTRUCTURA.FECHACAMBIO, ESTRUCTURA.HORA
FROM ESTRUCTURA , TIPOMODIFICACION
WHERE ( ( ESTRUCTURA.CLIENTES_IDHOST = '$idcli' )
AND ( ESTRUCTURA.ESTADOS_TIPO = 1 )
AND ( ESTRUCTURA.MODIFICACION = TIPOMODIFICACION.OPERACION )
AND ( ESTRUCTURA.NIVELRIESGO = '$nivriesgo' )
AND ( ESTRUCTURA.CLAVEDIRECT = '$indiceDIR[$enterado]' ) )
ORDER BY ESTRUCTURA.FECHACAMBIO ASC ";
$respCOMP = mysql_query($sqlCOMP);
$permitido = mysql_num_rows($respCOMP);
while($reng = mysql_fetch_row($respCOMP) )
{
echo '<tr>';
foreach ($reng as $indice){
echo '<td colspan="1"><div align="left"><font color="#000000"><font size="2">';
echo $indice ;
echo '</font></font></div></td>';
}
echo '</tr>';
}
$enterado = $enterado+1;
echo '</table>';
echo "<br>";
echo "<br>";
}
?>
___________________________________________________________________________________
REPORTERED.php
<?php
/*
Autor: Manuel Alejandro Soto Ramos
Fecha: 12-08-07
Centro de Investigación en Computación IPN
Descripción: Realizar consultas a la base de datos y mostrar en el navegador las características
del la red DAYUSOL, mostrar la grafica del estado de fiabilidad del la red.
*/
/
// CODIGO PARA LA TABLA DE CARACTERISTICAS
Include conexión.php
// datos de la estadística de host
//
158
Anexo 2. Políticas y código fuente.
// OBTENER UN ARREGLO CON TODOS LOS ELEMENTOS DE FIABILIDAD Y
// CONTARLOS PARA SABER EL NUMERO DE ELEMENTOS..
// RECORRER ESTO DENTRO DE UN CICLO FOR PARA REVISAR LOS NIVELES
// DESDE EL MAYOR HASTA EL MENOR.... O AL REVES 1-4
FOR ($niveles =1 ; $niveles <5; $niveles ++) {
$sqlRED = "SELECT REDDAYUSOL.FIABILIDAD_TIPO, REDDAYUSOL.CLIENTES_IDHOST
FROM REDDAYUSOL
WHERE ( REDDAYUSOL.FIABILIDAD_TIPO= '$niveles' ) ";
$respRED = mysql_query($sqlRED);
$estadisticas[] = mysql_num_rows($respRED);
mysql_free_result($respRED);
}
$total=$estadisticas[0] +$estadisticas[1]+$estadisticas[2]+$estadisticas[3];
// EL TOTAL DE ELEMENTOS FUE OBTENIDO EN LA CONSULTA ANTERIOR.....
//PASAR ESTOS VALORES PARA LA GRAFICA QUE TENDRA EL NIVEL DE RIESGO DE
// LOS HOST COMO ENTRADA
// OBTENER UNA ARREGLO CON LOS ID DE HOST REPORTADOS
$sqlIND = "SELECT REDDAYUSOL.CLIENTES_IDHOST
FROM REDDAYUSOL
ORDER BY REDDAYUSOL.CLIENTES_IDHOST ASC ";
$respIND = mysql_query($sqlIND);
while($renglon = mysql_fetch_row($respIND) )
{
foreach ($renglon as $indice){
$guiahost[]=$indice ;
}
}
mysql_free_result($respIND);
// CONTAR LOS ELEMENTOS DEL ARRAY PARA OBTENER EL TOTAL DE HOST
//REALIZAR UN CICLO FOR PARA REALIZAR CONSULTAS CAMBIANDO EL ID_HOST
// DE ACUERDO A LOS OBTENIDOS EN EL ARREGLO ANTERIOR...
//IR ALMACENANDO TODOS LOS VALORES EN UNA MATRIZ BIDIMENSIONAL..
$conteo =0;
while ($conteo < $total) {
$sqlDATOS = "SELECT REDDAYUSOL.CLIENTES_IDHOST , CLIENTES.HOSTNAME ,
REDDAYUSOL.TOTAL ,
REDDAYUSOL.PAQUETES , REDDAYUSOL.FECHAULTIMO , REDDAYUSOL.HORAULTIMO ,
FIABILIDAD.DESCRIPCION
FROM REDDAYUSOL , CLIENTES , FIABILIDAD
WHERE ( ( REDDAYUSOL.CLIENTES_IDHOST = '$guiahost[$conteo]' )
AND ( CLIENTES.IDHOST = REDDAYUSOL.CLIENTES_IDHOST )
AND ( FIABILIDAD.TIPOFIABLE = REDDAYUSOL.FIABILIDAD_TIPO ) ) ";
$respDATOS = mysql_query($sqlDATOS);
$renglon = mysql_fetch_row($respDATOS);
foreach($renglon as $datos){
$matriz [$conteo][]=$datos ;
}
$conteo = $conteo +1 ;
}
159
Anexo 2. Políticas y código fuente.
////INCLUIR EL RECORRIDO AUTOMATICO DE TABLAS DENTRO DEL ESQUEMA DE LA
// TABLA GENERADA AL FINAL DEL ARCHIVO.......
$contador = count ($matriz);
?>
<?php
$recorrido =0;
while ($recorrido < $contador){
echo '<tr>';
echo ' <td>' . '<font color="#000000" size="2">'. $matriz[$recorrido][0] . '</font>'.'</td>';
echo ' <td>' . '<font color="#000000" size="2">'. $matriz[$recorrido][1] . '</font>'.'</td>';
echo ' <td>' . '<font color="#000000" size="2">'. $matriz[$recorrido][2] . '</font>'.'</td>';
echo ' <td>' . '<font color="#000000" size="2">'. $matriz[$recorrido][3] . '</font>'.'</td>';
echo ' <td>' . '<font color="#000000" size="2">'. $matriz[$recorrido][4] . '</font>'.'</td>';
echo ' <td>' . '<font color="#000000" size="2">'. $matriz[$recorrido][5] . '</font>'.'</td>';
echo ' <td>' . '<font color="#000000" size="2">'. $matriz[$recorrido][6] . '</font>'.'</td>';
echo ' <td><font color="#000000" size="2"><a
href="REPORTEHOST.php?idhost='.$matriz[$recorrido][0].'">ver detalles</a></td>';
echo '</tr>';
$recorrido = $recorrido +1;
}
?>
___________________________________________________________________________________
REDGRAFICA-.php
<?php
/*
Autor: Manuel Alejandro Soto Ramos
Fecha: 12-08-07
Centro de Investigación en Computación IPN
Descripción: Utilizar la librería jplib para generar graficas de tipo pastel del estado de la red
DAYUSOL
*/
include ("/usr/share/jpgraph/jpgraph.php");
include ("/usr/share/jpgraph/jpgraph_pie.php");
include ("/usr/share/jpgraph/jpgraph_pie3d.php");
$var=$_GET['alto'];
$var2=$_GET['medio'];
$var3=$_GET['bajo'];
$var4=$_GET['paquetes'];
$data = array($var,$var2,$var3,$var4);
$graph = new PieGraph(450,350,"auto");
$graph->img->SetAntiAliasing();
$graph->SetMarginColor('white');
$graph->SetShadow();
$graph->SetColor("#ffffff");
// Setup margin and titles
$graph->title->Set("ELEMENTOS REPORTADOS");
// $graph->title->SetFont(FF_VERDANA, FS_BOLD, 14);
$p1 = new PiePlot3D($data);
$p1->SetSize(0.30);
$p1->SetCenter(0.5,0.6);
$p1->SetAngle(70);
// $p1->SetTheme('water');
$p1->SetSliceColors(array('red','blue','gray','white'));
// $p1->SetSliceColors(array('#E0E0F8','#EFFBEF','white','#F5EFFB'));
// Setup slice labels and move them into the plot
// $p1->value->SetFont(FF_FONT1,FS_BOLD);
// $p1->value->SetColor("black");
160
Anexo 2. Políticas y código fuente.
$nombres=array("ALTO","MEDIO","BAJO","PROGRAMAS");
$p1->SetLegends($nombres);
// Explode all slices
$p1->ExplodeAll(10);
$graph->Add($p1);
$graph->Stroke();
?>
___________________________________________________________________________________
REPORTEHOST.php
<?php
/*
Autor: Manuel Alejandro Soto Ramos
Fecha: 12-08-07
Centro de Investigación en Computación IPN
Descripción: Realizar consultas a la base de datos y mostrar en el navegador las características
del cliente de DAYUSOL, mostrar la grafica del estado de los elementos detectados en el cliente.
*/
$idcliente=$_GET['idhost'];
// CODIGO PARA LA TABLA DE CARACTERISTICAS
$conex= mysql_pconnect("localhost","root","alejandro2463") or DIE ("ERROR EN LA CONEXION");
$db= mysql_select_db("DAYUSOL2008");
$sql = " SELECT CLIENTES.*, REDDAYUSOL.FECHAULTIMO, REDDAYUSOL.HORAULTIMO
FROM CLIENTES, REDDAYUSOL
WHERE ((CLIENTES.IDHOST ='$idcliente')
AND (REDDAYUSOL.CLIENTES_IDHOST = CLIENTES.IDHOST))";
$respuesta = mysql_query($sql);
while($row = mysql_fetch_row($respuesta) )
{
foreach ($row as $registro){
$caracteristicas[]=$registro ;
}
}
mysql_free_result($respuesta);
// CODIGO PARA LA TABLA DEL ESTADO
$sql2 = " SELECT FIABILIDAD.DESCRIPCION , REDDAYUSOL.ALTOS , REDDAYUSOL.MEDIOS,
REDDAYUSOL.BAJOS , REDDAYUSOL.TOTAL, REDDAYUSOL.PAQUETES
FROM FIABILIDAD, REDDAYUSOL
WHERE ( ( REDDAYUSOL.CLIENTES_IDHOST = '$idcliente' )
AND ( REDDAYUSOL.FIABILIDAD_TIPO = FIABILIDAD.TIPOFIABLE ) )";
$respuest = mysql_query($sql2);
while($rowi = mysql_fetch_row($respuest) )
{
foreach ($rowi as $registr){
$estadohost[]=$registr ;
}
}
mysql_free_result($respuest);
161
Anexo 2. Políticas y código fuente.
$renglon = 0;
for ($i =1; $i < 6; $riesgo = $i){
for ($n= 1; $n < 5; $reno = $n ){
$sql3 = "SELECT COMPENDIOS.CLIENTES_IDHOST , COMPENDIOS. ESTADOS_TIPO ,
COMPENDIOS.MODIFICACION
FROM COMPENDIOS
WHERE ( ( COMPENDIOS.CLIENTES_IDHOST = '$idcliente' )
AND ( COMPENDIOS.ESTADOS_TIPO = 1 )
AND (COMPENDIOS.MODIFICACION = '$n' )
AND ( COMPENDIOS.RIESGO = '$i' ) )";
$respuesta = mysql_query($sql3);
$numerale[$renglon][] = mysql_num_rows($respuesta);
$n = $n+1 ;
mysql_free_result($respuesta);
}
$i= $i + 2 ;
$renglon = $renglon +1;
}
// Obtener datos de la estructura
// modificacion y nivel de riesgo
$reng = 0;
for ($l =1; $l < 6; $ries = $l){
for ($m= 1; $m < 5; $renos = $m ){
$sql4 = "SELECT ESTRUCTURA.ESTADOS_TIPO , ESTRUCTURA.MODIFICACION ,
ESTRUCTURA.NIVELRIESGO
FROM ESTRUCTURA
WHERE ( ( ESTRUCTURA.CLIENTES_IDHOST = '$idcliente' )
AND (ESTRUCTURA.ESTADOS_TIPO = 1 )
AND (ESTRUCTURA.MODIFICACION = '$m' )
AND (ESTRUCTURA.NIVELRIESGO = '$l' ) ) ";
$respestruc = mysql_query($sql4);
$numeral[$reng][] = mysql_num_rows($respestruc);
$m = $m+1 ;
mysql_free_result($respestruc);
}
$l= $l + 2 ;
$reng = $reng +1;
}
?>
<table width="100%" border="3" bordercolor="#CCCCCC">
<tr>
<td colspan="5"><div align="center"><strong><font color="#000000">INTEGRIDAD
DE INFORMACION (HASH-MD5)</font></strong></div></td>
</tr>
<tr>
<td width="12%"> </td>
<td width="18%"><font color="#000000" size="2">AGREGADOS</font></td>
<td width="22%"><font size="2">ELIMINADOS</font></td>
<td width="23%"><font size="2">MODIFICADOS</font></td>
162
Anexo 2. Políticas y código fuente.
<td width="25%"><font size="2">ACTUALIZADOS</font></td>
</tr>
<tr>
<?PHP echo '<td><font color="#CCCCCC"></font><a
href="detalleshash.php?riesgo=1&usuario='.$idcliente.'">BAJO</a>
</font></td>'; ?>
<td><div align="right"><font color="#CCCCCC"><?PHP echo $numerale[0][0];?></font></div></td>
<td><div align="right"><font color="#CCCCCC"><?PHP echo $numerale[0][1];?></font></div></td>
<td><div align="right"><font color="#CCCCCC"><?PHP echo $numerale[0][2];?></font></div></td>
<td><div align="right"><font color="#CCCCCC"><?PHP echo $numerale[0][3];?></font></div></td>
</tr>
<tr>
<?PHP echo '<td><font color="#CCCCCC"></font><a
href="detalleshash.php?riesgo=3&usuario='.$idcliente.'">MEDIO</a>
</font></td>'; ?>
<td><div align="right"><font color="#0000FF"><?PHP echo $numerale[1][0];?></font></div></td>
<td><div align="right"><font color="#0000FF"><?PHP echo $numerale[1][1];?></font></div></td>
<td><div align="right"><font color="#0000FF"><?PHP echo $numerale[1][2];?></font></div></td>
<td><div align="right"><font color="#0000FF"><?PHP echo $numerale[1][3];?></font></div></td>
</tr>
<tr>
<?PHP echo '<td><font color="#CCCCCC"></font><a
href="detalleshash.php?riesgo=5&usuario='.$idcliente.'">ALTO</a>
</font></td>'; ?>
<td><div align="right"><font color="#FF0000"><?PHP echo $numerale[2][0];?></font></div></td>
<td><div align="right"><font color="#FF0000"><?PHP echo $numerale[2][1];?></font></div></td>
<td><div align="right"><font color="#FF0000"><?PHP echo $numerale[2][2];?></font></div></td>
<td><div align="right"><font color="#FF0000"><?PHP echo $numerale[2][3];?></font></div></td>
</tr>
</table>
<table width="100%" border="3" bordercolor="#CCCCCC">
<tr>
<td colspan="5"><div align="center"><strong><font color="#000000">PERMISOS,
TAMAÑO, ENLACES, USUARIOS Y GRUPO</font></strong></div></td>
</tr>
<tr>
<td width="12%"> </td>
<td width="18%"><font color="#000000" size="2">AGREGADOS</font></td>
<td width="22%"><font size="2">ELIMINADOS</font></td>
<td width="23%"><font size="2">MODIFICADOS</font></td>
<td width="25%"><font size="2">ACTUALIZADOS</font></td>
</tr>
<tr>
<?PHP echo '<td><font color="#CCCCCC"></font><a
href="detallesest.php?riesgo=1&usuario='.$idcliente.'">BAJO</a>
</font></td>'; ?>
<td><div align="right"><font color="#CCCCCC"><?PHP echo $numeral[0][0];?></font></div></td>
<td><div align="right"><font color="#CCCCCC"><?PHP echo $numeral[0][1];?></font></div></td>
<td><div align="right"><font color="#CCCCCC"><?PHP echo $numeral[0][2];?></font></div></td>
<td><div align="right"><font color="#CCCCCC"><?PHP echo $numeral[0][3];?></font></div></td>
</tr>
<tr>
<?PHP echo '<td><font color="#CCCCCC"></font><a
href="detallesest.php?riesgo=3&usuario='.$idcliente.'">MEDIO</a>
</font></td>'; ?>
<td><div align="right"><font color="#0000FF"><?PHP echo $numeral[1][0];?></font></div></td>
<td><div align="right"><font color="#0000FF"><?PHP echo $numeral[1][1];?></font></div></td>
<td><div align="right"><font color="#0000FF"><?PHP echo $numeral[1][2];?></font></div></td>
<td><div align="right"><font color="#0000FF"><?PHP echo $numeral[1][3];?></font></div></td>
</tr>
<tr>
163
Anexo 2. Políticas y código fuente.
<?PHP echo '<td><font color="#CCCCCC"></font><a
href="detallesest.php?riesgo=5&usuario='.$idcliente.'">ALTO</a>
</font></td>'; ?>
<td><div align="right"><font color="#FF0000"><?PHP echo $numeral[2][0];?></font></div></td>
<td><div align="right"><font color="#FF0000"><?PHP echo $numeral[2][1];?></font></div></td>
<td><div align="right"><font color="#FF0000"><?PHP echo $numeral[2][2];?></font></div></td>
<td><div align="right"><font color="#FF0000"><?PHP echo $numeral[2][3];?></font></div></td>
</tr>
</table>
__________________________________________________________________________________
GENERACION DE BASE DE DATOS DAYUSOL2008
Servidor: localhost
-- Tiempo de generación: 18-06-2008 a las 03:32:40
-- Versión del servidor: 5.0.38
-- Versión de PHP: 5.2.1
--- Base de datos: `DAYUSOL2008`
--------------------------------------------------------- Estructura de tabla para la tabla `CLIENTES`
CREATE TABLE `CLIENTES` (
`IDHOST` int(3) unsigned NOT NULL,
`IPV4` varchar(15) NOT NULL default '',
`HOSTNAME` varchar(15) default NULL,
`DESCRIPCION` varchar(70) NOT NULL,
PRIMARY KEY (`IDHOST`),
UNIQUE KEY `IPV4` (`IPV4`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------- Estructura de tabla para la tabla `COMPENDIOS`
CREATE TABLE `COMPENDIOS` (
`NOMBREHAS` varchar(70) NOT NULL,
`CLIENTES_IDHOST` int(3) NOT NULL,
`ESTADOS_TIPO` int(1) NOT NULL,
`MODIFICACION` int(1) NOT NULL,
`COMPENDIO` varchar(40) NOT NULL default '',
`CLAVEDIRECT` int(3) NOT NULL,
`RIESGO` int(1) NOT NULL,
`FECHA` date NOT NULL,
`HORA` time NOT NULL,
PRIMARY KEY
(`NOMBREHAS`,`CLIENTES_IDHOST`,`MODIFICACION`,`COMPENDIO`,`CLAVEDIRECT`,`FECHA`,`H
ORA`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------- Estructura de tabla para la tabla `DIRECTORIOS`
CREATE TABLE `DIRECTORIOS` (
`CLAVEDIRECT` int(2) NOT NULL,
`NIVEL_RIESGO` int(1) NOT NULL,
`DIRECTORIO` varchar(30) NOT NULL,
PRIMARY KEY (`CLAVEDIRECT`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------- Estructura de tabla para la tabla `ESTADOHOST`
CREATE TABLE `ESTADOHOST` (
`CLIENTES_IDHOST` int(3) NOT NULL,
`FIABILIDAD_TIPO` int(1) NOT NULL,
`ALTOS` int(10) unsigned NOT NULL,
`BAJOS` int(10) unsigned default NULL,
`MEDIOS` int(10) unsigned default NULL,
164
Anexo 2. Políticas y código fuente.
`TOTAL` int(10) unsigned default NULL,
`PAQUETES` int(3) NOT NULL,
`FECHAULTIMO` date NOT NULL,
`HORAULTIMO` time NOT NULL,
PRIMARY KEY (`CLIENTES_IDHOST`,`FECHAULTIMO`,`HORAULTIMO`),
KEY `ESTADOHOST_FKIndex1` (`CLIENTES_IDHOST`),
KEY `ESTADOHOST_FKIndex2` (`FIABILIDAD_TIPO`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------- Estructura de tabla para la tabla `ESTADOPAQ`
CREATE TABLE `ESTADOPAQ` (
`TIPOP` int(1) unsigned NOT NULL,
`DESCRIPCION` varchar(15) default NULL,
PRIMARY KEY (`TIPOP`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-- --------------------------------------------------------- Estructura de tabla para la tabla `ESTADOS`
CREATE TABLE `ESTADOS` (
`TIPOE` int(1) unsigned NOT NULL,
`DESCRIPCION` varchar(15) default NULL,
PRIMARY KEY (`TIPOE`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------- Estructura de tabla para la tabla `ESTRUCTURA`
CREATE TABLE `ESTRUCTURA` (
`NOMBREE` varchar(70) NOT NULL,
`CLIENTES_IDHOST` int(3) unsigned NOT NULL,
`ESTADOS_TIPO` int(1) unsigned NOT NULL,
`MODIFICACION` int(1) NOT NULL,
`USUARIO` varchar(30) default NULL,
`GRUPO` varchar(30) default NULL,
`TAMANO` int(10) default NULL,
`PERMISOS` int(4) unsigned default NULL,
`ENLACES` int(2) unsigned default NULL,
`NIVELRIESGO` int(1) default NULL,
`FECHACAMBIO` date NOT NULL default '0000-00-00',
`HORA` time NOT NULL,
`CLAVEDIRECT` int(3) NOT NULL,
PRIMARY KEY
(`NOMBREE`,`CLIENTES_IDHOST`,`MODIFICACION`,`FECHACAMBIO`,`HORA`,`CLAVEDIRECT`),
KEY `ESTRUCTURA_FKIndex1` (`CLIENTES_IDHOST`),
KEY `ESTRUCTURA_FKIndex2` (`ESTADOS_TIPO`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------- Estructura de tabla para la tabla `FIABILIDAD`
CREATE TABLE `FIABILIDAD` (
`TIPOFIABLE` int(1) unsigned NOT NULL,
`DESCRIPCION` varchar(30) default NULL,
PRIMARY KEY (`TIPOFIABLE`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------- Estructura de tabla para la tabla `PAQUETES`
CREATE TABLE `PAQUETES` (
`PNOMBRE` varchar(30) NOT NULL,
`CLIENTES_IDHOST` int(3) unsigned NOT NULL,
`ESTADOPAQ_TIPO` int(1) unsigned NOT NULL,
`MODIFICACION` int(1) NOT NULL,
`DESCRIPCION` varchar(30) default NULL,
`TIPO` varchar(10) NOT NULL,
`VERSION` varchar(8) NOT NULL,
`RIESGO` int(1) NOT NULL,
`FECHA` date NOT NULL,
165
Anexo 2. Políticas y código fuente.
`HORA` time NOT NULL,
PRIMARY KEY (`PNOMBRE`,`CLIENTES_IDHOST`,`MODIFICACION`,`FECHA`,`HORA`),
KEY `PAQUETES_FKIndex1` (`ESTADOPAQ_TIPO`),
KEY `PAQUETES_FKIndex2` (`CLIENTES_IDHOST`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------- Estructura de tabla para la tabla `REDDAYUSOL`
CREATE TABLE `REDDAYUSOL` (
`CLIENTES_IDHOST` int(3) NOT NULL,
`FIABILIDAD_TIPO` int(1) NOT NULL,
`ALTOS` int(10) unsigned NOT NULL,
`BAJOS` int(10) unsigned default NULL,
`MEDIOS` int(10) unsigned default NULL,
`TOTAL` int(10) unsigned default NULL,
`PAQUETES` int(3) NOT NULL,
`FECHAULTIMO` date NOT NULL,
`HORAULTIMO` time NOT NULL,
PRIMARY KEY (`CLIENTES_IDHOST`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------- Estructura de tabla para la tabla `TIPOMODIFICACION`
CREATE TABLE `TIPOMODIFICACION` (
`OPERACION` int(1) NOT NULL,
`DESCRIPCION` varchar(10) NOT NULL,
PRIMARY KEY (`OPERACION`,`DESCRIPCION`),
UNIQUE KEY `OPERACION` (`OPERACION`,`DESCRIPCION`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
166
Descargar