UNIVERSIDAD DE GUAYAQUIL
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
“Firewall Transparente de Contenido Web”
TESIS DE GRADO
Previo a la Obtención del Título de:
INGENIERO EN SISTEMAS COMPUTACIONALES
Autores:
Sandra Elizabeth Cerón Lucero Gabriel Arturo Lomas Villarreal Ángela Olivia Yanza Montalván
GUAYAQUIL – ECUADOR
Año: 2005
I
DEDICATORIA Este proyecto está dedicado en primer
lugar a Dios por mantenernos con fe firme,
a nuestra prestigiosa Universidad de
Guayaquil, a nuestros queridos y
estimados maestros, familiares y
compañeros de grado, quienes han
compartido nuestro esfuerzo y dedicación
en el desarrollo del mismo.
III
DEDICATORIA Para Elena mi maravillosa esposa y
Dayanna mi preciosa hija.
Arturo Lomas Villarreal
IV
AGRADECIMIENTO Agradezco en primer lugar a “Jehová
Dios” por mantenerme firme frente a los
obstáculos que se han ido presentando,
a mi madre por motivarme día a día a
seguir luchando, a mi padre que aunque
no este a mi lado me ha dado ánimos a
lograr lo que me he propuesto. Además
a todas aquellas personas que han
contribuido directa o indirectamente
para alcanzar la culminación del
proyecto el mismo que nos ha permitido
desarrollar una mentalidad positiva y
abierta a las oportunidades de nuestro
medio.
Ángela Yanza Montalván
V
AGRADECIMIENTO Agradezco a Dios por haberme guiado
en la trayectoria de mi carrera
universitaria, a mi familia por su apoyo
incondicional que siempre me ha
brindado, a David por haber
sacrificado tantas horas que le
pertenecían siempre con el entusiasmo
y optimismo de yo saliera adelante, a
nuestros profesores siempre
dispuestos a contribuir con sus
conocimiento, a mis compañeros y
amigos por asesóranos por cualquier
duda emergente.
Sandra Cerón Lucero
VI
AGRADECIMIENTO
A Dios por darme la vida, el entendimiento
y la comprensión,
A mi Esposa por apoyarme
incondicionalmente,
A mi Hija por su inocencia,
A mi Padre por sus buenos consejos y
A todos mis familiares y amigos que
directa e indirectamente me ayudaron a
culminar esta meta en mi vida.
Arturo Lomas Villarreal
VII
TRIBUNAL DE GRADUACION Ing. Fernando Abad Montero Ing. Eduardo Alvarado Decano Director de Tesis Ing. Pablo Salazar Ing. Abel Alarcón Vocal Vocal Ab. Juan Chávez Atocha Secretario
VIII
RESUMEN
Nuestro proyecto de tesis es un Firewall Transparente de Contenido Web,
que es un sistema que aplica políticas de control de acceso dentro de una
red. En la actualidad por los avances tecnológicos existe la necesidad de
establecer dentro de la organización medidas de seguridad para el paso de
información, Por ello nuestro Firewall Transparente de Contenido Web brinda
ciertas bondades para no filtrar cierto tipo de información a través de sus
dominios, frases o palabras establecidas por el usuario administrador del
sistema. En muchas ocasiones el contenido Web que ingresa a una red local
puede perjudicar los equipos de una organización y alterar el rendimiento de
la red.
INDICE GENERAL
DEDICATORIA I
AGRADECIMIENTO IV
TRIBUNAL DE GRADUACION VII
DECLARACION EXPRESA VIII
RESUMEN IX
INDICE GENERAL XI
CAPITULO I
INTRODUCCION GENERAL 1
1.1. ANTECEDENTES 5
1.2. PROBLEMÁTICA 15
1.2.1. CAUSAS 16
1.2.2. CONSECUENCIAS 16
1.3. SOLUCION DE LA PROBLEMÁTICA 18
1.4. MISION 22
1.5. VISION 22
1.6. OBJETIVOS 22
1.6.1. OBJETIVOS GENERALES 22
1.6.2. OBJETIVOS ESPÈCIFICOS 23
1.7. ALCANCE 23
1.7.1. CAPTURA DE PAQUETES 26
1.7.2. ANALISIS DE PAQUETES 27
1.7.3. FUNCION DEL FIREWALL TRANSPARENTE DE
CONTENIDO WEB
28
1.7.4. FUNCIONABILIDAD DE LOS MODULOS DEL FTCW 30
1.7.5. ESQUEMA DE LA BASE DE DATOS 32
1.7.5.1. ESTRUCTURA DE LAS TABLAS 33
1.7.5.2. CONEXIÓN A LA BASE DE DATOS 33
1.7.6. INTERFAZ GRAFICA DE USUARIO 37
1.7.6.1. CARACTERISTICAS 38
1.8. BENEFICIOS 40
1.9. CRONOGRAMA DE ACTIVIDADES 42
1.10. RECURSOS 44
1.10.1. HARDWARE 45
1.10.2. SOFTWARE 46
1.10.2. HUMANO 47
1.11. ESTUDIO DE FACTIBILIDAD 49
1.11.1. FACTIBILIDAD TECNICA 49
1.11.2. FACTIBILIDAD ECONOMICA 50
1.11.3. FACTIBILIDAD OPERATIVA 51
1.12. COSTOS MINIMOS 52
1.13. METODOLOGIA DEL PROYECTO 53
1.13.1. METODOLOGIA DEL ANALISIS 53
1.13.2. METODOLOGIA DEL DISEÑO 55
CAPITULO II:
ANALISIS 56
2.1. LEVANTAMIENTO DE INFORMACION 56
2.1.1. CONCEPTOS BASICOS DE FIREWALL 56
2.1.2. IPTABLES 64
2.1.3. BRIDGE 67
2.1.3.1. CONFIGURACIÓN BÁSICA 68
2.1.4. JAVA 70
2.1.4.1. CARACTERISTICAS 70
2.1.4.2. JDK 75
2.1.4.2.1. INSTALACION 75
2.1.5. JPCAP 76
2.1.5.1. CARACTERISTICAS 76
2.1.5.2. INSTALACIÓN BAJO LINUX 77
2.1.5.3. CONTENIDO DEL PAQUETE JPCAP 78
2.1.6. BASE DE DATOS 79
2.1.6.1. VISION GENERAL DE LAS TAREAS ADMINISTRATIVAS 82
2.1.6.2. ESTRUCTURA DEL DIRECTORIO DE DATOS 83
2.1.6.3. REPRESENTACION DE TABLAS DE BASE DE DATOS 85
2.1.6.4. RESTRICCIONES DEL SISTEMA OPERATIVO EN LA
BASE DE DATOS Y EN EL NOMBRADO DE LA TABLA
86
2.1.6.5. ARCHIVOS DE ESTADO DE MYSQL 87
2.1.6.6. TIPOS DE DATOS EN MYSQL 88
2.1.6.7. EL ACCESO A LOS DATOS 90
2.1.6.8. DRIVER DE CONEXIÓN PARA MYSQL Y JAVA 91
2.1.7. INTERFAZ GRAFICA DEL USUARIO 93
2.1.7.1. ECLIPSE 93
2.1.7.1.1. CARACTERISTICAS 96
2.1.7.1.2. COMPONENTES 96
2.1.7.1.3. ELEMENTOS DEL WORKSPACE 98
2.1.7.2. IREPORT 99
2.1.7.2.1. CARACTERISTICAS 99
2.1.7.2.2. INSTALACION 100
2.2. ANALISIS DE REQUERIMIENTOS 100
2.2.1. REQUERIMIENTOS FUNCIONALES 101
2.2.2. REQUERIMIENTOS DE RENDIMIENTO 102
2.2.3. CONFIABILIDAD 103
2.2.4. COMPONENTES 103
2.2.5. CASOS DE USO DELSISTEMA 107
2.2.6. RESTRICCIONES 109
2.3. MODELADO DE REQUERIMIENTOS 109
2.3.1. DIAGRAMA DE CONTEXTO DE LA ARQUITECTURA
(DCA)
109
2.3.1.1. NOTACION GRAFICA 110
2.3.1.2. ESQUEMA 111
2.3.2. DIAGRAMA DE FLUJO DE LA ARQUITECTURA (DFA) 115
2.3.2.1. NOTACION GRAFICA 115
2.3.2.2. ESQUEMA 115
2.4. DICCIONARIO DE DATOS 118
2.4.1. FORMATO 119
2.4.2. EJEMPLO 120
2.5. DIAGRAMA ENTIDAD RELACION (DER) 122
2.5.1. DEFINICION DE ENTIDADES 123
2.5.2. DEFINICION DE RELACIONES 124
2.5.3. ESPECIFICACION DE OBJETOS 124
2.5.4. NOTACION GRAFICA 130
2.5.5. EJEMPLO DE DER 131
2.5.6. ESQUEMA 132
2.6. DIAGRAMA DE FLUJO DE DATOS 135
2.6.1. NOTACION GRAFICA 135
2.6.2. MODELADO DE DATOS 136
2.6.3. ESPECIFICACION DE PROCESOS 149
2.6.3.1. PROCESO FTCWSRV 149
2.6.3.1.1. DEFINIR PARÁMETROS ANTES DEL
PROCESO DE CAPTURA
149
2.6.3.1.2. ABRIR INTERFAZ DE RED 150
2.6.3.1.3. MANEJADOR DE PAQUETES 150
2.6.3.1.4. DESENCAPSULA PAQUETE 150
2.6.3.1.5. MANEJADOR DE BASE DE DATOS
(FTCWPACK)
151
2.6.3.1.6. FORMATEAR DATA 152
2.6.3.1.7. SALIDA ESTÁNDAR 152
2.6.3.2. PROCESO FTCWDNS 152
2.6.3.2.1. MÓDULO PRIMARIO DNS 153
2.6.3.2.2. CONEXIÓN A LA BASE DE DATOS 153
2.6.3.2.3. CARGADNS 154
2.6.3.3. PROCESO FTCWPACK 154
2.6.3.3.1. DEFINIR PARÁMETROS 155
2.6.3.3.2. DETERMINAR TIPO DE SOLICITUD 155
2.6.3.3.3. FINALIZE 156
2.6.3.3.4. EJECUTAR CONSULTA 156
2.6.3.3.5. EJECUTAR INSERCIÓN 157
2.6.3.3.6. EJECUTAR ELIMINACIÓN 157
2.6.3.3.7. EJECUTAR ACTUALIZACIÓN 158
2.6.3.3.8. EJECUTAR CREACIÓN DE TABLA 158
2.6.3.3.9. EJECUTAR BORRADO DE TABLA 159
2.6.3.3.10. EJECUTAR DESCRIPCIÓN TABLA 159
2.6.3.3.11. HISTORIAL DE ERRORES 160
2.6.3.3.12. REGISTRO DE LOGS (AUDITORÍA) 160
2.6.3.4. PROCESO SETIPTABLES 161
2.6.3.4.1. CONSULTAR A LA BASE DE DATOS 161
2.6.3.4.2. PRESENTACIÓN EN UNA TABLA 161
2.6.3.4.3. CONFIRMACIÓN DE RESULTADOS 162
2.6.3.4.4. VER PAGINA 162
2.6.3.4.5. CARGAR BROWSER O NAVEGADOR WEB 162
2.6.3.4.6. ACTUALIZACIÓN DE ARCHIVO PLANO CON
REGLAS IPTABLES
164
2.6.3.4.7. CONFIGURACIÓN POR DEFECTO 164
2.6.3.4.8. RESULTADO DEL SETIPTABLES 164
2.7. DIAGRAMA DE TRANSICION DE ESTADOS 165
CAPITULO III
DISEÑO
3.1. INTRODUCCION 170
3.2. DISEÑO DE DATOS 171
3.2.1. DESCRIPCION DE LAS ESTRUCTURAS DE LAS TABLAS 172
3.2.2. DICCIONARIO DE DATOS 174
3.3. DISEÑO ARQUITECTONICO 183
3.3.1. DISEÑO ARQUITECTONICO DEL FTCW 183
3.3.2. CRITERIOS GENERALES DE DISEÑO 185
3.3.3. DIAGRAMA DEL DISEÑO GENERAL DEL MODULO 186
3.3.4. NARRATIVA DEL DIAGRAMA GENERAL DEL MODULO 187
3.4. DISEÑO DE INTERFAZ 188
3.4.1. COMPONENTES DE LA INTERFAZ GRÁFICA DE
USUARIO
189
3.4.2. DIAGRAMA JERÁRQUICO DE LA INTERFAZ GRAFICA
DEL USUARIO
190
3.4.2.1. INICIO DE SESION 187 191
3.4.2.2. MENU PRINCIPAL 192
3.4.2.2.1. ARCHIVO 193
3.4.2.2.2. OPCIONES 193
3.4.2.2.3. REPORTE 193
3.4.2.2.4. BASE DE DATOS 194
3.4.2.2.5. VER 194
3.4.2.2.6. AYUDA 195
3.4.2.3. DIAGRAMA JERÁRQUICO DEL MENÚ
PRINCIPAL
196
3.4.2.4. DESCRIPCIÓN DE CADA OPCIÓN DEL MENÚ 197
3.4.2.4.1. MENÚ ARCHIVO 197
3.4.2.4.1.1. INICIAR CAPTURA 197
3.4.2.4.1.2. DETENER CAPTURA 198
3.4.2.4.1.3. MANTENIMIENTO DE USUARIOS 198
3.4.2.4.1.4. CAMBIO DE CONTRASEÑA 199
3.4.2.4.1.5. SALIR 199
3.4.2.4.2. MENÚ OPCIONES 200
3.4.2.4.2.1. CONFIGURACIÓN DE REGLAS 200
3.4.2.4.2.1.1. IPTABLES 201
3.4.2.4.2.1.2. DIRECCIONES IP 202
3.4.2.4.2.1.3. DOMINIOS 203
3.4.2.4.2.1.4. FRASE 204
3.4.2.4.3. MENÚ REPORTES 206
3.4.2.4.3.1. GENERACIÓN DE REPORTE 206
3.4.2.4.4. MENÚ BASE DE DATOS 207
3.4.2.4.4.1. RESPALDAR TABLAS DE MYSQL 208
3.4.2.4.5. MENÚ VER 208
3.4.2.4.5.1. BARRA DE ESTADO 209
3.4.2.4.5.2. BARRA DE HERRAMIENTAS 209
3.4.2.4.6. MENÚ AYUDA 210
3.4.2.4.6.1. ACERCA DE … 210
3.5. DISEÑO A NIVEL DE COMPONENTES 211
3.5.1. INICIO DE SESIÓN 212
3.5.2. MENÚ PRINCIPAL 213
3.5.2.1. CAMBIAR CONTRASEÑA 213
3.5.3. OPCIONES 216
3.5.3.1. CONFIGURACION DE REGLAS 216
3.5.4. VER 219
3.5.4.1. BARRA DE ESTADO 219
CAPITULO IV
DESARROLLO Y PRUEBA DEL SISTEMA 220
4.1. DESARROLLO DEL SISTEMA 220
4.1.1. BASE DE DATOS 221
4.1.1.1.. CREACION DE BASE DE DATOS 221
4.1.1.2.. CREACION DE LAS TABLAS 221
4.1.2. CREACION DE COMPONENETES 226
4.1.3. SEGURIDADES 227
4.1.3.1. SISTEMA OPERATIVO 227
4.1.3.2. DE LA BASE DE DATOS 228
4.1.3.3. DEL SISTEMA 229
4.1.3.4. REGISTRO DE LOGS 229
4.2. PRUEBAS DEL SISTEMA 230
CAPITULO V
IMPLEMENTACION DEL SISTEMA 231
5.1. IMPLEMENTACION DEL SISTEMA 231
5.2. ELEMENTOS FISICOS 233
5.3. ELEMENTOS LOGICOS 234
5.4. ELEMENTOS HUMANOS 236
5.5. INFRAESTRUCTURA 237
5.6. CAPACITACION DE LOS USUARIOS 238
CAPITULO VI
CONCLUSIONES Y RECOMENDACIONES DE LA TESIS
6.1.CONCLUSIONES 240
6.2. RECOMENDACIONES 241
6.3. RESTRICCIONES 243
INDICE DE LOS GRAFICOS CAPITULO 1 CUADRO 1 ………………………………………………………………… 3
CUADRO 2 ………………………………………………………………… 9
CUADRO 3 ………………………………………………………………… 11
CUADRO 4 ………………………………………………………………… 12
CUADRO 5 ………………………………………………………………… 13
CUADRO 6 .. ……………………………………………………………….. 14
CUADRO 7 ………………………………………………………………… 17
CUADRO 8 ………………………………………………………………... 18
CUADRO 9 . ……………………………………………………………….. 21
CUADRO 10 ...………………………………………………………………. 25
CUADRO 11 ………………………………………………………………... 33
CUADRO 12 ………………………………………………………………… 34
CUADRO 13 ... ……………………………………………………………….. 36
CUADRO 14 … ……………………………………………………………… 37
CUADRO 15 ………………………………………………………………. 43
CUADRO 16 ……………………………………………………………… 44
CUADRO 17 ………………………………………………………………. 45
CUADRO 18 ………………………………………………………………. 48
“Firewall Transparente de Contenido Web”
CUADRO 19 ……………………………………………………………… 52
CUADRO 20 ……………………………………………………………… 54
CUADRO 21 ……………………………………………………………… 55
CUADRO 22 ……………………………………………………………… 55
CAPITULO 2
CUADRO 23 ……………………………………………………………… 57
CUADRO 24 ……………………………………………………………… 58
CUADRO 25 …………………………………………………………… 60
CUADRO 26 …………………………………………………………… 61
CUADRO 27 …………………………………………………………… 62
CUADRO 28 …………………………………………………………… 65
CUADRO 29 …………………………………………………………… 66
CUADRO 30 …………………………………………………………… 67
CUADRO 31 …………………………………………………………… 69
CUADRO 32 …………………………………………………………… 69
CUADRO 33 ……………………………………………………………… 73
CUADRO 34 ……………………………………………………………… 78
CUADRO 35 ……………………………………………………………… 80
CUADRO 36 ……………………………………………………………… 84
CUADRO 37 ……………………………………………………………… 86
“Firewall Transparente de Contenido Web”
CUADRO 38 ……………………………………………………………… 87
CUADRO 39 ……………………………………………………………… 88
CUADRO 40 ……………………………………………………………… 89
CUADRO 41 ……………………………………………………………… 91
CUADRO 42 ……………………………………………………………… 92
CUADRO 43 ……………………………………………………………… 94
CUADRO 44 ……………………………………………………………… 95
CUADRO 45 ……………………………………………………………… 98
CUADRO 46 ……………………………………………………………… 100
CUADRO 47 ……………………………………………………………… 102
CUADRO 48 ……………………………………………………………… 108
CUADRO 49 ……………………………………………………………… 111
CUADRO 50 ……………………………………………………………… 112
CUADRO 51 ……………………………………………………………… 114
CUADRO 52 ……………………………………………………………… 116
CUADRO 53 ……………………………………………………………… 117
CUADRO 54 ……………………………………………………………… 119
CUADRO 55 …………………………………………………………120 -122
CUADRO 56 ……………………………………………………………… 123
CUADRO 57 ……………………………………………………………… 124
CUADRO 58 ……………………………………………………………… 125
CUADRO 59 ……………………………………………………………… 126
“Firewall Transparente de Contenido Web”
CUADRO 60 ……………………………………………………………… 127
CUADRO 61 ……………………………………………………………… 127
CUADRO 62 ……………………………………………………………… 128
CUADRO 63 ……………………………………………………………… 129
CUADRO 64 ……………………………………………………………… 130
CUADRO 65 ……………………………………………………………… 131
CUADRO 66 ……………………………………………………………… 132
CUADRO 67 ……………………………………………………………… 133
CUADRO 68 ……………………………………………………………… 134
CUADRO 69 ……………………………………………………………… 136
CUADRO 70 ……………………………………………………………… 137
CUADRO 71 ……………………………………………………………… 138
CUADRO 72 ……………………………………………………………… 139
CUADRO 73 ……………………………………………………………… 140
CUADRO 74 ……………………………………………………………… 141
CUADRO 75 ……………………………………………………………… 142
CUADRO 76 ……………………………………………………………… 143
CUADRO 77 ……………………………………………………………… 144
CUADRO 78 ……………………………………………………………… 145
CUADRO 79 ……………………………………………………………… 146
CUADRO 80 ……………………………………………………………… 147
CUADRO 81 ……………………………………………………………… 148
“Firewall Transparente de Contenido Web”
CUADRO 82 …………………………………………………………….. 166
CUADRO 83 ……………………………………………………………… 167
CUADRO 84 ……………………………………………………………… 168
CUADRO 85 ……………………………………………………………… 169
CAPITULO 3
CUADRO 86 ……………………………………………………………… 171
CUADRO 87 ………………………………………………………… 174-176
CUADRO 88 ……………………………………………………………… 177
CUADRO 89 ……………………………………………………………… 178
CUADRO 90 ……………………………………………………………… 179
CUADRO 91 ……………………………………………………………… 180
CUADRO 92 ……………………………………………………………… 181
CUADRO 93 ……………………………………………………………… 182
CUADRO 94 ……………………………………………………………… 183
CUADRO 95 ……………………………………………………………… 184
CUADRO 96 …………………………………………………………186 - 187
CUADRO 97 ……………………………………………………………… 189
CUADRO 98 ……………………………………………………………… 190
CUADRO 99 ……………………………………………………………… 191
CUADRO 100 …………………………………………………………… 192
CUADRO 101 …………………………………………………………… 195
“Firewall Transparente de Contenido Web”
CUADRO 102 …………………………………………………………… 196
CUADRO 103 ………………………………………………………………197
CUADRO 104 ………………………………………………………………198
CUADRO 105 ………………………………………………………………199
CUADRO 106 ………………………………………………………………200
CUADRO 107 ……………………………………………………………… 202
CUADRO 108 ………………………………………………………………203
CUADRO 109 ………………………………………………………………204
CUADRO 110 ……………………………………………………………. 205
CUADRO 111 ……………………………………………………………. 206
CUADRO 112 ………………………………………………………… 207
CUADRO 113 ………………………………………………………… 207
CUADRO 114 …………………………………………………………….. 208
CUADRO 115 ………………………………………………………… 209
CUADRO 116 ………………………………………………………… 210
CUADRO 117 ………………………………………………………… 210
CUADRO 118 ………………………………………………………… 212
CUADRO 119 ………………………………………………………… 214
CUADRO 120 ………………………………………………………… 215
CUADRO 121 ………………………………………………………… 218
CUADRO 122 ………………………………………………………… 219
“Firewall Transparente de Contenido Web”
CAPITULO 4
CUADRO 123 ………………………………………………………… 222
CUADRO 124 ………………………………………………………… 223
CUADRO 125 ………………………………………………………… 223
CUADRO 126 ………………………………………………………… 224
CUADRO 127 ………………………………………………………… 224
CUADRO 128 ………………………………………………………… 225
CUADRO 129 ………………………………………………………… 225
CUADRO 130 ………………………………………………………… 226
CAPITULO 5
CUADRO 138 ………………………………………………………… 238
“Firewall Transparente de Contenido Web”
1
CAPITULO 1
INTRODUCCIÓN GENERAL
El impresionante crecimiento de Internet y su correspondiente conectividad,
además del advenimiento de nuevos servicios, ha propiciado que intrusos
técnicamente avanzados consideren como un reto constante el emprender
ataques de índole diversa que amenacen la integridad y la privacidad de
redes de comunicación de datos en general.
Existe la necesidad de establecer dentro de la organización medidas de
seguridad para el paso de información, como lo es un esquema de
Arquitectura de Firewall. Un firewall o cortafuego es un sistema o grupo de
sistemas que hace cumplir una política de control de acceso entre dos redes.
De una forma más clara, podemos definir un cortafuegos como cualquier
sistema (desde un simple router hasta varias redes en serie) utilizado para
separar en cuanto a seguridad se refiere una máquina o subred del resto,
protegiéndola así de servicios y protocolos que desde el exterior puedan
suponer una amenaza a la seguridad. El espacio protegido, denominado
perímetro de seguridad, suele ser propiedad de la misma organización, y la
protección se realiza contra una red externa, no confiable, llamada zona de
riesgo.
Evidentemente la forma de aislamiento más efectiva para cualquier política
de seguridad consiste en el aislamiento físico, es decir, no tener conectada la
máquina o la subred a otros equipos o a Internet (Ver Cuadro 1 (a)). Sin
embargo, en la mayoría de organizaciones los usuarios necesitan compartir
información con otras personas situadas en muchas ocasiones a miles de
kilómetros de distancia, con lo que no es posible un aislamiento total. El
punto opuesto consistiría en una conectividad completa con la red (Ver
Cuadro 1 (b)), lo que desde el punto de vista de la seguridad es muy
problemático: cualquiera, desde cualquier parte del mundo, puede
potencialmente tener acceso a nuestros recursos. Un término medio entre
ambas aproximaciones consiste en implementar cierta separación lógica
mediante un cortafuegos (Ver Cuadro 1 (c)).
TIPOS DE FIREWALLS
Cuadro1: (a) Aislamiento. (b) Conexión total. (c) Firewall entre la zona de riesgo y el perímetro de seguridad.
Fuente: Investigadores La aplicación que presentamos se denomina “Firewall Transparente de
Contenido Web” orientado a plataformas de Sistema Operativo Linux basado
en captura y análisis de paquetes hacia el puerto 80, es decir, contenido Web
en general. Además permite configurar reglas de acceso a páginas Web
definidas por un usuario administrador establecidas con IPTABLES. Aquel
contenido Web que se ejecute mediante un protocolo “HTTPS (Puerto 443)”
que goza de las características del protocolo HTTP con el soporte SSL
(Secure Socket Layer), se consideran conexiones seguras.
1.1. ANTECEDENTES
Un firewall; es una máquina o host bastión (también se denominan
gates), es un sistema especialmente asegurado, pero en principio
vulnerable a todo tipo de ataques por estar abierto a Internet, que tiene
como función ser el punto de contacto de los usuarios de la red interna
de una organización con otro tipo de redes. El host bastión cumple
funciones básicas: 1) Filtra tráfico de entrada y salida y 2) Esconde la
configuración de la red hacia fuera.
Se entiende por filtrado de paquetes entendemos la acción de denegar
o permitir el flujo de tramas entre dos redes de acuerdo a unas normas
predefinidas; aunque el filtro más elemental puede ser un simple
router, trabajando en el nivel de red del protocolo OSI, esta actividad
puede realizarse además en un puente o en una máquina individual. El
filtrado también se conoce como screening, y a los dispositivos que lo
implementan se les denomina chokes.
Un proxy es un programa que permite o niega el acceso a una
aplicación determinada entre dos redes. Los clientes proxy se
comunican sólo con los servidores proxy, que autorizan las peticiones
y las envían a los servidores reales, o las deniegan y las devuelven a
quien las solicitó.
Físicamente, en casi todos los cortafuegos existen al menos un choke
y una máquina bastión, aunque también se considera firewall a un
simple router filtrando paquetes, es decir, actuando como choke;
desde el punto de vista lógico, en el cortafuegos suelen existir
servidores proxy para las aplicaciones que han de atravesar el
sistema, y que se sitúan habitualmente en el host bastión. También se
implementa en el choke un mecanismo de filtrado de paquetes, y en
alguno de los dos elementos se suele situar otro mecanismo para
poder monitorizar y detectar la actividad sospechosa.
Los firewalls son cada vez más necesarios en nuestras redes, pero
todos los expertos recomiendan que no se usen en lugar de otras
herramientas, sino junto a ellas; cualquier cortafuegos, desde el más
simple al más avanzado, presenta dos gravísimos problemas de
seguridad: a) Centralizan todas las medidas en un único sistema, de
forma que si éste se ve comprometido y el resto de nuestra red no
está lo suficientemente protegido el atacante consigue amenazar a
toda la subred simplemente poniendo en jaque a una máquina. b)
Falsa sensación de seguridad que un cortafuegos proporciona, por
cuanto generalmente un administrador que no disponga de un firewall
va a preocuparse de la integridad de todas y cada una de sus
máquinas, pero en el momento en que instala el cortafuegos y lo
configura asume que toda su red es segura, por lo que se suele
descuidar enormemente la seguridad de los equipos de la red interna.
Esto, como acabamos de comentar, es un grave error, ya que en el
momento que un pirata acceda a nuestro cortafuegos
automáticamente va a tener la posibilidad de controlar toda nuestra
red.
Nuestro “Firewall Transparente de Contenido Web” considera ciertas
desventajas presentes en los Firewalls a nivel de contenido Web
ofertados por numerosas empresas y grupos dedicados a sistemas de
seguridad. Un sistema basado en Firewall hoy en día no es la mejor
herramienta de seguridad, continuamente se descubren fallos en los
productos y aparecen nuevos tipos de ataques. Muchas de las
herramientas existentes en el mercado de este género de seguridad
no contemplan aspectos importantes como:
• Protección contra los ataques provenientes de Internet a nivel de
contenido (Puerto 80), es decir, frases o dominios censurados,
vínculos en el contenido de la página Web, que lleven a destinos
catalogados como “prohibidos”.
• Transparencia en la red, a tal punto de no ser alcanzable desde el
exterior, o sea, no detectable.
• Definición de reglas para acceso a Internet, permitiendo bloqueos a
nivel de puerto, direcciones IP, nombres de dominios y contenido
de la página Web.
• Almacén de datos actualizable.
• Flexible, da la posibilidad de crear las políticas de acuerdo a
nuestras necesidades de seguridad y conocimientos.
Ante esta realidad nuestra aplicación de filtrado de paquetes para
controlar los accesos a la red corporativa se implementa sobre una
plataforma sólida y robusta de sistema operativo como Linux, por lo
tanto, la aplicación que desarrollamos se beneficia de los niveles de
seguridad proporcionados por el propio sistema operativo a más de los
niveles de seguridad a nivel de programación (Ver Cuadro 2).
ARQUITECTURA DE FIREWALL
Cuadro 2 Fuente: Investigadores
Los cortafuegos proporcionan una barrera de seguridad entre redes de
distintos niveles de confianza o seguridad, utilizando políticas de
control de acceso a nivel de la red. Entre sus funciones principales
tenemos: Filtrado de paquetes, Servidores Proxy, Túneles de Datos
Cifrados (VPN), Encriptación, entre otros (Cuadro 3, Cuadro 4, Cuadro
5, Cuadro 6).
Los cortafuegos filtran paquetes de red, permitiendo o denegando su
paso según las políticas establecidas. También hacen traducciones de
11
ESQUEMA DE FIREWALL TÍPICO ENTRE RED LOCAL E INTERNET
Cuadro 3 Fuente: http://www.monografias.com/trabajos15/firewall-linux
15
1.2. PROBLEMATICA
Actualmente las organizaciones utilizan conexiones hacia el exterior
por fines de desenvolvimiento propio, investigación, transacciones
diarias, procesos y demás actividades que las hacen depender de
Internet como un medio de supervivencia, además existen un
sinnúmero de procesos que la organización tiene con su entorno como
lo son el gobierno, instituciones financieras, proveedores, clientes,
competencia, instituciones públicas o privadas, medios de información,
empleados, etc. y por esta razón están propensas a que diferentes
tipos de información que se encuentra en la red pública intenten migrar
hacia la red privada como lo es la publicidad no deseada, páginas
Web de contenido pornográfico, spyware o software espía, entre otros;
por ello existe la necesidad de implementar un sistema de seguridad
basado en políticas que ayuden a combatir este tipo de afluencia
externa.
Otro problema presente en las organizaciones es el tiempo que el
personal interno destina a entretenimientos mediante visitas a páginas
Web como “Downloads ringtones”, “Descargas de música”, “Revisión
de cuentas de correo personal”, entre otros; en horas laborables.
Mediante este método de bloqueo de páginas Web a nivel de
contenido, es posible controlar tal malestar.
1.2.1. Causas
Los problemas de seguridad (Ver Cuadro 7) se deben a una gran
variedad de razones, como:
• Flujo elevado de información no deseada en la red pública.
• Alto porcentaje de existencia de personas maliciosas o “Hackers”
que acceden a diferentes redes de diversas formas.
• Incorrecta configuración del sistema o de cualquier mecanismo
encargado de protegerlo, como por ejemplo una inadecuada
aplicación de los permisos de los archivos de sistema o una
plantilla de seguridad demasiado permisiva.
• Nivel de seguridad poco confiable.
1.2.2. Consecuencias
La existencia de problemas en los niveles de seguridad pueden
ocasionar los siguientes efectos:
• Daños y perjuicios en la integridad de la información.
• Daños en la infraestructura de red.
• Decremento en el control de los niveles de seguridad.
• Falta de control de calidad en el flujo de información.
• Falta de control de acceso a sitios de entretenimiento.
• Falta de control de acceso a sitios pornográficos.
ARBOL DE PROBLEMAS
Falencias en la seguridad de la red (Proxy y Gateways)
Altos costos por accesos a Internet
Falta de controles para conexiones al exterior
Alto porcentaje de personas maliciosas
Presencia de máscaras Abundancia de información de fácil
acceso
Aumento en los gastos de la organización
Daños en la infraestructura de la red
Daños en la integridad de la información
Personal de la Organización gasta Tiempo visitándolas.
Conexiones o accesos internos lentos
Reducción en el control de calidad de la
información
CCaauussaass
EEffeeccttooss
Restricción de otros servicios de calidad
Cuadro 7
Fuente: Investigadores
1.3. SOLUCIÓN DE LA PROBLEMATICA
Entre nuestras soluciones están el poder brindar un mayor grado de
seguridad al flujo y manejo de información dentro de la organización
tomando para ello reglas de seguridad en el filtro de los paquetes que
llegan hacia la red, examinando cada paquete, reduciendo así el
porcentaje de filtración de datos no deseados mejorando los
estándares de seguridad (Ver Cuadro 8).
ARBOL DE ALTERNATIVAS
Reducir costos mediante la herramienta
Prever posibles daños o atentados a la
red
Controlar la integridad de la
información
Evitar realizar actividades ajenas a
la organización.
Agilizar las conexiones o accesos
internos
Incrementar control de calidad de la información
Incrementar la seguridad de la red dentro de la organización
Cuadro 8 Fuente: Investigadores
Frente a este antecedente, existe una necesidad de implementar un
Firewall más minucioso, que no sólo examine las direcciones IP, sino
también a nivel del contenido de las páginas que ingresan y salen de
nuestra red corporativa.
En este planteamiento del proyecto se oferta una mejora a un proceso
existente como es el uso de barreras que filtren cierto tipo de
información, es decir, un “Firewall”, implementando filtros a nivel de
direcciones IP, dominios y frases, incrementando así los niveles de
seguridad al tener un mejor control sobre la infraestructura de la red
(Ver Cuadro 9).
El “Firewall Transparente de Contenido Web, FTCW” además de su
efectividad innegable como cortafuegos posee otras características
relevantes como:
• Transparente a la red, no puede ser alcanzado. (Carece de
dirección IP).
• Optimizar los niveles de seguridad en el flujo de información de una
red corporativa.
• Resolver necesidades de seguridad.
• Bajo costo de desarrollo.
• Capacidad para detectar sitios denegados automáticamente.
• La administración de la aplicación FTCW se la realiza única y
exclusivamente en la máquina donde reside dicha aplicación.
• Aplicación manejada sólo por el usuario administrador del sistema.
• Interfaz Gráfica de Usuario amigable.
• Control de acceso a la aplicación FTCW a nivel de usuario y
contraseña.
• Filtro de paquetes HTTP a través del puerto 80.
• Facilidad para la configuración de políticas de filtrado.
• Establecer reglas o políticas de acuerdo a las necesidades de la
empresa en un momento determinado.
• Configurable a través de incidencias como direcciones IP, nombres
completos de dominios o parte de él, así como también, a nivel de
frases.
• Permite examinar el contenido de páginas Web que entran a
nuestra red corporativa.
• Generación de reportes, con la facilidad de establecer rangos de
fecha y hora.
• Generación de estadísticas.
• Generación de Archivos de Auditoría.
• Generación de Archivos Log de errores.
22
1.4. MISIÓN
Incrementar el nivel de seguridad en las redes que existen en nuestras
organizaciones realizando un filtrado de paquetes entrantes en las
conexiones de acceso a Internet.
1.5. VISIÓN
Ubicarnos como líderes del mercado en su género de “Herramientas
de Seguridad a nivel de contenido Web, bajo plataforma LINUX”,
sirviendo de esta manera a las organizaciones privadas y públicas.
1.6. OBJETIVOS
1.6.1. Objetivo General
Proveer protección a las organizaciones mejorando los estándares de
seguridad y controles de calidad en el flujo de la información, tanto
interna como externa.
1.6.2. Objetivos Específicos
• Incrementar los niveles de seguridad en el flujo de la data,
evitando los ingresos no autorizados a la red corporativa.
• Optimizar el tiempo de trabajo de los empleados, evitando la
pérdida de tiempo en horas laborables al realizar accesos a
Internet no requeridos.
1.7. ALCANCE
El Firewall Transparente de Contenido Web es una aplicación que
brinda niveles de seguridad en la organización, especialmente en el
acceso a Internet.
Para lograr este objetivo, el Firewall Transparente de Contenido Web
trabaja sobre una plataforma más segura como lo es Linux.
En la actualidad, la mayoría de servidores dentro de las
organizaciones utilizan este Sistema Operativo, algunas de las
características incluye multitarea real, memoria virtual, librerías
compartidas, dirección y manejo propio de memoria y TCP/IP.
El Firewall Transparente de Contenido Web se beneficia de las
características presente en el Sistema Administrador de MySQL entre
las cuales podemos mencionar versatilidad, facilidad de uso, bajo
coste, capacidad multiusuario, portabilidad, entre otros.
JAVA es un lenguaje orientado a objetos y desarrollado por Sun
Microsystems. El principal objetivo de JAVA fue hacer un lenguaje que
fuera capaz de ser ejecutado de una forma segura a través de
Internet. Estas herramientas están catalogadas como Open Source, lo
cual permite reducir costos en el licenciamiento del software.
La funcionalidad del “Firewall Transparente de Contenido Web”
consiste en capturar todos los paquetes que están circulando desde
Internet hacia la Red de Área Local dirigidos exclusivamente a tráfico
Web, y luego analizar su contenido y determinar si cumple o no con
las políticas de seguridad previamente establecidas, permitiendo así
descartar todo el flujo innecesario de la Red.
La características de transparencia del “Firewall Transparente de
Contenido Web” se refiere a que no es detectable desde ningún punto
de la red, tanto interna como externamente, es decir, es una caja
negra que nadie sabe que existe.
El análisis de los paquetes se realiza a nivel de la Capa de Aplicación
(Capa 7), mientras que las reglas de filtrado operan a nivel de la Capa
de Red (Capa 3), presentes en el modelo OSI (Ver Cuadro 10).
CAPAS DEL MODELO OSI vs. TCP/IP
Cuadro 10 Fuente: Internet – www.firewall.com
El Firewall Transparente de Contenido Web comprende procesos
relevantes como captura de paquetes, análisis de paquetes, entre
otros.
1.7.1. Captura de paquetes
Para la captura de paquetes se emplean las librerías Libpcap y Jpcap.
que permiten la manipulación de los datos capturados mediante clases
y métodos.
La forma de capturar los paquetes es básicamente escuchar a través
de la interfaz de la red por la que ingresa la información Web y
grabarlos en un medio de almacenamiento local.
Este proceso trabaja infinitamente. Es en este proceso donde se
define el protocolo y el puerto por el que escucha. Es importante
definir el protocolo y el puerto para una captura exclusiva de la
información (protocolo TCP y puerto 80).
En el proceso de captura de paquetes se definen dos estructuras
importantes como son la cabecera de los paquetes y la data. Se
obtiene de cada paquete los datos más importantes como IP Fuente,
IP Destino, MacAddress Fuente, MacAddress Destino, longitud de
cabecera, Puerto Fuente, Puerto Destino y demás campos
pertenecientes a la cabecera TCP o IP. Como la mayoría de las
páginas Web emplean un formato estándar de codificación de
caracteres, la aplicación usa el estándar ISO-8859-1.
Cada paquete capturado se identifica por la hora de captura
incluyendo microsegundos.
1.7.2. Análisis de paquetes
El análisis es sinónimo de examinar, inspeccionar, observar; los
paquetes capturados tanto las cabeceras y la data, para contrastarlos
con los patrones establecidos como direcciones IP, dominios y frases
identificados como no permitidos.
El resultado del análisis nos permite identificar las direcciones IP que
serán censuradas o bloqueadas, es decir, los paquetes que contengan
frases o dominios no permitidos serán identificados por su Dirección
IP Origen, la misma que permite establecer reglas de IPTABLES que
trabaja a nivel de Capa de Red y Capa de Transporte, es decir, capa 3
y 4 del Modelo OSI respectivamente.
1.7.3. Función del Firewall Transparente de Contenido Web
(FTCW)
La aplicación se basa en reglas de IPtables. IPtables es un sistema de
firewall vinculado al kernel de linux que se ha extendido enormemente
a partir del kernel 2.4 de este sistema operativo. Al igual que el
anterior sistema IPchains, un firewall de IPtables no es como un
servidor que lo iniciamos o detenemos o que se pueda caer por un
error de programación. IPtables esta integrado con el kernel, es parte
del sistema operativo. Realmente lo que se hace es aplicar reglas.
Para ello se ejecuta el comando IPtables, con el que se añade, se
borra y se crean reglas. Por ello un firewall de IPtables no es sino un
simple script de shell en el que se van ejecutando las reglas de
firewall.
Existe un script predeterminado para IPTABLES que permite la salida
de todo el tráfico de la LAN, además permite exclusivamente el acceso
del Protocolo TCP y los puertos 80 (HTTP) y 443 (HTTPS).
La utilización del comando IPTABLES dentro de la aplicación se la
realiza en dos formas: a) En tiempo real, y b) Por lotes.
Una vez que se ha analizado el contenido Web y se ha determinado
direcciones IP que serán bloqueadas, se genera un nuevo script
indicando a IPTABLES que dichas direcciones IP no pueden ingresar
a red local.
Los clientes que solicitaron acceso a aquellas páginas que han sido
bloqueadas recibirán una notificación de timeout de parte del servidor
proxy.
1.7.4. Funcionalidad de los módulos del FTCW
Inicialmente el “Firewall Transparente de Contenido Web” tendrá
habilitado reglas de filtrado de paquetes mediante IPTABLES para
permitir el acceso únicamente a los puertos correspondientes a los
servicios HTTP y HTTPS. Una vez que los paquetes ingresan, son
capturados por FTCWSrv con la ayuda de los métodos disponibles en
la librería jpcap que brinda JAVA (Similar a la aplicación tcpdump). El
FTCWSrv instancia un proceso que se encarga de manejar los
paquetes HandlerPacket y al mismo tiempo instancia al proceso
FTCWDaemon, el cual se encarga de verificar las reglas pre-definidas
y establecer la funcionalidad de IPTABLES. Los procesos
mencionados anteriormente trabajan como un Thread. Mientras se
reciben lo paquetes hacia la red LAN, FTCWSrv los lee de la red y los
graba mediante el proceso FTCWPack que es el encargado de
interactuar con la base de datos MySQL.
FTCWSrv es un proceso que se ejecutará constantemente desde el
momento que la máquina que trabaja como bridge se inicie, es decir,
levanta la aplicación con otro servicio del Sistema Operativo Linux,
claro está que el usuario Administrador tendrá la posibilidad de darle
de baja en algún momento que el crea conveniente. Entonces,
FTCWSrv hace una llamada al proceso FTCWPack para realizar la
inserción de la data capturada en una tabla llamada packetTCP que
reside en la base de datos firewall. La data capturada es grabada en
forma binaria en un campo de tipo mediumblob.
Todos los procesos de la aplicación FTCW generan un informe sobre
las acciones que realizan los procesos en el servidor, flujo de datos y
un registro de errores, estos informes se almacenan en el directorio
/var/log.
El proceso FTCWDaemon es llamado por el proceso FTCWSrv y
trabaja como un cron del sistema operativo. Se ejecuta cada cinco
segundos y se encarga de: 1) Ejecutar el proceso FTCWDns. 2)
Ejecutar el proceso FTCWAnaliza. 3) Mantener la tabla packetTCP
con un límite determinado de registros.
El proceso FTCWDns es llamado por el proceso FTCWDaemon e
interactúa directamente con el FTCWPack para realizar la conexión,
consulta, inserción y eliminación en la base de datos. Se encarga de
relacionar el nombre del dominio completo con su respectiva dirección
IP. De esta manera la aplicación trabaja con un propio servicio DNS
que se almacena en la tabla denominada t_dns.
El módulo FTCWAnaliza, es llamado por el proceso FTCWDaemon y
se encarga de actualizar tanto la tabla de reglas de IPTABLES
denominada t_iptables, como la cadena FORWARD del comando
IPTABLES en tiempo real. Para tal efecto, interactúa con el
FTCWPack para realizar la respectiva conexión y consulta a la base
de datos obteniendo las direcciones IP, dominios y frases establecidas
por el administrador del sistema, de las entidades t_ip, t_dominio y
t_frase respectivamente.
1.7.5. Esquema de la Base de Datos MySQL
MySQL es un sistema de administración para bases de datos
relacionales que provee una solución robusta a los usuarios. La
aplicación “FTCW” trabaja con tablas tipo MyISAM que son estándares
en MySQL.
FTCW utiliza un driver de conexión para lograr la interacción entre el
Lenguaje de Programación de alto nivel JAVA y la base de datos
MySQL bajo plataforma LINUX.
1.7.5.1. Estructuras de tablas
El “Firewall Transparente de Contenido Web” requiere de ciertas
entidades, tablas o archivos (Definitivos y temporales) que permiten el
almacenamiento, transferencia, autenticación y filtrado de datos, las
cuales se alojan en la base de datos “firewall”. Las entidades
principales son:
TABLAS DE FTCW
No. Tabla Tamaño ( Bytes ) 1 packetTCP 1556 2 t_dns 447 3 t_dominio 463 4 t_frase 453 5 t_ip 452 6 t_iptables 538 7 t_usuario 596
Cuadro 11 Fuente: Investigadores
1.7.5.2. Conexión a la base de datos
El módulo dedicado al proceso de conexión a la base de datos es
FTCWPack. FTCWPack es el servidor de base de datos que recibe
llamadas o peticiones de otros módulos como FTCWSrv,
FTCWDaemon, FTCWDns, FTCWAnaliza, para realizar tareas de
inserción, selección, actualización y eliminación de registros; creación,
eliminación, auditoría, bloqueo y desbloqueo de tablas, consta de las
siguientes características:
• FTCWPACK se define como el medio destinado a interactuar con
el Sistema Manejador de Base de Datos MySQL.
• FTCWPACK es una clase que tiene todos los métodos necesarios
para establecer comunicación con la base de datos “firewall” y
manipularla (Ver Cuadro 12).
METODOS DEL FTCWPack
No. Método Argumentos 1 conecta () 2 finalize () 3 hacerConsulta (String table, String campo, String campo2,int
tipo) 4 Consultar (String consulta) 5 hacerInsercion (String table, int cols, String str, byte[] data) 6 GrabarLog (String exception, String cadenaSQL, int nFile) 7 hacerActUser (String table, String newPass, String user, String
pass, int ind) 8 hacerInsUser (String table, String user, String pass, String nom,
int ape) 9 hacerBorrado (String table, String key)
10 hacerActualizacion (String table, char newValue, String Field) 11 crearTabla (String table, String Fields) 12 borrarTabla (String table) 13 descTabla (String table) 14 showTable () 15 CargaDNS (String dir_ip, byte[] data)
Cuadro 12 Fuente: Investigadores
• Cualquier proceso o módulo que desee comunicarse con la Base
de Datos firewall para cualquier finalidad realizará siempre una
llamada al módulo FTCWPack.
• En primera instancia el FTCWPack se encarga de llenar una tabla
general de la base de datos de MySQL denominada packetTCP
con los paquetes capturados por el FTCWSrv.
• FTCWPack es invocado desde el FTCWAnaliza para consultas
selectivas de direcciones IP, nombres de dominios y frases en las
entidades t_ip, t_dominio y t_frase respectivamente, luego realiza
una función de inserción en la entidad t_iptables.
• FTCWPack manipula un método de cierre de conexión a la base de
datos para aquellos casos de fallos del sistema.
El FTCWPack puede ser iniciado desde cualquier módulo o proceso
como por ejemplo FTCWSrv, entonces el FTCWPACK interpreta dicha
petición y procede a establecer las conexión a la base de datos
mediante un driver de conexión entre Java y MySQL con los
parámetros “Nombre de la base de datos”, “Nombre del host”,
”Nombre del usuario de MySQL“, y “clave de acceso”. La cadena de
conexión es la que se muestra en el Cuadro 13.
PARAMETROS DE CONEXIÓN DE MySQL
String bd = "firewall"; String Host = "localhost"; String url = "jdbc:mysql://"+Host+"/"+bd; String userName = "root"; String password = "*******";
Cuadro 13 Fuente: Investigadores
Con estos parámetros se realiza una verificación en las tablas de
concesión de la base de datos de administración “mysql” para conocer
si el usuario tiene acceso a manipular registros de la base de datos
“firewall” si es satisfactoria dicha autenticación se procede a ejecutar la
solicitud del proceso (Ver Cuadro 14).
MODULO FTCWPACK
Recepción de petición
Establecer conexión FCW
Acceso a datos
Autentica-ción
MySQL
Petición
Si
No
Ack
HacerInserción
Hacer Consulta
Borrartabla
Crear tabla
Hacer ActUser
Show table
Cargar DNS s
Consultar Grabar LOG
Describirtabla
HacerInsUser
HacerBorrado
Hacer Actualización
finalize
Cuadro 14 Fuente: Investigadores
1.7.6. Interfaz Gráfica del Usuario
Como herramientas de programación para el diseño de la GUI se
emplea Eclipse que es un ambientador (IDE) de JAVA, el cual nos
ofrece un sinnúmero de bondades como ayudas, librerías y
composición visual; iReport para la elaboración de los reportes;
Wink para la elaboración de las ayudas de la aplicación FTCW.
1.7.6.1. Características
La interfaz Gráfica del Usuario contempla los siguientes puntos:
• Inicio de sesión sólo como administrador.
• Información de paquetes capturados.
• Presenta un menú principal con las siguientes opciones: Archivo,
Opciones, Reporte, Base de Datos, Ver y Ayuda.
• En el menú “Archivo” se presenta las siguientes acciones:
Iniciar la captura de paquetes
Detener la captura de paquetes
Mantenimiento de usuarios de la aplicación FTCW
Cambio de contraseña de usuario
• En el menú “Opciones” se permite configurar las reglas o
políticas que la empresa quiere considerar para el acceso a
contenido Web disponible en Internet. Tal acción la realiza a
través de las “Configuración de reglas”. La definición de las
políticas se establece a nivel de:
Dirección IP
Nombre de Dominio
Frase
Permitiendo ejercer funciones de inserción, modificación y
eliminación sobre éstas. Además proporciona información
concerniente a las reglas de IPTABLES generadas como
resultado de las políticas aplicadas.
• Facilidad para que el usuario administrador verifique el contenido
Web de determinado sitio a través del browser.
• Al generar una política nueva mediante la interfaz adecuada dará
como resultado un archivo o tabla, de donde se carga el archivo
de IPTABLES.
• En el menú “Reportes” se da la posibilidad al administrador de
generar reportes por rangos de fechas y horas. Se han definido
los siguientes informes relevantes:
Reporte de restricciones por dirección IP
Reporte de restricciones por dominio
Reporte de restricciones por frase
Reporte de conexiones
Reporte general de restricciones
Reporte de políticas a nivel de dirección IP
Reporte de políticas a nivel de dominio
Reporte de políticas a nivel de frase
• El menú “Base de Datos” presenta la opción de “Respaldar
tablas de MySQL”, así como también visualizar la estructura de
una determinada tabla.
• El menú “Ver” permite mostrar u ocultar la Barra de
Herramientas o la Barra de Estado.
• El menú de “Ayuda” permite visualizar información referente a:
Ventanas de Contenido (Acerca de...) en la cual se detalla
programa, versión, año; autores.
Ventanas de ayuda de la aplicación FTCW, con información
del funcionamiento del Sistema.
1.8. BENEFICIOS
• Incrementar el nivel de seguridad en el flujo de la información
entrante hacia la red corporativa, doméstica u otra, a través del
puerto 80.
• Reducir la posibilidad que la aplicación sea alcanzada desde el
exterior o interior de la red corporativa por su característica de
transparencia.
• Facilidad en la configuración del FTCW a través de incidencias
como direcciones IP, dominios, y frases para definir las políticas de
control de acceso.
• Permitir el bloqueo del contenido de páginas Web, evitando de esta
manera la pornografía u otro tema censurado.
• Establecer costos mínimos de inversión en hardware y software.
• Alta fiabilidad de la aplicación ya que Linux presenta gran calidad y
estabilidad.
• Informes de acceso a páginas generados automáticamente.
• Capacidad para detectar sitios denegados automáticamente.
• Es una aplicación centralizada manejada exclusivamente por el
usuario administrador del sistema.
• Generación de reportes, datos estadísticos.
• Monitoreo a partir de archivos de Auditoría y Logs de errores.
• Interfaz gráfica amigable.
1.9. CRONOGRAMA DE ACTIVIDADES
Tomando como base el cronograma presentado por la carrera para
el Curso de Graduación 2004 hemos establecido las siguientes
actividades o tareas a ejecutar para alcanzar el desarrollo del
proyecto “Firewall Transparente de Contenido Web”. Cabe recalcar
que desde el inicio del seminario este cronograma ha sufrido
cambios para ajustarse a eventos que han suscitado. Para la
valoración del tiempo se ha tomado en consideración días
laborables, considerando los días no laborables como tiempo de
holgura. Entre las principales tareas que podemos destacar durante
el desarrollo del proyecto de grado tenemos las siguientes (Ver
Cuadro 15).
CRONOGRAMA DE ACTIVIDADES
ID NOMBRE DE LA TAREA No. DIAS INICIO FIN 1 Formación de grupos 5 días 20/09/04 26/09/042 Definición de tema a presentar 5 días 27/09/04 03/10/043 Evaluación del proyecto 5 días 04/10/04 10/10/044 Recopilación de información 10 días 11/10/04 22/10/045 Análisis del problema propuesto 70 días 25/10/04 28/01/056 Diseño de la solución encontrada 20 días 31/01/05 27/02/057 Implementación del proyecto (Fase 1) 30 días 28/02/05 08/04/058 Documentación (Fase 1) 4 días 08/03/05 11/03/059 Revisión de avance del proyecto 5 días 11/04/05 15/04/0510 Implementación del proyecto (Fase 2) 19 días 11/04/05 05/05/0511 Pruebas del proyecto 56 días 11/04/05 23/06/0512 Revisión de avance del proyecto 1 día 06/05/05 06/05/0513 Documentación (Fase 2) 6 días 10/06/05 17/06/0514 Implementación del proyecto (Fase 3) 30 días 07/05/05 17/06/0515 Revisión Final de proyecto ante el tribunal 0 días 18/06/05 18/06/0516 Implementación (Fase 4) 6 días? 19/06/05 26/06/0517 Documentación (Fase 3) 6 días 20/06/05 27/06/0518 Preparación para sustentación 4 días 23/06/05 28/06/0519 Sustentación del proyecto 1 día 29/06/05 29/06/05
Total de tiempo 282 Días 9.4 Meses
Cuadro 15 Fuente: Investigadores
En el ANEXO A-1 se puede apreciar el cronograma de actividades
con mayor detalle.
1.10. RECURSOS
Dentro de la planificación del proyecto “FTCW” se contempla los
siguientes recursos requeridos para acometer el esfuerzo de
desarrollo como son las herramientas de hardware, software y el
recurso humano (Ver Cuadro 16).
RECURSOS DEL PROYECTO
Recurso Humano
ComponentesReutilizables
Hardware y Software
Cuadro 16 Fuente: Investigadores
Considerando la magnitud de la aplicación “FTCW” y el tiempo
dedicado a la investigación, herramientas o agregados se definen los
siguientes recursos a requerir.
1.10.1. Hardware
En base a ciertas configuraciones de seguridad existentes en
organizaciones se establece los siguientes Recursos Físicos (Ver
Cuadro 17).
RECURSOS DE HARDWARE
Cant. Equipos 1 Computador (más periféricos)
1 Placa de memoria de 128 MB.
1 Disco duro con capacidad de 20 GB.
2 Tarjetas de Red Ethernet con velocidad de 10/100 Mbps.
Cuadro 17 Fuente: Investigadores
Para efectos del proyecto se requiere una tarjeta de red para uso local y otra para el enlace con el exterior de la red, con el proveedor de Internet.
Las características de hardware están íntimamente ligadas con la
versión de sistema operativo que se decida utilizar.
1.10.2. Software
La aplicación se basa en herramientas Open-Source, lo cual permite
economizar costos de licencias. Como Recursos Tecnológicos
tenemos los siguientes:
• Sistema Operativo: La plataforma sobre la cual se ejecuta la
aplicación “FTCW” es Linux Fedora Core 3 versión de Kernel 2.6.9,
seleccionado para tal efecto por los niveles de seguridad que
brinda y por ser una de las últimas versiones de Linux mejorada y
con mayor cantidad de componentes.
• Base de Datos: Viene incluida en los paquetes de Linux es
denominada “MySQL” versión 3.23.58, permite el almacenamiento
de la información que requiere la aplicación FTCW como es:
información relevante de los paquetes, direcciones IP, nombres de
dominios, frases existentes en las páginas Web que se ejecutan
bajo un Servidor Apache HTTP. Además aloja información de los
usuarios con privilegios de “administrador”, que tengan acceso al
sistema.
• Lenguaje de Programación: El lenguaje de programación
seleccionado es JAVA, el cual mediante sus clases, librerías y
propiedades permiten manipular paquetes, conexiones a la base
de datos MySQL, a más de esto existe gran cantidad de
información en Internet acerca de este lenguaje. Muchas
aplicaciones del medio se basan en él tanto como Arquitecturas
Cliente/Servidor, manejo de sockets, captura de paquetes, entre
otros.
• Interfaz Gráfica: Como herramienta de desarrollo se emplea el
Ambientador de JAVA “Eclipse” (eclipse-SDK-3.0.1-linux-gtk).
Eclipse proporciona ayudas de clases o métodos a utilizar y acerca
del manejo del mismo. Para la generación de reportes se emplea
iReport versión iReport-0.4.1. Para la elaboración de las ayudas de
la aplicación FTCW se emplea Wink versión wink-1.5.
1.10.3. Humano
Una vez realizada la estimación del esfuerzo de desarrollo (personas
por mes) y seleccionar la especialidad que desempeñará cada
profesional se optó por establecer un equipo de trabajo conformado
por tres personas: la Srta. Ángela Yanza Montalván, la Srta. Sandra
Cerón Lucero y el Sr. Arturo Lomas Villarreal.
Este Recurso Humano intervino en cada una de las fases de
desarrollo de un sistema como son: levantamiento de información,
análisis, diseño, desarrollo, pruebas e implantación de la aplicación
“FTCW”; todos orientados a investigar arduamente para el desarrollo
del mismo y de buscar las mejores opciones existentes en el mercado
en cuanto a desarrollo o niveles de seguridad.
En el Cuadro 18 se presentan las características más relevantes de
los recursos utilizados para la aplicación “FTCW“.
CARACTERISTICAS DE LOS RECURSOS Descripción
del recurso
Informes de
disponibilidad
Fecha cronológica del recurso
Tiempo aplicación
recurso Hardware Inmediata 31/01/05 - 29/06/05 6.3 meses
Software Inmediata 31/01/05 - 29/06/05 6.3 meses
Humano Inmediata 20/09/05 - 29/06/05 9.4 meses
Cuadro 18 Fuente: Investigadores
1.11. ESTUDIO DE FACTIBILIDAD
El estudio de factibilidad se refiere a la disponibilidad de los recursos
necesarios para llevar a cabo los objetivos o metas señalados.
Determina las posibilidades de éxito para conseguir la solución de las
necesidades detectadas y además recopilar datos relevantes sobre el
desarrollo de un proyecto y en base a ello tomar la mejor decisión,
para proceder a su estudio, desarrollo o implementación.
1.11.1. Factibilidad Técnica
Establecer en una organización un mecanismo de seguridad que
controle el flujo de información entrante a través de Internet oferta
grandes ventajas a la institución, sea esto, a nivel de ahorro de tiempo
del personal en visita a sitios Web no autorizados como
www.pasatiempos.com, www.letrasdecanciones.com, etc., incrementar
el nivel de seguridad al no ser alcanzable desde ningún punto por su
característica de transparencia y su flexibilidad al permitir establecer
políticas de acuerdo a necesidades del momento, estos aspectos
establecen mejoras sobre los demás Firewalls de contenido Web
existentes en el mercado.
La inversión en tecnología para la aplicación es mínima y aceptable
por cuanto se optó por el uso de Herramientas Open-Source y
plataformas que requieren características de hardware básicas. Para
mayor detalle ver Numeración 1.10. en donde se especifica los
recursos del proyecto.
1.11.2. Factibilidad Económica
Generalmente la factibilidad económica es el elemento más importante
ya que a través de él, se solventan las demás carencias de otros
recursos, es lo mas difícil de conseguir y requiere de actividades
adicionales, cuando no se posee.
Los costos incurridos durante el ciclo de vida del proyecto como:
Costos de estudio, diseño, desarrollo, hardware, software, instalación,
recargos e impuestos, capacitación de personal, servicio técnico son
solventados por la organización que requiere la implantación del
software “FTCW, Firewall Transparente de Contenido Web”. En este
momento todos los costos en los que se puedan incurrir están
solventados por los creadores del software mientras que los equipos
son proporcionados por la Universidad de Guayaquil.
1.11.3. Factibilidad Operativa
Se refiere a todos aquellos recursos donde interviene algún tipo de
actividad, depende de los recursos humanos que participen durante la
operación del proyecto. Durante esta etapa se identifican todas
aquellas actividades que son necesarias para lograr el objetivo y se
evalúa y determina todo lo necesario para llevarla a cabo.
Una entidad tiene la necesidad de filtrar el contenido Web de la
información que ingrese a su red corporativa por razones de
seguridad, pero que tenga alto rendimiento y bajo costo. Por lo tanto el
proyecto desde el punto de vista técnico y económico es viable y a
priori, porque la inversión en hardware y software es aceptable. Desde
el punto de vista operativo es óptimo porque el tiempo de
capacitación de personal y costos operativos son mínimos, ya que la
aplicación se orientada al usuario Administrador de Sistemas.
En la actualidad existen varios Firewall de contenido Web en el
mercado, pero el sistema que se oferta es mejorado, tomando en
cuenta varios conceptos de algunos de los sistemas creados, por
cuanto su uso es garantizado.
1.12. COSTOS MINIMOS
El arduo análisis y proyección de la aplicación permite establecer los
siguientes costos mínimos a incurrir en lo referente a la adquisición de
equipos (Ver Cuadro 19):
COSTOS MINIMOS DE HARDWARE
Cant. Equipos Valor Unitario
Valor Total
1
2
Computador PC Moderno completo más periféricos. Procesador Pentium III. Memoria 128 MB. Capacidad en disco duro de 20 GB. Tarjetas de Red Ethernet con velocidad de 10/100 Mbps.
800.00
25.00
800.00
50.00
$ 850.00
Cuadro 19 Fuente: Investigadores
Estos costos pueden variar hasta la implementación del proyecto.
1.13. METODOLOGIA DEL PROYECTO
Se ha realizado una distribución de actividades para abarcar de esta
manera con mayor rapidez el desarrollo de la aplicación “FTCW”. A
continuación mostramos datos importantes a tener en consideración.
1.13.1. Metodología del Análisis
Actualmente, hay varias herramientas encargadas de filtrar cierta
información que no debe entrar a una red corporativa, pero ha
existido un porcentaje o margen de error en el cual debido a malas
configuraciones o por no tener en consideración posibles medios de
acceso se han perjudicado a organizaciones al realizarse una
malversación de la información.
Por ello, el estudio realizado contempla ciertos aspectos de
seguridad centrando nuestro análisis en los paquetes TCP/IP para
detectar aquellos que no tengan acceso a la red mediante políticas
establecidas a nivel de direcciones IP, nombres de dominios y
frases.
El método de desarrollo de la aplicación “FTCW” se apoya en un
modelo clásico de ciclo de vida de software, en cada una de las
etapas de este modelo se ejecutan algunas tareas o actividades
(Ver Cuadro 20) y se emplean ciertas herramientas para el análisis
(Ver Cuadro 21).
Planificación de actividades
1. Investigación preliminar Esta actividad tiene tres partes: 1.1. Aclaración de la solicitud 1.2. Estudio de factibilidad 1.2.1. Factibilidad técnica 1.2.2. Factibilidad económica 1.2.3. Factibilidad operacional 1.3. Aprobación de la solicitud 2. Determinación de requisitos del sistema 3. Diseño del sistema.(diseño lógico) 4. Desarrollo de software (diseño físico) 5. Prueba de sistemas 6. Implantación 7. Evaluación Las dimensiones son: 7.1. Evaluación operacional 7.2. Impacto organizacional 7.3. Desempeño del desarrollo
Cuadro 20 Fuente: Investigadores
Herramientas para el análisis
1. Diagrama de Bloques 2. Diccionario de datos 3. Diagrama de Flujo de Datos 4. Diagrama Entidad-Relación 5. Especificaciones de objetos 6. Especificaciones de procesos 7. Especificaciones de control
Cuadro 21 Fuente: Investigadores
1.13.2. Metodología del Diseño
En lo referente a diseño de la aplicación se emplea los cuatro diseños
bien conocidos y aceptados (Ver Cuadro 22).
Herramientas de diseño
1. Diseño de datos 2. Diseño de arquitecturas 3. Diseño de la interfaz 4. Diseño procedimental
Cuadro 22 Fuente: Investigadores
56
CAPITULO 2
ANALISIS
2.1. LEVANTAMIENTO DE INFORMACION
El desarrollo de la aplicación “Firewall Transparente de Contenido
Web” implicó un sinnúmero de investigaciones y horas destinadas a
la comprensión de la funcionalidad de un firewall, en busca de las
mejores opciones aplicables. A continuación presentamos un
extracto de la investigación realizada.
2.1.1. Conceptos básicos de Firewall
Un firewall es un dispositivo que filtra el tráfico entre redes, como
57
mínimo dos. El firewall puede ser un dispositivo físico o un software
sobre un sistema operativo. En general debemos verlo como una
caja con DOS o mas interfaces de red en la que se establecen una
reglas de filtrado con las que se decide si una conexión determinada
puede establecerse o no. Incluso puede ir más allá y realizar
modificaciones sobre las comunicaciones, como el NAT.
Hoy en día un firewall es un hardware especifico con un sistema
operativo o una IOS que filtra el tráfico TCP/UDP/ICMP/../IP y decide
si un paquete pasa, se modifica, se convierte o se descarta. Para
que un firewall entre redes funcione como tal debe tener al menos
dos tarjetas de red. Esta sería la tipología clásica de un firewall:
FIREWALL ENTRE UNA LAN E INTERNET
Cuadro 23 Fuente: http://www.pello.info/filez/firewall/iptables.html
58
Esquema típico de firewall para proteger una red local conectada a
Internet a través de un router. El firewall debe colocarse entre el
router y la red local (conectado al switch o al hub de la LAN)
Dependiendo de las necesidades de cada red, puede ponerse uno o
más Firewalls para establecer distintos perímetros de seguridad en
torno a un sistema. Es frecuente también que se necesite exponer
algún servidor a Internet, y en esos casos obviamente en principio
se debe aceptar cualquier conexión a ellos. Lo que se recomienda
en esa situación es situar ese servidor en lugar aparte de la red, el
que denominamos DMZ o zona desmilitarizada.
FIREWALL ENTRE RED LOCAL E INTERNET CON DMZ
Cuadro 24 Fuente: http://www.pello.info/filez/firewall/iptables.html
59
En la zona desmilitarizada se pueden poner tantos servidores como
se necesiten. Con esta arquitectura, permitimos que el servidor sea
accesible desde Internet de tal forma que si es atacado y se gana
acceso a él, la red local sigue protegida por el firewall. Esta
estructura de DMZ puede hacerse también con un doble firewall (Ver
Cuadro 25).
Los firewalls se pueden usar en cualquier red. Es habitual tenerlos
como protección de Internet en las empresas, aunque ahí también
suelen tener una doble función: controlar los accesos externos hacia
dentro y también los internos hacia el exterior; esto último se hace
con el firewall o frecuentemente con un proxy (que también utilizan
reglas, aunque de más alto nivel).
También, en empresas de hosting con muchos servidores alojados
lo normal es encontrarnos uno o más firewalls ya sea filtrando toda
la instalación o parte de ella (Ver Cuadro 26).
FIREWALL ENTRE RED LOCAL E INTERNET CON DMZ PARA SERVIDORES EXPUESTOS CON DOBLE FIREWALL
Cuadro 25 Fuente: http://www.pello.info/filez/firewall/iptables.html
61
FIREWALL ENTRE REDES, EN LA QUE SOLO SE FILTRA Y NO SE HACE NAT
Cuadro 26 Fuente: http://www.pello.info/filez/firewall/iptables.html
Sea el tipo de firewall que sea, generalmente no tendrá mas que un
conjunto de reglas en las que se examina el origen y destino de los
paquetes del protocolo TCP/IP. En cuanto a protocolos es probable que
sean capaces de filtrar muchos tipos de ellos, no solo los TCP, también los
UDP, los ICMP y otros protocolos vinculados a VPNS. Este podría ser (en
pseudo-lenguaje) un el conjunto de reglas de un firewall del primer gráfico
(Ver Cuadro 27):
Reglas de Firewall Política por defecto ACEPTAR. Todo lo que venga de la red local al firewall ACEPTAR Todo lo que venga de la ip de mi casa al puerto tcp 22 ACEPTAR Todo lo que venga de la ip de casa del jefe al puerto tcp 1723 ACEPTAR Todo lo que venga de hora.rediris.es al puerto udp 123 ACEPTAR Todo lo que venga de la red local y vaya al exterior ENMASCARAR Todo lo que venga del exterior al puerto tcp 1 al 1024 DENEGAR Todo lo que venga del exterior al puerto tcp 3389 DENEGAR Todo lo que venga del exterior al puerto udp 1 al 1024 DENEGAR
Cuadro 27 Fuente: Investigadores
En definitiva lo que se hace es:
• Habilita el acceso a puertos de administración a determinadas
direcciones IP privilegiadas.
63
• Enmascara el tráfico de la red local hacia el exterior (NAT, una
petición de un PC de la LAN sale al exterior con la IP pública),
para poder salir a Internet
• Deniega el acceso desde el exterior a puertos de administración
y a todo lo que este entre 1 y 1024.
Hay dos maneras de implementar un firewall:
• Política por defecto ACEPTAR: en principio todo lo que entra y
sale por el firewall se acepta y solo se denegará lo que se diga
explícitamente.
• Política por defecto DENEGAR: todo esta denegado, y solo se
permitirá pasar por el firewall aquellos que se permita
explícitamente.
Como es obvio imaginar, la primera política facilita mucho la gestión
del firewall, ya que simplemente nos tenemos que preocupar de
proteger aquellos puertos o direcciones que sabemos que nos
interesa; el resto se deja pasar. El único problema que podemos
tener es que no controlemos que es lo que esta abierto, o que en un
momento dado se instale un software nuevo que abra un puerto
64
determinado, o que no sepamos que determinados paquetes ICMP
son peligrosos.
En cambio, si la política por defecto es DENEGAR, a no ser que lo
permitamos explícitamente, el firewall se convierte en un auténtico
MURO infranqueable.
El orden en el que se ponen las reglas de firewall es determinante. Normalmente cuando hay que decidir que se hace con un paquete se va comparando con cada regla del firewall hasta que se encuentra una que le afecta (match), y se hace lo que dicte esta regla (aceptar o denegar); después de eso NO SE MIRARÁN MÁS REGLAS para ese paquete.
2.1.2. IPtables
IPtables es un sistema de firewall vinculado al kernel de linux que se
ha extendido enormemente a partir del kernel 2.4 de este sistema
operativo. Al igual que el anterior sistema IPchains, un firewall de
iptables no es como un servidor que lo iniciamos o detenemos o que
se pueda caer por un error de programación. Realmente lo que se
hace es aplicar reglas. Para ellos se ejecuta el comando iptables,
con el que añadimos, borramos, o creamos reglas. Por ello un
firewall de iptables no es sino un simple script de shell en el que se
van ejecutando las reglas de firewall.
65
Tenemos una máquina Linux con soporte para IPtables, tiene reglas
aplicadas y empiezan a llegar/salir/pasar paquetes. El kernel lo que
hace es, dependiendo si el paquete es para la propia máquina o
para otra máquina, consultar las reglas de firewall y decidir que
hacer con el paquete según mande el firewall. Este es el camino que
seguiría un paquete en el kernel (Ver Cuadro 28):
FUNCIONAMIENTO DE LAS CADENAS DE IPTABLES
Cuadro 28 Fuente: http://www.pello.info/filez/firewall/iptables.html
Como se ve en el gráfico, básicamente se mira si el paquete esta
destinado a la propia máquina o si va a otra. Para los paquetes que
van a la propia maquina se aplican las reglas INPUT y OUTPUT, y
66
para filtrar paquetes que van a otras redes o máquinas se aplican
simplemente reglas FORWARD.
INPUT, OUTPUT y FORWARD son los tres tipos de reglas de
filtrado. Pero antes de aplicar esas reglas es posible aplicar reglas
de NAT: estas se usan para hacer redirecciones de puertos o
cambios en las direcciones IP de origen y destino. Por tanto
tenemos tres tipos de reglas en iptables (Ver Cuadro 29).
Tipos de reglas IPtables MANGLE NAT: reglas PREROUTING, POSTROUTING FILTER: reglas INPUT, OUTPUT, FORWARD
Cuadro 29 Fuente: Investigadores
Una conexión TCP/IP empieza con el three-way-handshake (Ver
Cuadro 30):
• La maquina que desea conectarse a otra envía un paquete con
flag SYN
• Si la otra máquina acepta, envía un SYN/ACK
• Entonces la máquina establece la conexión.
67
THREE-WAY-HANDSHAKE
Cuadro 30 Fuente: http://neo.lcc.uma.es
2.1.3. Bridge
Un bridge es un cable inteligente que conecta dos tarjetas de red. Es
un dispositivo de software o de hardware usado para conectar dos
segmentos de la red. No es semejante a un router, crea el aspecto de
un segmento de la red sola grande. Con el bridge bajamos la tormenta
de colisión en la red si usamos solo hubs. Se utiliza un bridge para la
creación de un firewall lógicamente transparente, ya que el bridge es
configurado sin dirección IP, no tiene acceso remoto, si alguien quiere
68
hacer un ataque al firewall no sabrá lógicamente donde este se
encuentra y si nadie sabe que lo pusiste nadie notara la diferencia.
La desventaja es que no podrás controlarlo remotamente, pero si
pones una tercera tarjeta de red con una dirección IP o un alias en una
de las ya puesta puedes entrar a él.
Otra funcionalidad de los puentes, entre otras muchas, es la
posibilidad de unir segmentos de distintas características. Por ejemplo,
unir un segmento de red Ethernet con una Token Ring, o enlazar
redes de distintas características físicas como cable TP y cable
coaxial.
2.1.3.1. Configuración básica
Se recomienda descargar bridge-utils-1.0.6.tar.gz y se lo descomprime
en un directorio determinado. Luego, definir el bridge con el nombre
'br0', se añade las interfaces de red eth0 y eth1 al bridge,
posteriormente quitar la dirección IP de la interfaz de red eth0 y eth1
para que el bridge sea transparente y establecer cada interfaz en
modo promiscuo, finalmente levantar el servicio de bridge. Dicha
configuración se muestra en el Cuadro 31.
69
Configuración de Bridge Utils brctl addbr br0 brctl addif br0 eth0 brctl addif br0 eth1 ifconfig eth0 0.0.0.0 promisc ifconfig eth1 0.0.0.0 promisc ifconfig br0 up
Cuadro 31 Fuente: http://abiertos.org
Si se va a actuar como firewall transparente, colocar el bridge entre
Internet y la red LAN. Ver Cuadro 32. Para establecer el bridge
como transparente se le asigna 0.0.0.0 a la interfaz br0.
ESQUEMA DE BRIDGE/FIREWALL
Cuadro 32 Fuente: http://abiertos.org
70
2.1.4. JAVA
El Lenguaje de programación JAVA es de uso general y
concurrente. Es un lenguaje estructurado orientado a objetos.
Maneja todo su potencial a través de clases definidas. La última
versión de JDK es 1.5, usado en el desarrollo de la aplicación
FTCW.
2.1.4.1. Características
Entre las principales características del Lenguaje de Programación
JAVA se mencionan las siguientes:
• Simple
• Orientado a objetos
• Distribuido
• Robusto
• Arquitectura neutral
• Seguro
• Portable
• Multithreaded
Simple. Java ofrece toda la funcionalidad de un lenguaje potente.
Añade el uso del “garbage collector” (Reciclador de memoria
71
dinámica). No es necesario preocuparse de liberar memoria, el
reciclador se encarga de ello y como es un thread de baja prioridad,
cuando entra en acción, permite liberar bloques de memoria muy
grandes, lo que reduce la fragmentación de la memoria.
Orientado a objetos. Java trabaja con sus datos como objetos y
con interfaces a esos objetos. Soporta las tres características
propias del paradigma de la orientación a objetos: encapsulación,
herencia y polimorfismo. Las plantillas de objetos son llamadas,
como en C++, clases y sus copias, instancias. Estas instancias,
como en C++, necesitan ser construidas y destruidas en espacios de
memoria.
Distribuido. Java se ha construido con extensas capacidades de
interconexión TCP/IP. Existen librerías de rutinas para acceder e
interactuar con protocolos como HTTP y FTP. Esto permite a los
programadores acceder a la información a través de la red con tanta
facilidad como a los ficheros locales. Java en sí no es distribuido,
pero proporciona las librerías y herramientas para que los
programas puedan ser distribuidos, es decir, que se corran en varias
máquinas, interactuando.
72
Robusto. Java realiza verificaciones en busca de problemas tanto
en tiempo de compilación como en tiempo de ejecución. La
comprobación de tipos en Java ayuda a detectar errores en el ciclo
de desarrollo. Java obliga a la declaración explícita de métodos.
Maneja la memoria para eliminar las preocupaciones por parte del
programador de la liberación o corrupción de memoria. Además,
para asegurar el funcionamiento de la aplicación, realiza una
verificación de los byte-codes, que son el resultado de la
compilación de un programa Java. Es un código de máquina virtual
que es interpretado por el intérprete Java. No es el código máquina
directamente entendible por el hardware, pero ya ha pasado todas
las fases del compilador: análisis de instrucciones, orden de
operadores, etc., y ya tiene generada la pila de ejecución de
órdenes.
Arquitectura neutral. Para establecer Java como parte integral de
la red, el compilador Java compila su código a un fichero objeto de
formato independiente de la arquitectura de la máquina en que se
ejecutará. Cualquier máquina que tenga el sistema de ejecución
(run-time) puede ejecutar ese código objeto, sin importar en modo
alguno la máquina en que ha sido generado (Ver Cuadro 33).
73
ARQUITECTURA NEUTRAL
Cuadro 33 Fuente: http://abiertos.org
Seguro. Las aplicaciones de Java resultan extremadamente
seguras, ya que no acceden a zonas delicadas de memoria o de
sistema, con lo cual evitan la interacción de ciertos virus. Java no
posee una semántica específica para modificar la pila de programa,
la memoria libre o utilizar objetos y métodos de un programa sin los
privilegios del kernel del sistema operativo. Java imposibilita
también, abrir ningún fichero de la máquina, no permite ejecutar
ninguna aplicación nativa de una plataforma e impide que se utilicen
74
otros ordenadores como puente, es decir, nadie puede utilizar
nuestra máquina para hacer peticiones o realizar operaciones con
otra.
Portable. Más allá de la portabilidad básica por ser de arquitectura
independiente, Java implementa otros estándares de portabilidad
para facilitar el desarrollo. Los enteros son siempre enteros y
además, enteros de 32 bits en complemento a 2. Además, Java
construye sus interfaces de usuario a través de un sistema abstracto
de ventanas de forma que las ventanas puedan ser implantadas en
entornos Unix, Pc o Mac.
Multithreaded. Java permite muchas actividades simultáneas en un
programa. Los threads son básicamente pequeños procesos o
piezas independientes de un gran proceso. El beneficio consiste en
un mejor rendimiento interactivo y mejor comportamiento en tiempo
real. Aunque el comportamiento en tiempo real está limitado a las
capacidades del sistema operativo subyacente.
75
2.1.4.2. JDK
El entorno básico del JDK (Java Development Kit) de Java que
proporciona Sun está formado por herramientas en modo texto, que
son: java, intérprete que ejecuta programas en byte-code. javac,
compilador de Java que convierte el código fuente en byte-code.
javah, crea ficheros de cabecera para implementar métodos para
cualquier clase. javap, es un descompilador de byte-code a código
fuente Java. javadoc, es un generador automático de documentos
HTML a partir del código fuente Java. javaprof, es un profiler para
aplicaciones de un solo thread. HotJava, es un navegador Web
escrito completamente en Java.
2.1.4.2.1. Instalación
El procedimiento de instalación del JDK versión 1.5 empleado en la
aplicación FTCW, es el siguiente:
• Descargar el instalador jdk-1.5.0_02-linux-i586.rpm.
• Ejecutar el archivo rpm, genera la ruta “/usr/local/jdk1.5.0_02”.
• Configurar las variables de ambiente:
JAVA_HOME: Indica el directorio raíz de instalación del JDK, de
acuerdo a las instrucciones anteriores esta ruta sería : “/usr/local/
jdk1.5.0_02”.
76
PATH: Define la ruta de acceso para los binarios del sistema; la
modificación de esta variable permite accesar los ejecutables
Java proporcionadas con el JDK de cualquier directorio.
CLASSPATH: Define las rutas de acceso para las diversas
librerías empleadas en ambientes Java.
2.1.5. JPCAP
JPCAP es un paquete de programas de JAVA que contiene un
conjunto de clases que proporcionan un interfaz y el sistema para la
captura de paquetes de red. Una biblioteca de protocolo y el
instrumento para visualizar el tráfico de red son incluidos. JPCAP
utiliza la librería libpcap, una biblioteca de sistema extensamente
desplegada para la captura de paquetes. Permite capturar y enviar
paquetes IP en JAVA.
2.1.5.1. Características
Entre las principales características tenemos las siguientes:
• Este paquete de programas “JPCAP” usa libpcap y Raw Socket
API.
• Actualmente, JPCAP es probado sobre FreeBSD 3.x, Linux RedHat
6.1, Solaris, y Microsoft Windows 2000/XP.
77
• Es soportada por Ethernet, IPv4, IPv6, ARP/RARP, TCP, UDP,
ICMPv4.
2.1.5.2. Instalación bajo Linux
La instalación de JPCAP requerida para la aplicación FTCW bajo
JAVA contempla los siguientes pasos:
• Verificar que este instalado JDK 1.5.0_02 lo cual genera el
directorio “/usr/local/jdj1.5.0_02/” que es ”Java directory”.
• Descargar e instalar libpcap si no está instalada.
• Descargar la versión JPCAP (jpcap-0.01.16.rpm).
• Ejecutar el archivo rpm.
• Copiar “libjpcap.so” a [Java directory]/jre/lib/ext/i386.
• Copiar "lib/jpcap.jar" en [Java directory]/jre/lib/ext.
• Copiar “/usr/lib/ jpcap-0.01.16/jars/*.jar” al directorio del JDK en
[Java directory]/jre/lib/ext.
• Copiar “/usr/lib/ jpcap-0.01.16/thirdParty/*.jar” en el directorio [Java
directory]/jre/lib/ext.
78
2.1.5.3. Contenido del paquete JPCAP
El JPCAP contiene cinco paquetes que proveen una serie de ventajas
para realizar la captura de paquetes que viajan por una red (Ver
Cuadro 34).
Paquete JPCAP
net.sourceforge.jpcap.capture
Provee una interfaz para capturar paquetes, una capa de abstracción alrededor de libpcap, una biblioteca nativa y portable para capturar paquetes de red.
net.sourceforge.jpcap.client
Proporciona aplicaciones “cliente” la cual utiliza los servicios proporcionados por clases en la captura de paquetes. de programas de captura.
net.sourceforge.jpcap.net Proporciona una biblioteca jerárquica a base de herencia de tipos de paquete de red y protocolos.
net.sourceforge.jpcap.simulator
Proporciona un simulador que tiene una interfaz externa idéntica a la clase PacketCapture disponible en el paquete de programas de jpcap.capture.
net.sourceforge.jpcap.util Proporciona clases de utilidad usadas por los paquetes de programas de jpcap.
Cuadro 34 Fuente: Investigadores
79
Dentro del paquete net.sourceforge.jpcap.capture tenemos ciertas
clases que permiten manipular los paquetes. Una clase muy
relevante es “PacketCapture”. Dentro de la aplicación FTCW,
empleamos esta clase para capturar y obtener información de los
paquetes entrantes a la red LAN. Esta clase es el corazón de la
captura de paquetes en JPCAP. Esta proporciona una interfaz de
alto nivel para capturar paquetes de red por encapsulamiento
libpcap. Para iniciar la captura de paquetes de red, se crea una
instancia de la clase PacketListener, cuando los paquetes llegan, el
objeto le llamará vía packetArrived().
2.1.6. Base de Datos
MySQL es un sistema de administración para bases de datos
relacionales (rdbms) que provee una solución robusta a los usuarios
con poderosas herramientas multiusuario, soluciones de base de
datos SQL, multi-hilos a través de procesos del kernel (Ver Cuadro
35).
80
MULTI-THREADED
Cuadro 35 Fuente: www.monografias.com
Este sistema de administración de base de datos tiene características
a ofrecer como:
• Velocidad. Ofrece altos niveles de rendimiento en cuanto a su
rapidez.
• Facilidad de Uso. MySQL es un sistema de base de datos de alto
rendimiento pero relativamente simple y es mucho menos complejo
de configurar y administrar que sistemas más grandes.
• Coste. MySQL no es un producto Open Source pero generalmente
se puede utilizar de forma gratuita, los principios básicos son los
siguientes:
81
Los programas cliente y las bibliotecas de programación de
clientes son gratuitos, para todas las plataformas.
Para UNIX y otras plataformas no Windows, el servidor MySQL
puede usarse libremente a menos que quiera venderlo o quiera
vender cualquier software o servicio que requiera.
Existen versiones anteriores de MySQL que se acogen a la
Licencia Pública GNU (GPL, General Public License) y pueden
emplearse para cualquier propósito sin tener que pagar.
• Capacidad de gestión de lenguajes de consulta. MySQL
comprende SQL el lenguaje elegido para todos los sistemas de
base de datos modernos. También puede acceder a MySQL
empleando aplicaciones que admitan ODBC, un protocolo de
comunicación de base de datos de Microsoft.
• Capacidad. Pueden conectarse muchos clientes simultáneamente
al servidor y pueden utilizar varias bases de datos. Puede acceder
de forma interactiva a MySQL empleando diferentes interfaces que
le permiten introducir consultas y visualizar los resultados: cliente
de línea de comando, navegadores Web o clientes de sistema X
Window, además está disponible una amplia variedad de interfaces
de programación para lenguajes como C, Java, Perl, PHP.
• Conectividad y Seguridad. MySQL está completamente
preparado para el trabajo en red y las bases de datos pueden ser
82
accedidas desde cualquier lugar en Internet. Posee un control de
acceso, de forma que aquellos que no deberían ver sus datos, no
los vean.
• Portabilidad. MySQL se ejecuta en muchas variantes de UNIX, así
como en otros sistemas operativos Windows y OS/2. MySQL se
ejecuta en hardware que va desde PC hasta servidores de alta
capacidad.
• Distribución abierta. MySQL es fácil de obtener, simplemente
emplee su navegador Web.
2.1.6.1. Visión General de las tareas administrativas
El sistema de base de datos MySQL consta de varios componentes
que mencionamos a continuación.
• El Servidor MySQL. El servidor mysqld realiza todas las
manipulaciones de las bases de datos y tablas. safe_mysqld es un
programa relacionado que se usa para arrancar el servidor,
monitorizarlo y reiniciarlo.
• Los Clientes MySQL y Utilidades. Están disponibles varios
programas MySQL para ayudar en la comunicación con el servidor
y realizar las tareas administrativas.
mysql, un programa interactivo que permite enviar sentencias
SQL al servidor y ver los resultados.
83
mysqladmin, un programa de administración que le permite
realizar tareas como apagar el servidor, crear o eliminar base
de datos, comprobar el estado del servidor.
mysqldump, una herramienta para hacer copias de seguridad
de las bases de datos o copiar bases de datos a otro servidor.
• SQL, el lenguaje del servidor. Algunas tareas administrativas
pueden ser realizadas utilizando únicamente la utilidad de línea de
comandos, pero será mejor si se habla con el servidor en su propio
lenguaje.
• El directorio de datos MySQL. Es el lugar donde el servidor
almacena sus bases de datos y archivos de estructuras. La
localización predeterminada del directorio de datos se compila en
el servidor. Los valores típicos son /usr/local/var para una
instalación MySQL desde una distribución fuente,
/usr/local/mysql/data si instala desde una distribución binaria, y
/var/lib/mysql si instala desde un archivo RPM. Este último se da
en nuestro caso.
2.1.6.2. Estructura del directorio de datos
El directorio de datos MySQL contiene todas las bases de datos y
tablas manejadas por el servidor. Estas se encuentran organizadas en
una estructura de árbol que es implementada de una manera directa
84
aprovechándose de la estructura jerárquica de los sistemas de archivo
UNIX o Windows:
• Cada base de datos se corresponde con un directorio bajo el
directorio de datos.
• Las tablas dentro de una base de datos se corresponden con los
archivos en el directorio de la base de datos.
CONTROL DE ACCESO AL DIRECTORIO DE DATOS
Cliente 1 Cliente 2 Cliente 3
Socket de dominio UNIX (UNIX)
Puerto TCP/IP (UNIX, NT)
Canalizador con nombre (NT)
Servidor MySQL
Directorio de datos
Base de datos 1 Base de datos 2 Base de datos n
Tabla 1 Tabla 2 Tabla 1 Tabla 2
...
Tabla 1 Tabla 2
Cuadro 36 Fuente: Investigadores
85
Todo bajo el directorio de datos es manejado por una única entidad, el
servidor MySQL mysqld (Ver Cuadro 36). Los programas cliente
nunca manipulan los datos directamente. Es el servidor el que
proporciona el único punto de contacto a través del cual se accede a
las bases de datos, actuando como intermediario entre los programas
cliente y los datos.
2.1.6.3. Representación de tablas de bases de datos
MySQL soporta cinco tipos de tablas: MyISAM, ISAM, HEAP, BDB e
InnoDB. De donde BDB e InnoDB son tipos de tablas transaccionales.
Cada tabla dentro de una base de datos existe como tres archivos en
el directorio de la base de datos: un archivo de formulario
(descripción), un archivo de datos y un archivo índice. El nombre base
de cada archivo es el nombre de la tabla y la extensión indica el tipo
de archivo. Las extensiones se muestran en el Cuadro 37. Las
extensiones del archivo de datos e índice indican si la tabla usa el
antiguo sistema de indexación ISAM o el nuevo tipo de ordenamiento
MyISAM.
86
TIPOS DE ARCHIVO MySQL
Tipo archivo Extensión Contenido del archivo Archivo de formulario .frm Describe la estructura de la tabla (sus
columnas, tipo de columna, índices, etc.). Archivo de datos
.ISD (ISAM) o
.MYD (MyISAM) Contiene los datos de las tablas, esto es, sus filas.
Archivo de índice
.ISD (ISAM) o
.MYI (MyISAM)
Contiene el árbol de los índices para cada índice sobre el archivo de datos. El archivo índice existe tanto si la tabla tiene índices como sino.
Cuadro 37 Fuente: Investigadores
2.1.6.4. Restricciones del sistema operativo en la base de datos
y en el nombrado de la tabla
MySQL tiene una serie de reglas generales para nombrar a las bases
de datos y tablas:
• Los nombres pueden estar constituidos por caracteres
alfanuméricos dentro del conjunto de caracteres actual, así como el
guión bajo y el dólar (_ y $).
• Los nombres pueden ser de hasta 64 caracteres de longitud.
2.1.6.5. Archivos de estado de MySQL
87
Además de los directorios de la base de datos, el directorio de datos
MySQL contiene un número de archivos de estado. Estos ficheros
están resumidos en el Cuadro 38.
ARCHIVOS DE ESTADO DE MySQL
Tipo archivo Nombre Contenido Process ID HOSTNAME.pid Id del proceso del servidor
Error log HOSTNAME.err Eventos de inicio y apagado y condiciones de error
General log HOSTNAME.log Eventos de conexión-desconexión y consulta de información
Update log HOSTNAME.nnn Texto de todas las consultas que modifican el contenido y la estructura de la tabla
Cuadro 38 Fuente: Investigadores
MySQL maneja sus propios archivos de log, como son “log”, “log-
bin” y “log-update” los cuales se activan en el archivo de
configuración de MySQL “my.cnf” localizado en “/etc/”. Nuestros
archivos Logs para control interno de la base de datos estarán
ubicados en /var/log.
88
2.1.6.6. Tipos de datos en MySQL
Entre los principales tipos de datos o columnas existentes en MySQL
podemos mencionar los tipos numéricos, cadena y fecha / hora, como
podemos apreciar en los Cuadros 39, 40 y 41.
TIPOS DE DATOS MySQL
Tipos Numéricos • TINYINT[(M)] Significado: Entero muy pequeño. Rango: -128 a 127 (-27 to 27 – 1), o 0 a 255 (0 a 28 – 1) si UNSIGNED Espacio necesario: 1 byte • SMALLINT[(M)] Significado: Entero pequeño. Rango: -32768 a 32767 (-215 to 215 – 1), o 0 a 65535 (0 a 216 – 1) si UNSIGNED Espacio necesario: 2 bytes • MEDIUMINT[(M)] Significado: Entero de tamaño medio. Rango: -8388608 a 8388607 (-223 to 223 – 1), o 0 a 16777215 (0 a 224 – 1) si UNSIGNED Espacio necesario: 3 bytes • INT[(M)] Significado: Entero de tamaño normal. Rango: -2147483648 a 2147483647 (-231 to 231 – 1), o 0 a 4294967295 (0 a 232 – 1) si UNSIGNED Espacio necesario: 4 bytes
Cuadro 39 Fuente: Investigadores
89
TIPOS DE DATOS MySQL
Tipos de Cadena • CHAR(M) Significado: Cadena de longitud de carácter fija, de 0 a M bytes de larga. M debe ser un entero de 0 a 255. Las cadenas más cortas de M caracteres son rellenadas a la derecha con espacios al almacenarse. Longitud permitida: 0 a M bytes. • VARCHAR(M) Significado: Cadena de carácter de longitud variable de 0 a M bytes de largo. M debe ser un entero de 0 a 255. Los espacios arrastrados se suprimen de los valores al almacenarse. Las cadenas más largas de M caracteres se cortan a la longitud de M al almacenarse. Longitud permitida: 0 a M bytes. Espacio necesario: Longitud del valor, más 1 byte para registrar la longitud. • TINYBLOB Significado: Un pequeño valor BLOB. Longitud permitida: 0 a 255 (0 a 28 - 1) bytes. Espacio necesario: Longitud del valor, más de 1 byte. Comparaciones: distinción mayúsculas-minúsculas. • BLOB Significado: Un valor BLOB de tamaño normal. Longitud permitida: 0 a 65535 (0 a 216 - 1) bytes. Espacio necesario: Longitud del valor, más de 2 bytes. Comparaciones: distinción mayúsculas-minúsculas. • MEDIUMBLOB Significado: Un valor BLOB de tamaño medio. Longitud permitida: 0 a 16777215 (0 a 224 - 1) bytes. Espacio necesario: Longitud del valor, más de 3 bytes. Comparaciones: distinción mayúsculas-minúsculas. • ENUM(“valor1”,”valor2”) Significado : Una enumeración; puede asignarse exactamente un elemento de la lista del valor a los valores de la columna. Espacio necesario: 1 byte para enumeraciones de 1 a 255 elementos, 2 bytes para enumeraciones de 256 a 65535 elementos. Comparaciones: Sin distinción entre mayúsculas-minúsculas.
Cuadro 40 Fuente: Investigadores
90
TIPOS DE DATOS MySQL
Tipos de fecha y hora • DATE Significado: Una fecha en formato AAAA-MM-DD. Rango: 1000-01-01 a 9999-12-31. Valor cero: 0000-00-00 Espacio necesario: 3 bytes. • TIME Significado: Una hora en formato hh:mm:ss. Rango: -838:59:59 to 838:59:59. Valor cero: 00-00-00 Espacio necesario: 3 bytes. • TIMESTAMP[(M)] Significado: Un sello de tiempo, en formato AAAAMMDDhhmmss. Rango: 19700101000000 a alguna hora en el año 2037. Valor cero: 00000000000000 Espacio necesario: 4 bytes. • YEAR Significado: Un año en formato AAAA. Rango: 1900 - 2155. Valor cero: 0000 Espacio necesario: 1 bytes.
Cuadro 41 Fuente: Investigadores
2.1.6.7. El acceso a los datos
La base de datos MySQL soporta los siguientes tipos de acciones:
• Consulta de registros (SELECT)
• Inserción de registros (INSERT)
• Modificación de registros (UPDATE)
• Eliminación de registros (DELETE)
91
• Creación de tablas (CREATE TABLE)
• Bloqueo de tablas (LOCK TABLES)
• Desbloqueo de tablas (UNLOCK TABLES)
• Alteración de estructuras de tablas (ALTER TABLE)
• Eliminación de tablas (DROP TABLE)
• Descripción de la estructura de las tablas (DESCRIBE)
• Información de tablas (SHOW TABLE STATUS)
• Variables de estado del servidor (SHOW STATUS)
• Creación de atributos para el usuario (GRANT)
• Revocación de privilegios (REVOKE)
• Visualizar privilegios del usuario (SHOW GRANTS)
• Lectura de registros de un archivo (LOAD DATA)
• Respaldos de tablas (BACKUP TABLE), otros
2.1.6.8. Driver de Conexión para MySQL y JAVA
Para que MySQL y JAVA interactúen bajo Linux se requiere un driver
de conexión JDBC “Java Database Conectivity". JDBC es un API de
Java para acceder a sistemas de bases de datos, y prácticamente a
cualquier tipo de dato tabular. El API JDBC consiste de un conjunto de
clases e interfaces que permiten a cualquier programa Java acceder a
sistemas de bases de datos de forma homogénea (Ver Cuadro 42).
92
Especificaciones Técnicas Nombre del driver mysql-connector-java-3.0.10-stable-bin
Ubicación
En /usr/java/jdk1.5.0_02/jre/lib/ext/ tenemos: • mysql-connector-java • Directorio “com” • Directorio “org”
Variables Importantes: Classpath $JAVA_HOME/jre/lib/ext
Character_set latin1
Herramientas necesarias:
• Ambientador para Java (JDK1.5.0_02) • Un servidor de bases de datos MySQL • El controlador JDBC para MySQL
Soporte:
JAVA Java-2 JVMs, incluye JDK-1.2.x, JDK-1.3.x, JDK- 1.4.x y JDK-1.5.x, y requiere JDK-1.4.x
MySQL • Versiones de MySQL server superior 4.1 • Incluye caracteres Unicode , vistas, stored
procedures y server-side prepared statement
Cuadro 42 Fuente: Investigadores
Al usar JDBC se pueden hacer tres cosas:
• Establecer una conexión a una fuente de datos.
• Mandar consultas y sentencias a la fuente de datos.
• Procesar los resultados.
93
El driver soporta resultados de datos "streaming" lo que permite al
usuario recoger un gran número de filas sin la necesidad de utilizar un
buffer de memoria, este implementa un protocolo de paquetes grande
que permite enviar filas y campos BLOBs de hasta 2 GB.
2.1.7. Interfaz Gráfica del Usuario
Entre las herramientas utilizadas para el desarrollo de la Interfaz para
el Usuario tenemos:
2.1.7.1. Eclipse
Eclipse posee un editor visual con sintaxis coloreada, ofrece
compilación incremental de código, un potente depurador, un
navegador de clases, un gestor de archivos y proyectos pero no se
limita sólo a esto. La versión estándar de Eclipse proporciona también
una biblioteca de refactorización de código y una lista de tareas.
También incluye una herramienta para completar código: el asistente
de contenido, encargado de mostrar los métodos y atributos de las
clases con las que se está trabajando, ya formen parte de las APIs de
JAVA o de cualquier otra clase en el build path, aunque estén en
ficheros JAR. Este asistente también proporciona información de cada
uno de los métodos mediante una ventana secundaria contextual (Ver
94
Cuadro 43), y avisa cuando se graba la clase o la interfaz de los
errores cometidos al escribir el código (Ver cuadro 44).
Eclipse incluye también asistentes para la creación de clases e
interfaces, y proporciona una integración perfecta con el sistema
Open-Source CVS.
ENTORNO DE ECLIPSE
Cuadro 43 Fuente: Asistente de Eclipse
95
ECLIPSE – INDICADOR DE ERRORES
Cuadro 44
Fuente: Asistente de Eclipse
Al guardar una clase, eclipse muestra los errores cometidos.
96
2.1.7.1.1. Características
• Reducen el tiempo y por tanto el coste de construcción, depuración
y distribución del software.
• Compilación incremental automática del código. Eclipse no cuenta
con un menú de compilación pues no es necesario: cada vez que
se hacen cambios en uno o más ficheros, su compilador interno
recompila todos los ficheros fuente afectados por los cambios.
• Muestra indicaciones de los errores aparecidos según se van
realizando o guardando los cambios.
• Soporte a otros lenguajes además de JAVA; previa configuración
de plug-in.
2.1.7.1.2. Componentes
El Platform runtime” se encarga de gestionar los recursos y los plug-
ins, además de permitir el arranque de la plataforma. Define los puntos
de extensión y el modelo de plug-in (Ver Cuadro 45). Los principales
componentes de Eclipse son:
• Workspace (Espacio de trabajo) permite gestionar el acceso a
ficheros tanto a alto como a bajo nivel. Actúa como un componente
que encapsula la gestión de archivos, permitiendo que los plug-in
97
utilicen sus métodos sin tener que trabajar directamente con
distintos sistemas de archivos, según la plataforma que se utilice.
• Workbench (Banco de trabajo) se encarga de la presentación de
la información al usuario y de la gestión del diálogo con el mismo.
• SWT, biblioteca que proporciona componentes gráficos (botones,
listas, cuadros de texto, etc.), y que permite obtener una interfaz
gráfica muy integrada con la plataforma nativa bajo la cual se use
Eclipse.
• Help (Componente de ayuda) permite a los plug-in proporcionar
documentación HTML que pueda ser presentada contextualmente
por el Workbench.
• Team (Componente de equipo) define un modelo de programación
en equipo para crear y mantener un registro de las versiones de las
aplicaciones que se desarrollen. Añade las vistas que el usuario
necesite para interaccionar con cualquier sistema de control de
versiones que se esté usando.
• Debug (Componente de depuración) proporciona un modelo
genérico de depuración, en el que se permiten expresiones, puntos
de interrupción, acciones habituales de depuración, junto a una
interfaz gráfica genérica de depuración.
98
ARQUITECTURA DE ECLIPSE
Cuadro 45 Fuente: www.eclipse.org
2.1.7.1.3. Elementos de Workspace
• Editores: Es un componente que permite interaccionar con los
contenidos de un fichero y modificarlos.
• Vistas: Proporciona meta-datos sobre el recurso que se haya
seleccionado: organización de un recurso dentro de un paquete o
proyecto, estado de la compilación, otros.
• Perspectivas: Representa una configuración de editores y vistas
relacionadas, al igual que opciones de menú y de compilación. Hay
tres perspectivas estándares en Eclipse: CVS, Install/Update y
Resource.
99
2.1.7.2. IReport
Es un constructor/diseñador de informes visuales, muy poderoso,
intuitivo y fácil de usar para JasperReports escrito en JAVA. Este
instrumento permite que los usuarios corrijan visualmente informes
complejos. Está además integrado con JFreeChart que es una de las
bibliotecas gráficas Open-Source más difundida para JAVA. Los datos
para imprimir pueden ser recuperados por varios caminos incluso
múltiples uniones JDBC, TableModels, JavaBeans, XML, entre otros.
2.1.7.2.1. Características
• Facilidad de instalación.
• 100% escrito en JAVA y además Open-Source.
• Maneja el 98% de las etiquetas de JasperReports.
• Soporta internacionalización nativa.
• Incluye un browser para visualizar la estructura del documento.
• Recopilador y exportador integrados.
• Soporta JDBC.
• Soporta JavaBeans como orígenes de datos.
• Incluye asistente para crear automáticamente informes.
100
2.1.7.2.2. Instalación
IReport viene como archivo comprimido, que contiene los fuentes y las
clases, plantillas y “.jar”. El proceso de instalación es el que se
muestra en el cuadro siguiente.
Instalación de iReport • Descargar la versión “iReport-0.3.2.tar” o superior. • Descomprimir el archivo. • Crear directorio “iReport” en “/usr/java”. • Extraer “iReport” a esa carpeta. • Copiar archivo “tools.jar” ubicado en “usr/java/jdk1.5.0_02/lib” al directorio
“/usr/java/iReport/ireport linux/iReport-0.4.1/lib”. • Copiar los archivos “*.jar” del “/usr/java/iReport/ireport linux/iReport-0.4.1/lib”
al directorio”/usr/java/jdk1.5.0_02/jre/lib/ext” del JDK. • Configurar las variables de entorno: CLASSPATH=/usr/java/iReport/ireportlinux/iReport0.4.1/lib/. • Ejecutar “/usr/java/iReport/ireport linux/iReport-0.4.1/iReport.sh”.
Cuadro 46 Fuente: Investigadores
2.2. ANALISIS DE REQUERIMIENTOS
La aplicación “FTCW, Firewall Transparente de Contenido Web”
nace frente a la necesidad de establecer políticas que administren el
flujo de información entrante a una organización, evitando de esta
manera la pérdida de tiempo por parte de los empleados en el uso
101
indebido de Internet al acceder a información que no sea de carácter
laboral.
2.2.1. Requerimientos Funcionales
El sistema debe tener la capacidad de censurar información no
deseada usando reglas sencillas y claras. Debe ser transparente, de
manera que pueda ser colocado como puente en la red que se
quiere proteger sin que su presencia pueda ser registrada como un
componente activo de la misma (Ver Cuadro 47). La instalación del
sistema FTCW se realizará sin tener que realizar ningún cambio en
la configuración de la red. FTCW debe tener la capacidad de
discernir entre los lugares de riesgo y de acceso no permitido
evitando censurar direcciones que no cumplan las políticas definidas
por el Administrador. El sistema debe ser capaz de almacenar las
direcciones IP de los sitios donde encuentre información
considerada censurable y así no permitir que ningún otro paquete
proveniente de este sitio ingrese a la red que se está protegiendo,
también se optimiza automáticamente el sistema al no perder tiempo
analizando todo el contenido de los paquetes que provienen de
direcciones ya previamente analizadas y censuradas.
102
ESQUEMA DEL “FTCW”
.
Cuadro 47 Fuente: Investigadores
2.2.2. Requerimientos de Rendimiento
Debido a la gran cantidad de paquetes que el sistema FTCW debe
analizar, el sistema debe ser capaz de asegurar que el porcentaje
de pérdida de paquetes sea mínima y no deje de censurar sitios que
envíen información restringida por el administrador. También debe
asegurar un buen desempeño en redes con altos niveles de carga,
103
para lo cual se necesita un nivel de procesamiento que sea capaz
de analizar todos los paquetes que pasen a través del sistema.
2.2.3. Confiabilidad
El sistema FTCW debe garantizar que el procesamiento de cada
paquete durante el análisis de sus contenidos sea lo más rápido
posible, de tal forma que este procesamiento no afecte al
funcionamiento normal de la red.
Una de las principales características que hace confiable el sistema,
es su característica de ser transparente para una red, esta
característica evita ataques tanto internos como externos de
usuarios malintencionados que quieran interferir en el
funcionamiento correcto de la aplicación de seguridad FTCW. El
sistema debe garantizar que ninguna conexión, salvo las conexiones
censuradas, sea interrumpida.
2.2.4. Componentes
El Firewall Transparente de Contenido Web está compuesto por los
siguientes módulos: FTCWSrv, FTCWAnaliza, FTCWDns,
FTCWPack, FTCWSetIP, FTCWRunIP, FTCWBackup,
104
FTCWGestion, a más de una herramienta de configuración para la
administración.
• FTCWSrv, este es el servidor de entrada que recibe los datos en
forma nativa. Permite la captura de paquetes indefinidamente a
través del puerto 80 (HTTP). Se encarga de capturar los
paquetes que ingresan por la interfaz eth1, la misma que da
salida a Internet. Sus características principales son:
Solo captura paquetes de datos que ingresen al puerto 80.
La información Web que recibe se estandariza en un formato
similar al RFC-793 del protocolo TCP más ciertos campos
propios para uso de la aplicación FTCW.
Abre una conexión y pasa los paquetes capturados al
servidor de base de datos FTCWPACK para que realice la
respectiva inserción de los registros.
Trabaja usando el puerto 60000 / UDP.
Está configurado como un nuevo servicio de Linux, por lo
tanto se inicia junto con el servidor, sea tanto en entorno
gráfico (Init 5) como con funcionalidad sólo de red (Init 3) con
el nombre de “ftcwd”. El usuario Administrador tendrá la
105
posibilidad de darle de baja en algún momento que el crea
conveniente.
• FTCWDaemon es llamado por el proceso FTCWSrv y trabaja
como un cron del sistema operativo. Se ejecuta cada cinco
segundos y se encarga de: 1) Ejecutar el proceso FTCWDns. 2)
Ejecutar el proceso FTCWAnaliza. 3) Mantener la tabla
packetTCP con un límite determinado de registros.
• FTCWDns es llamado por el proceso FTCWDaemon e interactúa
directamente con el FTCWPack para realizar la conexión,
consulta, inserción y eliminación en la base de datos. Se encarga
de relacionar el nombre del dominio completo con su respectiva
dirección IP. De esta manera la aplicación trabaja con un propio
servicio DNS que se almacena en la tabla denominada t_dns.
• FTCWAnaliza, es llamado por el proceso FTCWDaemon y se
encarga de actualizar tanto la tabla de reglas de IPTABLES
denominada t_iptables, como la cadena FORWARD del
comando IPTABLES en tiempo real. Para tal efecto, interactúa
con el FTCWPack para realizar la respectiva conexión y consulta
a la base de datos obteniendo las direcciones IP, dominios y
frases establecidas por el administrador del sistema, de las
106
entidades t_ip, t_dominio y t_frase respectivamente. Como
características mencionamos:
Se encarga de actualizar la tabla t_dns.
Interactúa directamente con el módulo FTCWPack.
Trabaja cada cinco segundos.
• FTCWPack, este es el servidor de base de datos. Esta interfaz
permite que cada módulo se conecte o comunique con la base
de datos, para diferentes acciones como selección, inserción,
actualización de registros, entre otros. Entre sus características
tenemos:
FTCWPACK se define como el medio destinado a interactuar
con el Sistema Manejador de Base de Datos MySQL.
FTCWPACK es una clase que tiene todos los métodos
necesarios para establecer comunicación con la base de
datos “firewall” y manipularla
107
2.2.5. Casos de Uso del sistema
Un diagrama de Casos de Uso muestra las distintas operaciones
que se esperan de una aplicación o sistema y cómo se relaciona con
su entorno sean estos usuarios u otras aplicaciones (Ver Cuadro
48).
CASOS DE USO DEL SISTEMA “FTCW”
Aplicación FTCW
Servidor DNS 1
Servidor DNS 2
Servidor DNS N
.
. Usuario 1
Usuario N
Recepción de respuesta
Solicitud: www.mail.com
Solicitud: www.gmail.com
S.O. IPTables
Análisis
Captura
Recepción de respuesta
.
.
.
Cuadro 48
2.2.6. Restricciones
Como restricciones del “FTCW” tenemos que su administración es
centralizada y de uso exclusivo para el Administrador del Sistema
Operativo. No permite por lo tanto configuraciones remotas, lo cual
indica que necesariamente el Administrador debe estar en contacto
directo con la máquina para establecer las reglas o políticas nuevas
o dar mantenimiento. Cabe recalcar que la aplicación se inicia al
mismo tiempo que el sistema operativo, como un servicio implícito
en él.
2.3 MODELADO DE REQUERIMIENTOS
Las herramientas de análisis que se emplean en el Modelado de
Requerimientos son: el Diagrama de Contexto de la Arquitectura
(DCA) y el Diagrama de Flujo de la Arquitectura (DFA), éstas
permitirán comprender mejor la funcionalidad de la aplicación FTCW
y su relación con el entorno.
2.3.1. Diagrama de Contexto de la Arquitectura (DCA)
El diagrama de contexto establece los límites de información entre
los que se esta implementando el sistema y el entorno en el que va
a funcionar el sistema. El DCA define todos los productores de
110
información externos utilizados por el sistema, todos los
consumidores de información externos creados por el sistema y
todas las entidades que se comunican a través de la interfaz o
realizan mantenimiento o autocomprobación.
2.3.1.1. Notación Gráfica
De acuerdo a los estándares de graficación del modelado de
requerimientos presentamos la notación gráfica empleada en el
Diagrama de Contexto de la Arquitectura del Firewall Transparente
de Contenido Web (Ver Cuadro 49).
111
NOTACIÓN DCA
SIMBOLOS DESCRIPCION
Entidad productora o consumidora de Información que reside fuera de los límites de un sistema a ser modelado.
Un transformador de información que reside dentro de los límites del sistema a ser modelado.
Un flujo de datos directo; la cabeza de la flecha indica la dirección del flujo de datos.
Un flujo de datos indirecto. La flecha indica la dirección del flujo de datos.
Flujo de datos directo en ambos sentidos.
Flujo de datos indirecto en ambos sentidos.
Almacén de datos o base de datos..
Cuadro 49 Fuente: Investigadores
112
2.3.1.2. Esquema
La aplicación “Firewall Transparente de Contenido Web” se ve
representado en el Cuadro 50 y tiene como ENTRADAS todas las
solicitudes hechas por algún navegador Web o browser que se
encuentre dentro de la organización o por cualquier tipo de tráfico
publicitario que automáticamente quiera ingresar hacia la Red de Área
Local. Como SALIDAS están todos los paquetes recibidos y aceptados
por nuestro FTCW, así como también constan en la SALIDA la interfaz
de usuario del Firewall. Cabe indicar que la funcionalidad de FTCW se
asemeja al de un bridge, ya que todo el tráfico que pase por nuestro
Firewall será transparente para toda la red.
DIAGRAMA DE CONTEXTO DE LA ARQUITECTURA “FTCW” (NIVEL 1)
Cuadro 50 Fuente: Investigadores
113
A continuación se muestra la arquitectura del “Firewall Transparente
de Contenido Web” con mayor detalle, indicando cada uno de los
módulos presentes y su interrelación con la base de datos y sistema
operativo (Ver Cuadro 51).
114
Cuadro 46
Captura de paquetes
Entradas Salidas
Interfaz de Usuario
Interfaz Externa a la
LAN
Interfaz Interna a la
LAN
Sistema Operativo (Mantenim.)
Inicio de procesos
Carga Reglas IPTables
Browser
Entrada de Consultas e instrucciones
MySQL
MySQL PackPaquetes
Entrantes (Puerto 80)
Paquetes Aceptados
Interfaz Gráfica
Gestionar Órdenes Implícitas
Setear y ejecutar filtro
por IPs
Carga DNS
Análisis de paquetes
Tratamiento De Sockets
Cuadro 51
Archivos Planos
Generados
DIAGRAMA DE CONTEXTO DE LA ARQUITECTURA “FTCW” (NIVEL 2)
2.3.2. Diagrama de Flujo de la Arquitectura (DFA)
Este diagrama describe la función y el rendimiento del sistema
basado en la computadora “FTCW” y las restricciones que gobiernan
su desarrollo. También describe la información (control y datos) que
sirve de entrada y salida del sistema.
2.3.2.1. Notación Gráfica
De acuerdo a los estándares de graficación del modelado de
requerimientos presentamos la notación gráfica empleada en el
Diagrama de Flujo de la Arquitectura del Firewall Transparente de
Contenido Web (Ver Cuadro 52).
2.3.2.2. Esquema
El DFA ejemplifica los datos que viajan de un módulo a otro
permitiendo esclarecer la funcionalidad del FTCW (Ver Cuadro 53).
SIMBOLOS DESCRIPCION
Subsistemas que son transformadores de información. Reside dentro de los límites del sistema a ser modelado.
Un flujo de datos directo; la cabeza de la flecha indica la dirección del flujo de datos.
Un flujo de datos indirecto. La flecha indica la dirección del flujo de datos.
Flujo de datos directo en ambos sentidos.
Flujo de datos indirecto en ambos sentidos.
Almacén de datos o base de datos.
Base de Datos
Fuente: Investigadores
NOTACIÓN DFA
Cuadro 52
116
DIAGRAMA DE FLUJO DE LA ARQUITECTURA “FTCW”
Subsistema Sensor Eth1
Subsistema Captura de
paquetes : 80
Subsistema Acceso a base
de datos
Subsistema Analizador de
contenido Web
EntradaDe Paquetes
Start
Base de Datos
Cuadro 53
Paquete
IP
Subsistema Activa servicios
de Linux
Start
Data
Subsistema Generador de
reportes
Reg.
Solic.
Subsistema Carga página
censurada
Solicitud Del Usuario
Subsistema Gestión/Opciones
GUI
Subsistema Reglas de
Configuración IPTables (S.O.)
Bloqueo IP
Subsistema Interfaz Gráfica
Usuario
Reporte
Subsistema Seteo de IPTables
Reg.
Solic.
Subsistema Ejecución de
browser
Pag.Web
Archivo texto IPTables
Reporte con formato
Archivo
Plano
Eth 0
Subsistema Respaldo de
tablas DB
IPTABLES
(S.O.)
Frase
2.4 DICCIONARIO DE DATOS
El diccionario de dato es un listado organizado de todos los elementos
de datos que son pertinentes para el sistema, con definiciones
precisas y rigurosas que permiten que el usuario y los analistas de
sistemas tengan una misma comprensión de las entradas, salidas, de
los componentes de los almacenes y de los cálculos intermedios.
El diccionario de datos nos muestra la lista de todos los atributos por
cada entidad o tabla y sus características.
• Entidad, Nombre que se le asigno a la tabla en la base de datos.
• Atributos, Nombre de cada campo dentro de la entidad en la base
de datos.
• Tipo, Tipo de información que almacenará el atributo en la base de
datos.
• Largo, Cantidad máxima de caracteres que aceptará el atributo.
• Condición, Restricciones que se han estipulado para un campo en
específico.
• Descripción, Descripción del propósito del campo.
119
2.4.1. Formato
El formato diseñado para registrar el Diccionario de datos es el que
se muestra a continuación (Ver Cuadro 54).
FORMATO DE DD
Pág. 1 / 1FIREWALL TRANSPARENTE DE CONTENIDO WEB
Versión 1.0
Fecha/Diseño
02/04/2005
Entidad:
DESCRIPCIÓN DEL REGISTRO No. Nombre Tipo Long. Descripción PK FK NL
Definición de claves PK: FK:
Cuadro 54 Fuente: Investigadores
120
2.4.2. Ejemplo
A continuación se presenta un ejemplo significativo de diccionario de
datos, la tabla “packetTCP” (Ver Cuadro 55).
EJEMPLO DD
Pág. 1 / 3FIREWALL TRANSPARENTE DE CONTENIDO WEB
Versión 1.0
Fecha/Diseño
02/04/2005
Entidad: packetTCP
DESCRIPCIÓN DEL REGISTRO No. Nombre Tipo Long. Descripción PK FK NL
1 2 3 4 5 6 7 8
Id FecCap HorCap size srcIP dstIP srcMAC dstMAC
int unsigned zerofill auto increment date varchar smallint unsigned zerofill varchar varchar varchar varchar
9
10
15 4
15
15
17
17
Identificador Fecha de Captura Hora de Captura Tamaño de paquete IP Origen IP Destino MAC Origen MAC Destino
X
X
X
Definición de claves PK: id + FecCap + HorCap FK:
121
Pág. 2 / 3FIREWALL TRANSPARENTE DE CONTENIDO WEB
Versión 1.0
Fecha/Diseño
02/04/2005
Entidad: packetTCP
DESCRIPCIÓN DEL REGISTRO No. Nombre Tipo Long. Descripción PK FK NL
9 10 11 12 13 14 15 16 17 18 19 20
headerLen srcPort dstPort sequenceNumber ack Number dataOffset URG ACK PSH RST SYN FIN
tinyint unsigned zerofill mediumint unsigned zerofill mediumint unsigned zerofill bigint unsigned zerofill bigint unsigned zerofill tinyint unsigned zerofill tinyint tinyint tinyint tinyint tinyint tinyint
2 5 5
10
10 2 1 1 1 1 1 1
Tamaño de Cabecera Puerto Origen Puerto Destino Número de secuencia Número de Ack Desplazamiento de la data Indicador Urgente Indicador ACK Indicador Push Indicador Reset Indicador de Sincronización Indicador de paquete final
X
X
X
X
X
X
Definición de claves PK: id + FecCap + HorCap FK:
122
Pág. 3 / 3FIREWALL TRANSPARENTE DE CONTENIDO WEB
Versión 1.0
Fecha/Diseño
02/04/2005
Entidad: packetTCP
DESCRIPCIÓN DEL REGISTRO No. Nombre Tipo Long. Descripción PK FK NL
21 22 23 24 25
window checksum urgent Point data process
mediumint unsigned zerofil mediumint unsigned zerofill mediumint unsigned zerofill mediumblob enum(‘0’,’1’)
5 5 5 1
Tamaño de la ventana Bits de verificación Puntero Urgente Datos del paquete Bandera registro procesado
X
Definición de claves PK: id + fecCap + HorCap FK:
Cuadro 55 Fuente: Investigadores
2.5. DIAGRAMA ENTIDAD-RELACION (DER)
El diagrama Entidad-Relación se centra únicamente en los datos, no
en las acciones que se realizan en ellos. Representa las relaciones
123
entre los objetos de datos. Esta modelización se usa ampliamente en
aplicaciones de bases de datos, proporcionando una amplia visión de
los datos y las relaciones que gobiernan los datos. Estos diagramas
están compuestos de objetos de datos, atributos, relaciones e
indicadores de tipo.
2.5.1. Definición de entidades
Una entidad caracteriza a un tipo de objeto, real o abstracto, del
problema a modelizar. Toda entidad tiene existencia propia, es
distinguible del resto de las entidades, tiene nombre y posee atributos
definidos en un dominio determinado. Las entidades que requiere la
aplicación FTCW las podemos apreciar en el Cuadro 56.
Conjunto de Entidades
• packetTCP { id, FecCap, HorCap, size, srcIP, dstIP, srcMAC, dstMAC, headerLen, srcPort, dstPort, sequenceNumber, ackNumber, dataOffset, URG, ACK, PSH, RST, SYN, FIN, window, checksum, urgentPoint, data, process }
• t_dns { id, ip, dominio } • t_dominio { id, dominio, accion } • t_frase { id, frase, accion } • t_ip { id, ip, accion } • t_iptables { id, ip, dominio, frase, accion } • t_usuario { id, usuario, clave, nombres, apellidos }
Cuadro 56 Fuente: Investigadores
124
2.5.2. Definición de relaciones
En el diseño de base de datos establecido para FTCW las tablas
definidas no están relacionadas explícitamente. Existen relaciones
implícitas como las siguientes (Ver Cuadro 57):
Relaciones
• ip_dominio { ip, dominio }
• ip_tables { ip, dominio, frase }
Cuadro 57 Fuente: Investigadores
2.5.3. Especificación de Objetos
Dentro de la aplicación FTCW existen ciertas tablas, entidades u
objetos que permiten categorizar el flujo de información inmerso en
el mismo. Entre los objetos de la aplicación podemos mencionar los
siguientes:
• packetTCP: Esta tabla almacena información de los paquetes
TCP/IP capturados a través de la interfaz Eth1 en formato nativo.
Cada vez que un paquete se dirige a la red LAN es capturado a
través del proceso FTCWSrv y este instancia al Servidor de Base
125
de datos FTCWPack para que realice la respectiva inserción de
los datos como son (Ver Cuadro 58):
Tabla packetTCP
• id int(9) unsigned zerofill NOT NULL auto_increment PK • FecCap date NOT NULL default '0000-00-00' PK • HorCap varchar(15) NOT NULL default '' PK • size smallint(4) unsigned zerofill NOT NULL default '0000' • srcIP varchar(15) NOT NULL default '' • dstIP varchar(15) NOT NULL default '' • srcMAC varchar(17) NOT NULL default '' • dstMAC varchar(17) NOT NULL default '' • headerLen tinyint(2) unsigned zerofill NOT NULL default '00' • srcPort mediumint(5) unsigned zerofill NOT NULL default
'00000' • dstPort mediumint(5) unsigned zerofill NOT NULL default
'00000' • sequenceNumber bigint(10) unsigned zerofill NOT NULL
default '0000000000' • ackNumber bigint(10) unsigned zerofill NOT NULL default
'0000000000' • dataOffset tinyint(2) unsigned zerofill NOT NULL default '00' • URG tinyint(1) default NULL • ACK tinyint(1) default NULL • PSH tinyint(1) default NULL • RST tinyint(1) default NULL • SYN tinyint(1) default NULL • FIN tinyint(1) default NULL • window mediumint(5) unsigned zerofill NOT NULL default
'00000' • checksum mediumint(5) unsigned zerofill NOT NULL default
'00000' • urgentPoint mediumint(5) unsigned zerofill NOT NULL default
'00000' • data mediumblob • process enum(‘0’,’1’) NOT NULL default ‘0’
Cuadro 58 Fuente: Investigadores
126
• t_dns: Esta tabla simula nuestro DNS que se forma a partir del
análisis de los paquetes. El módulo FTCWDns busca todas las
ocurrencias que coincidan con las frases establecidas en nuestra
entidad t_frase y genera nuestro DNS local con la siguiente
estructura (Ver Cuadro 59).
Tabla t_dns
• id int(9) unsigned zerofill NOT NULL default '000000000' auto_increment PK
• ip varchar(15) NOT NULL default '' PK • dominio varchar(255) binary NOT NULL default ‘’ PK
Cuadro 59 Fuente: Investigadores
• t_dominio: La entidad t_dominio permite el ingreso de nuevos
dominios a ser bloqueados por parte del Administrador del
sistema. En está tabla el usuario Administrador podrá ingresar un
dominio específico o parte de él, como por ejemplo
“www.juegos.net” o “aventuras_mall.com.ec”. El dominio que
ingrese será bloqueado inmediatamente, por tal razón debe
cerciorarse del ingreso que realiza. Esta tabla además posee un
campo de accion que puede tener dos estados posibles
127
P=Permitido, R=Restringido. La estructura es la siguiente (Ver
Cuadro 60).
Tabla t_dominio
• id int(9) unsigned zerofill NOT NULL auto_increment PK • dominio varchar(255) binary NOT NULL default '' PK • accion enum('R','P') NOT NULL default 'R'
Cuadro 60 Fuente: Investigadores
• t_frase: Esta tabla permite el ingreso de frases de dos o más
palabras las mismas que serán contempladas para el análisis del
contenido de las páginas Web. Posee el campo de accion que
puede tener dos estados posibles P=Permitido, R=Restringido.
La estructura es la siguiente (Ver Cuadro 61).
Tabla t_frase
• id int(9) unsigned zerofill NOT NULL default '000000000' PK • frase varchar(255) binary NOT NULL default '' PK • accion enum('R','P') NOT NULL default 'R'
Cuadro 61 Fuente: Investigadores
128
• t_ip: Esta tabla permite el ingreso de direcciones IP que deben
bloquearse directamente, al detectarse en determinado paquete.
Son establecidas por el Administrador del Sistema en base a la
experiencia o conocimiento previo. Posee el campo de accion
que puede tener dos estados posibles P=Permitido,
R=Restringido. La estructura es la siguiente (Ver Cuadro 62).
Tabla t_ip
• id int(9) unsigned zerofill NOT NULL auto_increment PK • ip varchar(15) NOT NULL default '' PK • accion enum('R','P') NOT NULL default 'R'
Cuadro 62 Fuente: Investigadores
• t_iptables: Esta tabla permite establecer la regla que será
aplicada a un bloqueo de dirección IP a través de IPTables del
sistema operativo. Se carga automáticamente por medio de los
módulos FTCWSetIP y FTCWRunIP. Detalla la dirección IP, el
dominio correspondiente a esa dirección IP, la frase o frases
encontradas por medio del análisis del contenido de la página
Web. Además, posee el campo de accion que puede tener dos
estados posibles P=Permitido, R=Restringido según se requiera
129
en determinado momento. La estructura es la siguiente (Ver
Cuadro 63).
Tabla t_iptables
• id int(9) unsigned zerofill NOT NULL auto_increment PK • ip varchar(15) NOT NULL default '' • dominio varchar(255) binary NOT NULL default '' • frase varchar(255) binary default NULL • accion enum('R','P') NOT NULL default 'R'
Cuadro 63 Fuente: Investigadores
• t_usuario: Esta tabla permite el ingreso de información del
usuario que tiene acceso a la aplicación Firewall Transparente de
Contenido Web “FTCW”, por defecto es el usuario Administrador
del sistema operativo, pero se da la facilidad de registrar un
nuevo usuario con privilegios de “súper-user”. Como atributos se
detalla un nombre de usuario “administrador” y una clave en
formato encriptado “ADministrador” [35cf9a534ab492ee]. La
estructura es la siguiente (Ver Cuadro 64).
130
Tabla t_usuario
• id tinyint(3) unsigned zerofill NOT NULL default '000' auto_increment PK
• usuario varchar(20) binary NOT NULL default '' PK • clave varchar(20) NOT NULL default '' • nombres varchar(30) binary NOT NULL default ‘’ • apellidos varchar(30) binary NOT NULL default ‘’
Cuadro 64 Fuente: Investigadores
2.5.4. Notación Gráfica
La estructura lógica global de una base de datos puede representarse
gráficamente por medio de un Diagrama Entidad-Relación en cual
consta de los siguientes elementos (Ver Cuadro 65):
• Rectángulos: Representan un conjunto de entidades (tablas)
• Elipses: Representan atributos (campos de las tablas)
• Rombos: Representan conjuntos de relaciones (tablas que
resultarán de operar con otras tablas [vistas]).
• Líneas: Enlazan atributos a conjuntos de entidades, y conjuntos de
entidades a conjuntos de relaciones.
131
NOTACIÓN DER
SIMBOLOS DESCRIPCION
Rectángulo Entidades o tablas.
Elipses Atributos o campos de la tabla.
Rombo Conjunto de relaciones (Vistas).
Líneas Enlazan atributos a conjuntos de entidades, y conjuntos de entidades a conjuntos de relaciones
Cuadro 65 Fuente: Investigadores
2.5.5. Ejemplo de DER
Cuando un cliente o usuario de una red solicita una página a través de
su browser sea este Internet Explorer, Mozilla Firefox, NetScape, entre
otros; como por ejemplo “www.yahoo.com” se produce una relación
132
de “solicitud” entre ambas entidades como se muestra en el Cuadro
66.
EJEMPLO DE DER
Cuadro 66 Fuente: Investigadores
En los Cuadros 67 y 68 se presenta el Modelo Entidad Relación
(DER) diseñado para el Firewall Transparente de Contenido Web,
con sus respectivas entidades y relaciones.
2.5.6. Esquema
Pag.Web
133
DIAGRAMA ENTIDAD RELACION (DER)
packetTCP
Modelo Entidad – Relación (FTCWPack)
ip
FecCap
HorCap
size
srcIP
dstIP
srcMAC
dstMAC
headerLen
srcPort
dstPort
sequenceNumber
ackNumber
dataOffset
window
checksum
urgentPoint
data
URG
A C K
P S H
RST
SYN
FIN
t_dominio
t_ip
t_usuario
t_frase
t_iptables
t_dns
id
dominio
accion
id
ip
accion
id
ip
dominio
id
frase
accion
id
ip
dominio
frase
accion
id
usuario
clave
Base de Datos: MySQL
Universidad de Guayaquil
Tópico de Adm. de Redes Corporativas
Tablas Relación Implic.
Cuadro 67
nombres
apellidos
process
134
DIAGRAMA ENTIDAD RELACION (DER)
packetTCP
Id FecCap HorCap size srcIP dstIP srcMAC dstMAC headerLen srcPort dstPort sequenceNumber ackNumber dataOffset URG ACK PSH RST SYN FIN window checksum urgentPoint data process
DIAGRAMA : Entidad – Relación (FTCWPack) APLICACIÓN : Firewall Transparente Contenido Web
Cuadro 68
id usuario clave nombres apellidos
t_usuario
id ip dominio frase accion
t_iptables
id ip accion
t_ip
id frase accion
t_frase
id dominio accion
t_dominio
id ip dominio
t_dns
135
2.6. DIAGRAMA DE FLUJO DE DATOS (DFD)
El diagrama de flujo de datos (DFD) es una técnica que representa
el flujo de información y las transformaciones que se aplican a los
datos al moverse desde la entrada hasta la salida.
El DFD es también conocido como grafo de datos o diagramas de
datos o como diagrama de burbujas.
Se puede usar el diagrama de flujo de datos para representar un
sistema o software a cualquier nivel de abstracción. De hecho, los
DFD pueden ser divididos en niveles que representen un mayor flujo
de información y un mayor detalle funcional. Por consiguiente, el
DFD proporciona un mecanismo para el modelado funcional así
como el modelado del flujo de información.
2.6.1. Notación Gráfica
La notación gráfica empleada en el Diagrama de Flujo de Datos se
muestra en Cuadro 69.
136
NOTACIÓN DFD
SIMBOLOS DESCRIPCION
Terminador, representan entidades externas con las cuales el sistema se comunica.
Proceso
El flujo se usa para describir el movimiento de bloques o paquetes de información de una parte del sistema a otra.
El almacén se utiliza para modelar una colección de paquetes de datos en reposo
Cuadro 69 Fuente: Investigadores
2.6.2. Modelado de datos
Los principales módulos a detallar de la aplicación FTCW son los
siguientes FTCWSrv, FTCWDaemon, FTCWDns, FTCWAnaliza,
FTCWPack. Otros procesos o métodos importantes que se ejecutan
en el entorno gráfico son: ““Inicio de sesión”, “VerPagina”,
“TableModel”, “FTCWBackup”, “SetIptables”, “Opciones”. Ver
cuadros desde el 70 al 81.
137
Sistema Operativo
Cuadro 70
DIAGRAMA DE FLUJO DE DATOS (FTCWSrv)
Definir parámetros Proceso Captura
String
Start
Abrir interfaz de red (eth1)
Módulo Captura
Manejador de paquetes
(Handler Packet)
Formatear data
Desencapsula
paquete
Data con formato
Data con formato
Cabecera + data del paquete
Manejador de Base de Datos (FTCWPack)
Cadena
Salida Estándar
Proceso Hijo 1
138
Cuadro 71
Módulo Primario DNS
Conexión a la base de datos
Solicitud de conexión
Obtener dominio
dominio
srcIP+dominio
data srcIP+ data
Solicitud “GET”
firewall
Start
Crond S.O.
DIAGRAMA DE FLUJO DE DATOS (FTCWDns)
139
Cuadro 72
Definir parámetros
Determinar tipo de solicitud
Solicitud
Cadena de conexión
Ejecutar Consulta
Ejecutar Inserción
Ejecutar Actualización
Ejecutar Eliminación
Ejecutar descripción tabla
Información DB
Emisión de respuesta
Registro de Logs (Auditoria)
firewall
Datos
File
Reg.
Reg.
Tipo
Historial de errores
Datos
Datos
Ejecutar borrado de tabla
Ejecutar creación de tabla
DIAGRAMA DE FLUJO DE DATOS (FTCWPack)
140
Cuadro 73
Start
Señal del usuario o proceso interno
Consultar base de datos tabla
Señal
firewall
Página Web
Presentación en una tabla
Carga browser o navegador Web
Confirmación de resultados
Registros
Ver contenido de página Web
Evento+registros IP
File plain
Información
Actualización de archivo plano con reglas IPTABLES
DIAGRAMA DE FLUJO DE DATOS (SetIptables)
141
DIAGRAMA DE FLUJO DE DATOS (SetIptables)
Proceso Principal
Start
Señal del Usuario Administrador
Cuadro 74
Llamada o ejecución
Llamada o ejecución
Configuración por defecto
Resultado del
(Pre-establecida) FTCWSetIP
File File
Señal de ejecución
Sistema Operativo
142
Señal del usuario administrador
Cuadro 75
Generar Interfaz gráfica al usuario
Start
Señal
Cargar lista de tablas disponibles
Nombres de archivos
Señal
Firewall
Orden de selección
Selección del archivo a respaldar
Extraer archivos MYD, MYI, frm
del directorio de datos de MySQL
Filtrar nombres de los archivos
Archivos del directorio
Señal Up
Definir cabecera de la tabla a mostrar
Establecer conexión a la base de datos
Ejecutar descripción de la tabla
Solicitud
Respuesta
Cabecera
Datos de la tabla
Solicitud ResultSet
Cargar datos en el Objeto
JTextArea
Señal
Seleccionar botón para
guardar
Señal Up
Abrir diálogo
Seleccionar botón para
salir
Señal Salir de la aplicación
SeñalSeñalEscoger registro y directorio
DIAGRAMA DE FLUJO DE DATOS (FTCWBackup)
143
Cuadro 76
Start
Señal desde la GUI
Identificación de quien origina la
solicitud
Validación de datos
tabla + accion
Verifica formato
Verifica dato único
Reg.
Reg.+ formato Reg.validado
Firewall
File
Reg.
Reg.
Ejecutar Consulta
Ejecutar Inserción
Ejecutar Actualización
Ejecutar Eliminación
Ejecutar descripción tabla
accion
Datos
Registros de Logs
Historial de errores
Datos
Información (Datos)
Visualización de la acción en la GUI
No No
Si Si Ejecutar acción
DIAGRAMA DE FLUJO DE DATOS (FTCWGestion)
144
Cuadro 77
Start
Señal del Usuario o Proceso Interno
Hacer consulta FTCWPack (DB)
Registros dla con
e sulta
Carga datos Objeto JTable
Interacción con el usuario del
sistema
Consulta a base de datos
ResultSetsFirewall
Señal
Nombre de la tabla
DIAGRAMA DE FLUJO DE DATOS (Opciones)
145
Cuadro 78
Start IP
Opciones (Confirma resultado)
Hacer consulta FTCWPack (DB) ResultSet
Carga página HTML generada en un browser
Página HTML
ResultSetsFirewall
Dirección IP
Crea un archivo HTML
DIAGRAMA DE FLUJO DE DATOS (VerPagina)
146
Cuadro 79
Señal (Actualización)
Señal del Usuario o Proceso Interno
Hacer consulta FTCWPack (DB)
Registros dla con
e sulta
Carga datos Objeto JTable
Interacción con el usuario del
sistema
Módulo de Store
Procedure
ResultSetsFirewall
Señal
Nombre de la tabla
DIAGRAMA DE FLUJO DE DATOS (TableModel)
147
DIAGRAMA DE FLUJO DE DATOS (Inicio de sesión)
Validar nombre de usuario y contraseña en la base de datos
“firewall”
Escribir contraseña de acceso
Cuadro 80
Llamada del Usuario Administrador
Nombre de usuario no válido
No muestra aplicación
FTCW
Señal
Mensaje de bienvenida a
FTCW
Solicitud
firewall Respuesta
Nombre de usuario
válido
Señal
Presentación de la Interfaz de
FTCW al usuario
148
Usuario accede
URL
Cliente realiza petición
URL
Cliente Web
decodifica
Abrir conexión servidor
Llamar puerto TCP
Enviar petición
- Protocolo de acceso (d1) - Dirección DNS (d2) - Dirección IP (d3) - No. Puerto (d4) - Requerimiento servidor (d5)
GET POST HEAD
URL
d1+d2+d3+d4+d5
Señal
Respuest
- Dirección objeto requerido - Versión de HTTP - Información adicional
Código de estado+ tipo de dato MIME+ inf.
Respuesta al cliente
Cerrar Conexión TCP
Señal
DIAGRAMA DE FLUJO DE DATOS ( Transacción HTTP )
Cuadro 81
149
2.6.3. Especificación de procesos
En esta sección se detalla la funcionalidad de cada uno de los
procesos establecidos en el DFD en orden de aparición.
2.6.3.1. Proceso FTCWSrv
Este proceso se encarga de la Captura de paquetes. El inicio del
programa se lo da el Sistema Operativo cuando se levantan sus
servicios. Se instancia una clase pública independiente FTCWSrv.
2.6.3.1.1. Definir parámetros antes del proceso de captura
Entrada: Señal de inicio de programa
Salida: Inicialización de variables
Se define todos los parámetros necesarios para su funcionamiento
como son:
• La cantidad de paquetes
• La interfaz por donde captura
• El tipo de protocolo
• El número de puerto
• El tiempo de captura
150
2.6.3.1.2. Abrir interfaz de red
Entrada: Variables definidas
Salida: Señal de ejecución de módulo
Este proceso se encarga de buscar los dispositivos de red
existentes. Luego procede a abrir la interfaz de red especificada en
la definición de parámetros, especificándole además el tamaño del
MTU a capturar y la frecuencia con la que se va a trabajar. Luego,
aplica el filtro necesario para el tráfico Web puerto 80.
2.6.3.1.3. Manejador de paquetes
Entrada: Proceso Hijo 1 (Interfaz abierta)
Salida: Señal de ejecución de módulo
Este proceso se instancia la clase PacketHandler de un
PacketListener. Recibe como entrada la señal del proceso que abre
la interfaz .Se encarga de extraer todos los datos necesarios e
importantes del paquete TCP e IP capturado.
2.6.3.1.4. Desencapsula paquete
Entrada: Cabecera y data TCP
Salida: Datos con formato
151
Este proceso alimenta a dos nuevos procesos el Manejador de Base
de Datos (FTCWPack) y al Formatear data. Separa datos
importantes de cada paquete como los siguientes:
• La data
• El tamaño del paquete
• La fecha de captura
• La hora de captura
• El tiempo en microsegundos
• El Host origen
• El Host destino
• La dirección MAC-Address origen
• La dirección MAC-Address destino
• Los bits URG,ACK,PSH,RST,SYN,FIN
• El tamaño de la ventana
• El valor del checksum
• El valor del puntero Urgente
2.6.3.1.5. Manejador de Base de Datos (FTCWPack)
Entrada: Datos con formato
Salida: Registros base de datos
152
De entrada verifica si la data es diferente de nulo, para proceder
armar la cadena que se enviará a la base de datos para la
respectiva verificación e inserción.
2.6.3.1.6. Formatear data
Entrada: Datos con formato
Salida: Cadena
Recibe todos los datos con formato les aplica separadores y genera
una nueva cadena para que sea visualizada por el usuario.
2.6.3.1.7. Salida Estándar
Entrada: Cadena
Salida: Por pantalla
Se encarga de la visualización de los paquetes capturados por
pantalla.
2.6.3.2. Proceso FTCWDns
Este proceso se encarga de establecer nuestro propio Servidor
DNS. Lo origina un programa crond del sistema operativo, es una
aplicación que siempre se ejecuta.
153
2.6.3.2.1. Módulo primario DNS
Entrada: Señal de inicio de programa
Salida: Señal
Se define todos los parámetros necesarios para su funcionamiento
como son:
• Arreglos tipo ResultSet
• Índices para bucles
• Campo para la data
• Hora inicial y final de la búsqueda o análisis
2.6.3.2.2. Conexión a la Base de Datos
Entrada: Señal de inicio o solicitud
Salida: Solicitud “GET”
Realiza toda la gestión para el acceso a la base de datos, realiza la
consulta en la tabla packetTCP las frases establecidas en t_frase, tal
acción da como resultado la dirección IP origen (srcIP) y la data
respectiva. Con estos datos carga los registros en la tabla t_dns con
los datos de dirección IP y dominio.
2.6.3.2.3. CargaDNS
Entrada: data
154
Salida: dominio
Este proceso se encarga de obtener el dominio presente en un
paquete determinado. Realiza la definición de parámetros como:
• Nombre del dominio
• Inicio y fin de la cadena dominio
Se encarga de buscar dentro del paquete la ocurrencia Host, en
caso de encontrar alguna ocurrencia extrae desde la palabra Host
en adelante, le quita los espacios antes o después del dominio y
esto retorna como valor final.
2.6.3.3. Proceso FTCWPack
Este proceso se encarga de establecer comunicación con la base de
datos firewall y permitir acciones de selección, inserción,
actualización, eliminación, descripción de tablas, entre otras. Este
proceso puede ser llamado desde cualquier otro proceso dentro de
la aplicación FTCW.
2.6.3.3.1. Definir parámetros
Entrada: Solicitud
Salida: Cadena de conexión
155
Se define todos los parámetros necesarios para su funcionamiento
de la misma como son:
• Variable de conexión
• Base de datos
• Host
• Url o cadena de conexión
• Nombre del usuario que accede a la base de datos
• Clave respectiva
Inicializa el driver de conexión entre JAVA y MySQL. Realiza la
conexión a la base de datos con los parámetros antes definidos,
efectuando una validación de que no exista una conexión iniciada
previamente.
2.6.3.3.2. Determinar tipo de solicitud
Entrada: Tipo de solicitud
Salida: Datos
El tipo de solicitud depende de la necesidad del proceso que invoca
esta clase. Entre esos tipos de solicitud tenemos:
• Desconecta
• Hacer consulta
156
• Hacer inserción
• Hacer borrado
• Hacer actualización
• Crear tabla
• Borrar tabla
• Describir tabla
2.6.3.3.3. Finalize
Entrada: Tipo de solicitud
Salida: Dato lógico(Si – No)
Este método se encarga de cerrar la conexión previamente
establecida.
2.6.3.3.4. Ejecutar Consulta
Entrada: Tipo de solicitud
Salida: Arreglo de registros
Ejecuta consultas a la base de datos. Recibe cuatro argumentos: el
nombre de la tabla, los campos, un condicional y el tipo de consulta.
Verifica el nombre de la tabla enviada como argumento y de acuerdo
a esto, ejecuta una acción determinada. El proceso común es
identificar la tabla a procesar, inicializar un arreglo de registros tipo
157
ResultSet, verificar el tipo de consulta que se solicita, armar la
cadena de consulta, ejecutar la consulta y retornar el resultado o
registros.
2.6.3.3.5. Ejecutar Inserción
Entrada: Tipo de solicitud
Salida: Dato lógico (Si – No)
Realiza inserciones de registros a la base de datos. Recibe cuatro
argumentos: el nombre de la tabla, el número de columnas a
insertar, los valores a insertar y la data del paquete. Define las
variables necesarias. Define una instancia de la clase
StringTokenizer para separar los campos a insertar empleando el
como separador “|”. El proceso es identificar la tabla en la que se
insertarán los registros, armar la cadena de inserción, ejecutar la
inserción y retornar un valor lógico de éxito o error.
2.6.3.3.6. Ejecutar Eliminación
Entrada: Tipo de solicitud
Salida: Dato lógico (Si – No)
Realiza eliminación de registros a la base de datos. Recibe dos
argumentos: el nombre de la tabla y la clave para borrar. El proceso
es definir las variables necesarias, armar la cadena para la
158
eliminación, ejecutar la eliminación y retornar un valor lógico de éxito
o error.
2.6.3.3.7. Ejecutar Actualización
Entrada: Tipo de solicitud
Salida: Dato lógico (Si – No)
Realiza actualización de registros en la base de datos según una
condición. Recibe tres argumentos: el nombre de la tabla, el nuevo
valor y el condicional para actualizar determinado registro. El
proceso es definir las variables necesarias, armar la cadena para la
actualización, luego ejecutarla y finalmente retornar un valor lógico
de éxito o error.
2.6.3.3.8. Ejecutar creación de tabla
Entrada: Tipo de solicitud
Salida: Dato lógico (Si – No)
Realiza la creación de una tabla en la base de datos. Recibe dos
argumentos: el nombre de la tabla a crear y los campos para su
estructura. El proceso es definir las variables necesarias, armar la
cadena para crear una tabla en MySQL, luego ejecutarla y
finalmente retornar un valor lógico de éxito o error.
159
2.6.3.3.9. Ejecutar borrado de tabla
Entrada: Tipo de solicitud
Salida: Dato lógico (Si – No)
Realiza la eliminación de una tabla en la base de datos. Recibe
como argumento el nombre de la tabla que se desee borrar. El
proceso es definir las variables necesarias, armar la cadena borrar
una tabla en MySQL empleando DROP, luego ejecutarla y
finalmente retornar un valor lógico de éxito o error.
2.6.3.3.10. Ejecutar descripción tabla
Entrada: Tipo de solicitud
Salida: Arreglo de registros
Realiza la eliminación de una tabla en la base de datos. Recibe
como argumento el nombre de la tabla que se requiere conocer la
estructura. El proceso es definir las variables necesarias, armar la
cadena para describir la estructura de una tabla en MySQL, luego
ejecutarla y finalmente retornar todos los registros o ResultSet que
ocasiona la descripción de la entidad.
2.6.3.3.11. Historial de errores
Entrada: Datos
160
Salida: Arreglo de registros
Este proceso se encarga de registrar los errores en cada actividad
que se gestione con la base de datos. Recibe la excepción en la que
se incurre y la cadena que se ejecuto de MySQL. Se definen
variables necesarias como:
• La fecha de ejecución de una acción en MySQL
• Descripción del error
• Nombre del archivo de Log (FTCWPack.log)
• Ubicación del archivo (/var/log)
Estos registros de errores se almacenarán tanto en un archivo plano
como en una tabla en la base de datos “t_fileLog” para facilitar
consultas.
2.6.3.3.12. Registro de Logs (Auditoría)
Entrada: Datos
Salida: Arreglo de registros
Este proceso se encarga de registrar cada acción que se realice con
la base de datos para futuras auditorías. Estos registros se
almacenan en una tabla “t_auditoria” en la base de datos.
161
2.6.3.4. Proceso SetIptables
Este proceso se encarga de la cargar la tabla de direcciones IP
restringidas por el usuario. Emplea un procedimiento que se aloja en
la base de datos para optimizar la ejecución del mismo. Este módulo
lo inicia el usuario o algún proceso interno de la aplicación.
2.6.3.4.1. Consultar a la base de datos
Entrada: Start o señal de activación
Salida: Tabla con registros validados
Realiza diferentes consultas a la base de datos.
2.6.3.4.2. Presentación en una tabla
Entrada: Tabla con registros validados
Salida: Registros
Carga las reglas establecidas en un objeto Jtable para la
presentación ante el usuario.
2.6.3.4.3. Confirmación de resultados
Entrada: Registros
Salida: Evento + Registros IP
162
Se centra en el evento o acción que realice el usuario, como verificar
el contenido Web a censurar o sino simplemente aplicar la regla, es
decir, actualizar las reglas de IPTables.
2.6.3.4.4. Ver Página
Entrada: Registro IP
Salida: Página Web
Este proceso se encarga de agrupar todas los paquetes
relacionados con determinada dirección IP de la tabla general de
paquetes TCP y formar un archivo plano en la ruta /var/www/html/
que es el directorio de Apache Web Server. El nombre del archivo
que se genera se compone de la dirección IP y con extensión “.html”
por ejemplo “66.56.108.5.html”.
2.6.3.4.5. Cargar browser o navegador Web
Entrada: Página Web
Salida: GUI
Este proceso se encarga de buscar determinado archivo con
formato “.html” y lo ejecuta en el browser o navegador de Internet
por ejemplo en Linux “Mozzila”.
163
2.6.3.4.6. Actualización de archivo plano con reglas IPTABLES
Entrada: Información
Salida: Archivo modificado
Se encarga de actualizar el archivo de IPTABLES del sistema
operativo con las reglas ingresadas por el usuario administrador.
2.6.3.4.7. Configuración por defecto
Entrada: Llamada o ejecución
Salida: Bloqueo de direcciones IP
Consiste en ejecutar las políticas de IPTables pre-establecidas a
través del sistema operativo. Tiene por finalidad bloquear el
contenido Web que no se aplique a las reglas establecidas.
2.6.3.4.8. Resultado del SetIptables
Entrada: Llamada o ejecución
Salida: Bloqueo de direcciones IP
Consiste en ejecutar las políticas de IPTables que da como
resultado el módulo SetIptables, es decir, aquellas reglas nuevas
que ingresa el usuario administrador. La ejecución de estas nuevas
reglas se realiza a través del sistema operativo. Tiene por finalidad
164
bloquear el contenido Web que no se aplique a las reglas
establecidas.
2.7. DIAGRAMA DE TRANSICION DE ESTADOS
El Diagrama de Transición de Estados (DTE) indica cómo se
comporta el sistema como consecuencia de sucesos externos. Para
lograr esto, el DTE representa los diferentes modos de
comportamiento (llamados estados) del sistema y la manera en que
se hacen las transiciones de estado a estado. El DTE sirve como la
base del modelado de comportamiento.
En el cuadro 82 se presentan los posibles estados de la aplicación
FTCW
165
Cuadro 82
FTCW iniciada
FTCW reiniciada
FTCW detenida
Servidor reinicia FTCW
Sistema Operativo
Start
DIAGRAMA DE TRANSICION DE ESTADOS “FTCW”
Servidor inicia FTCW
Servidor inicia FTCW
Servidor detiene FTCWUsuario detiene FTCW
Servidor reinicia FTCW
Servidor detiene FTCW
A continuación se presenta la interacción entre cada una de las
interfaces de la aplicación FTCW (Ver Cuadros 83 al90).
166
Pág. 1 / 1FIREWALL TRANSPARENTE
DE CONTENIDO WEB
Versión 1.0
Fecha / diseño
11/05/2005
DIAGRAMA PARA EL INGRESO A LA PANTALLA PRINCIPAL
En este caso, el estado inicial va ser el estado iniciar sesión, que esta
esperando que el administrador ingrese sus datos, para verificarlos y
permitir la ejecución del Menú Principal.
Iniciar Sesión Pantalla Principal
Cuadro 83
167
Pág. 1 / 1FIREWALL TRANSPARENTE
DE CONTENIDO WEB
Versión 1.0
Fecha / diseño
10/05/2005
DISEÑO DE TRANSICIÓN DE ESTADO
DIAGRAMA PARA EL INGRESO A LA PANTALLA PRINCIPAL
Administrador Sistema Base de Datos Ingresa contraseña Verifica contraseña
Selecciona opción
Salir del Sistema
Cuadro 84
Sistema F.T.C.W.
B/D
168
Pág. 1 / 1 FIREWALL TRANSPARENTE DE CONTENIDO WEB
Versión 1.0
Fecha / diseño
22/05/2005
DIAGRAMA DE TRANSICIÓN DEL MENU PRINCIPAL
Estado Inicio
Reporte Opciones
Menú Principal
Ver Ayuda Archivo Base de Datos
Cuadro 85
170
CAPITULO 3
DISEÑO
3.1. INTRODUCCION
El diseño del software es el proceso que permite traducir los requisitos
analizados de un sistema en una representación del software, que
inicialmente da una visión del mismo y tras posteriores refinamientos
nos conducirá a una representación de diseño muy cercana al código
fuente.
La aplicación FTCW posee los siguientes diseños: diseño de datos,
arquitectónico, procedimental y de la interfaz.
171
3.2. DISEÑO DE DATOS
El diseño de datos es un proceso de perfeccionamiento gradual que
abarca desde lo más elemental hasta los procesos y estructuras de
datos precisos que proporcionan dichos datos. El proceso de diseño
de datos incluye la identificación de los mismos, la definición de tipos
de datos y mecanismos de almacenamiento concretos, y la tarea de
garantizar la integridad de los datos mediante el uso de reglas de
empresa y otros mecanismos de exigencia en tiempo de ejecución.
FTCW requiere de estructuras de datos que permitan manipular el flujo
de información presente en ella, como se muestra en el Cuadro 86.
Estructuras de datos
• packetTCP • t_dns • t_dominio • t_frase • t_ip • t_iptables • t_usuario
Cuadro 86 Fuente: Investigadores
172
3.2.1. Descripción de las estructuras de datos
Se define la funcionalidad de las entidades que intervienen en la
aplicación Firewall Transparente de Contenido Web.
• La entidad packetTCP registra la información relacionada con el
segmento TCP. Como la cabecera debe implementar todos los
mecanismos del protocolo, para ello se ha creado los siguientes
atributos: id, FecCap, HorCap, size, srcIP, srcMAC, dstMAC,
headerLen, srcPort, dstPort, sequenceNumber, ackNumber,
dataOffset , URG, ACK, PSH, RST, SYN, FIN, window, checksum,
urgentPoint, data, process.
• La entidad t_dns, contiene información de nuestro propio Servidor
DNS, información que será almacenada en los siguientes atributos:
id, ip y dominio.
• La entidad t_dominio, en esta se registra la información acerca los
dominios que se van a ser censurados o palabras que contenga
parte del dominio y para esto se han considerado los siguientes
atributos: id, dominio, accion.
• En la entidad t_frase se almacena información acerca de las frases
que van a ser analizadas dentro de la data del paquete TCP.
• En la entidad t_ip se registra la información acerca de las
direcciones IP que van hacer bloqueadas, los atributos son los
siguientes: id, ip, accion.
173
• En la entidad t_iptables obtendrá una tabla de resultados de todos
los paquetes que concuerden con las políticas establecidas, los
atributos considerados serán los siguientes: id, ip dominio, frase,
accion.
• En la entidad t_usuario se registra la información acerca del
usuario, tales como el id, usuario, clave, nombres, apellidos.
174
3.2.2. Diccionario de datos
El Diccionario de Datos detalla cada campo o atributo presente en
cada estructura de datos, identificando nombre del atributo, tipo,
longitud, descripción del campo, si es clave principal o clave foránea,
además indica si su valor puede ser nulo o no requerido.
Pág. 1 / 3FIREWALL TRANSPARENTE DE CONTENIDO WEB
Versión 1.0
Fecha/Diseño
02/04/2005
Entidad: packetTCP
DESCRIPCIÓN DEL REGISTRO No. Nombre Tipo Long. Descripción PK FK NL
1 2 3 4 5 6 7 8
Id FecCap HorCap size srcIP dstIP srcMAC dstMAC
int unsigned zerofill auto increment varchar varchar smallint unsigned zerofill varchar varchar varchar varchar
9
10
15 4
15
15
17
17
Identificador Fecha de Captura Hora de Captura Tamaño de paquete IP Origen IP Destino MAC Origen MAC Destino
X
X
X
Definición de claves PK: id + FecCap + HorCap FK:
175
Pág. 2 / 3FIREWALL TRANSPARENTE DE CONTENIDO WEB
Versión 1.0
Fecha/Diseño
02/04/2005
Entidad: packetTCP
DESCRIPCIÓN DEL REGISTRO No. Nombre Tipo Long. Descripción PK FK NL
9 10 11 12 13 14 15 16 17 18 19 20
headerLen srcPort dstPort sequenceNumber ack Number dataOffset URG ACK PSH RST SYN FIN
tinyint unsigned zerofill mediumint unsigned zerofill mediumint unsigned zerofill bigint unsigned zerofill bigint unsigned zerofill tinyint unsigned zerofill tinyint tinyint tinyint tinyint tinyint tinyint
2 5 5
10
10 2 1 1 1 1 1 1
Tamaño de Cabecera Puerto Origen Puerto Destino Número de secuencia Número de Ack Desplazamiento de la data Indicador Urgente Indicador ACK Indicador Push Indicador Reset Indicador de Sincronización Indicador de paquete final
X
X
X
X
X
X
Definición de claves PK: id + FecCap + HorCap FK:
176
Pág. 3 / 3FIREWALL TRANSPARENTE DE CONTENIDO WEB
Versión 1.0
Fecha/Diseño
02/04/2005
Entidad: packetTCP
DESCRIPCIÓN DEL REGISTRO No. Nombre Tipo Long. Descripción PK FK NL
21 22 23 24 25
window checksum urgent Point data process
mediumint unsigned zerofil mediumint unsigned zerofill mediumint unsigned zerofill mediumblob enum(‘0’,’1’)
5 5 5 1
Tamaño de la ventana Bits de verificación Puntero Urgente Datos del paquete Bandera registro procesado
X
Definición de claves PK: id + FecCap + HorCap FK:
Cuadro 87 Fuente: Investigadores
177
Pág. 1 / 1FIREWALL TRANSPARENTE
DE CONTENIDO WEB
Versión 1.0
Fecha/Diseño
02/04/2005
Entidad: t_dns
DESCRIPCIÓN DEL REGISTRO No. Nombre Tipo Long. Descripción PK FK NL
1 2 3
id ip dominio
int unsigned
zerofill
varchar
varchar binary
9
15
255
Identificador Dirección IP Nombre del dominio
X
X
X
Definición de claves PK: id + ip + dominio FK:
Cuadro 88 Fuente: Investigadores
178
Pág. 1 / 1FIREWALL TRANSPARENTE
DE CONTENIDO WEB
Versión 1.0
Fecha/Diseño
02/04/2005
Entidad: t_dominio
DESCRIPCIÓN DEL REGISTRO No. Nombre Tipo Long. Descripción PK FK NL
1 2 3
id dominio accion
int unsigned
zerofill
varchar binary
enum
(‘R’,’P’)
9
255 1
Identificador Nombre del dominio Tipo de acción permitir o restringir
X
X
Definición de claves PK: id + dominio FK:
Cuadro 89 Fuente: Investigadores
179
Pág. 1 / 1FIREWALL TRANSPARENTE
DE CONTENIDO WEB
Versión 1.0
Fecha/Diseño
02/04/2005
Entidad: t_frase
DESCRIPCIÓN DEL REGISTRO No. Nombre Tipo Long. Descripción PK FK NL
1 2 3
id frase accion
int unsigned
zerofill
varchar binary
enum
(‘R’,’P’)
9
255 1
Identificador Nombre de la frase Tipo de acción permitir o restringir
X
X
Definición de claves PK: id + frase FK:
Cuadro 90 Fuente: Investigadores
180
Pág. 1 / 1FIREWALL TRANSPARENTE
DE CONTENIDO WEB
Versión 1.0
Fecha/Diseño
02/04/2005
Entidad: t_ip
DESCRIPCIÓN DEL REGISTRO No. Nombre Tipo Long. Descripción PK FK NL
1 2 3
id ip accion
int unsigned
zerofill
varchar
enum (‘R’,’P’)
9
15 1
Identificador Dirección IP Tipo de acción permitir o restringir
X
X
Definición de claves PK: id + ip FK:
Cuadro 91 Fuente: Investigadores
181
Pág. 1 / 1FIREWALL TRANSPARENTE
DE CONTENIDO WEB
Versión 1.0
Fecha/Diseño
02/04/2005
Entidad: t_iptables
DESCRIPCIÓN DEL REGISTRO No. Nombre Tipo Long. Descripción PK FK NL
1 2 3 4 5
id ip dominio frase accion
int unsigned
zerofill
varchar
varchar binary
varchar binary
enum
(‘R’,’P’)
9
15
255
255 1
Identificador Dirección IP Nombre del dominio Nombre de la frase Acción de permitir o restringir
X
X
Definición de claves PK: id FK:
Cuadro 92 Fuente: Investigadores
182
Pág. 1 / 1FIREWALL TRANSPARENTE
DE CONTENIDO WEB
Versión 1.0
Fecha/Diseño
02/04/2005
Entidad: t_usuario
DESCRIPCIÓN DEL REGISTRO No. Nombre Tipo Long. Descripción PK FK NL
1 2 3 4 5
id usuario clave nombres apellidos
tinyint
unsigned zerofill
varchar binary
varchar
varchar binary
varchar binary
3
20
20
30
30
Identificador Nombre del usuario Clave del usuario Nombres propios del usuario Apellidos del usuario
X
X
Definición de claves PK: id + usuario FK:
Cuadro 93 Fuente: Investigadores
183
3.3. DISEÑO ARQUITECTONICO
Define la relación entre cada uno de los elementos estructurales del
programa (Ver Cuadro 94).
ARQUITECTURA DE UN SISTEMA
Cuadro 94 Fuente: Investigadores
El objetivo principal del sistema FTCW es analizar la mayor cantidad
de paquetes que ingresan a una red que se desee proteger sin
afectar el normal trabajo de la red e impedir el paso de paquetes si
el contenido de esos paquetes es censurable. Para lograr ese
objetivo se lo ha subdividido en los módulos que se muestra en el
Cuadro 95.
3.3.1. Diseño arquitectónico de FTCW
184
DISEÑO ARQUITECTONICO DE “FTCW”
Archivo de
Configu- ración
Entrada de
paquetes
Paquete 1
Paquete n
FTCWSrv Paquetes Aceptados
Paquete 1
.
.
.
.
.
.
.
.
.
.
Paquete n
.
.
.
80 I N T E R F A Z
1
FTCWPack
MySQL
FTCWDns
GUI Pre-Load
x
I N T E R F A Z
0 LOGS
AUDITORIA
File
S. O.
IPtables
FTCWAnaliza
Cuadro 95
FTCWDaemon
3.3.2. Criterios Generales de diseño
Se optó por dividir el sistema FTCW en cinco mód los principales
como son: F Srv, FTCWDaemon, CWDn FTCWAnaliza,
FTCWPack; algunos se ejecutan independient y otros son
secuenciales. Estos módulos disminuyen el impacto que una posible
falla en el sistema tenga sobre la conectividad entre la red LAN y la
aplicación FTCW.
También se decidió dar prioridad a la velocidad de procesamiento,
debido a que la rapidez con la que se envíen paquetes de una red a
otra o se analicen influye de manera directa en el rendimiento del
sistema y d empeño la re a proteger.
Otro factor que es muy importante y que no ha sido descuidado es la
seguridad, sistemas como el FTCW que concentran todo el tráfico de
la red son los blancos predilectos de los intrusos, para disminuir la
posibilidad de éxito en un ataque externo, se le da la característica de
transparencia para el resto de elementos que conforman la red y
restringir al máximo los servicios del sistema operativo. Se logra
cerlo transparente removien las direcciones IP de sus interfaces
fí as d
u
s,
es
TCW FT
el es de d
ha do
sic e red.
186
3.3.3. Diagrama del Diseño General del FTCW
Pág. 1 / 2FIREWALL TRANSPARENTE DE CONTENIDO WEB
Versión 1.0
Fecha/Diseño 05/04/2005
DIAGRAMA DE BLOQUES DEL FTCW
Iniciar Sesión
Base de Datos
M
FTCW
Re
Reporte
FPor Rango de echas y Horas
Reporte De Reglas
Establecidas
Intento de
hibidas
Repor
Fecha
Conexiones Pro Por Rang
Modulo antenimientode Usuarios
Módulo
Módulo Preferencias
Módulo Reporte
spaldar Base de Datos
te
s o de
187
3.3.4.
Narrativa del Diagrama General del módulo
Pág. 2 / 2FIREWALL TRANSPARENTE
DE CONTENIDO WEB
Versión 1.0
Fecha o /Diseñ
20/04/2005
NARRATIVA DEL DIAGRAMA DE GENERAL DEL MODULO
1.
Ingreso de sesión para el Administrador.
2.
El Firewall Transparente de Contenido Web es monitoreado po or y
adicional toma como n de las diferentes Tablas que se van
almacenando en la Base de Datos, generando los respectivos p
direcciones IP, dominios o frases.
r el Administrad
referencia la informació
ermisos de
3. El Firewal
horas.
l Transparente ntenido Web ofrece reportes por rango de fechas y
de Co
Observación:
El Firewall Transparente de Contenido Web q e se presenta es configurable sólo en la
máquina donde reside la aplicación.
u
Cuadro 96 Fuente: Investigadores
188
3.4. DISEÑO DE INTERFAZ
La interfaz hombre-máquina, comúnmente de terfaz de
usuario”, es la puerta hacia aplicaciones de software interactivo. El
diseño tanto de
factores humanos como tecnológicos. La percepción humana, el nivel
de preparación y el perfil de comportamiento del usuario, así como el
resto de las tareas que realiza el usuario, son los factores que influyen
e
Además de la interfaz, la disponibilidad del hardware, la tecnología del
software y las aplicaciones misma, son las piezas clave del resultado
final.
Interfaz Gráfica de Usuario
Entre los principales componentes presentes en la aplicación FTCW
tenemos: las ventanas, los iconos, los menús, entre otros, los mismos
que se describen a continu
n “inominada
de interfaz hombre-máquina requiere el conocimiento
n el diseño de una interfaz.
3.4.1. Componentes de la
ación:
189
Ventana: Es el área de trabajo rectangular enmarcado por un
borde el cual tiene un título en la parte superior.
Icono: Es una imagen pequeña que representa un programa.
Cuadro 97 Fuente: Investigadores
Menú: Los menús son elementos de las ventanas de aplicación,
cada uno de ellos está identificado con una palabra.
Los componentes del menú Principal se detallan a continuación (Ver
cuadros 97 y 98):
G
D
H
I
A EC
FB
190
RINCIPAL
DESCRIPCIÓN DE LOS ELEMENTOS DEL MENÚ P
A Barra de Título: Indica en que ventana o aplicación se esta trabajando.
B nuestra aplicación FTCW como es Archivo, Opciones, Reporte, Base de Barra de Menú: Muestra las opciones que nos proporciona la ventana de
Datos, Ver y Ayuda.
C se puede mover, cerrarla etc. Menú de Control: La ventana se le asigna un menú control, con el cual
DD Barra de Hacceder má
erramientas: Es el conjunto de botones que se utilizan para s rápidamente a Iniciar Captura, Detener Captura, Opciones,
Reportes y Base de Datos de la aplicación FTCW.
E Botón Minimizar: Disminuye el tamaño de la ventana hasta un ico . no
F Botón Maximizar: Muestra la ventana de la aplicación del tamaño de la pantalla.
G Salir: Cierra el menú principal.
H TextAre e texto muestra múltiples líneas de texto que contiene información de lo paquetes que se captura en tiempo real.
a: Un área d
I
Barra de Estado: Es un área de la pantalla que contiene información sobre el programa activo, y que se actualiza a medida que cambian los parámetros que refleja y se encuentra situada en la parte inferior demenú principal
l
Cuadro 98 Fuente: Investigadores
191
3.4.2. Diagrama Jerárquico de la Interfaz Grafica del Usuario
El diag sado en
el lengu l
Administ
3.4.2.1.
La rime
a través de una interfaz de inicio de sesión la cual permite establecer
un nivel de seguridad de login y pa e
in un
usuarios definidos en la base de datos (Ver Cuadro 99).
Cuadro 99 Fuente: Investigadores
rama Jerárquico de la Interfaz Gráfica del Usuario es ba
aje de programación JAVA y es manejado sólo por e
rador, y tiene las siguientes opciones:
Inicio de sesión
p ra interacción que tiene el usuario con la aplicación FTCW es
ssword. Da la posibilidad que s
icie a nueva sesión del FTCW, autenticando con alguno de los
192
3.4.2.2. Menú Principal
Las alternativas que se presenta al usuario administrador en esta
interfaz se resume en lo siguiente (Ver Cuadro 100 y 101):
Archivo
Opciones
MENU PRINCIPAL
Reporte
Base de Datos
Ver
Ayuda
Cuadro 100 Fuente: Investigadores
193
3.4.2.2.1. Archivo
En el menú Archivo, el administrador podrá iniciar la captura, detener
la captura de paquetes, cambiar su clave, también podrá agregar,
odificar, consultar o eliminar usuarios y salir del sistema.
ciones
nes, se da la alternativa de “Configuración de
cual le permite al usuario administrador realizar tareas
sualizar reglas de IPTABLES. 2) Actualizar datos de
IPTABLES. 3) Ver contenido de determinado sitio Web. 4) Obtener
datos estadísticos de la captura realizada. 5) Ingresar, modificar o
liminar direcciones IP, dominios o frases siguiendo las
comendaciones del caso que en cada pestaña se detalla. La
efinición de las políticas se establece a nivel de:
Dirección IP
Nombre de Dominio
Frase
.4.2.2.3. Reporte
n el Menú Reporte, se da la opción de “Generación de reportes”
mediante la cual el Adm de obtener informes por rango
m
3.4.2.2.2. Op
En el menú Opcio
reglas”, la
como: 1) Vi
e
re
d
•
•
•
3
E
inistrador pue
194
de fechas y horas, tanto por pantalla como por impresora. Se han
• Reporte de restricciones por dirección IP
• Reporte de restricciones por dominio
Reporte de restricciones por frase
es
espaldar tablas de
la cual el Administrador del FTCW podrá sacar
directorio pre-establecido, así como
definido los siguientes informes relevantes:
•
• Reporte de conexion
• Reporte general de restricciones
• Reporte de políticas a nivel de dirección IP
• Reporte de políticas a nivel de dominio
• Reporte de políticas a nivel de frase
3.4.2.2.4. Base de Datos
En el menú Base de Datos, se da la opción de “R
MySQL” mediante
respaldos de las entidades a un
también apreciar la estructura de las tablas.
3.4.2.2.5. Ver
El menú Ver, permite visualizar u ocultar la Barra de Herramientas y la
Barra de estado con datos relevantes de la aplicación.
195
3.4.2.2.6. Ayuda
El menú de Ayuda permite visualizar información referente a:
en la cual se detalla
n FTCW, con información del
ma.
incipal
n el Cuadro 102 se muestra el diagrama jerárquico del Menú
rincipal empleado en la aplicación Firewall Transparente de
• Ventanas de Contenido (Acerca de...)
programa, versión, año; autores.
• Ventanas de ayuda de la aplicació
funcionamiento del Siste
Cuadro 101 Fuente: Investigadores
3.4.2.3. Diagrama Jerárquico del Menú Pr
E
P
Contenido Web
Archivo
Ver
Opciones
Reporte
Ayuda
MODULO GUI
Base de Datos
196
Pág. 1 / 1 FIREWALL TRANSPARENTE DE CONTENIDO WEB
Versión 1.0 Fecha de Diseño 12/05/2005
DIAGRAMA JERARQUICO DEL MENU PRINCIPAL
Reporte
FIREWALL TRANSPARENTE DE CONTENIDO WEB
Archivo Base Datos Ay Opciones Ver uda
Iniciar Captura
Detener Captura
Mantenimiento d uae us rio
Mantenimiento de UsuarioSalir
Gene ión de R s
Co ración as
nfigude regl
raceporte
Respblas
aldar Ta MySQL
Barra de Esta
Ace de Barra dHerramien
e ta
rca s
do
Cambio de contraseña
Cuadro 102
197
3.4.2.4. Descripción de cada opción del menú
3.4.2.4.1. Menú hivo
ro 103 Fuente: Investigad
3.4.2.4.1.1. Iniciar Captura
Le permitirá al Administrador comenzar la captura de paquetes en la
red a través de la interfaz configurada br0 del bridge.
Arc
MOD
INICIAR CAPTURA
CAMBIO DE CONTRASEÑA
SALIR
DETENER CAPTURA
MANTENIMIENTO DE USUARIOS
ARCHIVO
ULO GUI
Cuadores
198
3.4.2.4.1.2. Detener Captura
Esta opción interrumpe la captura de paquetes en la red en la
plicación FTCW, en este momento se inicia una nueva instancia del
TCW en el sistema operativo como un servicio de Linux.
3.4.2.4.1.3. Mantenimiento de Usuarios
Con esta opción se puede crear nuevos usuarios, hacer consultas,
modificaciones o eliminaciones de usuarios (Ver Cuadro 104).
Fuente: Investigadores
a
F
Cuadro 104
199
3.4.2.4.1.4. Cambio de contraseña
Cuadro 105 Fuente: Investigadores
3.4.2.4.1.5. Salir
Esta opción permitirá salir de la aplicación FTCW.
Esta opción permitirá que el Administrador actual cambie su
contraseña o clave para sus futuros ingresos, para una mayor
seguridad del sistema (Ver Cuadro 105).
200
3.4.2.4.2. Menú Opciones
Cuadro 106 Fuente: Investigadores
Esta opción le permite al usuario administrador establecer las nuevas
políticas que la organización desea aplicar al flujo Web entrante a nivel
de direcciones IP, nombres de dominios y frases. Permite además
visualizar y actualizar las reglas de IPTABLES generadas a partir de
las políticas registradas.
MODULO GUI
OPCIONES
CONFIGURACION DE REGLAS
IPTABLES
DIRECCION IP
DOMINIO
FRASE
3.4.2.4.2.1. Configuración de reglas
201
En esta ventana se presenta la información de la tabla t_iptables en
donde se visualiza las direcciones IP, dominios, frases y estado de la
dirección IP. Ademá s
capturados como resultado de las reglas de IPTABLES aplicadas.
Datos relevantes como: la fecha del último acceso, la cantidad de
paquetes capturados y los ión IP.
Adicionalmente tiene un botón para Actualizar la tabla t_iptables con
las acciones realizadas, mientras que el botón Ver Archivos permite
acceder a una página Web por medio del navegador o browser del
registro seleccionado (Ver Cuadro107).
3.4.2.4.2.1.1. IPTables
s presenta información estadística de los paquete
dominios con esa direcc
202
Cuadro 107 Fuente: Investigadores
3.4.2.4.2.1.2. Direcciones IP
Permite el ingreso, modificación o eliminación de una regla a nivel de
dirección IP ingresada por el administrador de la aplicación. Puede
denegarse o permitir el acceso a una dirección IP determinada (Ver
Cuadro 108).
203
Cuadro 108 Fuente: Investigadores
3.4.2.4.2.1.3. Dominios
Con esta opción le permite ingresar, modificar o eliminar un dominio
por nombre completo o parte de él siguiendo las recomendaciones
descritas en la interfaz. Permite cambiar además la acción de
permitido o restringido (Ver Cuadro 109).
204
. En la interfaz hay ciertas
Cuadro 109 Fuente: Investigadores
3.4.2.4.2.1.4. Frase
Esta opción permite ingresar, modificar o eliminar una frase que se
considere vaya en contra de la moral y/o las políticas de la empresa.
Permite visualizar el número de registro, las frases almacenadas en
la tabla t_frase y el estado de las mismas
205
recomendaciones que deben seguirse para generar una óptima regla
de IPTABLES (Ver Cuadro 110).
Fuente: Investigadores
Cuadro 110
206
3
Cuadro 111 Fuente: Investigadores
3.4.2.4.3.1. Generación de Reporte
Esta opción permitirá emitir informes especificando el tipo de reporte
que ha sido previamente establecido, además se da la facilidad de
obtener la información por rangos de fecha y hora ayudando al usuario
a cargo a obtener una información más detallada y concreta en un
momento determinado. (Ver Cuado 112).
.4.2.4.3. Menú Reportes
MODULO GUI
REPORTE
GENERACION DE REPORTES
207
Cuadro 113 Fuente: Investigadores
Cuadro 112
Fuente: Investigadores
3.4.2.4.4. Menú Base de Datos
MODULO GUI
BASE DE DATOS
RESPALDAR TABLAS DE MYSQL
208
3.4.2.4.4.1. Respaldar tablas de MySQL
Esta opción permite respaldar una tabla determinada o todas las
entidades implicadas en la aplicación FTCW a un directorio pre-
establecido. Muestra además la estructura de la tabla seleccionada
(Ver Cuadro 114).
Cuadro 114 Fuente: Investigadores
.4.2.4.5. Menú Ver
sta opción permite visualizar u ocultar la Barra de Herramientas y la
Barra de Estado del FTCW (Ver Cuadro 115).
3
E
209
Cuadro 115 Fuente: Investigadores
.4.2.4.5.1. Barra de estado
e visualizará la hora y el día cuando se cargue la aplicación.
MODULO GUI
VER
BARRA DE ESTADO
BARRA DE HERRAMIENTAS
3
S
.4.2.4.5.1. Barra de Herramientas
ostrará opciones como: Iniciar captura, Detener captura, Opciones
e configuración, Reportes y Respaldar tablas de MySQL.
3
M
d
210
3.4.2.4.6. Menú Ayuda
Cuadro 116 Fuente: Investigadores
n esta opción se brindará al usuario información como: nombre del
proyecto, versión, nombre de los desarrolladores (Ver Cuadro 117)
Cuadro 117 Fuente: Investigadores
MODULO GUI
AYUDA
ACERCA DE ...
MANUAL EN LINEA
3.4.2.4.6.1. Acerca de …
E
.
211
3.4.2.4.6.2. Manual en línea
Permite que el administrador cuente con una ayuda en línea del uso
de la aplicac
.5. DISEÑO A NIVEL DE COMPONENTES
3.5.1. Inicio de Sesión
Para la creación de la ión estamos utilizando un
Frame con dimensiones de (385, 210). El contenedor de Paneles
s (Ver Cuadro 118):
ue
muestra donde ingresar los datos del Administrador y su respectiva
contraseña para acceder al menú principal del Firewall
Transparente de Contenido Web.
El panel2 contiene dos botones para aceptar o cancelar el ingreso.
ión FTCW.
3
ventana Inicio de Ses
empleados tiene dos panele
• El panel1 contendrá dos etiquetas y dos campos de textos q
•
212
Pág. 1 / 1 FIREWALL TRANSPARENTE DE CONTENIDO WEB
Versión 1.0 Fecha de Diseño 2/05/2005
IN O D S IICI E ES ON
JBU
JFRAME
C TEN ANE ON TP
JPANEL2
JBUTTON TTON2 JLABEL2
JPANEL1
JLABEL1 JTEXTFIELD JPASSWO DFIE R LD
Cuadro 118
213
3.5.2. Menú Principal
Para la creación el menú principal de nue o Firewall Transparente de
Contenido Web hemos uso de una Barra de Menú que posee seis
iferentes opciones de menú co lo siguiente (Ver Cuadro 119):
Archivos
• Opciones
• Reportes
•
•
• a
3.5.2.1. Cambiar Contraseña
En la ventana Cambio de Contraseña estamos utilizando un Frame
con dimensiones (420, 210). El Frame mencionado contiene dos
paneles (Ver Cuadro 120):
• El panel1 contendrá cuatro etiquetas y cuatro campos de texto que
muestra donde ingresar el nombre del usuario, clave, nueva clave y
repetir la nueva clave para verificación.
• El panel2 contiene tres botones: Verificar, Aceptar y Cancelar la
acción.
str
d
•
n
Base de Datos
Ve
Ay
r
ud
214
Cuadro 119
MENU PRINCIPAL
JMenu JMenu Menu JMenu JMenu
Object
Component
J
JOptionPane
JComponent
Container
JMenuBar
JMenu
215
JMenu
JMenuItem
JDialog
JFrame
ContentPane
JPanel1 JPanel2
JTextField JPas d wordFielJLabel2 JLa Button1bel1 J JButton2
ContentPane
Jlabel4 Jlabel3 JtextField2 JpaswordField3
Jlabel5 Cuadro 120
C EÑA AMBIAR CONTRAS
216
3.5.3. Opciones
3.5.3.1. Configuración de reglas
En la ventana Opciones se utiliza un JTabbledPane con dimensiones
(500,450). Dentro del JtabbledPane se ubican cuatro páginas que
contienen:
IPTables
Dirección IP
Dominio
Frase
Cada una de las paginas mencionadas
• El panel1 contendrá varias etiquetas y cuatro campos de textos no
editable, que muestra información o:
o Ultima acceso del paquete.
o Datos Estadísticos
Esta Información le permitirá al Administrador conocer las
direcciones IP, dominios o frases que más ha visitado los usuarios.
• El panel2 contiene un TextArea pe ite
concerniente a los paquetes que se han modificado y si están
contiene tres paneles:
com
que rm mostrar información
217
permitidos o están restringido. Dentro del mismo panel también
odificar y Eliminar.
Cuando el Administrador ejecute la acción JB_Nuevo,
automáticamente se abrirá una ventana que permitirá el ingreso de
cción IP, frase o dominio relacionado.
En el caso que el Administrador ejecute la acción JB_Modificar,
automáticamente se abrirá una Frame que lleva como nombre
Modificar, le permitirá modificar una dirección ip, dominio, frase o
Y f ra eliminar una regla, el
debe indicar en el Área de texto la información que quiere borrar y
automáticamente se borrará de la base de datos.
En el panel3, contendrá el botón cerrar.
contendrá tres botones: Nuevo, M
una nueva dire
palabra.
inalmente cuando el Administrador quie
219
3.5.4. Ver
3.5.4.1. Barra de Estado
Para esta opción se ha creado dos barras de estados. El estado 1 le
permitirá ver en que año ha sido creado la aplicación, mientras que el
estado 2 le permitirá ver la hora del sistema (Ver Cuadro 122).
Cuadro 122
MENU BARRA DE ESTADOS
JMenu
JMenuItem
StatusMsg1 StatusMsg2
220
CAPITULO 4
DESARROLLO Y PRUEBA DEL SISTEMA
4.1. DESARROLLO DEL SISTEMA
Una vez que la actividad de diseño ha sido completada normalmente
se comienza el desarrollo del sistema de acuerdo a las
especificaciones establecidas en el diseño.
El desarrollo de la aplicación FTCW implica tener un alto nivel de
seguridad, razón por la cual FTCW se implementa sobre una de las
plataformas más seguras, como lo es Linux y como herramienta de
programación “JAVA”.
221
4.1.1. Base de Datos
Como Sistema Manejador de Base de Datos se optó por trabajar con
MySQL, el cual ofrece un sistema robusto y de un alto nivel de
seguridad para aplicaciones.
4.1.1.1. Creación de la base de datos
La aplicación FTCW maneja como nombre de base de datos
“firewall” la cual contendrá las entidades necesarias para
desempeñar su funcionalidad de firewall transparente. Tal acción se
realiza dentro de MySQL mediante la instrucción:
mysql> create database firewall;
4.1.1.2. Creación de las tablas
Se han definido siete entidades dentro de la base de datos firewall las
cuales ayudarán a complementar la funcionalidad del FTCW. Las
tablas son: packetTCP, t_dns, t_dominio, t_frase, t_ip, t_iptables,
t_usuario. Los scripts que se encargan de la creación de las tablas
son los siguientes:
222
Script para crear tabla “packetTCP” -- MySQL dump 8.23 -- -- Host: localhost Database: firewall --------------------------------------------------------- -- Server version 3.23.58 -- -- Table structure for table `packetTCP` -- CREATE TABLE packetTCP ( id int(9) unsigned zerofill NOT NULL auto_increment, FecCap date NOT NULL default '0000-00-00', HorCap varchar(15) NOT NULL default '', size smallint(4) unsigned zerofill NOT NULL default '0000', srcIP varchar(15) NOT NULL default '', dstIP varchar(15) NOT NULL default '', srcMAC varchar(17) NOT NULL default '', dstMAC varchar(17) NOT NULL default '', headerLen tinyint(2) unsigned zerofill NOT NULL default '00', srcPort mediumint(5) unsigned zerofill NOT NULL default '00000', dstPort mediumint(5) unsigned zerofill NOT NULL default '00000', sequenceNumber bigint(10) unsigned zerofill NOT NULL default '0000000000', ackNumber bigint(10) unsigned zerofill NOT NULL default '0000000000', dataOffset tinyint(2) unsigned zerofill NOT NULL default '00', URG tinyint(1) default NULL, ACK tinyint(1) default NULL, PSH tinyint(1) default NULL, RST tinyint(1) default NULL, SYN tinyint(1) default NULL, FIN tinyint(1) default NULL, window mediumint(5) unsigned zerofill NOT NULL default '00000', checksum mediumint(5) unsigned zerofill NOT NULL default '00000', urgentPoint mediumint(5) unsigned zerofill NOT NULL default '00000', data mediumblob, process enum('0','1') NOT NULL default '0', PRIMARY KEY (id,FecCap,HorCap) ) TYPE=MyISAM;
Cuadro 123 Fuente: Investigadores
223
Script para crear tabla “t_dns” -- MySQL dump 8.23 -- -- Host: localhost Database: firewall --------------------------------------------------------- -- Server version 3.23.58 -- -- Table structure for table `t_dns` -- CREATE TABLE t_dns ( id int(9) unsigned zerofill NOT NULL auto_increment, ip varchar(15) NOT NULL default '', dominio varchar(255) binary NOT NULL default '', PRIMARY KEY (id,ip,dominio) ) TYPE=MyISAM;
Cuadro 124
Fuente: Investigadores
Script para crear tabla “t_dominio -- MySQL dump 8.23 -- -- Host: localhost Database: firewall --------------------------------------------------------- -- Server version 3.23.58 -- -- Table structure for table `t_dominio` -- CREATE TABLE t_dominio ( id int(9) unsigned zerofill NOT NULL auto_increment, dominio varchar(255) binary NOT NULL default '', accion enum('R','P') NOT NULL default 'R', PRIMARY KEY (id,dominio) ) TYPE=MyISAM;
Cuadro 125
Fuente: Investigadores
224
Script para crear tabla “t_frase” -- MySQL dump 8.23 -- -- Host: localhost Database: firewall --------------------------------------------------------- -- Server version 3.23.58 -- -- Table structure for table `t_frase` -- CREATE TABLE t_frase ( id int(9) unsigned zerofill NOT NULL auto_increment, frase varchar(255) binary NOT NULL default '', accion enum('R','P') NOT NULL default 'R', PRIMARY KEY (id,frase) ) TYPE=MyISAM;
Cuadro 126
Fuente: Investigadores
Script para crear tabla “t_ip” -- MySQL dump 8.23 -- -- Host: localhost Database: firewall --------------------------------------------------------- -- Server version 3.23.58 -- -- Table structure for table `t_ip` -- CREATE TABLE t_ip ( id int(9) unsigned zerofill NOT NULL auto_increment, ip varchar(15) NOT NULL default '', accion enum('R','P') NOT NULL default 'R', PRIMARY KEY (id,ip), UNIQUE KEY ip (ip) ) TYPE=MyISAM;
Cuadro 127
Fuente: Investigadores
225
Script para crear tabla “t_iptables” -- MySQL dump 8.23 -- -- Host: localhost Database: firewall --------------------------------------------------------- -- Server version 3.23.58 -- -- Table structure for table `t_iptables` -- CREATE TABLE t_iptables ( id int(9) unsigned zerofill NOT NULL auto_increment, ip varchar(15) NOT NULL default '', dominio varchar(255) binary NOT NULL default '', frase varchar(255) binary default NULL, accion enum('R','P') NOT NULL default 'R', PRIMARY KEY (id) ) TYPE=MyISAM;
Cuadro 128
Fuente: Investigadores
Script para crear tabla “t_usuario” -- MySQL dump 8.23 -- -- Host: localhost Database: firewall --------------------------------------------------------- -- Server version 3.23.58 -- -- Table structure for table `t_usuario` -- CREATE TABLE t_usuario ( id tinyint(3) unsigned zerofill NOT NULL auto_increment, usuario varchar(20) binary NOT NULL default '', clave varchar(20) NOT NULL default '', nombres varchar(30) binary NOT NULL default '', apellidos varchar(30) binary NOT NULL default '', PRIMARY KEY (id,usuario), UNIQUE KEY usuario (usuario) ) TYPE=MyISAM;
Cuadro 129
Fuente: Investigadores
226
Script para crear la base de datos “firewall” create database firewall; use firewall; source SRC_packetTCP; source SRC_t_dns; source SRC_t_dominio; source SRC_t_frase; source SRC_t_ip; source SRC_t_iptables; source SRC_t_usuario; show table status;
Cuadro 130
Fuente: Investigadores 4.1.2. Creación de los Componentes
El Firewall Transparente de Contenido Web posee los siguientes módulos:
• FTCWSrv este es el servidor de entrada que recibe los datos en forma
nativa. Permite la captura de paquetes indefinidamente a través del
puerto 80 (HTTP). Se encarga de capturar los paquetes que ingresan
por la interfaz eth1, la misma que da salida a Internet.
• FTCWDaemon es llamado por el proceso FTCWSrv y trabaja como un
cron del sistema operativo. Se ejecuta cada cinco segundos y se
encarga de: 1) Ejecutar el proceso FTCWDns. 2) Ejecutar el proceso
FTCWAnaliza. 3) Mantener la tabla packetTCP con un límite
determinado de registros.
• FTCWDns es llamado por el proceso FTCWDaemon e interactúa
directamente con el FTCWPack para realizar la conexión, consulta,
227
inserción y eliminación en la base de datos. Se encarga de relacionar
el nombre del dominio completo con su respectiva dirección IP. De esta
manera la aplicación trabaja con un propio servicio DNS que se
almacena en la tabla denominada t_dns.
• FTCWAnaliza, es llamado por el proceso FTCWDaemon y se encarga
de actualizar tanto la tabla de reglas de IPTABLES denominada
t_iptables, como la cadena FORWARD del comando IPTABLES en
tiempo real.
• FTCWPack, este es el servidor de base de datos. Esta interfaz permite
que cada módulo se conecte o comunique con la base de datos, para
diferentes acciones como selección, inserción, actualización de
registros, entre otros.
4.1.3. Seguridades
4.1.3.1. Sistema Operativo
La aplicación FTCW se implanta sobre una de las más confiables
plataformas de sistema operativo como lo es Linux Fedora, el cual maneja
control de accesos a nivel de usuarios y password. Maneja una gran
cantidad de servicios y herramientas como es el uso de reglas de IPtTables
que ayudan a nuestra finalidad del sistema.
228
4.1.3.2. De la base de datos
Los niveles de seguridad establecidos en la base de datos MySQL radican
en que previamente se debe configurar un usuario con los suficientes
privilegios para manipularla.
Partiendo de esta idea, se ha tomado el usuario “root” que es que viene por
default en este sistema manejador de base de datos, al cual se le ha
establecido una clave de acceso, dicha clave de acceso está encriptada en
un formato propio de la base de datos, no accesible a simple vista para
cualquier usuario.
Para evitar accesos no deseados a la base de datos se debe eliminar de
mysql.user aquellos registros que tengan en el atributo Host establecido
como “%”, y también aquel registro en el cual el User es el “root”.
Con los parámetros antes mencionados MySQL autenticará exclusivamente
al usuario root como aquel que tiene privilegios totales a la base firewall y
mysql.
229
4.1.3.3. Del sistema
Se ha contemplado un nivel de seguridad a nivel de usuario y contraseña
para de esta manera restringir el acceso a la aplicación FTCW ya que
trabaja conjuntamente con el sistema operativo. El Administrador no debe
utilizar contraseñas sencillas, pero deben ser fáciles de recordar sólo para
quien la asignó.
Otro nivel de seguridad presente en la aplicación FTCW está representado
en el sinnúmero de validaciones en la programación realizada.
4.1.3.4. Registros de logs
La aplicación FTCW establece dos registros muy importantes uno de
auditoría y el control de errores. Estos archivos planos se ubican en el
directorio /var/log del sistema operativo y son FTCWAudit.log y
FTCWError.log. Estos archivos mantienen una estructura de registro que
contiene fecha y hora, programa y descripción de la acción realizada.
230
4.2. PRUEBAS DEL SISTEMA
Las pruebas realizadas dentro de la aplicación FTCW se basan en
simulaciones de la implementación del sistema en determinadas
organizaciones comerciales como son “Laboratorios H.G.,C.A.” y
“Cyber FEDEGUAYAS”, los cuales prestaron sus instalaciones para
dicho fin.
Como resultado de dichas pruebas se han podido establecer tiempos
y aplicar correcciones importantes en el funcionamiento de la
aplicación.
La captura de paquetes se realiza indefinidamente y eso demanda
tener consideraciones al momento de borrar registros o de ejecutar
alguna aplicación como por ejemplo el FTCWAnaliza o FTCWDns.
231
CAPITULO 5
IMPLEMENTACION DEL SISTEMA
5.1. IMPLEMENTACION DE SISTEMAS
El sistema Firewall Transparente de Contenido Web necesita recursos
físicos, lógicos, humanos y una infraestructura específica para
desenvolverse adecuadamente. En esta sección se indica todos los
requerimientos mínimos necesarios para que la funcionalidad del
FTCW sea aceptable.
En la parte de recursos físicos se indica los elementos de Hardware
necesarios y su configuración para que puedan servir eficientemente
como un firewall + bridge.
232
En la parte de los recursos lógicos se indica como deben estar
configurados ciertos archivos dentro del sistema operativo tales como:
el directorio home,
la base de datos,
scripts,
archivos logs, etc.
En la parte de la infraestructura se presenta un diagrama de la
infraestructura física donde se puede instalar el FTCW. Aquí se
menciona ubicación y configuración de:
Servidores
Routers
Switchs
Hubs
Cableado, etc
En el CD de la aplicación se encuadran todo el Software necesario
para instalar el FTWC y su árbol de directorios esta dispuesto de la
siguiente manera:
233
• FTCW.- aquí se encuentran los archivos fuentes, binarios y
documentación de la aplicación.
• JDK.- aquí se encuentran los instaladores de JAVA.
• LIBRERIAS.- aquí se encuentran librerías adicionales requeridas
por FTCW.
• SCRIPTS.- aquí se encuentran los scripts que deben ser copiados
al Sistema Operativo.
5.2. ELEMENTOS FISICOS
Como requerimientos de Hardware la aplicación FTWC necesita como
mínimo:
Procesador Pentium III
Memoria RAM 128MB
Disco Duro 20GB
Tarjetas de Red: 2
Estos requerimientos concuerdan con los necesarios para instalar
Linux Fedora Core 3
234
5.3. ELEMENTOS LOGICOS
Como requerimientos de Software la aplicación FTWC necesita como
mínimo:
• Sistema Operativo: Linux Fedora Core 3 Kernel 2.6.9 o superior
• Base de datos: Mysql 3.23.58
Programas cliente MySQL y bibliotecas compartidas. MySQL es un
servidor de bases de datos multiusuario, multihilo. MySQL es una
implementación cliente/servidor que consta de un demonio servidor
(mysqld) y de diferentes clientes y bibliotecas. Este paquete
contiene el cliente MySQL, la biblioteca dinámica para clientes y
ficheros comunes para MySQL.
• Libpcap 0.8.3
Interfaz independiente del sistema para capturar paquetes en el
nivel de usuario. Libpcap proporciona una estructura portátil para
supervisar la red de bajo nivel. Libpcap puede ofrecer colecciones
estáticas sobre el uso de la red, visualización de la seguridad y
depuración de la red. Como casi todos los proveedores de
sistemas proveen interfaces diferentes para capturar paquetes, los
autores de libpcap han creado este API de sistema independiente
para facilitar el porting y satisfacer la necesidad de tener. varios
235
módulos para la captura de paquetes dependientes de sistemas en
cada aplicación.
• Iptables1.2.11
Herramienta para la gestión de las capacidades de filtrado de
paquetes del kernel de Linux. La utilidad iptables controla el código
de filtrando de paquetes de red en el kernel de Linux.
• Bridge-utils 1.0.6
Es la herramienta es la necesaria para que Linux Fedora trabaje o
simule el trabajo de un bridge. Su funcionalidad será pasar
paquetes de una red a otra, pero en este caso será configurado
para unir una misma red ya que o cuenta con la configuración de
direcciones IP en las interfaces de red. Siendo esta característica
la primordial de la aplicación FTCW es decir “Transparente a la
red”.
• Java: JDK 1.5.0_02
Es el kit para desarrollado de JAVA, consta de dos directorios
importantes: JDK y JRE siendo el JRE el necesario para que la
aplicación FTCW pueda trabaja pueda ejecutarse sin problemas.
• Jpcap 0.01.16
Es una aplicación que captura y visualiza paquetes que circulan
por la red
236
Esta herramienta para capturar y visualizar tráfico en la red. Los
usuarios pueden definir expresiones tipo filtro, examinar la data de
los paquetes y manipularlos, etc.
• i-Report-0.4.1
Es un programa que ayuda tanto a usuarios como desarrolladores
que usan la librería JasperReport para visualizar diseños de
reportes.
5.4. ELEMENTOS HUMANOS
El elemento humano es el más importante dentro del desarrollo de una
aplicación porque es el ente que se encarga de la planificación,
análisis, diseño e implementación del sistema. La persona encargada
para el manejo del sistema FTCW será la siguiente:
Usuario administrador. Encargado de dirigir y administrar el Firewall
Transparente de Contenido Web para obtener el mejor rendimiento
posible en función a las reglas o políticas establecidas. Otra misión es
la de dar periódicamente mantenimiento a las entidades y sacar el
respectivo respaldo de las mismas. Será el usuario administrador de
237
sistemas quien cumpla esta función por cuanto interactúa
directamente con el sistema operativo.
5.5. INFRAESTRUCTURA
Dentro de una organización se cuenta con múltiples dispositivos de
red, necesarios para la normal desenvolvimiento de la infraestructura
de la red.
La aplicación FTCW tiene la capacidad de adaptarse a la mayoría de
las infraestructuras. La infraestructura típica que soporta el FTCW es
la siguiente:
238
INTERNET
I S P
FTCW PROXY
SWITCH R
LAN
Cuadro 131
Fuente: Investigadores 5.6. CAPACITACION DE LOS USUARIOS
Se elaboró un manual de usuario con el fin de facilitar y apoyar la
utilización del sistema FTCW. El mismo incluye paso a paso el manejo
del Sistema y se ha clasificado de la siguiente manera:
• Instalación del sistema
• Características del sistema
• Especificación de cada una de las pantallas
239
Es una aplicación dirigida a un usuario administrador, por lo tanto, los
conocimientos que posea hará que cuente con una capacitación
mínima.
240
CAPITULO 6
CONCLUSIONES Y RECOMENDACIONES
DE LA TESIS
6.1. CONCLUSIONES
• Una vez culminado el desarrollo de este trabajo investigativo, tanto
en la parte teórica como en la práctica se ha demostrado la
necesidad de que las organizaciones cuenten con un sistema de
protección de tráfico de contenido Web.
• Se ha demostrado que la combinación de “bridge+firewall” resulta
ser una buena alternativa para optimizar la funcionalidad de un
firewall.
241
• Se puede dar una nueva utilidad a equipos obsoletos, es decir,
equipos con tecnología antigua, ya que los requerimientos de este
sistema no son muy exigentes, minimizando de esta manera
costos.
• La configuración de un firewall tiene gran importancia por eso debe
ser analizado y planteado correctamente, definiendo políticas
claras para el filtrado que ayuden a optimizar el trabajo y no
congestionarlo.
• La característica de transparencia presente en el FTCW lo hace
inalcanzable, lo cual certifica que algún intruso pueda acceder y
poner en riesgo a la red corporativa.
• La utilización de software Open-Source nos ha demostrado que se
puede desarrollar aplicaciones confiables y eficientes a bajo costo,
siendo este un punto relevante dentro de las organizaciones al
momento de seleccionar soluciones informáticas.
6.2. RECOMENDACIONES
• Es recomendable que las organizaciones cuenten con sistemas de
control de tráfico Web como lo es el Firewall Transparente de
Contenido Web.
242
• Descentralizar la operabilidad de los servidores ya que ciertas
organizaciones sobrecargan de trabajo a éstos, con funcionalidad
de servidor Proxy, servidor Web, servidor de correo, servidor de
base de datos, firewall
• Es recomendable que el sistema Firewall Transparente de
Contenido Web sea revisado periódicamente para mantener
actualizadas las políticas de la organización según vayan
apareciendo nuevas restricciones.
• Debe existir una infraestructura que se adapte a las normas que
existen en Cableado Estructurado para que el rendimiento de la red
y por de la aplicación FTCW sea óptimo y tenga un mejor
desempeño.
• El FTCW se convierte en una aplicación crítica en la red por su
naturaleza de su funcionalidad como bridge, por lo tanto, es
indispensable que siempre este activo.
• Hay que garantizar la continuidad del negocio en la organización
por lo que es necesario contar con un equipo que presente los
requisitos que exige el FTCW
• No abierta la aplicación por ningún motivo.
243
6.3. RESTRICCIONES • La administración del FTCW es centralizada y de uso exclusivo
para el Administrador del Sistema Operativo. No permite por lo
tanto configuraciones remotas, lo cual indica que necesariamente
el Administrador debe estar en contacto directo con la máquina
para establecer las reglas o políticas nuevas o dar
mantenimiento.
• FTCW trabaja exclusivamente a nivel de contenido y no de
información binaria como es: videos e imágenes en todos sus
formatos, descarga de archivos
244
GLOSARIO URL es el acrónimo de (Uniform Resource Locator), localizador uniforme de recursos y permite localizar o acceder de forma sencilla cualquier recurso de la red desde el navegador de la WWW. HTTP (HyperText Transport Protocol), es el protocolo utilizado para transmitir hipertexto. Todas las páginas HTML en servidores WWW deberán ser referenciadas mediante este servicio. Indicará conexión a un servidor de la WWW. HTTPS: (HyperText Transport Protocol Secure), es el protocolo para la conexión a servidores de la WWW seguros. Estos servidores son normalmente de ámbito comercial y utilizan encriptación para evitar la intercepción de los datos enviados, usualmente numeros de tarjeta de credito, datos personales, etc ..., realizará una conexión a un servidor de la WWW seguro. SSL Secure Socket Layer. Protocolo desarrollado por Netscape para dar seguridad a la transmisión de datos en transacciones comerciales en Internet. SSL provee autentificación del servidor, encriptación de datos, e integridad de los datos en las comunicaciones cliente/servidor. SQL El Lenguaje de Consulta Estructurado (Structured Query Language) es un lenguaje declarativo de acceso a Bases de Datos relacionales que
245
permite especificar diversos tipos de operaciones sobre las mismas. Aúna características del Álgebra y el Cálculo Relacional permitiendo lanzar consultas con el fin de recuperar información de interés de una Base de Datos, de una forma sencilla. MySQL es una de las bases de datos más populares desarrolladas bajo la filosofía de código abierto. Entre sus características citamos disponibilidad en gran cantidad de plataformas y sistemas, transacciones y claves foráneas, conectividad segura, búsqueda e indexación de campos de texto. RDBMS es un Sistema Administrador de Bases de Datos Relacionales. Viene del acrónimo en ingles Relational Data Base Manager System. Proporcionan el ambiente adecuado para gestionar una base de datos. Los Sistemas Gestores de Bases de Datos son un tipo de software muy específico, dedicado a servir de interfaz entre las bases de datos y las aplicaciones que la utilizan. multi-threaded (multi proceso) ejecutar varios subprocesos en paralelo dentro de cada procesador Apache Servidor de páginas Web. Hoy por hoy líder del mercado de servidores, por delante de soluciones propietarias case sensitivity GNU/Linux distingue entre minúsculas y mayúsculas, por lo que deberemos tener cuidado a la hora de teclear ordenes o nombres de ficheros. Compilar Proceso por el cual se "traduce" un programa escrito en un lenguaje de programación a lo que realmente entiende el ordenador. Consola Una consola la forman el teclado y el monitor del equipo donde tenemos instalado GNU/Linux . No confundir con Terminal. Cron demonio que usa el administrador para delegar ciertas tareas que pueden ser ejecutadas sin su participación. Este demonio puede ser programado para ejecutar las tareas a intervalos variables, anualmente, semanalmente, diariamente etc. Sus tareas típicas suelen ser el borrado de ficheros temporales, conexiones con otros equipos, backups, etc.
246
Demonio En Unix/Linux se conoce como un programa que permanece en segundo plano ejecutándose continuamente para dar algún tipo de servicio. Ejemplos de demonio, son los servidores de correo, impresora, sistemas de conexión con redes etc. Dns Domain Name Server. Servidor de nombres de dominio. Servicio de red que nos facilita la búsqueda de ordenadores por su nombre de dominio. Ethernet Son redes que permiten distribuir datos a través de un solo cable por lo que necesitan de un protocolo especial que evite la colision de los paquetes de datos, ya que solo se permite el envío de un solo paquete al mismo tiempo, encargándose el protocolo de su reenvío en caso de la colision de ambos. FSF Free Software Foundation. Fundación que pretende el desarrollo de un sistema operativo libre tipo UNIX. Fundada por Richard Stallman, empezó creando las herramientas necesarias para su propósito, de modo que no tuviera que depender de ninguna compañía comercial. Después vino la creación del núcleo, que todavía se encuentra en desarrollo. GPL General Public License. Una de las mejores aportaciones de la FSF. Es una licencia que protege la creación y distribución de software libre. Host Nombre de un ordenador en una red. http HyperText Transfer Protocol. Protocolo de red para la transferencia de paginas de hipertexto, o lo que es lo mismo, paginas Web. Path Variable del entorno, cuyo valor contiene los directorios donde el sistema buscara cuando intente encontrar un comando o aplicación. Viene definida en los ficheros .bashrc o .bash_profile de nuestro directorio home. Permisos Todos los archivos en UNIX/Linux tienen definido un set de permisos que permiten establecer los derechos de lectura, escritura o ejecución para el dueño del archivo, el grupo al que pertenece y los demás usuarios.
247
PID Process Identification. Numero que identifica un proceso en el sistema, este número es único para cada proceso. CVS (Concurrent Version System)
Id Nombre de tarea Duración Comienzo Fin Predecesoras1 Formación de grupos 5 días lun 20/09/04 dom 26/09/04
2 Definición de tema a presentar 5 días lun 27/09/04 dom 03/10/04 1
3 Evaluación del proyecto 5 días lun 04/10/04 dom 10/10/04 2
4 Recopilación de información 10 días lun 11/10/04 vie 22/10/04 3
5 Análisis del problema propuesto 70 días lun 25/10/04 vie 28/01/05 4
6 Diseño de la solución encontrada 20 días lun 31/01/05 dom 27/02/05 5
7 Implementación del proyecto (Fase 1) 30 días lun 28/02/05 vie 08/04/05 6
8 Documentación (Fase 1) 4 días mar 08/03/05 vie 11/03/05
9 Revisión de avance del proyecto 5 días lun 11/04/05 vie 15/04/05 7
10 Implementación del proyecto (Fase 2) 19 días lun 11/04/05 jue 05/05/05 7
11 Pruebas del proyecto 56 días lun 11/04/05 jue 23/06/05 7
12 Revisión de avance del proyecto 1 día vie 06/05/05 vie 06/05/05 10
13 Documentación (Fase 2) 6 días vie 10/06/05 vie 17/06/05
14 Implementación del proyecto (Fase 3) 30 días sáb 07/05/05 vie 17/06/05 12
15 Revisión Final de proyecto ante el tribunal 0 días sáb 18/06/05 sáb 18/06/05 14
16 Implementación (Fase 4) 6 días? dom 19/06/05 dom 26/06/05 15
17 Documentación (Fase 3) 6 días lun 20/06/05 lun 27/06/05
18 Preparación para sustentación 4 días jue 23/06/05 mar 28/06/05
19 Sustentación del proyecto 1 día mié 29/06/05 mié 29/06/05
.20/09 26
27/0927/09
S D L M M J V S D L19 sep '04 26 sep
Tarea
División
Progreso
Hito
Resumen
Resumen del proyecto
Tareas externas
Hito externo
Fecha límite
Proyecto: cronogramaFecha: mar 28/06/05
/09
103/10
04/10 10/10
11/10 22/10
25/10
M M J V S D L M M J V S D L M M J V S D L M M J V S D L M M J V S D L M M J V S04 03 oct '04 10 oct '04 17 oct '04 24 oct '04 31 oct '04
Tarea
División
Progreso
Hito
Resumen
Resumen del proyecto
Tareas externas
Hito externo
Fecha límite
Proyecto: cronogramaFecha: mar 28/06/05
D L M M J V S D L M M J V S D L M M J V S D L M M J V S D L M M J V S D L M M J07 nov '04 14 nov '04 21 nov '04 28 nov '04 05 dic '04 12 dic '04
Tarea
División
Progreso
Hito
Resumen
Resumen del proyecto
Tareas externas
Hito externo
Fecha límite
Proyecto: cronogramaFecha: mar 28/06/05
V S D L M M J V S D L M M J V S D L M M J V S D L M M J V S D L M M J V S D L M19 dic '04 26 dic '04 02 ene '05 09 ene '05 16 ene '05 23 ene '05
Tarea
División
Progreso
Hito
Resumen
Resumen del proyecto
Tareas externas
Hito externo
Fecha límite
Proyecto: cronogramaFecha: mar 28/06/05
28/01
31/01 27/02
28/02
08
M J V S D L M M J V S D L M M J V S D L M M J V S D L M M J V S D L M M J V S D30 ene '05 06 feb '05 13 feb '05 20 feb '05 27 feb '05 06
Tarea
División
Progreso
Hito
Resumen
Resumen del proyecto
Tareas externas
Hito externo
Fecha límite
Proyecto: cronogramaFecha: mar 28/06/05
08/04
/03 11/03
11/04
11/04
11/04
L M M J V S D L M M J V S D L M M J V S D L M M J V S D L M M J V S D L M M J Var '05 13 mar '05 20 mar '05 27 mar '05 03 abr '05 10 abr '05
Tarea
División
Progreso
Hito
Resumen
Resumen del proyecto
Tareas externas
Hito externo
Fecha límite
Proyecto: cronogramaFecha: mar 28/06/05
15/04
05/05
06/05 06/05
S D L M M J V S D L M M J V S D L M M J V S D L M M J V S D L M M J V S D L M M17 abr '05 24 abr '05 01 may '05 08 may '05 15 may '05 22 may '05
Tarea
División
Progreso
Hito
Resumen
Resumen del proyecto
Tareas externas
Hito externo
Fecha límite
Proyecto: cronogramaFecha: mar 28/06/05
23/06
10/06 17/06
18/06
19/06 26/06
20/06 27/06
23/06 28/06
29/06 29/06
J V S D L M M J V S D L M M J V S D L M M J V S D L M M J V S D L M M J V S D L29 may '05 05 jun '05 12 jun '05 19 jun '05 26 jun '05 03 jul '0
Tarea
División
Progreso
Hito
Resumen
Resumen del proyecto
Tareas externas
Hito externo
Fecha límite
Proyecto: cronogramaFecha: mar 28/06/05
257
ANEXO A-2
PORNOGRAFIA EN INTERNET
Pese a lo reciente que es Internet su nombre está irrevocablemente ligado a la pornografía, especialmente en la mente de los puritanos, utilizan este argumento para rechazar Internet en bloque, otros, más mesurados, consideran que es necesario bloquear esa otra parte de Internet y finalmente, un tercer grupo, algunos de cuyos miembros dicen ser partidarios de los dos anteriores, disfrutan de lo que ese segmento de Internet ofrece y su “curiosidad”demanda. El hecho es que la pornografía es uno de los grandes negocios de internet. Con un crecimiento envidiable superior a 1,800 por ciento, la pornografía avanza y en muchos casos cuenta con tecnología que solo unos años después veremos en otros portales. En 1998 existían 14 millones de páginas, en 2003 la cifra alcanza 372 millones de páginas: 12 por ciento de internet. En cuanto a los correos electrónicos no se queda atrás, diariamente se envían 2.5 mil millones de correos, alcanzando un respetable ocho por ciento del total de correos enviados. Con decir que la sección de muestra del sitio de Playboy recibe más de cinco de millones de visitas diarias está claro el tamaño del asunto. La pornografía es un negocio sumamente rentable, genera 2.5 mil millones de dólares al año sólo en Internet. Con todas sus ramas (en tanto pueden ser contabilizadas) produce 57 mil millones de dólares al año. Todavía en 2003 una cuarta parte de todas las búsquedas estaba relacionada con sitios de sexo, de los cuales 40 millones de norteamericanos son asiduos visitantes. Pero la pornografía no es simplemente sitios de Hard core, es común que estén disfrazados de otra cosa para atraer nuevos consumidores, vayan a www.whitehouse.com y vean las noticias presidenciales… parece que no. Así hay otros tantos que se disfrazan de Disney, Barbie o Pokemón, de manera que puedan alcanzar a ese auditorio joven que normalmente busca otro tipo de imágenes. Es en estos casos cuando se sataniza a internet, especialmente cuando se trata de niños los que aparecen en las imágenes, una prolífica rama de la pornografía, de sus ramas ilegales dicho sea de paso. Se calcula que en 2003 había al aire cien mil sitios, aunque internet tan sólo es uno de los pequeños contribuyentes a este negocio que produce tres mil millones de dólares al año, principalmente en la venta de videocasetes, aunque es verdad que internet coloca la información más a la mano. El otro gran problema achacado a la pornografía se relaciona con las empresas. ¿Ves pornografía en el trabajo? ¿Está en la descripción de tu puesto ver esbeltas figuras, o no tan esbeltas, desnudas y en posiciones sugerentes? Probablemente no y aunque tal vez muchos piensen que es un asunto que no amerita mayor consideración, algunos otros piensan que es un problema de gravedad. El 70 por ciento de todas las visitas a los sitios de pornografía ocurre en horas de oficina, probablemente la conexión en casa no es tan buena. Una de cada tres empresas ha despedido a uno o varios empleados por no utilizar internet como piensan que es debido, incluso muchos consideran que afecta el ambiente de trabajo y lo vuelve hostil, en realidad no dan más explicaciones, aunque parece difícil que la pornografía haga eso. Fuente: universoe.com
258
AANNEEXXOO AA--33 EEmmpplleeaaddoorreess vviiggiillaann aa ssuuss eemmpplleeaaddooss
Más de la mitad de los empleadores estadounidenses archiva y lee el correo electrónico de sus empleados. El 25% ha realizado despidos por supuesto abuso de los recursos informáticos de la empresa. Nueva investigación revela un fuerte incremento en la vigilancia electrónica realizada por empresas estadounidenses. Una cuarta parte de los empleadores ha despedido a empleados bajo acusaciones de abuso de Internet o el correo electrónico de la empresa. Las nuevas tecnologías, como la navegación satelital y los programas que graban la digitación en el teclado, brindan a las empresas la posibilidad de vigilar a sus empleados en un grado hasta ahora sin precedentes. El 25% de 526 empleadores consultados dijo usar GPS para establecer la posición de teléfonos móviles propiedad de la empresa, en tanto que el 8% usa esa tecnología para determinar el paradero de sus vehículos. Tres de cuatro de los consultados han instalado software, que monitoriza el desplazamiento de los trabajadores en Internet, en tanto que el 65% bloquea el acceso a sitio de Internet considerados inadecuados. Las aplicaciones grabadoras de digitación, están instaladas en el 36% de las estaciones de trabajo, y dan al empleados la posibilidad de registrar cada palabra que es digitada en la computadora. El 50% revisa regularmente los archivos almacenados en las computadoras usadas por sus empleados. La investigación, realizada por American Management Association y ePolicy Institute, y referida por USA Today, indica que más de la mitad de las empleadores estadounidenses almacena y lee el correo electrónico de sus empleados. Pero la vigilancia no termina ahí. En 2001, el 9% de las empresas controlaba el tiempo que cada empleado hablaba por teléfono, y a que numeros se comunicaba. Actualmente el porcentaje ha aumentado a 51 puntos. El 6% de los empleadores ha despedido a empleados por uso exagerado el teléfono. El 51% de las empresas usa circuito cerrado de televisión para vigilar las actividades de sus empleados. En promedio, entre el 80 y 90% de los empleadores informa a sus empleados que están siendo vigilados, en tanto que el resto lo mantiene en secreto.
Marta Morales Fuente: Diarioti.com
259
BIBLIOGRAFIA
1. DUBOIS PAUL, Edición especial MySQL, Editorial Prentice Hall, PEARSON EDUCACION, S.A., Madrid, 2001 2. PETERSEN R.,Fundamentos de Programación en Linux. Bogotá, McGRAW HILL 2001 3. WATTERS P., Manual de Administración de Solaris. Madrid, McGRAW HILL 2002 4. R. Pressman. "Ingeniería del Software", McGraw Hill, 2001. Sitios Web visitados • http://www.uca.es/manual-html/url.htm-dEFINICON • http://es.tldp.org/Manuales-LuCAS/SEGUNIX/unixsec-2.1-
html/node229.html • http://www.monografias.com/trabajos15/firewall-linux/firewall-linux.shtml • http://216.239.39.104/translate_c?hl=es&sl=en&u=http://en.wikipedia.or
g/wiki/ISO_8859-1&prev=/search%3Fq%3DISO-8859-1%26hl%3Des%26lr%3D
• ISO-8859-1 • http://www.htmlpoint.com/apache/10a.htm • http://httpd.apache.org/docs-2.0/ssl/ssl_intro.html • http://www.tlm.unavarra.es/asignaturas/aro/slides/2-11/text37.html • http://es.wikipedia.org/wiki/RDBMS
260
• http://es.wikipedia.org/wiki/Sistema_Administrador_de_Bases_de_Datos
• http://es.wikipedia.org/wiki/MySQL • es.wikipedia.org/wiki/SQL • http://spain.aopen.com.tw/tech/techinside/HyperThreading.htm • http://www.buscandohost.com/glosario.asp • http://www.escomposlinux.org/glosario/ • http://spain.aopen.com.tw/tech/techinside/HyperThreading.htm • http://dev.mysql.com/doc/mysql/en/features.html • http://www.mysql-hispano.org/page.php?id=27 • http://www.pello.info/filez/firewall/iptables.html • http://www.gestiopolis.com/recursos/experto/catsexp/pagans/ger/no12/f
actibilidad.htm • http://www.itlp.edu.mx/publica/tutoriales/desproyectos/tema%203_2.ht
m • http://www.monografias.com/trabajos5/esfa/esfa.shtml • http://www.monografias.com/trabajos/anaydisesis/anaydisesis.shtml • http://www.ilustrados.com/publicaciones/EpypklZplZydAklOcM.php#met
o • http://www.netfilter.org • http://www.mysql-hispano.org/page.php?id=24&pag=1 • http://www.desarrolloweb.com/articulos/901.php?manual=34
SEGUNDO TOMO
ÍNDICE GENERAL
DEDICATORIA I
AGRADECIMIENTO II
TRIBUNAL DE GRADUACIÓN V
DECLARACIÓN EXPRESA VI
RESUMEN VII
ÍNDICE GENERAL VIII
MANUAL TECNICO
INTRODUCCION 2
DIAGRAMAS DE LA APLICACIÓN FTCW 3
ARBOL DE PROBLEMAS 3
ARBOL DE ALTERNATIVAS 4
ESQUEMA DE FTCW 5
CASOS DE USO DEL SISTEMA FTCW 6
DIAGRAMA DE CONTEXTO DE LA ARQUITECTURA “FTCW”
(NIVEL 1) 7
DIAGRAMA DE CONTEXTO DE LA ARQUITECTURA “FTCW”
(NIVEL 2) 8
DIAGRAMA DE FLUJO DE LA ARQUITECTURA “FTCW” 9
DISEÑO ARQUITECTONICO DE FTCW 10
DIAGRAMA ENTIDAD RELACION (DER) 11
DIAGRAMA ENTIDAD RELACION (DER) 12
DIAGRAMA DE FLUJO DE DATOS (FTCWSrv) 13
DIAGRAMA DE FLUJO DE DATOS (FTCWDns) 14
DIAGRAMA DE FLUJO DE DATOS (FTCWPack) 15
DIAGRAMA DE FLUJO DE DATOS (SetIptables) 16
DIAGRAMA DE FLUJO DE DATOS (SetIptables) 17
DIAGRAMA DE FLUJO DE DATOS (FTCWBackup) 18
DIAGRAMA DE FLUJO DE DATOS (FTCWGestion)) 19
DIAGRAMA DE FLUJO DE DATOS (Opciones)) 20
DIAGRAMA DE FLUJO DE DATOS (Ver Página) 21
DIAGRAMA DE FLUJO DE DATOS (TableModel) 22
DIAGRAMA DE FLUJO DE DATOS (Inicio de Sesión) 23
DIAGRAMA DE FLUJO DE DATOS (Transacción HTTP) 24
DIAGRAMA DE TRANSICION DE ESTADOS “FTCW” 25
DIAGRAMA JERARQUICO DEL MENU PRINCIPAL 26
CREACION DE SCRIPTS
BASE DE DATOS 27
OTROS SCRIPTS 32
CODIFICACION DE LOS COMPONENTES POR MODULOS 37
DICCIONARIO DE DATOS 51
MANUAL DE USUARIO
INTRODUCCION 61
INSTALACION DEL SISTEMA 62
EXPLICACION DEL SISTEMA 69
2
MANUAL TECNICO
INTRODUCCION
Actualmente las organizaciones utilizan conexiones hacia el exterior por fines
de desenvolvimiento propio, investigación, transacciones diarias, procesos y
demás actividades que las hacen depender de Internet como un medio de
supervivencia. Por esta razón están propensas a que diferentes tipos de
información que se encuentra en la red pública intenten migrar hacia la red
privada como lo es la publicidad no deseada, páginas Web de contenido
pornográfico, entre otros; por ello existe la necesidad de implementar un
sistema de seguridad basado en políticas que ayuden a combatir este tipo de
afluencia externa. Frente a esta necesidad, nace la idea de desarrollar una
aplicación que sirva de barrera entre la red privada y la “Red de redes”,
Internet como lo es el Firewall Transparente de Contenido Web.
3
DIAGRAMAS DE LA APLICACIÓN FTCW
ARBOL DE PROBLEMAS
Falencias en la seguridad de la red (Proxy y Gateways)
Altos costos por accesos a Internet
Falta de controles para conexiones al exterior
Alto porcentaje de personas maliciosas
Presencia de máscaras Abundancia de información de fácil
acceso
Aumento en los gastos de la organización
Daños en la infraestructura de la red
Daños en la integridad de la información
Personal de la Organización gasta Tiempo visitándolas.
Conexiones o accesos internos lentos
Reducción en el control de calidad de la
información
Causas
Efectos
Restricción de otros servicios de calidad
4
ARBOL DE ALTERNATIVAS
Reducir costos mediante la herramienta
Prever posibles daños o atentados a la
red
Controlar la integridad de la
información
Evitar realizar actividades ajenas a
la organización.
Agilizar las conexiones o accesos
internos
Incrementar control de calidad de la información
Incrementar la seguridad de la red dentro de la organización
6
CASOS DE USO DEL SISTEMA “FTCW”
Aplicación FTCW
Servidor DNS 1
Servidor DNS 2
Servidor DNS N
.
. Usuario 1
Usuario N
Recepción de respuesta
Solicitud: www.mail.com
Solicitud: www.gmail.com
S.O. IPTables
Análisis
Captura
Recepción de respuesta
.
.
.
8
DIAGRAMA DE CONTEXTO DE LA ARQUITECTURA “FTCW” (NIVEL 2)
Cuadro 46
Captura de paquetes
Entradas Salidas
Interfaz de Usuario
Interfaz Externa a la
LAN
Interfaz Interna a la
LAN
Sistema Operativo (Mantenim.)
Inicio de procesos
Carga Reglas IPTables
Browser
Entrada de Consultas e instrucciones
MySQL
MySQL PackPaquetes
Entrantes (Puerto 80)
Paquetes Aceptados
Interfaz Gráfica
Gestionar Órdenes Implícitas
Setear y ejecutar filtro
por IPs
Carga DNS
Análisis de paquetes
Tratamiento De Sockets
Archivos Planos
Generados
9
DIAGRAMA DE FLUJO DE LA ARQUITECTURA “FTCW”
Subsistema Sensor Eth1
Subsistema Captura de
paquetes : 80
Subsistema Acceso a base
de datos
Subsistema Analizador de
contenido Web
EntradaDe Paquetes
Start
Base de Datos
Paquete
IP
Subsistema Activa servicios
de Linux
Start
Data
Subsistema Generador de
reportes
Reg.
Solic.
Subsistema Carga página
censurada
Solicitud Del Usuario
Subsistema Gestión/Opciones
GUI
Subsistema Reglas de
Configuración IPTables (S.O.)
Bloqueo IP
Subsistema Interfaz Gráfica
Usuario
Reporte
Subsistema Seteo de IPTables
Reg.
Solic.
Subsistema Ejecución de
browser
Pag.Web
Archivo texto IPTables
Reporte con formato
Archivo
Plano
Eth 0
Subsistema Respaldo de
tablas DB
IPTABLES
(S.O.)
Frase
10
DISEÑO ARQUITECTONICO DE “FTCW”
Archivo de
Configu- ración
Entrada de
paquetes
Paquete 1
Paquete n
FTCWSrv Paquetes Aceptados
FTCWPack
MySQL
FTCWDns
GUI Pre-Load
x
I N T E R F A Z
0 LOGS
AUDITORIA
File
IPtables
FTCWAnaliza
FTCWDaemon
S. O.
80 I N T E R F A Z
1
.
.
.
Paquete n
Paquete 1
.
.
.
.
.
.
.
.
.
.
11
DIAGRAMA ENTIDAD RELACION (DER)
packetTCP
Modelo Entidad – Relación (FTCWPack)
ip
FecCap
HorCap
size
srcIP
dstIP
srcMAC
dstMAC
headerLen
srcPort
dstPort
sequenceNumber
ackNumber
dataOffset
window
checksum
urgentPoint
data
URG
A C K
P S H
RST
SYN
FIN
t_dominio
t_ip
t_usuario
t_frase
t_iptables
t_dns
id
dominio
accion
id
ip
accion
id
ip
dominio
id
frase
accion
id
ip
dominio
frase
accion
id
usuario
clave
Base de Datos: MySQL
Universidad de Guayaquil
Tópico de Adm. de Redes Corporativas
Tablas Relación Implic.
nombres
apellidos
process
12
DIAGRAMA ENTIDAD RELACION (DER)
Id FecCap HorCap size srcIP dstIP srcMAC dstMAC headerLen srcPort dstPort sequenceNumber ackNumber dataOffset URG ACK PSH RST SYN FIN window checksum urgentPoint data process
DIAGRAMA : Entidad – Relación (FTCWPack) APLICACIÓN : Firewall Transparente Contenido Web
Cuadro 68
id usuario clave nombres apellidos
t_usuario
id ip dominio
t_dns
id ip dominio frase accion
t_iptables
id ip accion
t_ip
id dominio accion
t_dominio
id frase accion
t_frase
packetTCP
13
DIAGRAMA DE FLUJO DE DATOS (FTCWSrv)
Definir parámetros Proceso Captura
Abrir interfaz de red (eth1)
Módulo Captura
Start
String
Manejador de paquetes
(Handler Packet)
Proceso Hijo 1
Formatear data
Salida Estándar
Cadena
Desencapsula
paquete
Manejador de Base de Datos (FTCWPack)
Cabecera + data del paquete
Data con formato
Data con formato
Sistema Operativo
14
Módulo Primario DNS
Conexión a la base de datos
Solicitud de conexión
Obtener dominio
dominio
srcIP+dominio
data srcIP+ data
Solicitud “GET”
firewall
Start
Crond S.O.
DIAGRAMA DE FLUJO DE DATOS (FTCWDns)
15
Definir parámetros
Determinar tipo de solicitud
Solicitud
Cadena de conexión
Ejecutar Consulta
Ejecutar Inserción
Ejecutar Actualización
Ejecutar Eliminación
Ejecutar descripción tabla
Información DB
Emisión de respuesta
Registro de Logs (Auditoria)
firewall
Datos
File
Reg.
Reg.
Tipo
Historial de errores
Datos
Datos
Ejecutar borrado de tabla
Ejecutar creación de tabla
DIAGRAMA DE FLUJO DE DATOS (FTCWPack)
16
Start
Señal del usuario o proceso interno
Consultar base de datos tabla
Señal
firewall
Página Web
Presentación en una tabla
Carga browser o navegador Web
Confirmación de resultados
Registros
Ver contenido de página Web
Evento+registros IP
File plain
Información
Actualización de archivo plano con reglas IPTABLES
DIAGRAMA DE FLUJO DE DATOS (SetIptables)
17
DIAGRAMA DE FLUJO DE DATOS (SetIptables)
Proceso Principal
Start
Señal del Usuario Administrador
Llamada o ejecución
Llamada o ejecución
Configuración por defecto
Resultado del
(Pre-establecida) FTCWSetIP
File File
Señal de ejecución
Sistema Operativo
18
Señal del usuario administrador
Generar Interfaz gráfica al usuario
Start
Señal
Cargar lista de tablas disponibles
Nombres de archivos
Señal
Firewall
Orden de selección
Selección del archivo a respaldar
Extraer archivos MYD, MYI, frm
del directorio de datos de MySQL
Filtrar nombres de los archivos
Archivos del directorio
Señal Up
Definir cabecera de la tabla a mostrar
Establecer conexión a la base de datos
Ejecutar descripción de la tabla
Solicitud
Respuesta
Cabecera
Datos de la tabla
Solicitud ResultSet
Cargar datos en el Objeto
JTextArea
Señal
Seleccionar botón para
guardar
Señal Up
Abrir diálogo
Seleccionar botón para
salir
Señal Salir de la aplicación
SeñalSeñalEscoger registro y directorio
DIAGRAMA DE FLUJO DE DATOS (FTCWBackup)
19
Start
Señal desde la GUI
Identificación de quien origina la
solicitud
Validación de datos
tabla + accion
Verifica formato
Verifica dato único
Reg.
Reg.+ formato Reg.validado
Firewall
File
Reg.
Reg.
Ejecutar Consulta
Ejecutar Inserción
Ejecutar Actualización
Ejecutar Eliminación
Ejecutar descripción tabla
accion
Datos
Registros de Logs
Historial de errores
Datos
Información (Datos)
Visualización de la acción en la GUI
No No
Si Si Ejecutar acción
DIAGRAMA DE FLUJO DE DATOS (FTCWGestion)
20
Start
Señal del Usuario o Proceso Interno
Hacer consulta FTCWPack (DB)
Registros dla con
e sulta
Carga datos Objeto JTable
Interacción con el usuario del
sistema
Consulta a base de datos
ResultSetsFirewall
Señal
Nombre de la tabla
DIAGRAMA DE FLUJO DE DATOS (Opciones)
21
Start IP
Opciones (Confirma resultado)
Hacer consulta FTCWPack (DB) ResultSet
Carga página HTML generada en un browser
Página HTML
ResultSetsFirewall
Dirección IP
Crea un archivo HTML
DIAGRAMA DE FLUJO DE DATOS (VerPagina)
22
Señal (Actualización)
Señal del Usuario o Proceso Interno
Hacer consulta FTCWPack (DB)
Registros dla con
e sulta
Carga datos Objeto JTable
Interacción con el usuario del
sistema
Módulo de Store
Procedure
ResultSetsFirewall
Señal
Nombre de la tabla
DIAGRAMA DE FLUJO DE DATOS (TableModel)
23
DIAGRAMA DE FLUJO DE DATOS (Inicio de sesión)
Validar nombre de usuario y contraseña en la base de datos
“firewall”
Escribir contraseña de acceso
Llamada del Usuario Administrador
Nombre de usuario no válido
No muestra aplicación
FTCW
Señal
Mensaje de bienvenida a
FTCW
Solicitud
firewall Respuesta
Nombre de usuario
válido
Señal
Presentación de la Interfaz de
FTCW al usuario
24
Cliente realiza petición
Usuario accede
URL
URL
Cliente Web
decodifica
Abrir conexión servidor
Llamar puerto TCP
Enviar petición
- Protocolo de acceso (d1) - Dirección DNS (d2) - Dirección IP (d3) - No. Puerto (d4) - Requerimiento servidor (d5)
GET POST HEAD
URL
d1+d2+d3+d4+d5
Señal
Respuest
- Dirección objeto requerido - Versión de HTTP - Información adicional
Código de estado+ tipo de dato MIME+ inf.
Respuesta al cliente
Cerrar Conexión TCP
Señal
DIAGRAMA DE FLUJO DE DATOS ( Transacción HTTP )
25
FTCW iniciada
FTCW reiniciada
FTCW detenida
Servidor reinicia FTCW
Sistema Operativo
Start
DIAGRAMA DE TRANSICION DE ESTADOS “FTCW”
Servidor inicia FTCW
Servidor inicia FTCW
Servidor detiene FTCWUsuario detiene FTCW
Servidor reinicia FTCW
Servidor detiene FTCW
26
Pág. 1 / 1 FIREWALL TRANSPARENTE DE CONTENIDO WEB
Versión 1.0 Fecha de Diseño 12/05/2005
DIAGRAMA JERARQUICO DEL MENU PRINCIPAL
Cambio de contraseña
Barra de Estado
Mante to de nimienUsuarioSalir
Mantenimiento de usuario
Detener Captura
Acerca de
Ayuda
Barra de Herramientas
Ver
Respaldar Tablas MySQL
Base Datos
Configuración de reglas
Opciones
Iniciar Captura
Archivo
Generación de Reportes
Reporte
FIREWALL TRANSPARENTE DE CONTENIDO WEB
CREACION DE SCRIPT S
BASE DE DATOS
Script para crear tabla “packetTCP” -- MySQL dump 8.23 -- -- Host: localhost Database: firewall --------------------------------------------------------- -- Server version 3.23.58 -- -- Table structure for table `packetTCP` -- CREATE TABLE packetTCP ( id int(9) unsigned zerofill NOT NULL auto_increment, FecCap date NOT NULL default '0000-00-00', HorCap varchar(15) NOT NULL default '', size smallint(4) unsigned zerofill NOT NULL default '0000', srcIP varchar(15) NOT NULL default '', dstIP varchar(15) NOT NULL default '', srcMAC varchar(17) NOT NULL default '', dstMAC varchar(17) NOT NULL default '', headerLen tinyint(2) unsigned zerofill NOT NULL default '00', srcPort mediumint(5) unsigned zerofill NOT NULL default '00000', dstPort mediumint(5) unsigned zerofill NOT NULL default '00000', sequenceNumber bigint(10) unsigned zerofill NOT NULL default '0000000000', ackNumber bigint(10) unsigned zerofill NOT NULL default '0000000000', dataOffset tinyint(2) unsigned zerofill NOT NULL default '00', URG tinyint(1) default NULL, ACK tinyint(1) default NULL, PSH tinyint(1) default NULL, RST tinyint(1) default NULL, SYN tinyint(1) default NULL, FIN tinyint(1) default NULL, window mediumint(5) unsigned zerofill NOT NULL default '00000', checksum mediumint(5) unsigned zerofill NOT NULL default '00000', urgentPoint mediumint(5) unsigned zerofill NOT NULL default '00000', data mediumblob, process enum('0','1') NOT NULL default '0', PRIMARY KEY (id,FecCap,HorCap) ) TYPE=MyISAM;
28
Script para crear tabla “t_dns” -- MySQL dump 8.23 -- -- Host: localhost Database: firewall --------------------------------------------------------- -- Server version 3.23.58 -- -- Table structure for table `t_dns` -- CREATE TABLE t_dns ( id int(9) unsigned zerofill NOT NULL auto_increment, ip varchar(15) NOT NULL default '', dominio varchar(255) binary NOT NULL default '', PRIMARY KEY (id,ip,dominio) ) TYPE=MyISAM;
Script para crear tabla “t_dominio -- MySQL dump 8.23 -- -- Host: localhost Database: firewall --------------------------------------------------------- -- Server version 3.23.58 -- -- Table structure for table `t_dominio` -- CREATE TABLE t_dominio ( id int(9) unsigned zerofill NOT NULL auto_increment, dominio varchar(255) binary NOT NULL default '', accion enum('R','P') NOT NULL default 'R', PRIMARY KEY (id,dominio) ) TYPE=MyISAM;
29
Script para crear tabla “t_frase” -- MySQL dump 8.23 -- -- Host: localhost Database: firewall --------------------------------------------------------- -- Server version 3.23.58 -- -- Table structure for table `t_frase` -- CREATE TABLE t_frase ( id int(9) unsigned zerofill NOT NULL auto_increment, frase varchar(255) binary NOT NULL default '', accion enum('R','P') NOT NULL default 'R', PRIMARY KEY (id,frase) ) TYPE=MyISAM;
Script para crear tabla “t_ip” -- MySQL dump 8.23 -- -- Host: localhost Database: firewall --------------------------------------------------------- -- Server version 3.23.58 -- -- Table structure for table `t_ip` -- CREATE TABLE t_ip ( id int(9) unsigned zerofill NOT NULL auto_increment, ip varchar(15) NOT NULL default '', accion enum('R','P') NOT NULL default 'R', PRIMARY KEY (id,ip), UNIQUE KEY ip (ip) ) TYPE=MyISAM;
30
Script para crear tabla “t_iptables” -- MySQL dump 8.23 -- -- Host: localhost Database: firewall --------------------------------------------------------- -- Server version 3.23.58 -- -- Table structure for table `t_iptables` -- CREATE TABLE t_iptables ( id int(9) unsigned zerofill NOT NULL auto_increment, ip varchar(15) NOT NULL default '', dominio varchar(255) binary NOT NULL default '', frase varchar(255) binary default NULL, accion enum('R','P') NOT NULL default 'R', PRIMARY KEY (id) ) TYPE=MyISAM;
Script para crear tabla “t_usuario” -- MySQL dump 8.23 -- -- Host: localhost Database: firewall --------------------------------------------------------- -- Server version 3.23.58 -- -- Table structure for table `t_usuario` -- CREATE TABLE t_usuario ( id tinyint(3) unsigned zerofill NOT NULL auto_increment, usuario varchar(20) binary NOT NULL default '', clave varchar(20) NOT NULL default '', nombres varchar(30) binary NOT NULL default '', apellidos varchar(30) binary NOT NULL default '', PRIMARY KEY (id,usuario), UNIQUE KEY usuario (usuario) ) TYPE=MyISAM;
31
Script para crear la base de datos “firewall” create database firewall; use firewall; source SRC_packetTCP; source SRC_t_dns; source SRC_t_dominio; source SRC_t_frase; source SRC_t_ip; source SRC_t_iptables; source SRC_t_usuario; show table status;
32
OTROS SCRIPTS
Script “ftcwd” #!/bin/bash java="/usr/java/jdk1.5.0_02/bin/java" home_FTCW="/usr/local/FTCW/JARS" GREEN="\033[1;32m" RED="\033[1;31m" DEFAULT="\033[0m" PID1=`ps -ef|grep ftcw-1.0.jar|grep -v grep|cut -c9-15` PID1=`echo $PID1|cut -c0-6` let "PID1=0+PID1" if [ $PID1 -gt 0 ] then STATUS=1 else STATUS=0 fi start(){ echo -n "Iniciando el servicio ftcwd " if [ $STATUS -eq 0 ] then cd $home_FTCW comand=`nohup $java -jar ftcw-1.0.jar 1>/dev/null 2>/dev/null &` if [ $? -eq 0 ] then RES="\t\t[ $GREEN OK $DEFAULT ]" STATUS=1 else RES="\t\t[$RED""FALLO""$DEFAULT]" fi else RES="\t\t[$RED""FALLO""$DEFAULT]" fi echo -e "$RES" } stop(){ echo -n "Deteniendo el servicio ftcwd" if [ $STATUS -eq 1 ] then kill -15 $PID1 2>/dev/null if [ $? -eq 0 ] then RES="\t\t[ $GREEN OK $DEFAULT ]"
33
STATUS=0 else RES="\t\t[$RED""FALLO""$DEFAULT]" fi else RES="\t\t[$RED""FALLO""$DEFAULT]" fi echo -e "$RES" } status(){ if [ $STATUS -eq 1 ] then echo -e "\nftcwd (pid $PID1) iniciado.\n" else echo -e "\nftcwd detenido.\n" fi } restart(){ stop start } case "$1" in start) start ;; stop) stop ;; status) status ;; restart) restart ;; *) echo "Usage: $0 {start|stop|status|restart}" exit 1 esac exit 0
34
Script “bridged” #!/bin/bash brctl="/usr/local/sbin/brctl" ifconfig="/sbin/ifconfig" GREEN="\033[1;32m" RED="\033[1;31m" DEFAULT="\033[0m" $ifconfig br0 1>/dev/null 2>/dev/null if [ $? -eq 0 ] then STATUS=1 else STATUS=0 fi start() { echo -n "Iniciando el servicio bridge br0 " if [ $STATUS -eq 0 ] then $brctl addbr br0 $brctl setbridgeprio br0 0 $brctl addif br0 eth0 $brctl addif br0 eth1 $ifconfig eth0 0.0.0.0 promisc $ifconfig eth1 0.0.0.0 promisc $ifconfig br0 up RES="\t\t[ $GREEN OK $DEFAULT ]" else RES="\t\t[$RED""FALLO""$DEFAULT]" fi echo -e "$RES" } stop() { if [ $STATUS -eq 1 ] then $brctl delif br0 eth1 $brctl delif br0 eth0 $ifconfig br0 down $brctl delbr br0 RES="\t\t[ $GREEN OK $DEFAULT ]" else RES="\t\t[$RED""FALLO""$DEFAULT]" fi echo -e "$RES" } status() { if [ $STATUS -eq 1 ]
35
then $ifconfig br0 2>/dev/null $brctl show br0 else echo -e "\nbr0 no esta configurado.\n" fi } restart() { stop start } case "$1" in start) start ;; stop) stop ;; status) status ;; restart) restart ;; *) echo "Usage: $0 {start|stop|status|restart}" exit 1 esac exit 0
36
Script “DefaultIptables” #!/bin/sh #Borrar cualquier regla existente previamente: iptables -F FORWARD iptables -F INPUT iptables -F OUTPUT #Permitir acceso únicamente de trafico WEB iptables -A FORWARD -s 0/0 -p tcp --sport http -j ACCEPT iptables -A FORWARD -s 0/0 -p tcp --sport https -j ACCEPT iptables -A FORWARD -s 0/0 -p tcp --sport ftp -j ACCEPT iptables -A FORWARD -s 0/0 -p tcp --sport ssh -j ACCEPT iptables -A FORWARD -s 0/0 -p tcp --sport pop3 -j ACCEPT iptables -A FORWARD -s 0/0 -p tcp --sport smtp -j ACCEPT iptables -A FORWARD -j DROP
Script “BackupTable” mkdir -p /var/lib/mysql/BackupTables cd /var/lib/mysql chmod 700 * chown mysql * chgrp daemon * cd /var/lib/mysql/firewall tar cvfz t_usuario_2005-06-25.tz t_usuario.MYD t_usuario.MYI t_usuario.frm mv *.tz ../BackupTables cd ../BackupTables chmod 700 * chown mysql * chgrp daemon *;
37
CODIFICACIÓN DE LOS COMPONENTES POR
MÓDULOS
Dentro de la aplicación del Firewall Transparente de Contenido Web se han
determinado cinco módulos principales y son los siguientes:
FTCWSrv
FTCWDaemon
FTCWDns
FTCWAnaliza
FTCWPack
FTCWSrv public class FTCWSrv implements Runnable { private Thread FTCWSrv_Thread = null; private static final int INFINITE = -1; private static final int PACKET_COUNT = INFINITE; private static final String FILTER ="proto TCP and port 80"; private String device = "eth0"; public int cont=0; public PacketCapture pcap = null; public FTCWDaemon daemon = null; public PacketHandler paquete_new = null; //public static String paquete=null; public FTCWSrv() throws Exception
38
{ pcap = new PacketCapture(); daemon = new FTCWDaemon(); paquete_new = new PacketHandler(); } public void start() {
if (FTCWSrv_Thread == null) { FTCWSrv_Thread = new Thread(this,"FTCWSrv"); FTCWPack.GrabarLog("FTCWSrv","Iniciado",2); FTCWSrv_Thread.start(); } }
public static void main(String[] args) { try { FTCWSrv example = new FTCWSrv(); example.start(); } catch(Exception e) { e.printStackTrace(); }} public void run() { try { pcap.open(device,1500, true,INFINITE); pcap.setFilter(FILTER, true); pcap.addPacketListener(paquete_new); daemon.start(); pcap.capture(PACKET_COUNT);} catch (Exception e) { FTCWSrv_Thread=null; FTCWPack.GrabarLog(e.toString(),"FTCWSrv error",1); daemon.stop(); }} public boolean isActive(){ if(FTCWSrv_Thread.isAlive()) return true; else return false;} public void stop(){ FTCWSrv_Thread=null; pcap.endCapture(); pcap.close(); daemon.stop();} public String getPacket(){ return paquete_new.getPacket_Handler(); }} class PacketHandler implements PacketListener { private String paquete=""; public String getPacket_Handler() { return paquete; } public void packetArrived(Packet packet) { try { TCPPacket tcpPacket = (TCPPacket)packet;
39
IPPacket ipPacket = (IPPacket)packet; byte[] data = tcpPacket.getData(); int tamPacket = ipPacket.getLength(); String fecha = getFecha(tcpPacket.getTimeval()); String hora = getHora(tcpPacket.getTimeval()); String srcHost = tcpPacket.getSourceAddress(); String dstHost = tcpPacket.getDestinationAddress(); String srcMAC = ipPacket.getSourceHwAddress(); String dstMAC = ipPacket.getDestinationHwAddress(); boolean URG,ACK,PSH,RST,SYN,FIN=false; int COLUMNAS_TABLA = 22; paquete= paqueteTCP; String cadena = new String(Argumentos TCP); FTCWPack.hacerInsercion(data); } catch( Exception e ) { e.toString; } } }
FTCWDaemon public class FTCWDaemon implements Runnable{ private Thread Consulta_Base_Thread = null; private static int REG_BASE = 500; private static int CRON = 5000; private static int A_BORRAR = 10; private static boolean EjecutarAnaliza; public void start() {
if (Consulta_Base_Thread == null) { Consulta_Base_Thread = new Thread(this,"FTCWCron"); Consulta_Base_Thread.start(); }}
public static void main(String[] args) { FTCWDaemon prueba = new FTCWDaemon(); prueba.start();} public void run() { Thread myThread = Thread.currentThread(); EjecutarAnaliza=true;
while (Consulta_Base_Thread == myThread) { Date fecha = new Date(); Consulta_Base(); if(EjecutarAnaliza) Ejecutar_FTCWAnaliza(); try { Thread.sleep(CRON); } catch (InterruptedException e){ } } }
40
private void Ejecutar_FTCWAnaliza() { EjecutarAnaliza=false; Ejecutar_FTCWAnaliza(): "+EjecutarAnaliza); FTCWDns.GenerarDNS(); EjecutarAnaliza=FTCWAnaliza.cargarTabla(); } private void Consulta_Base() { ResultSet rslt; rslt = FTCWPack.Consultar("SELECT count(id) as Regs FROM
packetTCP"); try { rslt.next(); int registros = rslt.getInt("Regs"); if(registros >= REG_BASE) { FTCWPack.hacerBorrado("t_packetTCP","WHERE
process='1' limit "+ A_BORRAR); } } catch (SQLException e) { e.printStackTrace(); } } public void stop() { Consulta_Base_Thread = null; } }
FTCWDns public class FTCWDns { public static int doms=0; public static int gets=0; public static String Urls (String registro) { String dominio=null; int inicio, fin; gets++; inicio=registro.indexOf("Host: ")+"Host: ".length(); fin=registro.indexOf("\n",inicio); if(inicio<fin) { dominio = registro.substring(inicio,fin); if(dominio.contains(" ")){ fin=registro.indexOf(" ",inicio); dominio = registro.substring(inicio,fin); } return dominio.trim(); }else{ return "-null-"; } } public static void GenerarDNS(){
41
ResultSet comp,temp,info = null; String data = null; String ip= null; String dominio=null; String cadena= null; String id=null; Date Hora_inicio,Hora_fin,tot; Hora_inicio= new Date(); int i=0; try { info = FTCWPack.hacerConsulta(tabla packetTCP); while(info.next()) { dominio="-null-"; id=info.getString("id"); data=info.getString("data"); ip=info.getString("dstip"); dominio=Urls(data); if(!dominio.equalsIgnoreCase("-null-")){ comp=FTCWPack.hacerConsulta(tabla t_dns); cadena=ip+"|"+dominio; try { if(!comp.isBeforeFirst()) { FTCWPack.hacerInsercion("t_dns",2,cadena,null); doms++; } } catch (SQLException e1) { e1.printStackTrace(); } } FTCWPack.hacerActualizacion("packetTCP",id,"1"); } } catch(Exception e) { e.toString(); } } }
FTCWAnaliza
public class FTCWAnaliza { public static boolean cargarTabla() { ResultSet t_ip,t_dominio,t_frase,dns,info,t_iptables = null; String data= null; String ip= null; String id = null; Vector dominio = null; String cadena= null;
42
String dom = null; String fras = null; String fras_temp= null; Date Hora_inicio,Hora_fin,tot; Hora_inicio= new Date(); int i=0; int reg_packet; int reg_dominio; int reg_frases; int reg_cheqs; int reg_ip; int status=0; String[] comando={"iptables","-A","FORWARD","-
s","10.10.10.10",”-p”,”tcp”,”--sport”,”http”,"-j","DROP"}; reg_packet=reg_dominio=reg_frases=reg_cheqs=reg_ip=0; try{ info = FTCWPack.Consultar("SELECT id,srcIP,data " + "FROM packetTCP " + "WHERE srcPort = '80' AND data NOT LIKE '' " + "AND
process='0'" ); while(info.next()) { status=0; reg_packet++; id=info.getString("id"); ip=info.getString("srcIP"); System.out.println("Ip : "+ip); dns = FTCWPack.Consultar("SELECT dominio
FROM t_dns WHERE ip=trim('"+ip+"')"); dominio= new Vector(); String domain=null; while(dns.next()){ domain=dns.getString("dominio"); if (!(domain.equals(""))) dominio.add(domain); }else{ dominio.add("--Sin dominio--"); } cadena=ip+"|"+dominio.get(0)+"|"+"--Restringida
por ip--"; t_ip=FTCWPack.Consultar("SELECT ip FROM t_ip
WHERE ip='"+ip+"' and accion='R'"); reg_cheqs++; if (t_ip.next()) { t_iptables=FTCWPack.Consultar("SELECT *
FROM t_iptables WHERE " +"ip = '"+ip+"' AND
43
dominio = '" + dominio.get(0)+"' AND frase = '--Restringida por ip--'");
if(!t_iptables.isBeforeFirst()) { FTCWPack.hacerInsercion("t_iptables",3,cadena,null);
comando[4] = ip; Runtime.getRuntime().exec(comando); status=1; } } for(i=0;i<dominio.size();i++){ t_dominio=FTCWPack.Consultar("SELECT dominio FROM
t_dominio WHERE accion='R'"); while(t_dominio.next()){
reg_dominio++; dom=t_dominio.getString("dominio"); cadena=ip+"|"+dominio.get(i)+"|"+"--Restringida por dominio--"; if(dominio.get(i).toString().contains(dom)) { t_iptables=FTCWPack.Consultar("SELECT * FROM t_iptables
WHERE " +"ip = '"+ip+"' AND dominio = '" + dominio.get(i)+"'"); if(!t_iptables.isBeforeFirst()) { FTCWPack.hacerInsercion("t_iptables",3,cadena,null); comando[4] = ip; Runtime.getRuntime().exec(comando); Grab_auditoria(comando,cadena);
status=1; } } } } data=info.getString("data").toUpperCase(); t_frase=FTCWPack.hacerConsulta("t_frase","","",1); while(t_frase.next()) { fras=t_frase.getString("frase"); fras_temp=fras.toUpperCase(); if(data.contains(fras_temp) && status==0) { for (int j=0;j<dominio.size();j++) { t_iptables=FTCWPack.Consultar("SELECT * FROM
t_iptables WHERE " + "ip = '"+ip+"' AND dominio = '" + dominio.get(j)+"' AND
frase = '"+ fras + "'"); cadena=ip+"|"+dominio.get(j)+"|"+fras; if (!t_iptables.isBeforeFirst()) { FTCWPack.hacerInsercion("t_iptables",3,cadena,null); comando[4] = ip; Runtime.getRuntime().exec(comando); Grab_auditoria(comando,cadena); } } } } FTCWPack.hacerActualizacion("packetTCP",id,"1"); } if(id!=null) FTCWPack.hacerActualizacion("packetTCP",id,"2"); } catch(SQLException e) { return true; }
44
catch(ArrayIndexOutOfBoundsException e1) { FTCWPack.hacerBorrado("packetTCP",id); return true; } catch (IOException e2) { FTCWPack.GrabarLog(e2.toString(),"No se pudo aplicar
la regla IPTABLES "+ comando[0]+" "+comando[1]+" "+ comando[2]+" "+comando[3]+" "+ comando[4]+" "+comando[5]+" "+comando[6],1); return true; } return true; } private static void Grab_auditoria(String[] comando, String cadena) { String dom=cadena.substring(cadena.indexOf("|")+1); FTCWPack.GrabarLog("Nueva regla insertada: \n"+ comando[0]+" "+comando[1]+" "+ comando[2]+" "+comando[3]+" "+ comando[4]+" "+comando[5]+" "+ comando[6],dom,2); } public static void main(String[] args) { FTCWAnaliza.cargarTabla(); } }
FTCWPack
public class FTCWPack { static Connection conn =null; public static boolean conecta() throws SQLException { if (conn==null || conn.isClosed()) { String driver = "com.mysql.jdbc.Driver"; String bd = "firewall"; String Host = "localhost"; String url = "jdbc:mysql://"+Host+"/"+bd; String userName = "root"; String password = "grupo3a"; try { Class.forName(driver).newInstance(); conn = DriverManager.getConnection(url, userName,
password); return true; } catch (Exception e) { return false; } } else { return true; } }
45
protected void finalize() throws Throwable { conn.close();
} public static ResultSet hacerConsulta(String table, String campo,
String campo2,int tipo) { try { if(!conecta()) conecta(); Statement stmt = conn.createStatement(); ResultSet rslt; if (table.contains("t_dns")){
rslt = stmt.executeQuery("SELECT * FROM "+ table + " WHERE ip='" + campo + "' and dominio = '" + campo2 + "'");
return rslt; } if (table.contains("t_ip") || table.contains("t_dominio") ||
table.contains("t_frase")) { switch(tipo) { case 1: rslt = stmt.executeQuery("SELECT * FROM " +
table + " ORDER BY " + table.substring(2)); return rslt;
case 2: rslt = stmt.executeQuery("SELECT * FROM " +
table + " WHERE " + table.substring(2)+" LIKE '"+campo+"'");
return rslt; } } if (table.contains("packetTCP")) { switch(tipo) { case 1: rslt = stmt.executeQuery("SELECT * FROM " + table +
" ORDER BY '"+ campo+"'" ); return rslt; case 2:
rslt = stmt.executeQuery( "SELECT * FROM " + table + " WHERE data LIKE 'GET %' and data like '%Host: %' and process='0'");
return rslt; case 3:
rslt = stmt.executeQuery( "SELECT data FROM " + table + " WHERE srcIp = '"+campo+"'");
return rslt; } } if (table.contains("t_usuario")) { switch(tipo){ case 1: rslt = stmt.executeQuery("SELECT * FROM " + table + "
46
WHERE usuario = '" + campo +"' and clave = PASSWORD('" + campo2 + "')" );
return rslt; case 2: rslt = stmt.executeQuery("SELECT * FROM " + table + WHERE
usuario = '" + campo +"'"); return rslt; } } return null; } catch( Exception ex ) { return null; } } public static ResultSet Consultar(String consulta){ try { if(!conecta()) conecta(); Statement stmt = conn.createStatement(); ResultSet rslt = null; rslt = stmt.executeQuery(consulta); return rslt; } catch( Exception ex ) {ex.toString(); return null; } }
public static boolean hacerInsercion(String table, int cols, String str, byte[] data){
String fields[] = new String[cols];/ int i = 0; int j = 0; int resultado = 0; String actualizacion = ""; try { if(!conecta()) conecta(); String sql = "INSERT INTO " + table + "
(fecCap,horCap,size,srcIP,dstIP,srcMAC,dstMAC,headerLen,srcPort,dstPort,sequenceNumber," + " ackNumber ,dataOffset, URG,ACK,PSH,RST,SYN,FIN,window,checksum,urgentPoint,data) " + "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; java.sql.PreparedStatement select = conn.prepareStatement(sql); StringTokenizer campos = new StringTokenizer(str,"|"); while(campos.hasMoreTokens) {
fields[i]=campos.nextToken(); if(fields[i].contains("true")) fields[i] = "1"; if(fields[i].contains("false")) fields[i] = "0"; i++; } if ( table.contains("t_ip") ||
47
table.contains("t_frase") || table.contains("t_dominio") ) { actualizacion = "INSERT INTO " + table + " ("+table.substring(2)+") VALUES ( '"+fields[0]+"')"; } if ( table.contains("t_dns")) { actualizacion = "INSERT INTO " + table + “ (ip,dominio) VALUES ( '"+fields[0]+"','"+fields[1]+"')"; } if ( table.contains("t_iptables")) { actualizacion = "INSERT INTO " + table + " (ip,dominio,frase) VALUES (
'"+fields[0]+"','"+fields[1]+"','"+fields[2]+"')"; } if ( table.contains("packetTCP") ) { for(j=1;j<=i;j++){ switch(j) { case 1: case 2:case 4:case 5:case 6:case 7: select.setString(j,fields[j-1]); break; case 11: case 12: select.setLong(j,Long.parseLong(fields[j-1])); break; default: select.setInt(j,Integer.parseInt(fields[j-1])); break; } } if (data.length>0 || data !=null) { ByteArrayInputStream inputStream = new
ByteArrayInputStream(data); select.setBinaryStream(i+1,inputStream, inputStream.available());
select.executeUpdate(); } } if (!table.contains("packetTCP")) resultado = select.executeUpdate(actualizacion); return true; } catch(SQLException ex ) { try { GrabarLog(ex.toString(),"|FTCWPack|campo
"+j+"|"+str+"\nDATA: "+new String(data,"ISO-8859-1"),1); }catch (UnsupportedEncodingException e) { GrabarLog(e.toString(),"Error en "+fields,1); } return false; }} public static void GrabarLog(String exception, String cadenaSQL, int nFile) { RandomAccessFile log = null; Date fecha = new Date(); String error = fecha.toString()+"|"+exception+"|"+cadenaSQL+"\n";
48
try { switch (nFile) { case 1: log = new RandomAccessFile( "/var/log/FTCWError.log","rw" ); break; case 2: log = new RandomAccessFile( "/var/log/FTCWAudit.log","rw" ); break; } log.seek( log.length() ); log.writeBytes( error ); log.close(); }catch (Exception e) { e.printStackTrace(); } } public static boolean hacerBorrado(String table, String key) { try { Statement stmt = conn.createStatement(); int rslt = 0; String txt_del = ""; if ( table.compareTo("packetTCP")==0 ) { txt_del = "DELETE FROM " + table + " WHERE id = '" + key + "'"; } if ( table.compareTo("t_packetTCP")==0 ) { txt_del = "DELETE FROM " + table.substring(2) + " " + key; } if ( table.compareTo("t_dominio")==0 ) { txt_del = "DELETE FROM " + table + " WHERE dominio = '" + key + "'"; } if ( table.compareTo("t_frase")==0 ) { txt_del = "DELETE FROM " + table + " WHERE frase = '" + key + "'"; } if ( table.compareTo("t_ip")==0 ) { txt_del = "DELETE FROM " + table + " WHERE ip = '" + key + "'"; } if ( table.compareTo("t_iptables")==0 ) { txt_del = "DELETE FROM " + table + " WHERE accion = '" + key + "'"; } if ( table.compareTo("t_usuario")==0 ) { txt_del = "DELETE FROM " + table + " WHERE usuario = '" + key +
"'"; } rslt = stmt.executeUpdate(txt_del); return true; }catch( Exception ex ) { return false; } }
49
public static boolean hacerActualizacion(String table, String newValue, String Field ) { try { Statement stmt = conn.createStatement(); int rslt = 0; String txt_upd = ""; if ( table.contentEquals("t_ip") || table.contentEquals("t_frase") || table.contentEquals("t_dominio")){ if(newValue=="R"||newValue=="P")
txt_upd = "UPDATE " + table + " SET accion='" + newValue + "' WHERE "+ Field ;
} else { txt_upd = "UPDATE " + table + " SET "+table.substring(2)+"='" +
newValue + "' WHERE "+ Field ; } } if ( table.contains("t_iptables")) { txt_upd = "UPDATE " + table + " SET accion='" + newValue + "' WHERE "+ Field ; } if ( table.compareTo("t_usuario")==0 ) { txt_upd = "UPDATE " + table + " SET clave=PASSWORD('" +
newValue + "') WHERE usuario='" + Field + "'"; } if(table.contains("packetTCP")) { if(Field.contains("1")) { txt_upd = "UPDATE " + table + " SET process='1' WHERE
id='"+ newValue+"'" ; } if(Field.contains("2")) { txt_upd = "UPDATE " + table + " SET process='1' " + "WHERE (srcPort != '80' or data LIKE '') and id < "+ newValue; } } try{ rslt = stmt.executeUpdate(txt_upd); return true; }catch(SQLException e) { return false; } }catch (Exception e) { System.out.println(e); return false; } } public static ResultSet descTabla(String table) { try { Statement stmt = conn.createStatement(); ResultSet rslt; String txt_dsc = "DESC " + table; try {
50
rslt = stmt.executeQuery(txt_dsc); return rslt; } catch(SQLException e) { System.out.println(e); return null; } } catch (Exception e){ System.out.println(e); return null; } } public static ResultSet showTable() { try { Statement stmt = conn.createStatement(); ResultSet rslt; String txt_show = "SHOW TABLE STATUS "; try { rslt = stmt.executeQuery(txt_show); System.out.println("Estado de las tablas"); return rslt; } catch(SQLException e) { return null; } } catch (Exception e) { return null; } }
}
51
DICCIONARIO DE DATOS
Pág. 1 / 3FIREWALL TRANSPARENTE DE CONTENIDO WEB
Versión 1.0
Fecha/Diseño
02/04/2005
Entidad: packetTCP
DESCRIPCIÓN DEL REGISTRO No. Nombre Tipo Long. Descripción PK FK NL
1 2 3 4 5 6 7 8
Id FecCap HorCap size srcIP dstIP srcMAC dstMAC
int unsigned zerofill auto increment varchar varchar smallint unsigned zerofill varchar varchar varchar varchar
9
10
15 4
15
15
17
17
Identificador Fecha de Captura Hora de Captura Tamaño de paquete IP Origen IP Destino MAC Origen MAC Destino
X
X
X
Definición de claves PK: id + FecCap + HorCap FK:
52
Pág. 2 / 3FIREWALL TRANSPARENTE DE CONTENIDO WEB
Versión 1.0
Fecha/Diseño
02/04/2005
Entidad: packetTCP
DESCRIPCIÓN DEL REGISTRO No. Nombre Tipo Long. Descripción PK FK NL
9 10 11 12 13 14 15 16 17 18 19 20
headerLen srcPort dstPort sequenceNumber ack Number dataOffset URG ACK PSH RST SYN FIN
tinyint unsigned zerofill mediumint unsigned zerofill mediumint unsigned zerofill bigint unsigned zerofill bigint unsigned zerofill tinyint unsigned zerofill tinyint tinyint tinyint tinyint tinyint tinyint
2 5 5
10
10 2 1 1 1 1 1 1
Tamaño de Cabecera Puerto Origen Puerto Destino Número de secuencia Número de Ack Desplazamiento de la data Indicador Urgente Indicador ACK Indicador Push Indicador Reset Indicador de Sincronización Indicador de paquete final
X
X
X
X
X
X
Definición de claves PK: id + FecCap + HorCap FK:
53
Pág. 3 / 3FIREWALL TRANSPARENTE DE CONTENIDO WEB
Versión 1.0
Fecha/Diseño
02/04/2005
Entidad: packetTCP
DESCRIPCIÓN DEL REGISTRO No. Nombre Tipo Long. Descripción PK FK NL
21 22 23 24 25
window checksum urgent Point data process
mediumint unsigned zerofil mediumint unsigned zerofill mediumint unsigned zerofill mediumblob enum(‘0’,’1’)
5 5 5 1
Tamaño de la ventana Bits de verificación Puntero Urgente Datos del paquete Bandera registro procesado
X
Definición de claves PK: id + FecCap + HorCap FK:
54
Pág. 1 / 1FIREWALL TRANSPARENTE DE CONTENIDO WEB
Versión 1.0
Fecha/Diseño
02/04/2005
Entidad: t_dns
DESCRIPCIÓN DEL REGISTRO No. Nombre Tipo Long. Descripción PK FK NL
1 2 3
id ip dominio
int unsigned
zerofill
varchar
varchar binary
9
15
255
Identificador Dirección IP Nombre del dominio
X
X
X
Definición de claves PK: id + ip + dominio FK:
55
Pág. 1 / 1FIREWALL TRANSPARENTE DE CONTENIDO WEB
Versión 1.0
Fecha/Diseño
02/04/2005
Entidad: t_dominio
DESCRIPCIÓN DEL REGISTRO No. Nombre Tipo Long. Descripción PK FK NL
1 2 3
id dominio accion
int unsigned
zerofill
varchar binary
enum
(‘R’,’P’)
9
255 1
Identificador Nombre del dominio Tipo de acción permitir o restringir
X
X
Definición de claves PK: id + dominio FK:
56
Pág. 1 / 1FIREWALL TRANSPARENTE DE CONTENIDO WEB
Versión 1.0
Fecha/Diseño
02/04/2005
Entidad: t_frase
DESCRIPCIÓN DEL REGISTRO No. Nombre Tipo Long. Descripción PK FK NL
1 2 3
id frase accion
int unsigned
zerofill
varchar binary
enum
(‘R’,’P’)
9
255 1
Identificador Nombre de la frase Tipo de acción permitir o restringir
X
X
Definición de claves PK: id + frase FK:
57
Pág. 1 / 1FIREWALL TRANSPARENTE DE CONTENIDO WEB
Versión 1.0
Fecha/Diseño
02/04/2005
Entidad: t_ip
DESCRIPCIÓN DEL REGISTRO No. Nombre Tipo Long. Descripción PK FK NL
1 2 3
id ip accion
int unsigned
zerofill
varchar
enum (‘R’,’P’)
9
15 1
Identificador Dirección IP Tipo de acción permitir o restringir
X
X
Definición de claves PK: id + ip FK:
58
Pág. 1 / 1FIREWALL TRANSPARENTE DE CONTENIDO WEB
Versión 1.0
Fecha/Diseño
02/04/2005
Entidad: t_iptables
DESCRIPCIÓN DEL REGISTRO No. Nombre Tipo Long. Descripción PK FK NL
1 2 3 4 5
id ip dominio frase accion
int unsigned
zerofill
varchar
varchar binary
varchar binary
enum
(‘R’,’P’)
9
15
255
255 1
Identificador Dirección IP Nombre del dominio Nombre de la frase Acción de permitir o restringir
X
X
Definición de claves PK: id FK:
59
Pág. 1 / 1FIREWALL TRANSPARENTE DE CONTENIDO WEB
Versión 1.0
Fecha/Diseño
02/04/2005
Entidad: t_usuario
DESCRIPCIÓN DEL REGISTRO No. Nombre Tipo Long. Descripción PK FK NL
1 2 3 4 5
id usuario clave nombres apellidos
tinyint
unsigned zerofill
varchar binary
varchar
varchar binary
varchar binary
3
20
20
30
30
Identificador Nombre del usuario Clave del usuario Nombres propios del usuario Apellidos del usuario
X
X
Definición de claves PK: id + usuario FK:
61
INTRODUCCIÓN El presente Manual de Usuario del sistema “Firewall Transparente de
Contenido Web”, contiene los procedimientos y métodos necesarios que le
permitirán al usuario que utiliza la aplicación desenvolverse de una manera
eficaz dentro de la misma.
Este manual se estructura en dos partes esenciales: 1) En primera instancia,
la instalación de la aplicación FTCW. 2) La explicación de todo el sistema
paso a paso. Se ha mantenido estándares en el desarrollo de las interfaces
para que el usuario se familiarice con el uso constante de la aplicación.
62
INSTALACION DEL SISTEMA
El sistema Firewall Transparente de Contenido Web necesita recursos
físicos, lógicos, humanos y una infraestructura específica para desenvolverse
adecuadamente. En esta sección se indica todos los requerimientos mínimos
necesarios para que la funcionalidad del FTCW sea aceptable.
En la parte de recursos físicos se indica los elementos de Hardware
necesarios y su configuración para que puedan servir eficientemente como
un firewall + bridge.
En la parte de los recursos lógicos se indica como deben estar configurados
ciertos archivos dentro del sistema operativo tales como:
El directorio home,
La base de datos,
Los scripts,
Los archivos logs, etc.
63
El esquema de infraestructura necesario para implementar el FTCW es el
siguiente: La organización recibe del proveedor el servicio de Internet este
llega a un medio de distribución de la señal como por ejemplo una antena,
entonces el FTCW se conectaría directamente a esta salida a través de un
tranceiver o dispositivo similar. El FTCW tendrá dos interfaces el eth1 que
recibe la señal de Internet, y el eth0 que reparte la señal al Proxy Server,
siendo este último el encargado de distribuir la señal a la red LAN.
En el CD de la aplicación se encuadran todo el Software necesario para
instalar el FTWC y su árbol de directorios esta dispuesto de la siguiente
manera:
• FTCW.- aquí se encuentran los archivos fuentes, binarios y
documentación de la aplicación.
• JDK.- aquí se encuentran los instaladores de JAVA.
• LIBRERIAS.- aquí se encuentran librerías adicionales requeridas por
FTCW.
• SCRIPTS.- aquí se encuentran los scripts que deben ser copiados al
Sistema Operativo.
Se necesita realizar los siguientes pasos para la instalación del FTCW:
1. Instalar JDK1.5
64
2. Actualizar librerías
3. Establecer rutas de acceso
4. Instalar FTCW
Instalar JDK1.5.01
En el CD de instalación se encuentra los instaladores de java versión del
1.5.0, el archivo para instalar se llama jdk-1.5.0_02-linux-i586.rpm.
El JDK requiere configurarse con diversas variables de ambiente para su
correcta operación:
• JAVA_HOME: Indica el directorio raíz de instalación del JDK, de acuerdo
a las instrucciones anteriores esta ruta sería: /usr/local/jdk1.5.0_02.
• PATH: Define la ruta de acceso para los binarios del sistema; la
modificación de esta variable permite acceder a los ejecutables Java
(javac,javadoc,java) proporcionadas con el JDK de cualquier directorio.
• CLASSPATH: Define las rutas de acceso para las diversas librerías
empleadas en ambientes Java; su modificación será descrita mas
adelante.
65
Las variables anteriores pueden ser definidas de dos maneras:
• Nivel Global: Permite que las variables sean accesibles para todo
usuario del sistema; estas definiciones son colocadas en el archivo
/etc/profile del sistema.
• Nivel Usuario: Las variables son definidas para tener efecto únicamente
sobre determinado usuario; estas definiciones son colocadas en el
archivo ~/.bashrc, donde ~/ es el directorio base del usuario.
Independientemente de los métodos mencionados anteriormente, las
declaraciones en estos archivos son idénticas:
#vi java.sh JAVA_HOME="/usr/local/jdk1.5.0_02" CLASSPATH=$JAVA_HOME/jre/lib: $JAVA_HOME/jre/lib/ext PATH="$PATH:/usr/local/ jdk1.5.0_02/bin" export JAVA_HOME export CLASSPATH export PATH #chmod a+x java.sh #cp java.sh /etc/profile
Para verificar la correcta instalación del JDK realice la siguiente prueba:
• Colóquese en un directorio arbitrario del sistema.
• Invoque el comando java -versión.
66
Si observa una respuesta indicando la versión del JDK lo ha instalado
correctamente, en caso contrario realice los pasos anteriores hasta que esta
prueba sea ejecutada correctamente.
Actualizar librerías
Es necesario un vez que se ha instalado el JDK, actualizar las librerías
necesarias dentro del JDK para que FTCW pueda ejecutarse sin ningún
problema. Estas librerías adicionales se encuentran en el CD de instalación
dentro del directorio LIBRERIAS, una vez ubicados en dicho directorio, se
realiza la siguiente actualización:
• Todas la librerías dentro de LIBRERIAS/EXT se deben copiar hacia el
directorio: JAVA_HOME/jre/lib/ext
#cd /media/cdrom/LIBRERIAS/EXT #cp –r * $JAVA_HOME/jre/lib/ext
Instalar FTCW
La instalación del FTCW se la realiza de la siguiente manera:
1.-) Desde el CD de instalación copiar la carpeta FTCW al directorio /usr/local/
67
#cp -r /media/cdrom/FTCW /usr/local
2.-) Desde el CD de instalación copiar el contenido de la Carpeta
SCRIPTS/MySQL al directorio /var/lib/mysql. Ubicarse en el directorio home
de MySQL: /var/lib/mysql, ingresar a MySQL y dentro de MySQL ejecutar el
Srcipt general que creará la base de datos completa. Luego debe ingresar a
la base de datos mysql, borrar los registros de la tabla user que contengan
como Host “%” y además la coincidencia de Host “localhost” y User “” para
evitar accesos de otros usuarios, y definir la clave del usuario root como
grupo3a.
#cd /media/cdrom/FTCW/Scripts/MySQL #cp SRC* /var/lib/mysql #mysql -u root -p Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 30 to server version: 3.23.58 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>source SRC_crea; mysql>use mysql; mysql>delete from user where host like '%'; Mysql> delete from user where host like 'localhost' and User=’root’; mysql>update user set Password=PASSWORD('grupo3a') where User=root; mysql>flush privileges; mysql>quit
3.-) Ejecutar el script “ConfigureFTCW”, el cual hará lo siguiente:
68
• Copiar los procesos daemon ftcwd, bridged al directorio /etc/init.d/
• Creará links simbólicos en los directorios /etc/rc3.d/ y /etc/rc5.d/ llamados
S99ftcwd y S99bridged respectivamente, que apuntarán a los archivos
ftcwd y bridged antes mencionados.
• Se editará la última línea del archivo /etc/services y se añadirá estos dos
servicios especificando el puerto 60000/udp y 600001/udp.
• Se editará la última línea del archivo /etc/rc.local y añadir en la última
línea los scripts de la configuración de las reglas de IPTABLES.
o Levantar el servicio del bridge.
o Establecer reglas de IPTABLES por default.
o Levantar el servicio del FTCW.
#vi ConfigureFTCW #cd /media/cdrom/FTCW/Scripts/CONFIGURE #cp ftcwd /etc/init.d/ #cp bridged /etc/init.d/ #cd /etc/rc3.d/ #ln –s ../init.d/ftcwd S99ftcwd #ln –s ../init.d/bridged S99bridged # #vi ../services …. ftcwd 60000/udp #Capturador de paquetes bridged 60001/udp #Bridge #vi ../rc.local …. service bridged start sh /usr/local/FTCW/Scripts/DefaultIptables.sh sh /usr/local/FTCW/Scripts/ScriptIptables.sh service ftcwd start #_
69
EXPLICACION DEL SISTEMA
FIREWALL TRANSPARENTE DE CONTENIDO WEB
Una vez culminado el proceso de instalación, la aplicación FTCW está
ejecutándose en el sistema operativo. Si se desea llamar a la interfaz gráfica
que permite la administración de la aplicación ejecutamos lo siguiente:
#cd /media/cdrom/FTCW/bin/ftcw/ # #java Iniciar_Sesion #_
Iniciar Sesión
70
La ventana “Inicio de sesión” establece un nivel de seguridad de usuario y
clave, mediante la cual, el administrador tendrá acceso al sistema FTCW.
permite al usuario Administrador acceder al menú principal del sistema
FTCW, donde debe ingresar el usuario y la clave correspondiente.
La ventana presentada anteriormente contiene los siguientes elementos:
• Menú principal,
• Barra de herramientas,
• Barra de Estado
• Sub-Menú
71
MENÚ PRINCIPAL DE LA APLICACIÓN FTCW El menú principal del Firewall Transparente de Contenido Web (FTCW),
describe las opciones para todas las operaciones que realiza la aplicación y
son las siguientes:
Archivo
Opciones
Base de Datos
Reporte
Ver
Ayuda
72
Barra de Herramientas
La componen un conjunto de botones que incluyen los comandos más
comunes que se utilizan en la aplicación como son:
Ejecutar
Detener Captura
Reporte
Configuración de reglas
Respaldar tablas de MySQL
Los botones que componen la barra de herramientas son accesos directos y
se describen a continuación:
73
Ejecutar.- Permite ejecutar la captura de paquetes a través de la aplicación FTCW
Detener Captura Detiene el proceso de captura
Opciones Permite agregar, modificar, eliminar una dirección IP, dominio, frase e incluso información relacionada a los IPTables. Reportes: Permite visualizar los reportes y además se puede establecer rango fechas y horas.
Respaldar MySQL. Almacenar las estructuras de MySQL en un directorio determinado.
Uso de las Barras de Desplazamiento Algunas ventanas o cuadros de diálogo incluyen barras de desplazamiento,
que pueden utilizarse para mostrar en pantalla el texto situado más allá de
los límites de la ventana.
74
Uso de las Barras de Estado El menú Principal consta de una Barra de Estado que muestra el año de su
realización y la Fecha del Sistema.
Botones e Ítems de Control No todos los elementos de una forma representan la información almacenada
en la base de datos, puesto que algunos, como botones, barras de
desplazamiento, etc., se utilizan únicamente para la ejecución de comandos
en la aplicación.
Por ejemplo, un botón puede servir para guardar datos, otro para cerrar una
ventana, etc.
El uso de los diferentes botones y barras se explicarán a continuación:
75
Uso de los Botones A continuación se detallan los botones más usados dentro de las ventanas
de esta aplicación.
Actualizar.- La tabla t_iptables y inserta y actualiza la información en la Base de Datos
Ver Página Permite abrir en un navegador de Internet todos los paquetes correspondientes a un sitio determinado.
Guardar.- Graba los cambios efectuados hasta ese momento
Nuevo Permite el ingreso de una nueva política.
Modificar Cambiar una política.
Eliminar Borrar una política determinada
Aceptar.- Se utiliza especialmente en ventanas de diálogo.
Cancelar.- Cierra diálogos o cancela la ejecución de la ventana
Salir .- Permite cerrar la ventana y regresar al menú principal
76
Menú Archivo
El menú Archivo contiene los siguientes submenús:
Iniciar Captura
Detener Captura
Cambiar Contraseña
Ingresar Usuario
Salir
Ingresar de Usuario
77
La opción Ingresar Usuario, muestra una ventana que le permite ingresar
datos como: el nombre de usuario , su clave, la confirmación de la clave
que le asignó e información personal como los nombres y apellidos.
Una vez que le clic en ingresar aparece un mensaje confirmando que ha sido
guardo los cambios y aceptamos ele mensaje.
78
Consultar
En el caso de consultar un usuario , se debe ingresar los campos del usuario
y clave , luego le da un clic el Botón en Consultar y presenta información
los nombres y apellidos del usuario.
79
En el caso de no ingresar el nombre de usuario y la clave, aparece un
mensaje indicando que todos los campos son requeridos.
Limpiar
Permite deja en blanco los campos para un nuevo ingreso.
Cambiar Contraseña
80
Para cambiar contraseña, debe escribir el usuario y su clave. Una vez
ingresado los campos requeridos se debe dar clic en el botón Verificar.
Si los campos son correctos se deshabilitan los campos anteriormente
mencionados .Luego le va permitir ingresar su nueva clave , la confirmación
la misma.
81
Finalmente se da un clic en el Botón Aceptar, y se presenta un mensaje
confirmando la actualización de la clave
Nota:
Es recomendable que el usuario cambie su clave cada cierto tiempo.
Menú Opciones
Dentro de la Opción Configuración existen 4 viñetas, mismas que se explican
a continuación.
Viñeta Iptables, en esta viñeta se visualiza las reglas establecidas a través
de un bloqueo de dirección IP. Los datos que se presentara en esta ventana
son los siguientes:
82
No: Es un identificador que llega como máximo a numero de Ip’s
diferentes.
IP: Indica la dirección IP visitada
Dominio: Muestra el nombre de la página de la dirección IP visitada.
Frase: Muestra la frase restringida
Restringida: Muestra si la pagina es permitida o restringida.
Además de los datos básicos se presentara también datos estadísticos en los
constan la cantidad de paquetes capturados por dirección IP.
83
En la siguiente figura se muestra un ejemplo del funcionamiento de la
ventana:
Seleccionando un registro, en este caso se elige el once con dirección IP
195.53.123.57 y de dominio www.historiasiglo20.org, presentará en el cuadro
de datos Estadísticos la cantidad de intentos de acceso a esa dirección IP y
la última fecha de acceso.
84
Al presionar el Botón Ver Página abre el navegador Web con la página
eleccionada
Al presionar el Botón Actualizar, se presenta un mensaje indicando que las
glas IPtables se han actualizado.
s
re
85
Viñeta Dirección IP
En esta viñeta permite ingresar, modificar o eliminar una dirección IP, Las
restricciones son establecidas por el Administrador del Sistema dependiendo
del conocimiento del mismo y de las políticas de la organización.
86
Nuevo
ando Clic en el Botón Nuevo, se presenta una ventana en donde se debe
igitar la dirección IP. Por ejemplo: 192.168.150.1
espués de ingresar la dirección IP se procede a dar un Clic en el botón
ceptar.
D
d
D
A
87
Finalmente, la nueva dirección IP aparecerá en la lista de direcciones IP
ensuradas, como muestra la figura siguiente.
a
utomáticamente el Botón Modificar.
c
Modificar
En el caso que se ha ingresado mal la dirección IP, simplemente indicamos
con el Mouse el registro que se va ha cambiar, y se habilit
a
89
Finalmente, los cambios realizados se presentan en la ventana de Opciones
cde Configuración de las Direcciones IP, como muestra en la figura.
liminar
e da un clic con el Mouse el registro que desea quitar, luego se procede a
ar Clic en el Botón Eliminar.
E
S
d
90
l
ptar y el registro queda eliminado,
A continuación se presenta un mensaje para confirmar la eliminación de
registro.
Finalmente, se da clic en el Botón Ace
91
ensaje de Error
ste mensaje aparece cuando se ingresa una dirección IP incompleta o
ualquier carácter. Por ejemplo:
M
E
c
92
n el caso, que s ión IP, por ejemplo
92.168.150.1 y la dirección mencionada anteriormente ya existe, entonces
parecerá un mensaje, donde indica que la dirección ingresada ya esta
definida.
E e quiera modificar una direcc
1
a
93
Viñeta Dominio
sta viñeta muestra los registros con los dominios y su respectivo estado.
e botones que permiten ingresar, modificar o eliminar un Dominio,
también presentan recomendaciones explicando detalladamente su manejo.
Las restricciones son establecidas por el Administrador del Sistema
dependiendo del conocimiento del mismo y de las políticas de la
uevo
ando Clic en el Botón e se
ebe ingresar el dominio.
E
Además d
organización.
N
D Nuevo, se presenta una ventana en dond
d
94
inalmente el dominio agregado aparecerá en el último registro de la opción
En este caso se ingresa tarjetas.com, luego se procede a dar un clic en el
botón Aceptar
F
Dominio.
95
Modificar
el caso que se ha ingresado incorrectamente el dominio, simplemente
dica se habilita
utomáticamente el Botón Modificar.
l dar clic en el Botón Modificar se presenta una ventana en donde se debe
gresar el dominio correcto. Por ejemplo: tarjetas.com.ec
En
in mos con el Mouse el registro que se va ha cambiar, y
a
A
in
96
Al dar clic en el Botón Aceptar, automáticamente se va a registrar en la
ventana de Dominio el registro que ha sido modificado.
Eliminar
Se indica con el Mouse el registro que desea quitar, se procede a dar Clic
en el Botón Eliminar.
97
pciones de Configuración Dominio.
Luego, muestra un mensaje de confirmación para borrar el registro indicado.
Finalmente, se da clic en el Botón Aceptar y queda el registro borrado de las
O
98
Viñeta Frase
sta viñeta muestra los registros con frases y su respectivo estado. Además
permite ingresar, modificar o eliminar una Frase y recomendaciones
explicando detalladamente su manejo.
Las restricciones son establecidas por el Administrador del Sistema
dependiendo del conocimiento del mismo y de las políticas de la
organización.
E
99
Nuevo
Dando Clic en el Botón Nuevo, se presenta una ventana en donde se
debe ingresar la frase. Por ejemplo: Spiderman 3
100
Luego damos clic en el Botón Aceptar y aparece la frase ingresa en las
Opciones de Configuración.
Modificar
Si desea corregir una frase que se encuentre ingresada en la ventana
Opciones de Configuración, simplemente indicamos con el Mouse el registr
que se va ha cambiar, y se habilita automáticamente el Botón Modificar.
Al dar clic en el Botón Modificar se presenta una ventana en donde se deb
ingresar la frase correcta.
o
e
El nuevo registro aparecerá en el lugar del registro modificado.
101
liminar
e da un clic con el Mouse el registro que desea quitar, luego se procede a
ar Clic en el Botón Eliminar.
E
S
d
103
Finalmente, se da un clic en el Botón Aceptar y registro queda eliminado de
las Opciones de Configuración.
e una sola palabra presenta un mensaje de error.
Mensajes de Error
El sistema no acepta frases con una sola palabra, o sea, si ingresa una frase
d
104
espaldar Tabla de MySQL perteneciente al Menu Base de Datos
• t_dominio
• t_ip
• t_usuario
• Todas
uando se elige eriormente, se debe
roceder a dar un clic en el botón Guardar,
Menú Base de Datos
La opción R
permite al Administrador actualizar los datos de las tablas siguientes:
• packetTCP
• t_dns
• t_frase
C una de las opciones mencionadas ant
p
105
Si elige la opción packetTCP almacena información de los paquetes TCP/IP
Si se elige la opción t_ip se actualizara la información de las direcciones IP
que se han bloqueado directamente sin análisis previo. Los datos que se
encuentran en la tabla son: un identificador, la dirección IP, y el estado.
106
Si se elige la opción Todas, se actualizara la información de las tablas,
como: packetTCP, t_dominio, t_ip, t_dns, t_usuario, t_frase.
Si se elige la opción t_frase se actualizara la información de las frases que
stán restringidas o permitidas por el Administrador. Los datos que se
encuentran en la tabla son: un identificador, frase, y el estado.
e
107
Manejo de Reportes
El Reporte es la presentación real de un informe o documento mediante el
cual se plasma toda la información de un proceso realizado sobre la base de
Reglas de Políticas a nivel de Dominios
Reglas de Políticas a nivel de Frases
datos de contenidos.
La ventana de Reportes presenta las siguientes opciones:
Reporte de Restricciones por IP
Reporte de Restricciones por Dominios
Reporte de Restricción por Frases
Reporte de Conexiones
Reporte General de Restricciones
Reglas de Políticas a nivel de Direcciones IP
108
En la par
continuación:
Guardar Permite graxls,etc
te superior aparece una Barra de Herramientas que detalla a
bar el reporte en extensiones pdf,
Imprimir Envía a la impresora. Prev regresa una pagina del documento.
Next, avanza una pagina en el documento
First, va a la primera pagina del documento.
Last Va a la última página del documento. Zoom . Amplia o reduce el tamaño de la página
109
En la ventana de Reportes se presentan los datos más importantes
dependiendo de la opción escogida en la ventana de Selección de
Reportes, La misma que permite elegir dentro varias opciones, mediante un
rango especificado por el Administrador del sistema,.
alla el Reporte
a imprimirse.
Cuando se llama a un Reporte se deberá esperar unos segundos, mientras
se recupera la información. La siguiente figura, indica en Pant
110
Por ejemplo, seleccione la opción de eporte en el área de parámetros de
reporte, en este caso la elección es Reporte por Restricciones de
dirección IP.
Una vez seleccionado el Reporte se procede a dar un clic en el comboBox de
la Fecha Inicial, aparece un calendario en donde se especifica desde que
fecha.
r
n Luego, se da un clic en el ComboBox de la Fecha Final, aparece u
calendario donde se especifica la fecha final del Reporte.
111
También en el reporte existe una opción para especificar una hora inicial y
na hora final.
Pulse el botón Aceptar para poder visualizar el Reporte.
u
Si desea imprimir, seleccione el icono con una impresora de la barra de
herramientas, aparece
la ventana de diálogo Imprimir.
112
Para guardar el Reporte se debe dar clic en el icono Guardar , aparece la
ventana de dialogo Guardar, donde se puede elegir la extension del reporte.
Por ejemplo: xml, pdf, entre otras.
Acerca de
Este ítem presenta un cuadro de diálogo, el cual contiene información el