control y monitoreo de sesiones de internet mediante un servidor squid en linux

72
´ Indice 1 Introducci´ on 3 1.1 Introducci´ on ....................................... 3 1.2 Planteamiento del problema .............................. 4 1.3 Propuesta de tesis ................................... 5 1.4 Metodolog´ ıa ....................................... 5 1.5 Descripci´ on de tesis .................................. 6 2 Fundamentos te´ oricos 9 2.1 Software libre ...................................... 9 2.2 Sistema operativo Linux ................................ 10 2.3 Red de ´ area local .................................... 13 2.4 Administraci´ on de redes ................................ 18 2.5 Seguridad en redes ................................... 21 2.6 Servidores ........................................ 25 2.7 Internet ......................................... 31 2.8 Lenguaje de programaci´ on ............................... 33 2.9 Scripts .......................................... 36 2.10 MySQL ......................................... 36 2.11 PHP ........................................... 38 3 Desarrollo e implementaci´ on 41 3.1 Instalaci´ on de Fedora Core 4 de Linux ........................ 41 3.2 Configuraci´ on de tarjetas de red ........................... 41 3.3 Activaci´ on de Servicios ................................. 43 3.4 Puente de red ...................................... 44 1

Upload: ingsamc7

Post on 17-Jan-2016

222 views

Category:

Documents


0 download

DESCRIPTION

Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

TRANSCRIPT

Page 1: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

Indice

1 Introduccion 3

1.1 Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 Planteamiento del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.3 Propuesta de tesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.4 Metodologıa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.5 Descripcion de tesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2 Fundamentos teoricos 9

2.1 Software libre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.2 Sistema operativo Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.3 Red de area local . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.4 Administracion de redes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.5 Seguridad en redes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.6 Servidores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

2.7 Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

2.8 Lenguaje de programacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

2.9 Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

2.10 MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

2.11 PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

3 Desarrollo e implementacion 41

3.1 Instalacion de Fedora Core 4 de Linux . . . . . . . . . . . . . . . . . . . . . . . . 41

3.2 Configuracion de tarjetas de red . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.3 Activacion de Servicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

3.4 Puente de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

1

Page 2: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

2 INDICE

3.5 Instalacion de NocatAuth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

3.6 Configuracion de NocatAuth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

3.7 Configuracion de apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

3.8 Puesta en marcha de NoCatAuth . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

3.9 Funcionalidad de la puerta de enlace . . . . . . . . . . . . . . . . . . . . . . . . . 51

3.10 Instalacion y configuracion de webmin . . . . . . . . . . . . . . . . . . . . . . . . 52

3.11 SARG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

3.12 ClamAv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

3.13 Bases de datos en MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

3.14 Diseno PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

3.15 Instalacion y configuracion de Squid . . . . . . . . . . . . . . . . . . . . . . . . . 81

3.16 Configuracion del cortafuegos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

3.17 Configuracion del cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

4 Resultados obtenidos 87

4.1 Analisis de requerimientos sobre Fedora Core 4 de Linux. . . . . . . . . . . . . . 87

4.2 Instalacion de Fedora Core 4 de Linux. . . . . . . . . . . . . . . . . . . . . . . . . 88

4.3 Plataforma Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

4.4 Programacion sobre Fedora Core 4 de Linux. . . . . . . . . . . . . . . . . . . . . 88

4.5 PHP como herramienta de programacion. . . . . . . . . . . . . . . . . . . . . . . 89

4.6 Montar el servidor Squid. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

4.7 Grupos y permisos de usuarios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

4.8 Monitoreo de red. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

4.9 Acceso a paginas con virus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

4.10 Restriccion del ancho de banda . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

4.11 Control de acceso a mensajeros instantaneos a traves de su numero de puerto . . 101

4.12 Restriccion de direcciones ip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

4.13 Restriccion de usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

4.14 Restriccion de paginas de Internet . . . . . . . . . . . . . . . . . . . . . . . . . . 108

5 Conclusiones 109

Page 3: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

Lista de Figuras

2.1 Comparacion entre un sistema de archivos y el sistema de nombres de dominio . 27

2.2 Sistema de archivos tradicional . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2.3 Sistema de nombres de dominio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.4 Estructura jerarquica del DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3.1 Limpiar iptables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

3.2 Pagina principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

3.3 Pagina de bienvenida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

3.4 Autenticacion del administrador . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

3.5 Menu del administrador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

3.6 Restringir una direccion ip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

3.7 Restriccion de un rango de direcciones ip . . . . . . . . . . . . . . . . . . . . . . 61

3.8 Desbloquear direcciones ip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

3.9 Restringir usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

3.10 Desbloquear usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

3.11 Restringir el ancho de banda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

3.12 Restringir paginas de Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

3.13 Alta de alumnos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

3.14 Baja de alumnos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

3.15 Crear reportes parte 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

3.16 Crear reportes parte 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

3.17 Crear reportes parte 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

3.18 Revisar reportes anteriores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

3.19 Cambiar contrasena del administrador . . . . . . . . . . . . . . . . . . . . . . . . 74

3

Page 4: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

4 LISTA DE FIGURAS

3.20 Autenticacion del usuario privilegiado . . . . . . . . . . . . . . . . . . . . . . . . 75

3.21 Menu del usuario privilegiado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

3.22 Restringir una direccion ip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

3.23 Restringir un rango de direcciones ip . . . . . . . . . . . . . . . . . . . . . . . . . 78

3.24 Desbloquear direcciones ip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

3.25 Cambiar contrasena del usuario privilegiado . . . . . . . . . . . . . . . . . . . . . 80

4.1 Top paginas accesadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

4.2 Top acceso de sesiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

4.3 Sitios de Internet y sesiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

4.4 Descargas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

4.5 Tiempo de conexion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

4.6 Sitios denegados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

4.7 Ancho de banda utilizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

4.8 Velocidades de transmision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

4.9 Comparacion de la variacion de la velocidad de transmision . . . . . . . . . . . . 101

4.10 Acceso de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

4.11 Direccion denegada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

