Tesis Completa-035-2005.pdf - Repositorio Universidad de ...

414
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

Transcript of Tesis Completa-035-2005.pdf - Repositorio Universidad de ...

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.

II

DEDICATORIA Este proyecto va dirigido a mis padres,

hermanas y novio.

Ángela Yanza Montalván

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

GLOSARIO 244

ANEXOS

ANEXO A-1 249

ANEXO A-2 257

ANEXO A-3 258

BIBLIOGRAFIA

259

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”

“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

direcciones, permitiendo mantener oculta la configuración interna de la

red local.

11

ESQUEMA DE FIREWALL TÍPICO ENTRE RED LOCAL E INTERNET

Cuadro 3 Fuente: http://www.monografias.com/trabajos15/firewall-linux

FIREWALL CON FUNCION DE FILTRADO DE PAQUETES

Cuadro 4 Fuente: Investigadores

FIREWALLS CON FUNCION DE PROXYS

Cuadro 5 Fuente: Investigadores

FIREWALL CON FUNCION DE ENCRIPTACION (VPN)

Cuadro 6 Fuente: Investigadores

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.

21

FIREWALL TRANSPARENTE DE CONTENIDO WEB

Cuadro 9 Fuente: Universidad de Guayaquil

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

218

JMENU EM IT

JT NE1 ABBLEDPA

JPAGE1 JPAGE2 J E3 PAG JPAGE4

CONFIGURACION DE REGLAS

Cuadr 1o 12

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

ANEXOS

249

250

251

252

253

254

255

256

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

SEGUNDO TOMO

MANUAL TECNICO

Y

MANUAL DE USUARIO

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

5

ESQUEMA DEL “FTCW”

.

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

.

.

.

7

DIAGRAMA DE CONTEXTO DE LA ARQUITECTURA “FTCW” (NIVEL 1)

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:

MANUAL DE USUARIO

FIREWALL TRANSPARENTE

DE

CONTENIDO WEB

2005

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

88

Luego aparece una pantalla en donde se debe ingresar la dirección IP

correcta

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

102

Luego, muestra un mensaje de confirmación para borrar el registro indicado.

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

113

nombre del sistema, los desarrolladores del mismo y año de elaboración.