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
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
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
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
CONTROL Y MONITOREO DE SESIONES DE
INTERNET MEDIANTE UN SERVIDOR SQUID EN
LINUX
JORGE ALVAREZ LOZANO
CARLOS SANDOVAL MEDINA
5 DE JUNIO DEL 2007
2 LISTA DE FIGURAS
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
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.
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.
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.
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.
8 CAPITULO 1. INTRODUCCION
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
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.
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.
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
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
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
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
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
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
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
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
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
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.
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.
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.
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.
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
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.
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
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
2.6. SERVIDORES 29
Figura 2.3: Sistema de nombres de dominio
Figura 2.4: Estructura jerarquica del DNS
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.
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
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,
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:
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).
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.
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.
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.
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.
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.
40 CAPITULO 2. FUNDAMENTOS TEORICOS
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
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.
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.
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.
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.
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
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/.
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.
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.
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.
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.
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.
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.
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
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
56 CAPITULO 3. DESARROLLO E IMPLEMENTACION
Figura 3.2: Pagina principal
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.
58 CAPITULO 3. DESARROLLO E IMPLEMENTACION
Figura 3.4: Autenticacion del administrador
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.
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.
3.14. DISENO PHP 61
Figura 3.7: Restriccion de un rango de direcciones ip
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
3.14. DISENO PHP 63
Figura 3.8: Desbloquear direcciones ip
64 CAPITULO 3. DESARROLLO E IMPLEMENTACION
Figura 3.9: Restringir usuarios
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
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.
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
68 CAPITULO 3. DESARROLLO E IMPLEMENTACION
Figura 3.13: Alta de alumnos
Top Related