4.12 Direccion denegada (2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

4.13 Usuario restringido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

4.14 Restringir www.playboy.com . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

4.15 Restringir www.download.com . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

Page 5: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

CONTROL Y MONITOREO DE SESIONES DE

INTERNET MEDIANTE UN SERVIDOR SQUID EN

LINUX

JORGE ALVAREZ LOZANO

CARLOS SANDOVAL MEDINA

5 DE JUNIO DEL 2007

Page 6: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

2 LISTA DE FIGURAS

Page 7: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

Capıtulo 1

Introduccion

1.1 Introduccion

En la era que nos toca vivir, la llamada sociedad de la tecnologıa o del conocimiento,

podemos hablar que la Internet mas alla de ser una moda se ha convertido en una necesidad, sus

caracterısticas: informativa, documental y transaccional hacen que tenga un impacto profundo

en el trabajo, el ocio y el conocimiento. Dentro de los aspectos del conocimiento, podemos

mencionar que actualmente la mayorıa de las instituciones de educacion cuentan con centros

de informatica que potencian los procesos de ensenanza-aprendizaje.

Gracias a la dimension que nos dan las herramientas de la Internet, podemos encontrar

en ella diferentes contextos virtuales, los mismos que dan la pauta para que los usuarios se

descontextualicen del mundo real que les rodea, es decir, millones de usuarios tienen acceso

facil e inmediato a una gran cantidad de informacion diversa en lınea y al mismo tiempo.

La informacion que fluye en la Internet es variada y descentralizada, ası, desde la perspec-

tiva del conocimiento, Internet ha sido una ventaja y al mismo tiempo una responsabilidad de

quien la utiliza, ya que puede proporcionar una cantidad significativa de informacion y de una

interactividad que seria inaccesible de otra manera, aunque por otro lado esta descentralizacion

representa contenidos que denigran la formacion de las instituciones educativas, tal es el caso

de la industria de la pornografıa.

Se podrıa mencionar que son pocas las instituciones educativas que dan un uso adecuado

3

Page 8: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

4 CAPITULO 1. INTRODUCCION

a esta tecnologıa, ya que algunos utilizan la Internet solo para los mensajeros instantaneos,

descargar musica, pelıculas, videos, etc. Muchos gobiernos han procurado sin exito poner

restricciones en el uso de estas industrias en Internet, de tal manera que, una solucion a esto

seria restringir todos estos accesos a traves de software y hardware implantado en las mismas

instituciones educativas como metodos de administracion y seguridad en los accesos de los

usuarios.

1.2 Planteamiento del problema

En algunas instituciones educativas aun no se cuenta con un control de administracion y

seguridad sobre las sesiones de Internet, lo cual provoca que los estudiantes puedan acceder y

descargar cualquier tipo de contenido o informacion.

Esto provoca que cuando un profesor esta impartiendo clase, la mayorıa de los estudiantes

pierden el interes del curso al preferir navegar en la red, lo que provoca un deficit en el proceso

de ensenanza-aprendizaje y en el uso adecuado del Internet.

Por esta razon este proyecto de investigacion y desarrollo esta orientado hacia la ad-

ministracion de sesiones en Internet mediante filtros1 y el uso de un servidor bajo ambiente

Linux, todo ello orientado a mejorar los procesos de ensenanza-aprendizaje de la Universi-

dad Autonoma de Zacatecas Campus Jalpa; dentro de las pretensiones del proyecto se quiere

generar en el campus universitario la cultura del uso adecuado de las herramientas de Internet

y al mismo tiempo restringir y registrar actos que denigren la imagen de la institucion.

Justificacion

Algunas de las conveniencias para montar un servidor Squid2 en Linux como software

libre, son:

• Usar el sistema operativo con cualquier proposito.

• Estudiar y adecuar su funcionamiento.

1Un filtro, es un programa o conjunto de estos, que procesan una serie de datos generando una salida

modificada conforme a lo que se especifique.2Squid, es un servidor que permite utilizar una sola conexion a Internet para todas las estaciones de los

centros de acceso para la navegacion en Internet.

Page 9: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

1.3. PROPUESTA DE TESIS 5

• Redistribucion.

• Mejorar el programa y hacer publicas las mejoras.

En virtud de que la mayorıa de los sistemas de monitoreo y control de PCs (Personal Com-

puters, Computadoras Personales) son creados bajo el Sistema Operativo Windows, el montar

un servidor Squid de Linux para el control y monitoreo de sesiones de Internet repercutira en

el aprendizaje de nuevas tecnologıas que traeran beneficios a los usuarios finales.

1.3 Propuesta de tesis

Montar un servidor Squid en conjunto con las herramientas SARG, ClamAv, progra-

macion en PHP, para controlar y monitorear el trafico de Internet en la Universidad Autonoma

de Zacatecas Campus Jalpa.

1.4 Metodologıa

Objetivos especıficos

• Analizar los requerimientos de Fedora Core 4 Linux.

• Instalar Fedora Core 4 de Linux.

• Conocer el ambiente Linux.

• Conocer la programacion en Fedora Core 4 de Linux.

• Utilizar PHP como lenguaje y herramienta de programacion.

• Montar un servidor Squid.

• Otorgar permisos a cada grupo de usuarios.

– Administrador.

∗ Control total sobre computadoras y sesiones.

– Privilegiados.

∗ Control sobre computadoras.

– Alumnos.

Page 10: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

6 CAPITULO 1. INTRODUCCION

∗ Ningun control, solo acceso.

• Monitoreo y control.

– Reporte(s) de acceso de sesion(es): (Aplicaciones/ Herramientas/ Programacion:

Squid, SARG, ClamAV, Scripts, Sql)

∗ Top paginas accesadas.

∗ Top acceso sesiones.

∗ Sitios y sesiones.

∗ Download.

∗ Tiempo de conexion.

∗ Sitios denegados.

∗ Ancho de banda utilizado.

∗ Autenticaciones fallidas a sitios web.

∗ Paginas accesadas que contengan virus.

– Control del ancho de banda de las sesiones.

– Control de acceso a mensajeros instantaneos a traves de su numero de puerto.

– Control de clientes a traves de direccionamiento estatico.

– Control de sesiones.

– Control de sitios de Internet.

1.5 Descripcion de tesis

En el capıtulo 2 se da una descripcion sobre los elementos teorico-basicos relacionados

con el tema de tesis, ası como una definicion de software libre y sus diferencias con respecto

al software comercial o del dominio publico. Se define tambien el sistema operativo Linux, sus

caracterısticas, las distribuciones con las que cuenta y las herramientas que proporciona para

la administracion y monitoreo de redes. Ademas se tratan conceptos basicos de redes como

por ejemplo: red de area local, ventajas, componentes, topologıas, administracion, seguridad,

etc. Se abordan tambien temas sobre servidores, como: tipos, caracterısticas, funciones, In-

ternet, etc. Y por ultimo se tocan temas de programacion como: lenguaje de programacion,

clasificacion, bases de datos, etc.

Page 11: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

1.5. DESCRIPCION DE TESIS 7

En el Capıtulo 3 se da una explicacion del trabajo llevado a cabo, es decir, todo el

desarrollo del trabajo experimental, comenzando por la instalacion del sistema operativo y

configuracion del mismo, instalacion y configuracion de las tarjetas de red, la configuracion de

algunos servicios de red como son el apache, iptables, MySQL, la conexion del servidor con

la red local, instalacion y configuracion de las herramientas necesarias como son NocatAuth,

Webmin, Squid, el diseno PHP y la configuracion de Squid.

En el Capıtulo 4 se muestra los resultados obtenidos despues del desarrollo, implantacion

y verificacion del funcionamiento del sistema operativo, la distribucion y las herramientas de

red utilizadas, entre otras cosas.

En el Capıtulo 5 se muestra las conclusiones obtenidas a partir de los objetivos planteados

en el protocolo de tesis.

Page 12: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

8 CAPITULO 1. INTRODUCCION

Page 13: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

Capıtulo 2

Fundamentos teoricos

2.1 Software libre

Software libre [1], es el software que, una vez obtenido, puede ser usado, copiado, estu-

diado, modificado y redistribuido libremente. El software libre suele estar disponible gratuita-

mente en Internet, o a precio de costo de la distribucion a traves de otros medios; sin embargo no

es obligatorio que sea ası y, aunque conserve su caracter de libre, puede ser vendido comercial-

mente. Analogamente, el software gratuito denominado usualmente freeware incluye en algunas

ocasiones el codigo fuente; sin embargo, este tipo de software no es libre en el mismo sentido

que el software libre, al menos que se garanticen los derechos de modificacion y redistribucion

de dichas versiones modificadas del programa.

No debe confundirse software libre con software del dominio publico. Este ultimo es aquel

por el que no es necesario solicitar licencia alguna y cuyos derechos de explotacion son para

todos los usuarios por igual. Cualesquiera puede hacer uso de el, siempre con fines legales y

consignando su autorıa original. Este software serıa aquel cuyo autor lo cede los derechos en

beneficio de la humanidad, o cuyos derechos de autor han expirado. Si un autor condiciona su

uso bajo una licencia, por muy debil que sea, ya no es del dominio publico. En resumen, el

software de dominio publico es la definicion pura de la libertad de usufracto de una propiedad

intelectual que tiene la humanidad porque ası lo ha decidido su autor o la ley tras un plazo

contado desde la muerte de este, habitualmente 70 anos.

9

Page 14: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

10 CAPITULO 2. FUNDAMENTOS TEORICOS

2.2 Sistema operativo Linux

Linux, es un sistema operativo compatible con el sistema operativo Unix. Dos carac-

terısticas muy peculiares lo diferencıan del resto de los sistemas operativos que se pueden

encontrar en el mercado; la primera, es que es libre, esto significa que no se deben de pagar

licencias a ninguna empresa desarrolladora de software por el uso del mismo, la segunda, es que

el sistema operativo parte de su codigo fuente.

Linux se distribuye bajo la GNU [2] (General Public License, Licencia Publica General)

por lo tanto, el codigo fuente tiene que estar siempre accesible y cualquier modificacion o trabajo

derivado tiene que contar con esta licencia.

Linux es un sistema de tipo UNIX, y por tanto, posee las caracterısticas tıpicas de los

sistemas UNIX. Se trata de un sistema multiusuario y multitarea de proposito general. Algunas

de sus caracterısticas especıficas mas relevantes son las siguientes:

• Cuenta con un codigo independiente del procesador en la medida de lo posible. Aunque

inicialmente se desarrollo para procesadores Intel, se ha transportado a otras arquitecturas

con un esfuerzo relativamente pequeno.

• Se puede adaptar a computadoras de muy diversas caracterısticas. Como el desarrollo

inicial se realizo en computadoras con recursos limitados, ha resultado un sistema que

puede trabajar en computadoras con prestaciones muy diferentes.

• Permite incluir de forma dinamica nuevas funcionalidades al nucleo del sistema operativo

gracias al mecanismo de los modulos.

• Proporciona soporte para una gran variedad de tipos de sistemas de archivos, entre ellos

los utilizados en Windows.

• Es capaz de manejar distintos formatos de archivos ejecutables.

• Proporciona soporte para multiprocesadores utilizando un esquema de multiproceso simetrico.

• Para aprovechar al maximo el paralelismo del hardware, se ha ido modificando progresi-

vamente el nucleo con el objetivo de aumentar su concurrencia interna.

Page 15: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

2.2. SISTEMA OPERATIVO LINUX 11

En cuanto a la estructura de Linux, tiene una organizacion monolıtica, al igual que ocurre

con la mayorıa de las implementaciones de UNIX. A pesar de este caracter monolıtico, el nucleo

no es algo estatico y cerrado, sino por el contrario se pueden anadir y quitar modulos de codigo

en tiempo de ejecucion, se trata de un mecanismo similar al de las bibliotecas dinamicas pero

aplicado al propio sistema operativo, se pueden anadir modulos que corresponden con nuevos

tipos de sistemas de archivos, nuevos manejadores de dispositivos o gestores de nuevos formatos

ejecutables.

Un sistema Linux completo no solo esta formado por el nucleo monolıtico, sino tambien

incluye programas y bibliotecas del sistema.

Debido a las dificultades que hay para instalar y configurar el sistema, existen diversas

distribuciones de Linux que incluyen el nucleo, los programas y las bibliotecas del sistema, ası

como un conjunto de herramientas de instalacion y configuracion que facilitan considerable-

mente esta ardua labor[3].

Distribuciones Linux

Una distribucion Linux, es un conjunto de aplicaciones reunidas que permiten brindar

mejoras para instalar facilmente un sistema Linux. Son presentaciones de Linux que, en lo

general, se destacan por las herramientas para configuracion y sistemas de paquetes de software

a instalar.

Existen numerosas distribuciones Linux, cada una de ellas puede incluir cualquier numero

de software adicional, como algunos que facilitan la instalacion del sistema y una gran variedad

de aplicaciones, entre ellos, entornos graficos, suites ofimaticas, servidores de Internet, servidores

de correo, etcetera.

Distribuciones:

• Debian.

• Red Hat Linux.

• Suse.

• Fedora.

Page 16: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

12 CAPITULO 2. FUNDAMENTOS TEORICOS

• Ubuntu.

• Rxart.

• Slackware.

• Mandrivia.

• Knoppix.

• Gentoo.

Herramientas de red

PAM (Pluggable Authentication Module, Modulos de Autenticacion Conectables)

Los modulos de autenticacion conectables, permiten al administrador utilizar esquemas

de autentificacion comun que se pueden usar con una gran variedad de aplicaciones, haciendo

el proceso de verificacion de usuarios mas sencillo y transparente.

Kerberos

Kerberos era el perro de tres cabezas de la mitologıa griega que representaba seguridad, por

ser quien cuidaba las puertas del infierno. Este es un servicio que tiene por objetivo principal

proporcionar un sistema de autenticacion entre clientes y servidores que evite que las contrasenas

de los usuarios viajen continuamente por la red.

Tripwire

Tripwire puede ayudar a asegurar la integridad de ficheros y directorios de sistemas es-

enciales identificando todos los cambios hechos a ellos. El uso de Tripwire para detectar in-

tromisiones y fijar danos, ayuda a mantener al tanto de los cambios que sufre el sistema al

administrador. Compara los ficheros y directorios con la ubicacion real de los mismos en una

base de datos, las fechas en que han sido modificados, entre otros datos.

SSH

SSH (Secure SHell, Shell Seguro) es un protocolo para crear conexiones seguras entre

dos sistemas. Usando SSH, la computadora del cliente inicia una conexion segura con un

servidor, ya que la informacion es cifrada. El cliente puede verificar que se esta conectando al

Page 17: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

2.3. RED DE AREA LOCAL 13

mismo servidor durante sesiones posteriores. SSH hace relativamente sencilla la tarea de cifrar

diferentes tipos de comunicacion, que normalmente se envıa en modo inseguro a traves de redes

publicas.

Apache

La combinacion del servidor apache con el modulo de seguridad de SSL (Secure Socket

Layer, Capa de Conexiones Seguras), librerıas y el kit de herramientas OpenSSL proporcionados

por Red Hat Linux, es lo que se conoce como Servidor de Web Seguro (Secure Web Server).

Este servidor incluye el OpenSSL Project [4], un kit de herramientas que implementa los

protocolos SSL y TLS (Transport Layer Secure, Capa de Transporte Segura), ası como una

librerıa de codificacion de proposito general. El protocolo SSL se usa actualmente para la

transmision de datos seguros sobre Internet, el protocolo TLS es un estandar de Internet para

comunicaciones privadas y fiables a traves de Internet.

Squid

Squid es un servidor que permite utilizar una sola conexion a Internet para todas las

estaciones de los centros de acceso para la navegacion por Internet, siendo confiable, robusto

y versatil. Al ser software libre, su codigo fuente esta disponible y libre del pago de costosas

licencias por uso o con restriccion a un uso con determinado numero de usuarios.

Beneficios:

• Acceso transparente a Internet, por medio de cualquier programa, y a cualquier servicio.

• Posibilidad de un control absoluto de los accesos a Internet, por fecha, hora, lugar, e

incluso persona.

• Capacidad de control de paginas prohibidas.

2.3 Red de area local

Una LAN (Local Area Network, Red de Area Local) se define como aquella red que sirve

para interconectar equipos en una misma area y que no utiliza medios de telecomunicaciones

externos. Como su nombre lo indica; su ambito es limitado, aunque no por ello, no pueda llegar

Page 18: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

14 CAPITULO 2. FUNDAMENTOS TEORICOS

a ser una red compleja, su uso mas comun suele ser la interconexion de los equipos de una

oficina, una planta o un edificio[6].

El termino red local incluye tanto el hardware como el software necesarios para la inter-

conexion de los distintos dispositivos y el tratamiento de la informacion.

En fechas anteriores a las computadoras personales, una empresa podıa tener solamente

una computadora central, accediendo los usuarios a esta vıa terminales de la computadora sobre

un cable simple de baja velocidad. Las primeras LAN fueron creadas al final de 1970 y se solıan

crear lıneas de alta velocidad para conectar grandes computadoras centrales a un solo lugar.

El crecimiento basado en las computadoras personales significo que en un lugar fısico

existieran docenas o incluso cientos de computadoras. La intencion inicial de conectar estas

computadoras fue, generalmente compartir espacio de disco e impresoras laser, tales recursos

eran muy caros en este tiempo. Habıa muchas expectativas sobre este tema desde 1983 y la

industria informatica declaro que el siguiente ano serıa el ano de las LAN.

Pero esta idea se vino abajo debido a la proliferacion de las incompatibilidades de la capa

fısica, la implantacion del protocolo de red y confusion sobre la mejor forma de compartir los

recursos. Lo normal era que cada vendedor tuviera tarjeta de red, cableado, protocolo y sistema

de operacion de red. Con la aparicion de Netware surgio una nueva solucion, la cual ofrecıa:

soporte imparcial para los 40 o mas tipos que existıan de tarjetas, cables y sistemas operativos

mucho mas sofisticados que los ofrecidos por la mayorıa de los competidores. Netware dominaba

el campo de las LAN de las computadoras personales desde antes de su introduccion en 1983

hasta mediados de los anos 90’s, cuando Microsoft introdujo Windows NT Advance Server y

Windows for Workgroups.

Ventajas

En una empresa suelen existir muchas computadoras, las cuales necesitan de su propia

impresora para estampar informes (redundancia de hardware), los datos almacenados en uno de

los equipos pueden ser necesarios en otro de los equipos de la empresa, por lo que sera necesario

copiarlos en este ultimo, pudiendo producirse desfases entre los datos de un usuario o los de otro,

la ocupacion de los recursos de almacenamiento en disco se multiplican (redundancia de datos),

las computadoras que trabajen con los mismos datos tendran que tener programas iguales para

Page 19: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

2.3. RED DE AREA LOCAL 15

manejar dichos datos (redundancia de software). La solucion a estos problemas se llama red

de area local. La LAN permite compartir bases de datos (se elimina la redundancia de datos),

programas (se elimina la redundancia de software) y perifericos como puede ser un modem, una

tarjeta RDSI (Red Digital de Servicios Integrados), una impresora (se elimina la redundancia

de hardware); poniendo a disposicion otros medios de comunicacion como pueden ser el correo

electronico y el chat. Permite realizar un proceso distribuido, es decir, las tareas se pueden

repartir en distintas computadoras y permite la integracion de los procesos y datos de cada

uno de los usuarios en un sistema de trabajo corporativo, tener la posibilidad de centralizar

informacion o procedimientos, facilita la administracion y la gestion de los equipos. Ademas

una LAN conlleva un importante ahorro, tanto de dinero como de tiempo, ya que no es necesario

comprar demasiados perifericos y se puede utilizar una sola conexion telefonica, compartida por

varias computadoras conectadas en red; ademas se logra gestion de la informacion y del trabajo

ahorrando tiempo.

El objetivo principal de una LAN es permitir la intercomunicacion de computadoras.

Caracterısticas

• Tecnologıa broadcast (difusion) con el medio de transmision compartido.

• Cableado especıfico instalado normalmente a proposito.

• Capacidad de transmision comprendida entre 1 Mbps y 1 Gbps.

• Extension maxima no superior a 3 kms.

• Uso de un medio de comunicacion privado.

• La simplicidad del medio de transmision que utiliza.

• La facilidad con que se pueden efectuar cambios en el hardware y el software.

• Gran variedad y numero de dispositivos conectados.

• Posibilidad de conexion con otras redes.

Topologıa de red

La topologıa de red define la estructura de una red. Una parte de la definicion topologica,

es la topologıa fısica, que es la disposicion real de los cables o medios. La otra parte es la

Page 20: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

16 CAPITULO 2. FUNDAMENTOS TEORICOS

topologıa logica, que define la forma en que las computadoras acceden a los medios para enviar

datos. Las topologıas mas comunes son las siguientes:

Topologıas fısicas

• Una topologıa de bus usa un solo cable backbone que debe terminarse en ambos extremos.

Todas las computadoras se conectan directamente a este backbone.

• La topologıa de anillo conecta una computadora con la siguiente y a la ultima computadora

con la primera. Esto crea un anillo fısico de cable.

• La topologıa en estrella conecta todos los cables con un punto central de concentracion.

• Una topologıa en estrella extendida conecta estrellas individuales entre sı mediante la

conexion de hubs o switches. Esta topologıa puede extender el alcance y la cobertura de

la red.

• Una topologıa jerarquica es similar a una estrella extendida, pero en lugar de conectar

los hubs o switches entre sı, el sistema se conecta con una computadora que controla el

trafico de la topologıa.

• La topologıa de malla se implementa para proporcionar la mayor proteccion posible para

evitar una interrupcion del servicio.

Topologıas logicas

La topologıa logica de una red es la forma en que las computadoras se comunican a traves

del medio de transmision. Los dos tipos mas comunes de topologıas logicas son broadcast y

transmision de tokens.

• La topologıa broadcast simplemente significa que cada computadora envıa sus datos hacia

todas las demas computadoras del medio de red. No existe un orden que las computadoras

deban seguir para utilizar la red. Es por orden de llegada, es como funciona Ethernet.

• La topologıa de transmision de tokens controla el acceso a la red mediante la transmision

de un token electronico a cada computadora de forma secuencial. Cuando una com-

putadora recibe el token, esa computadora puede enviar datos a traves de la red. Si la

Page 21: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

2.3. RED DE AREA LOCAL 17

computadora no tiene ningun dato para enviar, transmite el token a la siguiente computa-

dora y el proceso se vuelve a repetir. Dos ejemplos de redes que utilizan la transmision

de tokens son Token Ring y FDDI (Interfaz de datos distribuida por fibra).

Componentes

Servidor: el servidor es una o varias computadoras que van a compartir sus recursos

hardware y software con los demas equipos de la red. Sus caracterısticas son potencia de

calculo, importancia de la informacion que almacena y conexion con recursos que se desean

compartir.

Estacion de trabajo: los equipos que toman el papel de computadora cliente aprovechan

o tienen a su disposicion los recursos que ofrece la red, ası como los servicios que proporcionan

los servidores a los cuales pueden acceder.

Puerta de enlace o pasarelas: es un hardware y software que permite las comunicaciones

entre la red local y grandes computadoras (mainframes). La puerta de enlace adapta los

protocolos de comunicacion del mainframe a los de la red, y viceversa.

Bridge o puente: es un hardware y software que permite que se conecten dos LAN entre

sı. Un puente interno es el que se instala en un servidor de la red, y un puente externo es el

que se hace sobre una computadora de la misma red. Los puentes tambien pueden ser locales

o remotos. Los puentes locales son los que conectan a redes de un mismo edificio, usando

tanto conexiones internas como externas. Los puentes remotos conectan redes distintas entre

sı, llevando a cabo la conexion a traves de redes publicas, como la red telefonica, RDSI o red

de conmutacion de paquetes.

Tarjeta de red: tambien se denominan NIC (Network Interface Card, Tarjeta de Inter-

faz de Red), basicamente realiza la funcion de intermediario entre la computadora y la red de

comunicacion. En ella se encuentran grabados los protocolos de comunicacion de la red. La co-

municacion con la computadora se realiza normalmente a traves de las ranuras de expansion que

esta dispone, ya sea ISA (Industry Standard Architecture, Arquitectura Estandar Industrial),

PCMCIA (Personal Computer Memory Card International Association, Asociacion Interna-

cional de Tarjetas de Memoria para Computadoras Personales) o PCI (Peripheral Component

Page 22: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

18 CAPITULO 2. FUNDAMENTOS TEORICOS

Interconnect, Interconexion de Componentes Perifericos). Aunque algunos equipos disponen de

este adaptador integrado directamente en la placa base.

El medio: constituido por el cableado y los conectores que enlazan los componentes de

la red. Los medios fısicos mas utilizados son el cable de par trenzado, cable coaxial y la fibra

optica.

Concentradores de cableado: una LAN en bus usa solamente tarjetas de red en las esta-

ciones y cableado coaxial para interconectarlas, ademas de los conectores; sin embargo, este

metodo complica el mantenimiento de la red ya que si falla alguna conexion, toda la red deja

de funcionar. Para impedir este tipo de problemas las LAN usan concentradores de cableado

para realizar las conexiones de las computadoras, el concentrador las centraliza en un unico dis-

positivo manteniendo indicadores luminosos de su estado e impidiendo que una de ellas pueda

hacer fallar toda la red.

Existen dos tipos de concentradores de cableado:

1. Concentradores pasivos: actuan como un simple concentrador cuya funcion principal consiste

en interconectar toda la red.

2. Concentradores activos: ademas de su funcion basica de concentrador tambien amplifican y

regeneran las senales recibidas antes de ser enviadas.

Los concentradores de cableado tienen dos tipos de conexiones: para las estaciones y

para unirse a otros concentradores y ası aumentar el tamano de la red. Los concentradores de

cableado se clasifican dependiendo de la manera en que internamente realizan las conexiones y

distribuyen los mensajes.

2.4 Administracion de redes

La administracion de redes [7] abarca un amplio numero de cuestiones. En general, se

suelen tratar con muchos datos estadısticos e informacion sobre el estado de distintas partes de

la red, y se realizan las acciones necesarias para ocuparse de fallos y otros cambios. La tecnica

mas primitiva para la monitorizacion de una red es hacer pinging a las computadoras crıticas; el

pinging se basa en un datagrama de eco, que es un tipo de datagrama que produce una replica

inmediata cuando llega al destino. La mayorıa de las implementaciones TCP (Transfer Control

Page 23: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

2.4. ADMINISTRACION DE REDES 19

Protocol, Protocolo de Control de Transmision)/IP(Internet Protocol, Protocolo de Internet)

incluyen un programa (generalmente, llamado ping) que envıa un eco a una computadora en

concreto. Si se recibe la replica, se sabra que la computadora se encuentra activa, y que la red

que los conecta funciona; en caso contrario, se estara al tanto que hay algun error. Se puede

normalmente conocer que ocurre en la red, mediante pinging a un razonable numero de com-

putadoras. Si los ping a todas las computadoras de una red no dan respuesta, es logico concluir

que la conexion a dicha red, o la propia red, no funciona. Si solo una de las computadoras

no da respuesta, pero las demas de la misma red responden, es razonable concluir que dicha

computadora no funciona.

Tecnicas mas sofisticadas de monitorizacion necesitan conocer informacion estadıstica y

el estado de varios dispositivos de la red. Para ello necesitara llevar la cuenta de varias clases de

datagramas, ası como de errores de varios tipos. Este tipo de informacion sera mas detallada en

las puertas de enlace, puesto que la puerta de enlace clasifica los datagramas segun protocolos e,

incluso, ella misma responde a ciertos tipos de datagramas. Sin embargo, los puentes e incluso

los repetidores con buffer contabilizan los datagramas reenviados y errores de interface, siendo

posible recopilar toda esta informacion en un punto de monitorizacion central.

Tambien hay un enfoque oficial TCP/IP para llevar a cabo la monitorizacion. En la

primera fase, se usa un conjunto de protocolos SGMP (Simple Gateway Monitoring Protocol,

Protocolo Simple de Monitoreo de Frontera) y SNMP (Simple Network Management Protocol,

Protocolo Simple de Administracion de Red), ambos disenados para recoger informacion y

cambiar los parametros de la configuracion y otras entidades de la red. Se pueden ejecutar los

correpondientes programas en cualquier computadora de la red. SGMP esta disponible para

varias puertas de enlace comerciales, ası como para sistemas Unix que actuan como puerta de

enlace. Cualquier implementacion SGMP necesita que se proporcione un conjunto de datos

para que pueda empezar a funcionar, y tienen mecanismos para ir anadiendo informaciones

que varıan de un dispositivo a otro. A finales de 1988 aparecio una segunda generacion de

este protocolo, SNMP, que es ligeramente mas sofisticado y necesita mas informacion para

trabajar y, para ello, usa el llamado MIB (Management Information Base). En lugar de usar

una coleccion de variable SNMP, el MIB es el resultado de numerosas reuniones de comites

formados por vendedores y usuarios.

En terminos generales, todos estos protocolos persiguen el mismo objetivo: permitir

Page 24: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

20 CAPITULO 2. FUNDAMENTOS TEORICOS

recoger informacion crıtica de una forma estandarizada. Se ordena la emision de datagra-

mas UDP (User Datagram Protocol, Protocolo de Datagramas de Usuario) desde un programa

de administracion de redes que se encuentra ejecutando en alguna de las computadoras de red.

Generalmente, la interaccion es bastante simple, con el intercambio de un par de datagramas:

una orden y una respuesta. El mecanismo de seguridad tambien es bastante simple, siendo

posible que se incluyan contrasenas en las ordenes. Tambien existen mecanismos de seguridad

mas elaborados, basados en la criptografıa.

Probablemente se quiera configurar la administracion de la red con las herramientas que

se tienen a disposicion para controlar diversas actividades. Para redes con pocas terminales,

se quieren controlar cuando los dispositivos de conmutacion fallan, esten fuera de servicio por

mantenimiento y cuando haya fallos en las lıneas de comunicacion u otro hardware. Es posible

configurar SGMP y SNMP para que usen “trap” (mensajes no solicitados) para una computa-

dora en particular o para una lista de computadoras cuando ocurre un evento crıtico (por

ejemplo, lıneas activas o desactivas). No obstante, no es realista esperar que un dispositivo de

conmutacion nos notifique cuando falla. Tambien es posible que los mensajes “trap” se pierdan

por un fallo en la red, o por sobrecarga, ası que no se puede depender completamente de los

“traps”. No obstante, es conveniente que los dispositivos de conmutacion reunan regularmente

este tipo de informacion. Hay varias herramientas que visualizan un mapa de la red, donde los

objetos cambian de color cuando cambian de estado, y hay cuadros que muestran estadısticas

sobre los datagramas y otros objetos.

Otro tipo de monitorizacion deseable es recolectar informacion para hacer informes periodicos

del porcentaje de uso de la red y prestaciones. Para ello, se necesita analizar cada dispositivo

de conmutacion y solo tomar los datos de interes.

Serıa posible que cualquier tipo de conmutador pudiese usar cualquier tipo de tecnica

de monitorizacion, sin embargo, generalmente los repetidores no proporcionan ningun tipo de

estadıstica, debido a que normalmente no tienen ningun procesador para abaratar su precio.

Por otro lado, es posible usar un software de administracion de redes con repetidores con buffer,

puentes y puertas de enlace. Las puertas de enlace, en la mayorıa de los casos, incluyen un

avanzado software de administracion de redes, ademas pueden manejar IP y los protocolos

de monitorizacion anteriormente mencionados y la mayorıa de los puentes tienen medios para

poder recoger algunos datos de prestaciones. Puesto que los puentes no estan dirigidos a ningun

Page 25: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

2.5. SEGURIDAD EN REDES 21

protocolo en particular, la mayorıa de ellos no tienen el software necesario para implementar los

protocolos TCP/IP de administracion de redes. En algunas ocasiones, la monitorizacion puede

hacerse tecleando algunos comandos a una consola a la que este directamente conectada, en los

restantes casos, es posible recoger datos a traves de la red, pero el protocolo requerido no suele

ser ningun estandar.

Excepto para algunas pequenas redes, se debe insistir en que cualquier dispositivo con-

mutador mas complejo que un simple repetidor sea capaz de recolectar estadısticas y algun

mecanismo para trabajar con ellas de forma remota. Aquellas partes de la red que no soporten

dichas operaciones pueden monitorizarse mediante pinging.

2.5 Seguridad en redes

Las redes de comunicaciones publicas tradicionalmente no han sido seguras, en el sentido

de proporcionar niveles elevados de seguridad a la informacion que se esta transmitiendo. Como

estas redes se estan utilizando cada vez mas para transacciones comerciales, la necesidad de

proporcionar seguridad esta llegando a ser crıtica[17].

Cortafuegos

Un cortafuegos [8] es un dispositivo que permite o restringe las transmisiones de una red

a otra. Un uso tıpico es situarlo entre una LAN y la red Internet, como dispositivo de seguridad

para evitar que los intrusos puedan acceder a informacion confidencial.

Un cortafuegos es simplemente un filtro que controla todas las comunicaciones que pasan

de una red a la otra y en funcion de lo que se permite o deniega a su paso. Para permitir o

denegar una comunicacion el cortafuegos examina el tipo de servicio al que corresponde, como

pueden ser el Internet o el correo. Dependiendo del servicio el cortafuegos decide si lo permite

o no, ademas, el cortafuegos examina si la comunicacion es entrante o saliente y dependiendo

de su direccion puede permitirla o no.

De este modo un cortafuegos puede permitir desde una LAN hacia Internet servicios de

web, correo, ftp, etc. Tambien se pueden configurar los accesos que se hagan desde Internet

hacia la LAN y se pueden denegar todos o permitir algunos servicios como el de Internet.

Page 26: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

22 CAPITULO 2. FUNDAMENTOS TEORICOS

Dependiendo del cortafuegos que se tenga tambien se podra permitir algunos accesos a la LAN

desde Internet si el usuario se ha autentificado como usuario de la LAN.

Un cortafuegos puede ser un dispositivo software o hardware, es decir, un aparato que se

conecta entre la red y el cable de la conexion a Internet, o bien un programa que se instala en la

computadora que tiene el modem que conecta con Internet. Incluso se pueden encontrar com-

putadoras muy potentes con software especıfico cuya funcion es monitorizar las comunicaciones

entre redes.

Portales captivos

Un portal cautivo (o captivo) [9] es un programa o computadora de una red informatica

que vigila el trafico HTTP (Hypertext Transfer Protocol, Protocolo de Transferencia de Hiper-

texto) y forza a los usuarios a pasar por una pagina especial si quieren navegar por Internet de

forma normal. A veces esto se hace para pedir una autenticacion valida, o para informar de las

condiciones de uso de un servicio wireless1 .

¿Como funcionan? Un portal cautivo se instala en la puerta de enlace de la red, que es

el sitio por donde pasan los usuarios para acceder a Internet. El programa intercepta todo el

trafico HTTP hasta que el usuario se autentifique. El portal se encargara de hacer que esta

sesion caduque al cabo de un tiempo. Tambien puede empezar a controlar el ancho de banda

usado por cada cliente. Se usan sobre todo en redes inalambricas abiertas, donde interesa

mostrar un mensaje de bienvenida a los usuarios y para informar de las condiciones del acceso

(puertos permitidos, responsabilidad legal, etc.).

Nocat

Nocat [10] es un software que permite autenticar el acceso a una red vıa un portal cautivo,

el cual se utiliza para controlar los accesos a una red. Este elemento esta implementado en Perl

y se divide en dos partes: el cortafuegos y el servidor de autenticacion. El cortafuegos se encarga

de dar salida a Internet a todas las peticiones de los usuarios de la red, mientras que el servidor

de autenticacion se encarga de decidir si un usuario puede o no utilizar la red.

1Se denomina Wireless a las comunicaciones inalambricas, en las que se utilizan modulacion de ondas elec-

tromagneticas, radiaciones o medios opticos.

Page 27: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

2.5. SEGURIDAD EN REDES 23

Iptables

Iptables [11] es un sistema de cortafuegos vinculado al kernel 2 de Linux que se ha ex-

tendido enormemente a partir del kernel 2.4 de este sistema operativo. Al igual que el sistema

ipchains, un cortafuegos de iptables no es como un servidor que se inicia o se detiene, iptables

esta integrado con el kernel, es parte del sistema operativo. Para ponerlo en marcha se apli-

can reglas, para ello se ejecuta el comando iptables, con el que se anaden, borran, o se crean

reglas, por ello un cortafuegos de iptables no es sino un simple script de shell 3 en el que se van

ejecutando las reglas de cortafuegos.

Notas: se puede implementar un script de inicio en /etc/rc.d/INIT.d (o /etc/INIT.d )

con el que se haga que iptables se “inicie o pare” como un servidor mas, tambien se pueden

salvar las reglas aplicadas con el comando iptables-save en un fichero y gestionar ese fichero con

una aplicacion.

Una computadora Linux con soporte para iptables, tiene reglas aplicadas, cuando comien-

zan a llegar, pasar y salir paquetes, actuan las reglas del cortafuegos que estan a nivel de kernel,

cuando el kernel recibe un paquete, consulta las reglas de cortafuegos y decide que hacer con

el.

Este es el camino que seguirıa un paquete en el kernel:

Para los paquetes (o datagramas, segun el protocolo) que van a la propia computadora

se aplican las reglas INPUT y OUTPUT, y para filtrar paquetes que van a otras redes o

computadoras se aplican simplemente reglas FORWARD, INPUT, OUTPUT y FORWARD

que son los tres tipos de reglas de filtrado. 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, incluso antes de las reglas de NAT se pueden asignar reglas de tipo MANGLE,

destinadas a modificar los paquetes, estas son reglas poco conocidas y es probable que no las

usen.

2En informatica, el nucleo es la parte fundamental de un sistema operativo. Es el software responsable de

facilitar a los distintos programas acceso seguro al hardware de la computadora o en forma mas basica, es el

encargado de gestionar recursos, a traves de servicios de llamada al sistema.3Es un programa informatico lector de lıneas de texto que un usuario de una computadora ha predefinido y

este programa lo interpreta para un sistema operativo o lenguaje de programacion.

Page 28: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

24 CAPITULO 2. FUNDAMENTOS TEORICOS

Por tanto tenemos tres tipos de reglas en iptables:

- MANGLE

- NAT: reglas PREROUTING, POSTROUTING

- FILTER: reglas INPUT,OUTPUT, FORWARD.

Encriptacion

Encriptacion [12] es el proceso mediante el cual cierta informacion o texto sin formato es

cifrado de forma que el resultado sea ilegible a menos que se conozcan los datos necesarios para

su interpretacion. Es una medida de seguridad utilizada para que al momento de almacenar

o transmitir informacion sensible, esta no pueda ser obtenida con facilidad por terceros. Op-

cionalmente puede existir ademas un proceso de desencriptacion a traves del cual la informacion

puede ser interpretada de nuevo a su estado original, aunque existen metodos de encriptacion

que no pueden ser revertidos.

Algunos de los usos mas comunes de la encriptacion son el almacenamiento y transmision

de informacion sensible como contrasenas, numeros de identificacion legal, numeros de tarjetas

de credito, reportes administrativo-contables y conversaciones privadas, entre otros.

La encriptacion hace uso de diversas formulas matematicas con el proposito de transformar

el texto sin formato en un criptograma, el cual es un conjunto de caracteres que a simple vista

no tiene ningun sentido para el lector. La mayorıa de los metodos de encriptacion utilizan una

clave como parametro variable en las mencionadas formulas matematicas, de forma que a pesar

de que un intruso las conozca, no le sea posible descifrar el criptograma si no conoce la clave,

la cual solo se encuentra en posesion de las personas que pueden tener acceso a la informacion

en cuestion. Algunos metodos utilizan incluso dos claves, una privada que se utiliza para la

encriptacion y otra publica para la desencriptacion. En algunos metodos la clave publica no

puede efectuar la desencriptacion o descifrado, sino solamente comprobar que el criptograma fue

encriptado o cifrado usando la clave privada correspondiente y no ha sido alterado o modificado

desde entonces.

Aunque la criptologıa surgio con gran anterioridad, la informatica ha revolucionado los

metodos que se utilizan para la encriptacion/desencriptacion de informacion, debido a la veloci-

dad con que las computadoras pueden realizar las formulas matematicas requeridas para llevar

a cabo estos metodos y a la complejidad que han alcanzado debido a este hecho.

Page 29: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

2.6. SERVIDORES 25

2.6 Servidores

Un servidor [13] es una aplicacion informatica o programa que realiza algunas tareas en

beneficio de las aplicaciones de los clientes. Algunos servicios habituales son, los servicios de

archivos, que permiten a los usuarios almacenar y acceder a los archivos de una computadora,

y los servicios de aplicaciones, que realizan tareas en beneficio directo del usuario final. Es

posible que una computadora cumpla simultaneamente las funciones de cliente y de servidor.

Un servidor es tambien, la computadora en la que se ejecuta un programa que realiza

alguna tarea en beneficio de otra aplicacion llamada cliente, la cual puede ser una computadora

central (mainframe), una minicomputadora, una computadora personal, o un sistema integrado;

sin embargo, hay computadoras destinadas unicamente a proveer servicios a ciertos tipos de

programas, estos son los servidores por antonomasia.

Un servidor no es necesariamente una computadora de ultima generacion como una super-

computadora; un servidor puede ir desde una computadora con caracterısticas limitadas (mi-

crocomputadora), hasta una computadora sumamente potente (supercomputadora). La eleccion

de algun tipo, estara determinado por los procesos y tareas que vaya a realizar.

Un servidor tambien puede ser un proceso que entrega informacion o sirve a otro proceso,

el modelo cliente-servidor no necesariamente implica tener dos computadoras, ya que un proceso

cliente puede ser solicitado desde la misma computadoras, tal es el caso de las impresiones.

Tipos de servidores

Plataformas de servidor (Server Platforms): un termino usado a menudo como sinonimo

de sistema operativo, la plataforma es el hardware o software subyacentes para un sistema, es

decir, el motor que dirige el servidor.

Servidores de aplicaciones (Application Servers): designados en ocaciones como un tipo

de middleware 4, los servidores de aplicaciones ocupan una gran parte del territorio entre los

4El middleware es un software de conectividad que ofrece un conjunto de servicios que hacen posible el

funcionamiento de aplicaciones distribuidas sobre plataformas heterogeneas. Funciona como capa de abstraccion

de software distribuida, que se situa entre las capas de aplicaciones y las capas inferiores (sistema operativo y red).

El middleware nos abstrae de la complejidad y heterogeneidad de las redes de comunicaciones subyacentes, ası

como de los sistemas operativos y lenguajes de programacion, proporcionandouna API para la facil programacion

Page 30: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

26 CAPITULO 2. FUNDAMENTOS TEORICOS

servidores de bases de datos y el usuario.

Servidores de audio/video (Audio/Video Servers): los servidores de Audio/Video anaden

capacidades multimedia a los sitios de Internet permitiendoles mostrar contenido multimedia

en forma de flujo continuo (streaming) desde el servidor.

Servidores de chat (Chat Servers): los servidores de chat permiten intercambiar infor-

macion a una gran cantidad de usuarios ofreciendo la posibilidad de llevar a cabo discusiones

en tiempo real.

Servidores de fax (Fax Servers): un servidor de fax es una solucion ideal para organiza-

ciones que tratan de reducir el uso del telefono pero necesitan enviar documentos por fax.

Servidores FTP (File Transfer Protocol Servers): uno de los servicios mas antiguos de

Internet, FTP permite mover uno o mas archivos.

Servidores Groupware (Groupware Servers): un servidor groupware es un software disenado

para la colaboracion entre usuarios, sin importar su localizacion, ya sea vıa Internet o Intranet

a nivel corporativo y poder ası trabajar juntos en una atmosfera virtual.

Servidores IRC (Internet Relay Chat Servers): otra opcion para usuarios que buscan la

discusion en tiempo real, IRC consiste en varias redes de servidores separadas que permite a

los usuarios conectarse vıa red IRC.

Servidores de listas (List Servers): los servidores de listas ofrecen una mejor manera de

manejar listas de correo electronico, bien sean discusiones interactivas abiertas al publico o

listas unidireccionales de anuncios, boletines de noticias o publicidad.

Servidores de correo (Mail Servers): casi tan ubicuos y cruciales como los servidores de

Internet, los servidores de correo mueven y almacenan el correo electronico a traves de las redes

corporativas (vıa LANs y WANs) y a traves de Internet.

y manejo de aplicaciones distribuidas. Dependiendo del problema a resolver y de las funciones necesarias, seran

utiles diferentes tipo de servicios de middleware. Por lo general el middleware del lado cliente esta implementado

por el sistema operativo subyacente, el cual posee las librerıas que implementan todas las funcionalidades para

la comunicacion a traves de la red.

Page 31: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

2.6. SERVIDORES 27

Figura 2.1: Comparacion entre un sistema de archivos y el sistema de nombres de dominio

Servidores de noticias (News Servers): los servidores de noticias actuan como fuente de

distribucion y entrega para los millares de grupos de noticias publicas que existen actualmente

y accesibles a traves de la red de noticias USENET.

Servidores telnet (Telnet Servers): un servidor telnet permite a los usuarios entrar en

una computadora huesped y realizar tareas como si estuviera trabajando directamente en esa

computadora.

Servidores de Internet (Web Servers): basicamente, un servidor de Internet provee con-

tenido estatico a un navegador, carga un archivo y lo sirve a traves de la red al cliente[14].

Servidor de Nombres de Dominio

La historia del DNS (Domain Name Server, Servidor de Nombres de Dominio), se remonta

a la decada de los setenta, donde cada una de las computadoras conectadas a la red tenıa

asignada una direccion numerica (de la misma forma que nuestros telefonos actuales tienen

asignado un numero telefonico). Para acceder a aquellos equipos de computo era necesario

recordar la direccion numerica de cada uno, ya que el esquema de nombramiento de aquel

entonces era bastante limitado.

Esta situacion trajo como consecuencia la creacion de un nuevo sistema de nombramiento,

el cual serıa conocido como Sistema de Nombres de Dominio y producirıa serios problemas 15

Page 32: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

28 CAPITULO 2. FUNDAMENTOS TEORICOS

Figura 2.2: Sistema de archivos tradicional

anos despues.

Lo que concibio su creador, Paul Mockapetris [15], basicamente, fue un sistema jerarquico

similar a un sistema de archivos de computadora. En esta estructura jerarquica definio niveles,

de la misma forma que en un sistema de archivos hay directorios (figura 2.4).

A cada nivel de la estructura le asigno un nombre o etiqueta. El nivel cero, o raız, no

tiene nombre, el nivel 1 puede ser alguno de los que se muestran en la figura 2.1, .mx, .uk, .com

o .net, el cual se conoce como TLD (Top Level Domain, Dominio de Nivel Superior). A su

vez, estos pueden tener subclasificaciones, como en el caso de .mx que tiene debajo a .com.mx,

.net.mx, .gob.mx, etc. A este nivel se le conoce como SLD (Second Level Domain, Dominio de

Segundo Nivel). Mas sobre esta analogıa puede apreciarse en las figuras 2.2 y 2.3

De esta forma, los nombres de dominio se construyen por una secuencia de etiquetas

separadas por un punto, empezando en el nivel mas profundo hasta llegar al nivel superior.

Por ejemplo, en la figura 2.4, se puede apreciar que el nombre de dominio empresa.com.mx. se

forma desde el ultimo nivel llamado empresa, despues el SLD .com y por ultimo el TLD .mx.

Las etiquetas pueden tener letras, numeros y el guion medio, pero no puede iniciar ni

terminar con guion. Cada etiqueta puede llevar hasta 63 caracteres, el nombre de dominio en

Page 33: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

2.6. SERVIDORES 29

Figura 2.3: Sistema de nombres de dominio

Figura 2.4: Estructura jerarquica del DNS

Page 34: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

30 CAPITULO 2. FUNDAMENTOS TEORICOS

total puede tener hasta 255 (cualquier combinacion de letras, numeros y guion medio). Puede

haber hasta 127 niveles (siempre y cuando no se rebase el lımite de 255 caracteres).

El DNS buscaba un objetivo muy simple, desempenar una funcion tecnica de traduccion

de nombres de equipos de computo a su direccion numerica correspondiente, que fuera conve-

niente, amigable y facil de utilizar por los usuarios de Internet, es decir proveer un esquema de

interpretacion entre los usuarios y las computadoras, sin que los primeros tuvieran la necesidad

de recordar las direcciones numericas de cada uno de los equipos a los que intentaban comu-

nicarse; por ejemplo: 131.178.11.16, 200.23.1.7, en lugar de www.mty.itesm.mx y www.nic.mx,

respectivamente.

La realidad es que este esquema, el DNS, cumplio con su intencion y mas que eso, los

nombres de dominio no solo fueron una manera facil para los usuarios de conectarse a los equipos

en la red, sino que ademas significo una manera simple de representar ideas, productos, servicios,

empresas, organismos, etc. El fenomeno del Internet le aplico una aceleracion importante al

registro de dominios y pronto vendrıan los problemas. A partir de este punto, se hizo imposible

dar marcha atras a un esquema de nombramiento que empezo siendo tecnico y gracias a la

comercializacion de Internet ese esquema acabo generando conflictos con esquemas sociales

definidos anteriormente.

Servidor Proxy

Un servidor proxy es un equipo intermediario situado entre el sistema del usuario e Inter-

net. Puede utilizarse para registrar el uso de Internet y tambien para bloquear el acceso a un

sitio de Internet. El servidor de seguridad del proxy bloquea algunas paginas de Internet por

diversas razones (por ejemplo: el tipo de contenido).

Ventajas:

• Control. Solo el intermediario hace el trabajo real, por tanto se pueden limitar y restringir

los derechos de los usuarios, y asignar permisos solo al proxy.

• Ahorro. Por tanto, solo uno de los usuarios (el proxy) ha de estar equipado para hacer el

trabajo real.

• Filtrado. El proxy puede negarse a responder algunas peticiones si detecta que estan

prohibidas.

Page 35: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

2.7. INTERNET 31

Desventajas:

• Abuso. Al estar dispuesto a recibir peticiones de muchos usuarios y responderlas, es

posible que haga algun trabajo que no toque. Por tanto, ha de controlar quien tiene

acceso y quien no a sus servicios, cosa que normalmente es muy difıcil.

• Carga. Un proxy ha de hacer el trabajo de muchos usuarios.

• Intromision. Es un paso mas entre origen y destino, y algunos usuarios pueden no querer

pasar por el proxy.

• Irregularidad. El hecho de que el proxy represente a mas de un usuario puede generar

problemas.

Squid

Squid es un servidor que permite utilizar una sola conexion a Internet para todas las

estaciones de los centros de acceso para la navegacion por Internet. Es muy confiable, robusto

y versatil. Al ser software libre, ademas de estar disponible el codigo fuente, esta libre del pago

de costosas licencias por uso o con restriccion a un uso con determinado numero de usuarios.

Beneficios:

• Acceso transparente a Internet, por medio de cualquier programa, y a cualquier servicio.

• Posibilidad de un control absoluto de los accesos a Internet, por fecha, hora, lugar, e

incluso persona.

• Capacidad de control de paginas prohibidas.

2.7 Internet

La mejor definicion se obtiene si se disecciona la propia palabra Internet: inter viene del

ingles interconnected, interconectados, y net de network, red. Ası que Internet es un conjunto

de redes diferentes interconectadas por el mundo [16].

Internet es una red mundial de computadoras con un conjunto de protocolos, el mas

destacado, TCP/IP, el cual, aparece por primera vez en 1969, cuando ARPAnet establece

su primera conexion entre tres universidades en California y una en Utah. Tambien se usa el

Page 36: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

32 CAPITULO 2. FUNDAMENTOS TEORICOS

termino internet como sustantivo comun y por tanto en minusculas para designar a cualquier red

de redes que utilicen las mismas tecnologıas que Internet, independientemente de su extension

o de su estado, publico o privado.

Internet sirve para el ocio, para el negocio y para el trabajo. Como fuente de ocio, se

puede disfrutar de excelentes momentos de entretenimiento localizando cantidades de juegos o

programas sobre los temas de interes, jugar interactivamente con usuarios de cualquier parte

del mundo, charlar con ellos, etc. Como fuente de negocio, Internet es un enorme mercado

potencial. Internet es un campo abierto para nuevos e innovadores negocios, y para el trabajo,

Internet es una fuente inagotable de informacion.

Servidor de Internet apache

Apache [18] esta disenado para ser un servidor de Internet potente y flexible que pueda

funcionar en la mas amplia variedad de plataformas y entornos. Las diferentes plataformas

y los diferentes entornos, hacen que a menudo sean necesarias diferentes caracterısticas y/o

funcionalidades, o que una misma caracterıstica o funcionalidad sea implementada de diferente

manera para obtener una mayor eficiencia. Apache se ha adaptado siempre a una gran variedad

de entornos a traves de su diseno modular. Este diseno permite a los administradores de sitios

de Internet elegir que caracterısticas van a ser incluidas en el servidor seleccionando que modulos

se van a cargar, ya sea al compilar o al ejecutar el servidor.

Apache extiende este diseno modular hasta las funciones mas basicas de un servidor de

Internet. El servidor viene con una serie de modulos de multiprocesamiento que son responsables

de conectar con los puertos de red de la computadora, acceptar las peticiones, y generar los

procesos hijo que se encargan de servirlas.

Apache puede soportar de una forma mas facil y eficiente una amplia variedad de sistemas

operativos.

El servidor puede personalizarse mejor para las necesidades de cada sitio de Internet.

Por ejemplo, los sitios de Internet que necesitan mas que nada escalibildad pueden usar un

MPM hebrado como worker, mientras que los sitios de Internet que requieran por encima de

otras cosas estabilidad o compatibilidad con software antiguo pueden usar prefork. Ademas,

Page 37: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

2.8. LENGUAJE DE PROGRAMACION 33

se pueden configurar funcionalidades especiales como servir diferentes estaciones con diferentes

identificadores de usuario (perchild).

2.8 Lenguaje de programacion

Un lenguaje de programacion [19] es un lenguaje que puede ser utilizado para contro-

lar el comportamiento de una computadora. Consiste en un conjunto de reglas sintacticas y

semanticas que definen su estructura y el significado de sus elementos, respectivamente.

Aunque muchas veces se usa lenguaje de programacion y lenguaje informatico como si

fuesen sinonimos, esto no tienen por que ser ası, ya que los lenguajes informaticos engloban a

los lenguajes de programacion y a otros mas, como, por ejemplo, el HTML.

Un lenguaje de programacion permite a un programador especificar de manera precisa,

sobre que datos una computadora debe operar, como deben ser estos almacenados y transmitidos

y que acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a traves de

un lenguaje que intenta estar relativamente proximo al lenguaje humano o natural, tal como

sucede con el lenguaje lexico.

Los procesadores usados en las computadoras son capaces de entender y actuar segun

lo indican programas escritos en un lenguaje fijo llamado lenguaje maquina. Todo programa

escrito en otro lenguaje puede ser ejecutado de dos maneras:

• Mediante un programa que va adaptando las instrucciones conforme son encontradas. A

este proceso se le llama interpetar y a los programas que lo hacen se les conoce como

interpretes.

• Traduciendo este programa al programa equivalente escrito en lenguaje de maquina. A

ese proceso se le llama compilar y al traductor se le conoce como compilador.

Clasificacion de los lenguajes de programacion

Los lenguajes de programacion se determinan segun el nivel de abstraccion, segun la forma

de ejecucion y segun el paradigma de programacion que poseen cada uno de ellos, estso pueden

ser:

Page 38: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

34 CAPITULO 2. FUNDAMENTOS TEORICOS

Segun el nivel de abstracion

Lenguajes de bajo nivel

Los lenguajes de bajo nivel son lenguajes de programacion que se acercan al funcionamiento

de una computadora. El lenguaje de mas bajo nivel es, por excelencia, el codigo maquina. A

este le sigue el lenguaje ensamblador, ya que al programar en ensamblador se trabajan con los

registros de memoria de la computadora de forma directa.

Lenguajes de medio nivel

Hay lenguajes de programacion que son considerados por algunos expertos como lenguajes de

medio nivel (como es el caso del lenguaje C) al tener ciertas caracterısticas que los acercan a

los lenguajes de bajo nivel pero teniendo, al mismo tiempo, ciertas cualidades que lo hacen un

lenguaje mas cercano al humano y, por tanto, de alto nivel.

Lenguajes de alto nivel

Los lenguajes de alto nivel son normalmente faciles de aprender porque estan formados por

elementos de lenguajes naturales, como el ingles. En BASIC, el lenguaje de alto nivel mas

conocido, los comandos como “IF CONTADOR = 10 THEN STOP” pueden utilizarse para

pedir a la computadora que pare si CONTADOR es igual a 10. Por desgracia para muchas

personas esta forma de trabajar es un poco frustrante, dado que a pesar de que las computadoras

parecen comprender un lenguaje natural, lo hacen en realidad de una forma rıgida y sistematica.

Segun la forma de ejecucion

Lenguajes compilados

Naturalmente, un programa que se escribe en un lenguaje de alto nivel tambien tiene que tra-

ducirse a un codigo que pueda utilizar la computadora. Los programas traductores que pueden

realizar esta operacion se llaman compiladores. Estos, como los programas ensambladores avan-

zados, pueden generar muchas lıneas de codigo de maquina por cada proposicion del programa

fuente. Se requiere una corrida de compilacion antes de procesar los datos de un problema.

Los compiladores son aquellos cuya funcion es traducir un programa escrito en un de-

terminado lenguaje a un idioma que la computadora entienda (lenguaje maquina con codigo

binario).

Page 39: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

2.8. LENGUAJE DE PROGRAMACION 35

Al usar un lenguaje compilado (como lo son los lenguajes del popular Visual Studio de

Microsoft), el programa desarrollado nunca se ejecuta mientras haya errores, sino hasta que

luego de haber compilado el programa, ya no aparecen errores en el codigo.

Lenguajes interpretados

Se puede tambien utilizar una alternativa diferente de los compiladores para traducir lenguajes

de alto nivel. En vez de traducir el programa fuente y grabar en forma permanente el codigo

objeto que se produce durante la corrida de compilacion para utilizarlo en una corrida de

produccion futura, el programador solo carga el programa fuente en la computadora junto

con los datos que se van a procesar, a continuacion, un programa interprete, almacenado en

el sistema operativo del disco, o incluido de manera permanente dentro de la computadora,

convierte cada proposicion del programa fuente en lenguaje de maquina conforme vaya siendo

necesario durante el proceso de interpretacion de datos. No se graba el codigo objeto para

utilizarlo posteriormente.

La siguiente vez que se utilice una instruccion, se le debe interpretar otra vez y traducir

a lenguaje maquina. Por ejemplo, durante el procesamiento repetitivo de los pasos de un ciclo,

cada instruccion del ciclo tendra que volver a ser interpretado cada vez que se ejecute el ciclo,

lo cual hace que el programa sea mas lento en tiempo de ejecucion (porque se va revisando

el codigo en tiempo de ejecucion) pero mas rapido en tiempo de diseno (porque no se tiene

que estar compilando a cada momento el codigo completo). El interprete elimina la necesidad

de realizar una corrida de compilacion despues de cada modificacion del programa cuando se

quiere agregar funciones o corregir errores; pero es obvio que un programa objeto compilado

con antelacion debera ejecutarse con mucha mayor rapidez que uno que se debe interpretar a

cada paso durante una corrida de produccion.

Segun el paradigma de programacion

Lenguajes imperativos.

Lenguajes declarativos.

Funcionales.

Logicos.

Page 40: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

36 CAPITULO 2. FUNDAMENTOS TEORICOS

Lenguajes orientados a objetos

En la Programacion Orientada a Objetos (POO u OOP segun siglas en ingles) se definen los

programas en terminos de “clases de objetos”, objetos que son entidades que combinan estado

(es decir, datos) comportamiento (esto es, procedimientos o metodos) e identidad (propiedad del

objeto que lo diferencia del resto). La programacion orientada a objetos expresa un programa

como un conjunto de estos objetos, que colaboran entre ellos para realizar tareas. Esto permite

la programacion modular, lo que lleva a la facil escritura y reutilizacion de codigo.

2.9 Scripts

Un script de Linux equivale a un archivo *.BAT5 de MSDOS, con las siguientes diferencias:

• No tiene que terminar con la extension .bat. De hecho, no debe tener extension.

• Debe contar con permisos de ejecucion.

• Puede ser mucho mas complejo.

En su forma mas simple, un archivo de texto, con una lista de comandos, que se ejecutan

en ese orden de forma automatica, del mismo modo que si se escriben uno a uno en una consola

de texto o una terminal, lo que en ciertas tareas repetitivas es bastante cansado, salvo que se

use un script.

2.10 MySQL

MySQL, es un sistema de gestion de bases de datos relacional, creada por la empresa sueca

MySQL AB [20], la cual tiene el copyright del codigo fuente del servidor SQL, ası tambien de

la marca.

MySQL [21] es un software de codigo abierto, licenciado bajo la GPL (General Public

License, Licencia Publica General) [22] de la GNU, aunque MySQL AB distribuye una version

comercial, en lo unico que se diferencia de la version libre, es en el soporte tecnico que se ofrece,

y la posibilidad de integrar este gestor en un software propietario, ya que de otra manera, se

vulnerarıa la licencia GPL.

5Un archivo batch (o bat) es un archivo de procesamiento por lotes.

Page 41: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

2.10. MYSQL 37

El lenguaje de programacion que utiliza es SQL (Structured Query Language, Lenguaje de

Consulta Estructurado)6 desarrollado por IBM en 1981 y desde entonces es utilizado de forma

generalizada en las bases de datos relacionales.

Historia de MySQL

MySQL surgio alrededor de la decada de los 90’s, Michael Windenis comenzo a usar

mSQL7 para conectar tablas usando sus propias rutinas de bajo nivel ISAM (Indexed Sequential

Access Method, Metodo de Acceso Secuencial Indexado). Tras sus primeras pruebas, llego a la

conclusion de que mSQL no era lo bastante flexible ni rapido para lo que necesitaba, por lo que

tuvo que desarrollar nuevas funciones. Esto resulto en una interfaz SQL aplicada a su base de

datos, totalmente compatible a mSQL.

El origen del nombre MySQL no se sabe con certeza de donde proviene, por una lado se

dice que en sus librerıas han llevado el prefijo My durante los diez ultimos anos, por otra parte,

la hija de uno de los desarrolladores se llama My. Ası, que no esta claramente definido cual de

estas dos causas dio lugar al nombre de este conocido gestor de bases de datos.

Caracterısticas principales:

Inicialmente, MySQL carecıa de algunos elementos esenciales en las bases de datos rela-

cionales, tales como integridad referencial y transacciones. A pesar de esto, atrajo a los progra-

madores de paginas de Internet con contenido dinamico, debido a su simplicidad, de tal manera

que los elementos faltantes fueron complementados por la vıa de las aplicaciones que la utilizan.

Poco a poco estos elementos faltantes, estan siendo incorporados tanto por desarrolladores in-

ternos, como por desarrolladores de software libre.

• El principal objetivo de MySQL es velocidad y robustez.

• Soporta gran cantidad de tipos de datos para las columnas.

• Gran portabilidad entre sistemas, puede trabajar en distintas plataformas y sistemas

operativos.

• Cada base de datos cuenta con 3 archivos: uno de estructura, uno de datos y uno de

ındice y soporta hasta 32 ındices por tabla.

6http://es.wikipedia.org/wiki/SQL7El mSQL o el mini SQL es una base de datos ligera cliente/servidor.

Page 42: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

38 CAPITULO 2. FUNDAMENTOS TEORICOS

• Aprovecha la potencia de sistemas multiproceso, gracias a su implementacion multihilo.

• Flexible sistema de contrasenas y gestion de usuarios, con buen nivel de seguridad en los

datos.

• El servidor soporta mensajes de error en distintos idiomas.

Ventajas:

• Velocidad al realizar las operaciones, lo que lo convierte en uno de los gestores con mejor

rendimiento.

• Bajo costo en requerimientos para la elaboracion de bases de datos, ya que debido a su

bajo consumo puede ser ejecutado en una computadora con escasos recursos sin ningun

problema.

• Facilidad de configuracion e instalacion.

• Soporta gran variedad de sistemas operativos.

• Baja probabilidad de corromper datos, incluso si los errores no se producen en el propio

gestor, sino en el sistema que lo aloja.

• Conectividad y seguridad.

Desventajas:

• Un gran porcentaje de las utilidades de MySQL no estan documentadas.

• No es intuitivo, como otros programas (Microsoft Access).

2.11 PHP

PHP es un lenguaje de programacion usado generalmente para la creacion de contenido

para sitios de Internet. PHP (Hypertext Pre-processor) (inicialmente PHP Tools, o, Personal

Home Page Tools), y se trata de un lenguaje interpretado usado para la creacion de aplicaciones

para servidores, o creacion de contenido dinamico para sitios de Internet.

Page 43: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

2.11. PHP 39

El facil uso y la similitud con los lenguajes mas comunes de programacion estructurada,

como C y Perl, permiten a la mayorıa de los programadores experimentados crear aplicaciones

complejas con una curva de aprendizaje muy suave. Tambien les permite involucrarse con

aplicaciones de contenido dinamico sin tener que aprender todo un nuevo grupo de funciones y

practicas.

Debido al diseno de PHP, tambien es posible crear aplicaciones con una GUI (Graphic User

Interface, interfaz grafica de usuario), utilizando la extension PHP-GTK. Tambien puede ser

usado desde la lınea de comandos, de la misma manera como Perl o Python pueden hacerlo, esta

version de PHP se llama PHP CLI (Command Line Interface, Interfaz de Lınea de Comandos).

Su interpretacion y ejecucion se da en el servidor, en el que se encuentra almacenado el

script, y el cliente solo recibe el resultado de la ejecucion. Cuando el cliente hace una peticion

al servidor para que le envıe una pagina de Internet, generada por un script PHP, el servidor

ejecuta el interprete de PHP, el cual procesa el script solicitado que generara el contenido de

manera dinamica, pudiendo modificar el contenido a enviar, y regresa el resultado al servidor,

el cual se encarga de regresarlo al cliente. Ademas es posible utilizar PHP para generar archivos

PDF, Flash, ası como imagenes en diferentes formatos, entre otras cosas.

Permite la conexion a diferentes tipos de servidores de bases de datos tales como MySQL,

Postgres, Oracle, ODBC (Open DataBase Connectivity, Conectividad Abierta de Bases de

Datos), DB2, Microsoft SQL Server, Firebird y SQLite; lo cual permite la creacion de apli-

caciones de Internet muy robustas.

PHP tambien tiene la capacidad de ser ejecutado en la mayorıa de los sistemas operativos

tales como UNIX (y de ese tipo, como Linux), Windows y Mac OS/X, y puede interactuar

con los servidores de web mas populares ya que existe en version CGI, modulo para apache, e

ISAPI.

El modelo PHP puede ser visto como una alternativa al sistema de Microsoft que utiliza

ASP.NET/C#/VB.NET, a ColdFusion de la companıa Macromedia, a JSP/Java de Sun Mi-

crosystems, y al famoso CGI/Perl. Aunque su creacion y desarrollo se da en el ambito de los

sistemas libres, bajo la licencia GNU, existe ademas un IDE comercial llamado Zend Optimizer.

Page 44: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

40 CAPITULO 2. FUNDAMENTOS TEORICOS

Page 45: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

Capıtulo 3

Desarrollo e implementacion

3.1 Instalacion de Fedora Core 4 de Linux

Se debe obtener la version de Fedora Core 4 que se puede descargar del siguiente enlace:

http://fedora.redhat.com/Download/, donde tambien se puede encontrar una completa guia

sobre los pasos a seguir para la instalacion de esta distribucion. Se instalo Fedora Core 4 porque

en esta distribucion se pueden encontrar gran cantidad de herramientas para la realizacion del

proyecto, ademas, la documentacion y ejecucion del portal captivo NoCat esta basada sobre

esta distribucion.

3.2 Configuracion de tarjetas de red

El servidor cuenta con dos tarjetas de red, una dedicada a la conexion a Internet y la otra

para conectar la red local con el servidor. Por definicion, la tarjeta de red con la conexion a

Internet debe ser siempre la ethernet 0 (eth0).

Configuracion de eth0

Para tener acceso a Internet, se configura la eth0 de acuerdo al diagrama de red, de la

siguiente manera:

• Inicio.

• Configuracion del sistema.

41

Page 46: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

42 CAPITULO 3. DESARROLLO E IMPLEMENTACION

• Red.

• Doble click sobre el dispositivo eth0.

• Activar la casilla “Activar el dispositivo cuando se incia el ordenador”.

• Configurar la tarjeta con una direccion libre del rango de la red de la Universidad

Autonoma de Zacatecas(10.1.3.200), la submascara (255.255.255.0)y la puerta de enlace

(10.1.3.1, direccion que pertenece al router de la Universidad Autonoma de Zacatecas).

Configuracion Servidor DNS y Host

Al realizar una conexion a Internet es necesario establecer un servidor DNS para la res-

olucion de nombres de dominio, para ası, poder acceder a las paginas de Internet, ademas es

necesario asignar un nombre al servidor para identificarlo de otras computadoras de la red, por

esto, es necesario establecer los siguientes parametros:

• Ir al apartado de Red.

• Click sobre la pestana DNS.

• Asignar un nombre al host (tesislinux).

• Asigna la direccion ip del servidor DNS (10.1.3.1).

Configuracion de eth1

Se configura la tarjeta eth1 para que las computadoras cliente tengan acceso al servidor.

• Ir al apartado de Red.

• Doble click sobre eth1.

• Activar la casilla “Activar el dispositivo cuando se inicia el ordenador”.

• Asignar una direccion ip (192.168.0.17), mascara de subred (255.255.255.0), no definir la

puerta de enlace.

• Aceptar y guardar.

Tras reiniciar el servidor se confirma que los cambios hayan surgido efecto, se abre el

navegador favorito y se observa que existe conexion a Internet.

Page 47: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

3.3. ACTIVACION DE SERVICIOS 43

3.3 Activacion de Servicios

Para que la puerta de enlace funcione correctamente se deben de activar ciertos servicios,

para ello se deberan de activar de la siguiente forma:

• Inicio.

• Configuraciones del Sistema.

• Configuraciones del Servidor.

• Servicios.

• Marcar las casillas de los servicios e iniciarlos:

– httpd. Para utilizar el servidor de paginas de Internet apache.

– iptables. Para la configuracion del cortafuegos.

– mysqld. Para la gestion de bases de datos.

– named. Para la administracion de nombres de dominio.

• Guardar la configuracion.

Una vez activados los servicios, desde la computadora cliente, se comprueba si funciona

el servidor de Internet (httpd), para ello es necesario dar una configuracion minima al servidor

de Internet:

• Administracion.

• Configuraciones del Servidor.

• HTTP.

• Configurar un nombre para el servicio.

• Configurar una direccion valida para que los usuarios se pongan en contacto para cualquier

anomalia en el servidor.

• Deshabilitar todas las opciones de seguridad, para ello ir a Inicio/Configuraciones del

sistema/Nivel de Seguridad.

• Deshabilitar todas las opciones.

Page 48: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

44 CAPITULO 3. DESARROLLO E IMPLEMENTACION

Con esta configuracion se puede intentar acceder desde un cliente al servidor de Internet

para constatar su correcto funcionamiento. Abrir la ventana del navegador en el cliente y en la

barra de direccion escribir http://192.168.0.17, y debera aparecer la pagina de Fedora Core.

3.4 Puente de red

Hasta aqui se ha configurado la parte basica de lo que sera la puerta de enlace y ahora

viene la parte importante, es decir, la parte que permitira que los clientes pasen a traves del

servidor. Lo primero que se debe hacer es decirle al servidor que cualquier peticion que llegue

a eth1 sea enrutada hacia eth0. Para ello ir a /etc/rc.d y en el fichero rc.local se anade la

siguiente lınea:

• iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE.

Guardar el fichero y ahora en /etc/ localizar el fichero sysctl.conf y modificar la siguiente

lınea:

• net.ipv4 ipforward=0 por:

• net.ipv4 ipforward=1.

Ahora en /etc/ buscar named.conf en incluir la siguiente lınea en el final de la rama

Options para que quede de la siguiente manera:

options {

//otras lıneas y opciones

forward only;

forwarders{10.1.3.1;};

En este caso la direccion 10.1.3.1 corresponde a la direccion del servidor DNS.

Page 49: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

3.4. PUENTE DE RED 45

Figura 3.1: Limpiar iptables

Ahora un paso importante en /etc/sysconfig/ es borrar los archivos de configuracion

iptables, iptables.save e iptables-config. El siguiente paso se debe de hacer desde una ventana

de terminal para limpiar y comprobar que iptables esta limpio (figura 3.1). Abrir una ventana

de terminal desde Inicio/Herramientas del Sistema/Terminal y ejecutar /etc/init.d/iptables

restart, con esto aparecera un mensaje como el de la imagen limpiar iptables.

Ahora se tiene que comprobar que la tabla de iptables esta limpia, escribiendo en la

terminal: iptables -L -n, los pasos anteriores serviran para que cuando se reinicie el servidor,

aplique solo el contenido definido para el puente de red, es decir, la lınea: iptables -t nat -A

POSTROUTING -o eth0 -j MASQUERADE.

Paquetes adicionales

• GnuPGP

– Descargar el paquete gnupgp-1.2.3.tar.bz2del siguiente enlace http://public.ftp.planetmirror.com/pub/gnupg/gn

1.2.3.tar.gz2.

– Descomprimir dentro de /root/.

– Desde la ventana de terminal entrar al directorio con cd/root/gnupgp-1.2.3 y ejecu-

tar:

– ./configure.

– make.

Page 50: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

46 CAPITULO 3. DESARROLLO E IMPLEMENTACION

– make install.

• Perl-Net-Netmask

– Descargar el paquete perl-Net-Netmask-1.9007-2.noarch.rpm del siguiente enlace,

http://ftp.riken.go.jp/pub/linux/fedora.us/fedora/fedora/3/i386/RPMS.extras/.

– Colocar el paquete en /root/.

– Instalar el paquete con: rpm -hiv perl-Net-Netmask-1.9007-2.noarch.rpm.

• Digest-MD5

– Descargar el paquete Digest-MD5-2.36 del siguiente enlace, http://search.cpan.org/gaas/digest-

MD5-2.36.

– Descomprimir el paquete en /root/.

– Desde la ventana de terminal entrar al directorio con cd /root/Digest-MD5-2.36 y

teclear.

– perl Makefile.PL.

– make.

– make test.

– make install.

Una vez instalados y configurados los pasos anteriores, se tiene todo lo necesario para que

los clientes tengan acceso a Internet a traves del switch que se encuentra entre el servidor y la

red local. Ası que desde cualquier cliente y conectados al switch abrir el navegador y acceder a

cualquier pagina.

3.5 Instalacion de NocatAuth

Descargar el paquete NoCatAuth-nightly.tgz del siguiente enlace, http://nocat.net/download/NoCatAuth-

nightly.tgz, colocarlo en /root/, dentro de una ventana de terminal descomprimir con: tar

zxvf NoCatAuth-nightly.tgz, una vez descomprimido entrar en el directorio tecleando: cd

NoCatAuth-nightly, una vez dentro del directorio acceder a /bin/ y se debera de modificar

el fichero detect-fw.sh siempre y cuando se use un kernel que no sea el 2.4, cambiamos la lınea

“Linux 2.4” por “Linux 2.6”, una vez modificado el fichero se guardan los cambios y ahora

Page 51: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

3.5. INSTALACION DE NOCATAUTH 47

ir a /usr/local/ y crear una carpeta con el nombre de nocat. Hechos los pasos anteriores se

puede iniciar la instalacion de NoCat, para ello ejecutar desde la ventana de terminal (desde

/root/NoCatAuth-nightly)make PREFIX= /usr/local/nocat/gw gateway, despues make PRE-

FIX= /usr/local/nocat/authserv authserv.

A continuacion se debe borrar trustedkeys.pgp, que es la llave que lleva por defecto No-

CatAuth, de /usr/local/nocat/authserv/pgp y de /usr/local/nocat/gw/pgp/. Ahora se debe

crear la llave personalizada, para ello desde /root/NoCatAuth-nightly/ teclear: make PRE-

FIX=/usr/local/nocat/authserv pgpkey, a continuacion pedira algunos parametros y se debera

contestar de la siguiente manera:

• DSA i ElGamal.

• 1024.

• 0.

• s.

• Colocar nombre y apellidos.

• Direccion de correo.

• Comentario.

• V.

• Pedira que se introduzca una contrasena, se debera dejar en blanco.

• Volvera a pedir la contrasena y de nuevo se deja en blanco.

• Ahora el programa tomara su tiempo para generar la llave, mientras tanto es importante

mover el raton, abrir el navegador, cualquier cosa para que el generador tenga suficiente

antropia para generar la llave. Finalmente ya se tiene la llave en /usr/local/nocat/authserv.

• Luego se debera copiar la clave y pegarla en /usr/local/nocat/gw/pgp/ y en /usr/local/nocat/authserv/pgp/.

• Por ultimo se le deberan otorgar permisos para que el servidor apache pueda acceder a ella.

Desde la ventana de terminal teclear: chown -R apache:apache /usr/local/nocat/authserv/pgp/

y chown -R apache:apache /usr/local/nocat/gw/pgp/.

Page 52: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

48 CAPITULO 3. DESARROLLO E IMPLEMENTACION

3.6 Configuracion de NocatAuth

Para ello creamos la base de datos donde estaran registrados todos los datos y permisos

de los usuarios. Esto mediante los siguientes pasos:

• Abrir la terminal e ir al directorio /root/NoCatAuth-nigthly/.

• Crear la contrasena para acceder a mysqladmin tecleando:

mysqladmin password contrasena.

• Una vez creada la contrasena teclear:

mysqladmin create nocat -p.

• Luego pedira la contrasena, teclear la clave que ha sido creada, y enter, luego teclear:

mysql nocat etc/nocat.schema -p.

• Nuevamente pedira la contrasena. Una vez que la contrasena se ha introducido, se obser-

vara como es copiada la estructura de la base de datos de NoCatAuth en la base de datos

de MySQL.

Con todo lo anterior ya esta creada la base de datos, para verificar si realmente esta la

base de datos y configurarla, realizar los siguientes pasos:

• Entrar a la base de datos tecleando:

mysql -u root -p.

• Una vez dentro teclear:

grant all on nocat.* to nocat@localhost indentified by ’nocatauth’;.

• Finalmente cancelar los privilegios en mysqladmin tecleando:

flush privileges;.

• Para salir teclear:

quit.

Una vez que esta creada la base de datos y la configurada para que el servidor apache

pueda acceder a ella, modificar los archivos de configuracion del NoCatAuth para personalizar

la puerta de enlace, para ello realizar los siguientes pasos:

• Abrir el archivo nocat.conf ubicado en /usr/local/nocat/authserv.

Page 53: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

3.6. CONFIGURACION DE NOCATAUTH 49

• Modificar la pagina a donde el NoCatAuth va a redirigir a los usuarios:

HomePage http://www.google.com.

• Definir la direccion de la puerta de enlace y el rango de la red externa:

LocalGateway 10.1.3.200

LocalNetwork 10.1.3.0/24.

• Verificacion de la base de datos definida:

DataSource DBI.

• Por ultimo checar el nombre de la base de datos, usuario y contrasena:

Database dbi:mysql:database=nocat .

DB User nocat

DB Passwd nocatauth.

Ya realizadas todas las modificaciones necesarias en este archivo, guardarlo y abrir el

archivo nocat.conf, pero este archivo esta ubicado en /usr/local/nocat/gw, estos archivos tienen

el mismo nombre pero el funcionamiento de ambos es diferente, modificar las siguientes opciones:

• Modificar el nombre de la puerta de enlace:

GatewayName Tesis.

• Modo de trabajo de la puerta de enlace:

GatewayMode Passive.

• Direccion de la tarjeta de la red interna (eth1):

AuthServiceAddr 192.168.0.17.

• Definir las funciones de las tarjetas de red:

ExternalDevice eth0

InternalDevice eth1.

• Rango de la red interna:

LocalNetwork 192.168.0.0/24.

• Direccion del DNS:

DNSAddr 10.1.3.1.

Page 54: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

50 CAPITULO 3. DESARROLLO E IMPLEMENTACION

• Habilitar los puertos para los usuarios:

IncludePorts 22 80 443.

• Guardar configuracion.

3.7 Configuracion de apache

Para que el servidor apache redireccione todas las peticiones de los clientes hacia la puerta

de enlace y puedan autentificarse, se debera configurar de la siguiente manera:

• Abrir el fichero httpd.conf ubicado en: /etc/httpd/conf.

• Definir la ubicacion del archivo de configuracion de NoCatAuth:

Include /usr/local/nocat/authserv/httpd.conf.

• Configurar la direccion de correo del administrador:

ServerAdmin [email protected].

• Direccion de la tarjeta de red interna:

ServerName 192.168.0.17.

• Definir el path de DocumentRoot:

DocumentRoot “/usr/local/nocat/authserv/htdocs”.

• Fijar el path para DocumentRoot como principal:

Directory “/usr/local/nocat/authserv/htdocs”.

• Comentar la line de ScriptAlias:

#ScriptAlias /cgi-bin/ “/var/www/cgi-bin/”.

• Guardar el archivo.

Para que el servidor apache y la puerta de enlace puedan ofrecer acceso certificado o

seguro, se debe modificar el fichero de configuracion de seguridad SSL de la siguiente forma:

• Abrir el archivo ssl.conf ubicado en: /etc/httpd/conf.d.

• Modificar el path de cgi-bin:

Directory “/usr/local/nocat/authserv/cgi-bin”.

• Guardar el archivo.

Page 55: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

3.8. PUESTA EN MARCHA DE NOCATAUTH 51

3.8 Puesta en marcha de NoCatAuth

NoCatAuth aunque ya esta instalado en el servidor no arranca de forma automatica

cuando se inicia el servidor, por ello se debe configurar el arranque automatico de NoCatAuth

cada vez que se inicie el servidor, de la siguiente forma:

• Copiar el archivo nocat.rc ubicado en: /root/NoCatAuth-nigthly/etc/ y luego pegarlo en:

/etc/rc.d/.

• Abrir el archivo en /etc/rc.d/ para editarlo.

• Senalar el path donde esta el ejecutable de NoCatAuth:

NC=/usr/local/nocat/gw.

• Guardarlo y renombrarlo como rc.nocat.

• Abrir el archivo rc.local.

• Comentar o borrar la lınea:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE.

• Incluir una lınea para que ejecute el archivo rc.nocat y arranque NoCatAuth:

/etc/rc.d/rc.nocat start.

• Guardar el archivo.

3.9 Funcionalidad de la puerta de enlace

Para comprobar que la puerta de enlace funciona, se debera reiniciar el servidor, es impor-

tante observar el arranque en “mostrar” detalles o mejor dicho en modo terminal y no grafico,

esto sirve para que en caso de que exista un error se pueda ubicar donde esta el problema y

resolverlo.

Una vez que el servidor ha iniciado y verificado que no ocurrio ningun error, se puede

probar la puerta de enlace desde una computadora cliente. Abrir el navegador con cualquier

pagina, lo primero que debera aparecer es un certificado de seguridad, pulsar en continuar,

despues aparecera una ventana que pide un usuario y contrasena, ingresar los datos solicitados,

y si la informacion es correcta la puerta de enlace nos redirige a la pagina solicitada, creandose

ası una sesion de Internet.

Page 56: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

52 CAPITULO 3. DESARROLLO E IMPLEMENTACION

3.10 Instalacion y configuracion de webmin

Webmin es una herramienta muy util y que trabaja sobre un entorno de ventanas con

paquetes para la gran mayorıa de aplicaciones usadas habitualmente, con lo que sera mu-

cho mas amigable la relacion con Linux. Webmin no viene incluido en la distribucion de

Fedora 4, ası pues, debe ser instalado. Para descargar la ultima version se puede hacer desde

http://www.webmin.com/.

Entre las distintas distribuciones se escoje la .rpm de esta forma al descargarla, Fedora

preguntara si se quiere instalarla directamente, se acepta y Fedora Core 4 lo instala directamente

en el servidor. Ya dentro de la pagina de webmin se debera de descargar el modulo de webmin

que se encuentra en la seccion modulos de terceros, para que ası se pueda configurar NoCat

desde webmin.

Una vez instalado se accede a webmin, para ello se abre cualquier navegador y se teclea

http://localhost:10000 , es decir, se accede a webmin a traves del puerto 10000.

Inmediatamente aparecera una ventana, donde pide un usuario y contrasena, para ello se

teclear el usuario de administrador, es decir root, y la contrasena correspondiente a el.

Ya dentro de la interfaz del webmin, se debera de configurar, primero se debe cambiar el

idioma seleccionando “change language and theme” y se escoge el idioma deseado. Siguiente

paso, ir a configuracion de webmin, modulos de webmin, se escoge la ubicacion donde previa-

mente fue guardado el modulo de webmin y se instala. Ahora se comprueba que la instalacion

ha funcionado, para esto ir a la seccion de servidores, y se comprobara que el modulo de NoCat

Authentication Gateway esta ahı, seguido de esto dar un click sobre NoCat, a continuacion

aparecera un mensaje que dira que nocat no esta instalado, esto es normal porque nocat esta

disenado por defecto para una instalacion diferente a la que se ha realizado, ası pues se debera

cambiar la configuracion para que webmin encuentre a NoCat, dar click sobre la pestana con-

figuracion del modulo, y se vera que las rutas son diferentes a las actuales, ası que bastara con

cambiarlas de la siguiente manera:

Authserv configuration file: /usr/local/nocat/authserv/nocat.conf.

Gateway configuration file: /usr/local/nocat/gw/nocat.conf.

Gateway command: /usr/local/nocat/gw/bin/gateway.

Page 57: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

3.11. SARG 53

De esta manera nocat estara configurado.

3.11 SARG

Instalacion de SARG (Squid Analysis Report Generator, Generador de Reportes de

Analisis de Squid)

Seguir los pasos siguientes:

Descargar el archivo sarg-3.2.3.1.tar.gz en el directorio /root.

Descomprimir el archivo sarg-3.2.3.1.tar.gz en el directorio /root.

Desde la terminal entrar a /root/sarg-2.2.3.1/.

Teclear ./configure.

make.

make install.

Con estas instrucciones se tendra instalado SARG.

Rotacion de archivos de Squid

El archivo access.log que se encuentra en /var/log/squid guarda la informacion de acceso

de todos los usuarios de Squid, Sarg toma la informacion necesaria de este archivo para crear

los reportes. La capacidad del archivo access.log no es infinita por lo que es necesario rotar el

archivo, para esto, primero en el arhivo de configuracion squid.conf en /etc/squid configurar la

siguiente lınea:

logfile rotate 7

Con la lınea anterior se especifıca el numero de rotaciones que se pueden hacer cuando se

teclee squid -k rotate, con este comando access.log, se convertira en access.log.0,y ası sucesiva-

mente. Pero lo que se desea es automatizar el proceso, para esto se crea un script, que haga

la rotacion de archivos todos los dıas a una hora determinada del dıa. El script sera llamado

“rotacion”, que estara en /etc/squid, cuyo codigo es el siguiente:

squid -k rotate.

at -f /etc/squid/rotacion 23:00 tomorrow.

Page 58: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

54 CAPITULO 3. DESARROLLO E IMPLEMENTACION

3.12 ClamAv

Instalacion y configuracion de ClamAv(Clam AntiVirus)

Seguir los siguientes pasos:

Bajar ClamAV en: http://www.clamav.net/.

Descomprimir el archivo Tar de ClamAV en /root.

Generar un usuario de sistema llamado clamav para que la instalacion sea designada a este

usuario.

Descienda a este directorio raız y ejecute : ./configure ; al realizar este paso sera generado un

archivo para llevar acabo la compilacion del codigo fuente.

Ejecute make para iniciar el proceso de compilacion.

Ejecute make install para instalar ClamAV.

Como fase de prueba, invoque el comando which clamscan, el cual debe retornar el valor

/usr/local/sbin/clamscan, ası indicando que el ejecutable de ClamAV fue instalado exitosa-

mente en el directorio /usr/local/sbin/.

Ejecucion de ClamAv

Para que el ClamAv empiece a trabajar es necesario activarlo para esto:

Abrir un navegador, teclear en la barra de navegacion http://127.0.0.1:10000.

Ir a la seccion sistema.

Clam Antivirus.

Dar click sobre el boton Activar ClamAv.

3.13 Bases de datos en MySQL

Base de datos Sistema

Tabla usuariossistema

En esta tabla se guardan los datos de los usuarios del sistema, en el caso del proyecto los

usuarios son: administrador y privilegiado. La tabla contiene los atributos:

Atributo Tipo Longitud Clave primaria

usuario char 30 Clave primaria

Page 59: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

3.14. DISENO PHP 55

password char 30

Base de datos Tesis

Tabla Direccionesip

En esta tabla se guardan las direcciones ip a las cuales el administrador o el usuario

privilegiado del sistema van a negar el servicio de Internet. La tabla contiene solo un atributo:

Atributo Tipo Longitud Clave primaria

direccion char 25

Tabla usuarios

En esta tabla se encuentran los usuarios a los cuales el administrador del sistema les ha

negado el servicio de Internet. Los atributos son los siguientes:

Atributo Tipo Longitud Clave primaria

url char 255

description text

created datetime

modified timestamp

status unsigned

login char 250 Clave primaria

pass char 255

name char 255

3.14 Diseno PHP

Pagina principal

En la figura 3.2 se muestra la pagina principal, a la que sera direccionado cualquier cliente

que desee tener conexion a Internet, en la pagina se encuentra un formulario, en donde se debera

de introducir el nombre de usuario ademas de la contrasena correspondiente, estos datos seran

Page 60: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

56 CAPITULO 3. DESARROLLO E IMPLEMENTACION

Figura 3.2: Pagina principal

Page 61: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

3.14. DISENO PHP 57

Figura 3.3: Pagina de bienvenida

verificados con la base de datos NoCat, en donde se encuentra la tabla member, que contiene

los datos de los clientes a los cuales se les permitira el acceso a Internet.

Pagina de bienvenida

Al momento de que el usuario ha ingresado los datos correctos, sera direccionado a una

pagina de bienvenida (figura 3.3), en donde le indica al usuario un tiempo de 5 segundos para

ser redireccionado a la pagina que en un principio indico en el navegador. Tambien a partir

de que el usuario ha ingresado los datos correctos, sera desplegada una ventana en donde se le

indica al usuario que debe de mantener abierta dicha ventana, para que la autenticacion pueda

ser renovada cada 450 segundos. Si el cliente lo desea pueda pulsar el boton de logout que se

encuentra dentro de la ventana, de este modo terminara su sesion.

Page 62: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

58 CAPITULO 3. DESARROLLO E IMPLEMENTACION

Figura 3.4: Autenticacion del administrador

Page 63: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

3.14. DISENO PHP 59

Figura 3.5: Menu del administrador

Autenticacion del administrador

En esta pagina (figura 3.4) el administrador del sistema debera de ingresar el nombre de

usuario y su respectiva contrasena, para que los datos sean comprobados en la base de datos

sistema, dentro de la tabla usuariossistema, en la cual se encuentran los datos del administrador

y del usuario privilegiado, para que de esta forma pueda entrar al sistema de control.

Menu principal del administrador

En este menu (figura 3.5), el administrador podra controlar las diferentes tareas del sis-

tema, como lo es la restriccion de: una direccion ip, rango de direcciones ip, de usuarios,

del ancho de banda, de paginas web; desbloquear: usuarios y direcciones ip; altas y bajas de

alumnos; crear y visualizar reportes, ademas de poder cambiar la contrasena del administrador.

Page 64: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

60 CAPITULO 3. DESARROLLO E IMPLEMENTACION

Figura 3.6: Restringir una direccion ip

Restriccion de una direccion ip

En esta pagina (figura 3.6)el administrador del sistema podra restringir el uso de Internet

a las direcciones ip que se deseen, a traves de una caja de texto en la que debera de ingresar la

direccion a la cual no se le permitira el acceso a Internet. Mediante codigo PHP el contenido

de la caja de texto sera insertado en la base de datos tesis dentro de la tabla direccionesip,

para que a la vez todo el contenido de la tabla direccionesip sea copiado a un archivo de texto

llamado direccionesideseadas.txt, tal archivo sera leido por el proxy Squid para ası delimitar el

acceso a Internet a las direcciones ip que esten dentro del archivo direccionesindeseadas.txt. Al

momento de ingresar la direccion ip aparecera una tabla con el contenido de la base de datos,

mostrando las direcciones ip que al momento estan bloqueadas.

Page 65: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

3.14. DISENO PHP 61

Figura 3.7: Restriccion de un rango de direcciones ip

Page 66: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

62 CAPITULO 3. DESARROLLO E IMPLEMENTACION

Restriccion de un rango de direcciones ip

En esta pagina (figura 3.7), el administrador del sistema podra restringir el uso de Internet

a un rango de direcciones ip que se deseen, a traves de dos cajas de texto, en las cuales, dentro

de la primera caja de texto debera de ir el inicio del rango de direcciones, por ejemplo, si se

quiere delimitar el rango de direcciones de la 192.168.0.5 a la 192.168.0.8, dentro de la primera

caja de texto se debera ingresar el numero 5, por lo tanto en la segunda caja de texto se debera

de ingresar el fin del rango deseado, en este caso 8. A traves de codigo PHP el contenido de las

cajas de texto sera tratado para insertar una a una las direcciones ip, en la base de datos tesis

dentro de la tabla direccionesip, para que a la vez todo el contenido de la tabla direccionesip

sea copiado a un archivo de texto llamado direccionesideseadas.txt, tal archivo sera leido por

el proxy Squid para ası delimitar el acceso a Internet a las direcciones ip que esten dentro

del archivo direccionesindeseadas.txt. Al momento de ingresar la direccion ip aparecera una

tabla con el contenido de la base de datos, mostrando las direcciones ip que al momento estan

bloqueadas.

Desbloquear direcciones ip

En esta pagina (figura 3.8), el administrador podra desbloquear las direcciones ip, que

han sido bloqueadas con anterioridad. A traves de la tabla que se muestra en la pagina se podra

observar cuales direcciones ip estan bloqueadas, solo se debera de poner la direccion ip que se

desea desbloquear en la caja de texto, de este modo con codigo PHP, se realizara una busqueda

dentro de la base de datos tesis, en la tabla direccionesip, ya que se encuentra el dato ingresado

es borrado de la tabla. El proximo paso sera actualizar el archivo de texto direccionesinde-

seadas.txt, que es el archivo que contiene las direcciones ip que no son permitidas por el proxy

Squid, para esto, mediante codigo PHP es eliminado el archivo direccionesindeseadas.txt, de-

spues con una funcion es creado nuevamente el archivo direccionesindeseadas.txt sin contenido

alguno, para despues otorgarle los permisos necesarios, y ası poder copiar el contenido de la

tabla direccionesip al nuevo archivo de texto.

Restriccion de usuarios

En esta pagina (figura 3.9), el administrador podra restringir el uso de Internet a ciertos

usuarios, que han sido previamente ingresado dentro de la base de datos NoCat, en la tabla

member. Para ello el administrador debera de ingresar dentro de la caja de texto el nombre

Page 67: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

3.14. DISENO PHP 63

Figura 3.8: Desbloquear direcciones ip

Page 68: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

64 CAPITULO 3. DESARROLLO E IMPLEMENTACION

Figura 3.9: Restringir usuarios

Page 69: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

3.14. DISENO PHP 65

Figura 3.10: Desbloquear usuarios

de usuario al que se le negara el acceso. Mediante codigo PHP se localizara dentro de la tabla

member en la base de datos NoCat el usuario que el administrador ha ingresado, para que a

su vez, al momento que ha sido localizado el usuario se copiaran todos los datos del usuario a

la base de datos tesis dentro de la tabla usuarios, de este modo se eliminara el registro de la

tabla member de la base de datos NoCat, para que al momento de que el usuario quiera acceso

a Internet la coneccion se le negara.

Desbloquear usuarios

En esta pagina (figura 3.10), el administrador podra desbloquear a los usuarios que pre-

viamente fueron bloqueados, a partir de la tabla que se muestra en la pagina se puede observar

cuales son los usuarios bloquedos al momento. Para desbloquear solo es necesario poner el

nombre del usuario dentro de la caja de texto, y mediante codigo PHP, se localizara en al tabla

usuarios dentro de la base de datos tesis, al localizar el usuario los datos del mismo son copiados

Page 70: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

66 CAPITULO 3. DESARROLLO E IMPLEMENTACION

Figura 3.11: Restringir el ancho de banda

a la tabla member de la base de datos nocat, que es la base de datos donde son autenticados

todos los usuarios, despues el registro es borrado de la tabla usuarios.

Restriccion del ancho de banda

En esta pagina (figura 3.11), el administrador podra restringir el uso del ancho de banda,

el valor por defecto que utiliza Nocat en el archivo de configuracion throttle.fw para los usuarios

autenticados es de 1Mb, el cual es el valor maximo, a traves de la caja de texto en la pagina

se puede modificar dicho valor, para ello se debera de ingresar un valor entre 0 y 1, donde el

valor 0 significa un ancho de banda nulo, y 1 el valor maximo de ancho de banda asigndado a

los clientes autenticados. El valor introducido sera almacenado dentro del arhivo throttle.fw,

que se encuentra en /root/NocatAuth-nightly, el cual tiene los valores de configuracion para el

ancho de banda.

Page 71: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

3.14. DISENO PHP 67

Figura 3.12: Restringir paginas de Internet

Control de sitios web

En esta pagina (figura 3.12), el administrador podra controlar el acceso a ciertas paginas

de Internet que se consideren inapropiadas, para esto se debera de escribir dentro de la caja

de texto, ya se el nombre completo de la pagina o palabras claves por ejemplo sex, drogas,

violencia, etc. Ya que se ha ingresado el contenido dentro de la caja de texto, dicho contenido

se guardara dentro del archivo de texto paginasindeseadas.txt, para que el proxy Squid, no

permita el acceso a estas paginas.

Alta de usuarios

En esta pagina (figura 3.13), el administrador podra dar de alta alumnos al sistema para

que despues dichos alumnos puedan tener acceso a Internet. A traves de las cajas de texto de la

pagina, que correponden a los valores de nombre de usuario, nombre de la sesion y contrasena,

de este modo mediante codigo PHP los datos introducidos seran insertados dentro de la tabla

Page 72: Control y monitoreo de sesiones de internet mediante un servidor SQUID en Linux

68 CAPITULO 3. DESARROLLO E IMPLEMENTACION

Figura 3.13: Alta de alumnos