Universidad Católica del Maule Facultad de Ciencias de la Ingeniería Técnico Universitario en Computación TUC-315 Habilitación Profesional INFORME DE PRÁCTICA. LUIS MIGUEL VEGA MARTINEZ. Talca, Junio de 2005. AGRADECIMIENTOS. Me gustaría dar mis más sinceros agradecimientos a las siguientes personas: • A Dios, por haberme guiado por el camino correcto en este sendero de la vida que es la Educación. • A mi Madre por haberme dado todo el apoyo tanto emocional como económico y estar en cada situación que pudiera comprometer mis estudios. Además de confiar en mi y mis capacidades. • A mis Familiares más cercanos que siempre me dieron el apoyo que necesité. • A todos los Profesores de la Universidad que me hicieron clases, por haberme enseñado sus conocimientos y experiencias. • A mis Compañeros, que siempre me dieron apoyo en las materias cuando lo necesité. • A mis Amigos, que siempre confiaron en mí y me dieron su ayuda cuando la necesité. INDICE DE CONTENIDOS. I.- INTRODUCCION……………………………….…………………………………………………........ 1 1.1.- Lugar de Trabajo……………………………………………………………..................... 2 1.2.- La Institución……………………………………………………………………………….. 3 1.3.- Objetivos del Departamento de Informática…………………………………………..... 4 1.4.- Infraestructura de la Municipalidad.………………………………………………........... 5 II.- DESCRIPCION DEL PROBLEMA………………………………………………………………….. 7 2.1.- Descripción General de las actividades realizadas……………………………………. 7 2.2.- Creación del Firewall alternativo en GNU/Linux………………………………………... 8 2.3.- Configuración de Servidor FTP en GNU/Linux…………………………………………. 9 2.4.- Diseño y Creación de Sitio Web de la Municipalidad………………………………….. 11 III.- DESCRIPCIÓN DE LAS COMPETENCIAS PUESTAS EN PRÁCTICA………………………. 15 3.1.- Creación de Firewall.……………………………………………………………………… 15 3.2.- Servidor FTP……………………………………………………………………………….. 15 3.3.- Desarrollo de Sitio Web. ………………………………………………………………….. 16 IV.- DESCRIPCIÓN DE LA SOLUCIÓN PROPUESTA.................................................................. 18 4.1.- Creación del Firewall alternativo en GNU/Linux......................................................... 18 4.2.- Configuración de Servidor FTP en GNU/Linux.......................................................... 29 4.3.- Diseño y Creación de Sitio Web de la Municipalidad. ………………………………… 36 V.- CONCLUSIONES..……………………………………………………………………………………. 51 VI.- BIBLIOGRAFIA……………………………………………………………………. ………………… 55 VII.- ANEXOS.…..…………………………………………………………………………………………. 56 7.1.- Fichero de Configuración del Firewall (firewall.sh)……………………………............. 56 7.2.- Fichero de Configuración Servidor FTP (proftpd.conf)………………………………… 60 7.3.- Pantallas de módulos funcionales Sitio Web…………………………......................... 61 7.4.- Códigos módulos funcionales Sitio Web………………………………………………. 63 7.5.- Actividades Alumno………………………………………………………………………... 71 7.6.- Documentos Práctica……………………………………………………………………… 72 INDICE DE FIGURAS. Figura 1. Organigrama de la Municipalidad de Chanco……………………………. ………………… 4 Figura 2. Diagrama de un Firewall básico……………………………………………………………… 18 Figura 3. Topología de red usada para la conexión del Firewall………………….. ………………… 23 Figura 4. IPTraf entregando información actual sobre el tráfico IP de la red……. ………………… 29 Figura 5. Cliente FTP gráfico bajo GNU/Linux……………………………………….………………… 35 Figura 6. Mapa del Sitio Web de la Municipalidad…………………………………………………….. 38 Figura 7. Colores utilizados en el Sitio Web………………………………………….………………… 39 Figura 8. Estructura de la página principal………………………………………….. ………………… 40 Figura 9. Diagrama de flujo, módulo de solicitud de información turística……….. ………………… 41 Figura 10. Diagrama de flujo, contacto desde el Sitio Web………………………. ……………… 41 Figura 11. Diseño Oficial Sitio Web de Chanco…………………………………….. ………………… 42 Figura 12. Ventana con tamaño incorrecto y ventana con tamaño correcto…….. ………………… 45 Figura 13. Sistema de estadísticas de visitas del sitio Web……………………….. ………………… 46 Figura 14. Banner de ingreso para ver el video transmitido……………………….. ………………… 48 Figura 15. Pantalla de la página Índice Noticioso…………………………………... ………………… 61 Figura 16. Pantalla de la página Solicitud de Información Turística.……………............................ 61 Figura 17. Respuesta al enviar una solicitud de información………………………………………… 62 Figura 18. Formulario de Contacto……………………………………………………………………… 62 Figura 19. Pantalla de Ingreso al Chat y su funcionamiento…………………………………………. 62 Figura 20. Contrato de Práctica Profesional…………………………………………………………….72 Figura 21. Inscripción de Práctica Profesional…………………………………………………………. 73 I.- INTRODUCCIÓN. En el siguiente informe se presentarán y explicarán las actividades realizadas en la práctica profesional realizada en la Ilustre Municipalidad de Chanco, la cual comprendió un periodo de dos meses (Enero y Febrero) con un total de 400 horas, con el fin de de optar al Titulo de Técnico Universitario en Computación de la Universidad Católica del Maule. La Ilustre Municipalidad de Chanco cuenta con un Departamento de Informática en donde se desarrolló todo el proceso de la Práctica realizando distintas actividades. El Departamento de Informática, además cuenta con personal capacitado para resolver los distintos problemas e inquietudes que se presentan a diario y que tiene que ver con el proceso laboral de las personas y la institución Las actividades abarcan, como dominio de práctica, las áreas de Software y Soporte Técnico. Estos dos puntos fueron desarrollados de forma integral durante todo el periodo de práctica, donde se pueden destacar las siguientes actividades: Soporte Técnico: Mantención de equipos. Instalación y Configuración de Hardware Reparación de Equipos Computacionales. Administración de la red local de la institución. Software. Creación, Desarrollo y Diseño del Sitio Web de la Municipalidad. Transmisión vía Internet del Festival de Chanco. (Streaming). Manejos de Sistemas de información (en menor escala). Cada actividad fue supervisada por el Jefe del Departamento de Informática de la Municipalidad, el señor Fernando Seguy Aravena, el cual está encargado de mantener la seguridad en los equipos, así como también su correcto funcionamiento, lo que permite el buen desarrollo de las actividades del personal de la Municipalidad. 1 Otras actividades importantes son el mantenimiento de la Red Local de la Municipalidad entre los distintos departamentos que la componen, gestionar el buen uso de Internet por parte de los funcionarios y por último proteger la red local de presuntos intrusos que pudieran acceder a ella desde Internet. 1.1.- LUGAR DE TRABAJO. El jefe del Departamento de Informática asignó una oficina dotada de un computador Pentium de 400Mhz, 32mb en RAM, HDD de 4GB, Red 10/100, Conexión a Internet y Sistema Operativo Windows 98 SE. El Sistema Operativo fue borrado del disco duro posteriormente para instalar Debian Sarge GNU/Linux, en donde gran parte de las actividades fueron desarrolladas en él. - Horario. La práctica comenzó el día 3 de enero de 2005 y terminó el día 25 de Febrero de 2005, cumpliendo el siguiente horario. De lunes a viernes: • Desde las 8:30 a las 13:00 horas. • Desde las 13:45 a las 18:00 horas. Cabe mencionar que este era el horario que se debía cumplir obligatoriamente, pero muchas veces se tuvo que hacer horas extras, por lo que las 400 horas pedidas por la Universidad se cumplieron satisfactoriamente. Otro punto a recordar es que se trabajó los días del Festival, los que contemplaron los días Viernes, Sábado y Domingo, desde las 21:00 horas hasta las 4:00 de la madrugada, completándose 24 horas mas. - Cargos desempeñados. El cargo desempeñado dentro del periodo de práctica fue principalmente el de Administración de Sistemas, con esto nos referimos a la Administración de Redes, Seguridad en Redes, Configuración de Software y Hardware, etc. El otro cargo que también fue desempañado, principalmente las últimas semanas de práctica (Mes de Febrero) fue el de Soporte Técnico, en donde las tareas principales fueron el arreglo, configuración e instalación de hardware, configuración de Estaciones de Trabajo, apoyo teórico al Personal de la Municipalidad, etc. 2 Un cargo, el cual duró por dos semanas fue el de reemplazante del Jefe del Departamento de Informática, ya que el Sr. Fernando Seguy tomó vacaciones. En este periodo las actividades tuvieron un comportamiento normal, salvo que un día el servicio de Internet no funcionaba y se estuvo aproximadamente cuatro horas tratando de reestablecer la conexión con personal de Telefónica, hasta que finalmente se comprobó que el Firewall físico (D-Link) se encontraba con problemas por lo que se tuvo que reconfigurar nuevamente. - Relaciones con el Personal. Las relaciones con el personal pertenecientes a otros departamentos de la Municipalidad se hacía en forma directa, esto es, si alguna persona tenía algún problema con algún computador, ya sea por problemas con el Sistema Operativo, configuración de Software, Hardware, etc., la persona hablaba directamente con el encargado y solucionaba el problema, no era necesario hablar con el jefe del departamento, aunque en casos extremos si se debía hacer. 1.2.- LA INSTITUCIÓN. - Descripción General. La Institución, en la cual se realizó la práctica profesional es la Ilustre Municipalidad de Chanco, ubicada en la Comuna de Chanco, Provincia de Cauquenes, en la VII Región del Maule. Esta institución pública está divida en varios departamentos, entre los que se destacan: Salud, Educación, Obras, Social, Turismo, Relaciones Públicas, Finanzas e Informática (sin dejar de lado la Alcaldía y Concejales), este último (Informática), es en donde se efectuó la Práctica Profesional. La Ilustre Municipalidad de Chanco está a cargo de la Señora Alcaldesa Muriel Muñoz Moreno, y es la persona que autorizó la realización de la práctica por parte del estudiante. Además de la Señora Alcaldesa se encuentran los Concejales de la Comuna y los Jefes de los distintos departamentos, los que se reúnen en diferentes ocasiones para tratar temas de la comuna y la institución. El Departamento de Informática de la Ilustre Municipalidad de Chanco, sirve de apoyo a todos los departamentos de la institución incluyendo algunas entidades públicas que no sean parte de la institución. 3 - El Organigrama. Figura 1. Organigrama de la Municipalidad de Chanco. - Grupo de Trabajo. El grupo de trabajo que compone el Departamento de Informática de la Ilustre Municipalidad de Chanco, está constituido por cuatro personas. El jefe del Departamento de Informática, Fernando Seguy Aravena (Ingeniero en Ejecución Informática, fseguy@chanco.cl), que es el encargado de administrar los sistemas computacionales que posee la institución, tales como: Redes, Sistemas de Información, Soporte a Equipos, etc. Las tres personas restantes efectúan trabajos que se relacionan con trámites a través de Internet, como por ejemplo: Crear Licitaciones en el Portal Chile Compra, contactos a través de correo electrónico a diferentes instituciones, etc. 1.3.- OBJETIVOS DEL DEPARTAMENTO DE INFORMÁTICA. El objetivo del Departamento de Informática es dar apoyo tanto teórico como técnico a los diferentes Departamentos que conforman la institución, así como también velar por la seguridad de los sistemas computacionales, en cuanto a mantención, actualización, configuración, etc., de manera que se tenga el mejor rendimiento de ellos y así mejorar la calidad de los servicios que se están entregando. Entregar apoyo técnico a las diferentes instituciones de la comuna, principalmente a escuelas, en donde los laboratorios de computación muchas veces no son mantenidos de manera correcta. 4 - Reglas. El uso de los computadores esta reservado nada mas que para el uso laboral, no se acepta que se usen para otras tareas como descargar música desde Internet, instalar programas del tipo P2P (Peer to Peer), desarmar los equipos, trasladarlos sin autorización previa, etc. Solo se permite el uso de computadores a la persona que le fue asignado, debe haber una autorización previa en el caso de que otra persona use dicho equipo. El uso del Chat es solo con fines laborales y no se acepta la instalación de Software Pirata o que no cuente con licencia legal. 1.4.- INFRAESTRUCTURA DE LA MUNICIPALIDAD. La institución cuenta con computadores en cada uno de sus departamentos habiendo aproximadamente unos 30 equipos en las estaciones de trabajo. Las características de estos varían, ya que por diferentes razones los computadores son armados de manera independiente, según las necesidades de algún departamento. Además la institución cuenta con equipos destinados a propósitos específicos, tales como un Plotter, Sismógrafo, Router, Cámara Digital, etc. los que son utilizados en diferentes actividades. - Equipos. Podemos destacar los siguientes equipos: • 1 Servidor Windows 2000 Server. • 15 Pentium de 400Mhz, 2Gb de Disco Duro 32Mb RAM, Windows 98 SE. • 5 Pentium de 600Mhz, 4Gb de Disco Duro, 64Mb RAM. Windows 98 SE. • 10 Pentium IV de 2.6 Ghz, 40Gb Disco Duro, 128Mb RAM, WindowsXP Pro. (SP1 y SP2) • 1 Plotter, ocupada por Prodesal, para la impresión de Mapas y algunos afiches. • 1 Router Cisco, Para conexión a Internet, arrendado por Telefónica. • 2 Módem, un RDSI de 128 Kbps y uno de 56Kbps. • 2 Switch/Firewall/Router D-Link. • 4 Hubs de 10Mb, Distribuidos en los diferentes departamentos • 1 Cámara Digital DSC-P32, para fotos de eventos y página Web. • 1 Data Show, para cubrir presentaciones. • 12 Impresoras de Tinta, para los diferentes departamentos. 5 Cabe mencionar que cada uno de los equipos cuenta con sus licencias en lo que se refiere a Sistemas Operativos, Herramientas de Ofimática, Antivirus y Software Utilitario. - Red Municipal. Hablaremos acerca de la red local de la Municipalidad y la Conexión a Internet que esta posee, además se darán a conocer algunas reglas que se deben seguir. Cabe señalar que no todos los computadores cuentan con conexión a Internet, ya que la conexión es bastante limitada (128Kbps) y solo se reserva el uso de Internet a los departamentos que realmente lo requieren, tales como Alcaldía, Informática, Turismo, Relaciones Públicas, etc. Si por alguna razón se sorprende usando Internet para tareas no laborales, simplemente se suspende el servicio, ya que se considera que el uso no es necesario. Otro punto a destacar es que la Municipalidad esta conectado por completa en red (LAN), incluso a departamentos que se encuentran fuera del edifico de la Municipalidad, como por ejemplo el Departamento de Salud que esta ubicado a unos 300 metros, el cual se conecta a la red local mediante un Cable Coaxial (RG58). Lo mismo pasa con el Juzgado de Policial Local, el cual está ubicado a unos 320 metros, y que se conecta a la red local mediante un acceso telefónico a redes utilizando una VPN (Red Privada Virtual) con un módem de 56Kbps. Recordemos que una Red LAN, es una red de área local, como lo indican sus siglas en inglés. Este tipo de redes se suele usar en lugares geográficamente pequeños, donde prácticamente la distancia entre un equipo a otro no supera los 150 metros, [Roja, 02a]. 6 II.- DESCRIPCIÓN DEL PROBLEMA. 2.1.- Descripción General de las actividades realizadas. - Creación de Firewall Alternativo. El Objetivo de esta tarea es tener una solución alternativa y que funcione, en lo que se refiere a la administración y protección de la Red Local. En pocas palabras se supone que la Red Local es segura, pero la Red de Redes (Internet), no lo es, por lo tanto, el Firewall permite proteger de posibles ataques externos y además evita que los usuarios de la Red Local reenvíen paquetes (TCP o UDP) no permitidos y que no se ajustan a los fines laborales. - Configuración de un Servidor FTP. El servidor FTP (File Transfer Protocol), tiene como objetivo el respaldo de información por parte de los usuarios de la Red Local, o simplemente compartir información de interés para todos los usuarios. Además se evita el uso compartido de carpetas por parte de los usuarios. - Creación del Sitio Web. Esta fue una de las tareas en la que se ocupó más tiempo, ya que el Sitio Web tuvo que ser diseñado por completo, eso sí, usando información que ya estaba en el sitio antiguo. Además se añadieron una serie de módulos completamente funcionales, tales como un Sistema de Estadísticas, un Formulario con Solicitud de Información, un Formulario de Contacto, y un Chat. Además, por cuarta vez, el Festival del Cantar Mexicano de Chanco fue transmitido por Internet, utilizando el codificador de Windows media que provee Microsoft gratuitamente, en donde se tuvo una gran cantidad de visitas durante los tres días que duró el Festival. - Soporte Técnico. El objetivo de esta tarea fue dar apoyo teórico y técnico a los funcionarios municipales, en lo que se refiere a la utilización de Software y Hardware. No se dará una explicación detallada de esta actividad, ya que se integra a cada una de las actividades anteriores. 7 2.2.- CREACIÓN DEL FIREWALL ALTERNATIVO EN GNU/LINUX. 1 En la mayoría de las organizaciones la seguridad es una parte más de la red y del sistema . Resulta de gran relevancia ya que un sistema computacional carecería de sentido si la integridad y la confidencialidad de la información que se procesa fuera violada. Existen muchas amenazas en Internet y en la propia red local que se deben proteger, estas pueden ser: • Ataques de Crackers (no Hackers). • Propagación de Virus, Gusanos (desde y hacia nuestra red). • DoS (Denegación de Servicios). • Mal uso del ancho de banda. • Acceso a información prohibida. • Mal uso del sistema (accidentalmente). • Muchos Otros. - Objetivos. Cada Firewall tiene uno o más objetivos, y estos se crean a partir de las necesidades de nuestra 2 red, de esta manera definiremos las políticas o reglas que tendrá nuestro Firewall . Las más importantes se muestran a continuación: • Lograr de una mejor manera el filtrado de paquetes que posee el Firewall físico utilizado hasta el momento. • Dar seguridad a los servicios ofrecidos solamente a la red local, con el fin de que personas ajenas a la red no puedan entrar. • Bloquear el acceso desde Internet a computadoras de la red local, salvo los que se especifiquen en las reglas del Firewall. • Bloquear el acceso a páginas que puedan distraer al personal de la Institución (Chat, páginas con contenido pornográfico, juegos, etc.). • Permitir la salida a Internet de la red local (Gateway). - Logros de la actividad. Esta actividad tuvo sus logros en lo que se refiere al desarrollo, la implementación y puesta en marcha del Firewall, que resultó todo un éxito. 1 2 Ver, Cortafuegos para redes. Filtrado de paquetes, http://dns.bdat.net/documentos/cortafuegos/x26.html Ver, Instalación de un Firewall, http://www.glib.org.mx/article.php?story=20030330191547238 8 Por otro lado se logró que el Firewall funcionara correctamente, esto quiere decir que el Bloqueo de páginas, bloqueo de servicios, redirección de puertos a máquinas locales, la utilización de NAT y el uso de MASQUERADE para permitir que la red saliera a Internet se logró con éxito. En primera instancia se tuvo que leer mucha documentación acerca de la implementación de este tipo de Firewalls, así como también se debió preguntar a algunos administradores de red para que nos orientaran un poco, ya que no se tenia una experiencia previa, salvo alguna que otras pruebas realizadas de forma particular. Lo anterior fue uno de los puntos en contra, pero que logró superarse después de haber realizado 3 4 una gran cantidad de preguntas en listas de discusión de Linux en general y Debian . Lo que no se logró fue principalmente que el Firewall no se implementara de forma definitiva en la red y que se convirtiera en una alternativa real, es decir, que el Firewall quedara implementado permanentemente en la Municipalidad, algo que sin duda es una opción abierta. 2.3- CONFIGURACIÓN DE SERVIDOR FTP EN GNU/LINUX. A continuación se explicará en forma detallada como fue la creación y configuración de un Servidor FTP de uso local utilizando GNU/Linux, para ello se presentarán las herramientas utilizadas en su creación y posterior utilización. Los servidores FTP, por muchos años, se han usado y aún se usan en Internet para la transferencia de archivos así como también para respaldar información. El uso más común a la vista es la transferencia de archivos a servidores que sirven páginas Web, de esta manera a los usuarios se les hace mas fácil subir sus archivos a dichos servidores. Otro uso importante que se le da al FTP, es la descarga de archivos relativamente grandes, utilizando para ello el FTP anónimo, lo cual permite iniciar una sesión en el servidor FTP sin tener una cuenta asociada. La implementación de un servidor FTP para uso interno permite compartir archivos que son de interés común para el personal de la institución, así como también permite el respaldo de información en un computador seguro, de tal manera que la información respaldada no corra el riesgo de que se pierda. 3 4 Ver, The Linux Home Page, http://www.linux.org Ver, Debian, The Universal Operating System, http://www.debian.org 9 Como esto es algo nuevo para los usuarios de la red, se tuvo que capacitar a la mayoría de ellos, ya que el uso de los computadores por parte del personal, se reduce a la utilización de herramientas de ofimática, navegación en Internet, uso de clientes de correo, entre otras cosas, pero no en el uso de un cliente FTP. - Objetivos. • Hacer que los usuarios de la Red Local puedan respaldar sus archivos, tales como documentos, imágenes, e-mail, etc., de manera que si quedan sin espacio en sus discos duros puedan almacenar temporalmente su información. • Compartir archivos que le puedan servir a todo el personal de la institución, tales como documentos PDF o Word que contienen oficios, memorandos, circulares y todo tipo de documentos reservados para el uso interno. • Evitar el uso compartido de carpetas entre los usuarios de la red local (situación actual) ya que a veces puede causar que la red se vuelva muchas veces lenta. Además se evita que los usuarios de la red puedan entrar a computadores donde la información puede ser privada. • Respaldar Software que son de utilidad en la mayoría de los computadores de la red, tales como Antivirus, Compresores, Drivers para Impresoras, Procesadores de Texto, actualizaciones de Sistemas Operativos, etc. De esta manera se evita andar con los CDs de instalación de un lado a otro. - Logros de la actividad. Esta actividad cumplió sus objetivos de manera correcta y fue la actividad más rápida en cumplirse ya que se contaba con la experiencia en la implementación de servidores de transferencia de 5 archivos, tanto en Windows como GNU/Linux. En primera instancia se pidió crear un Servidor FTP de tipo anónimo, pero no se pudo implementar por la razón de que los usuarios finales (personal de la Municipalidad) no contaban con el conocimiento y la capacidad de conectarse al servidor de la manera que lo requiere un FTP anónimo. 5 Vea, Web Oficial de Microsoft, http://www.microsoft.com 10 Para recordar, debemos decir que un FTP Anónimo requiere de un nombre de usuario, que en la mayoría de los casos es: “anonymous”, “anonimo”, “ftp”, y como contraseña se debe especificar un correo electrónico cualquiera. La manera de entrar al servidor puede ser variada, desde, entrar por consola, a través de exploradores de ventanas, o lo más común, con un cliente FTP. Finalmente los usuarios pueden guardar sus archivos en el servidor y respaldarlos sin ningún problema, pero no todos aprendieron a usar el cliente FTP. 2.4- DISEÑO Y CREACIÓN DE SITIO WEB DE LA MUNICIPALIDAD. En la actualidad el número de Sitios Web pertenecientes a instituciones públicas ha incrementado de manera considerable, a esto además se le agrega el uso masivo de Internet a nivel nacional. Aunque aún existe una pequeña parte de la sociedad que no tiene acceso a las nuevas 6 tecnologías de la información (NTI) . Por otro lado, la prestación de servicios vía web por parte de las municipalidades se ha desarrollado bastante en los últimos años, podemos mencionar, pagos de permisos de circulación, solicitud de información, ofrecer información sobre las actividades internas de la institución, entre otras. Es por esto que creemos que un Sitio Web para una institución pública, es de gran ayuda en el avance de esta. Haciendo un buen uso de las Tecnologías de la Información se puede lograr que las personas hagan del Sitio Web una herramienta indispensable, [Vidal, 03]. A continuación se explicará la metodología usada en el diseño y construcción del Sitio Web de la Ilustre Municipalidad de Chanco, la forma en que se cumplieron los objetivos deseados, las herramientas utilizadas, contenidos definidos, creación de la estructura, etc. Para esto daremos una breve explicación de cada uno de los pasos que se realizaron. - Planificación del Sitio Web. Para desarrollar un Sitio Web se debe tener muy en claro algunos aspectos que son de vital importancia, como por ejemplo, la necesidad de la institución pro desarrollar un sitio, cuales son sus objetivos, que busca el visitante, a que público está dirigido, tecnologías a usar, etc. Tales 7 aspectos se nombran a continuación . 6 7 Ver, Guía Web 1.0, http://www.guiaweb.gov.cl/ Ver, Guía Web 1.0, Capítulo 1, http://www.guiaweb.gov.cl/guia/capitulos/uno/index.htm 11 Se quiere dar una nueva imagen de la Municipalidad a los usuarios, es decir, una institución que va avanzando en el uso de Tecnologías de la Información, una institución seria y que ofrece una gran cantidad de oportunidades en la Comuna. Se necesita un Sitio Web para dar información tanto a la comunidad local, como a personas que se encuentran en otros lugares del País y del mundo. La información se refiere a noticias que tengan que ver con la realidad local y provincial, informar sobre eventos, licitaciones, etc. Dar servicios a los visitantes, en donde por ejemplo, los visitantes puedan conversar en línea y en tiempo real (Chat), y algún tipo de contacto con la Municipalidad que vaya más allá del contacto físico. Podemos reducir el número de personas que visitan la Municipalidad, ofreciendo información útil a las personas a través del Sitio Web, como por ejemplo folletos de información turística, planos, etc. Por otro lado, el sitio está dirigido a todo tipo de personas, es decir, los más chicos pueden ver información referente a las actividades de verano, que por lo general se enfoca hacia los mas pequeños, los adolescentes buscan por lo general conectarse al Chat, y los mas adultos por lo general solicitan información turística, hacen comentarios al personal de la institución a través del módulo Contacto, etc. Se aprovecharán al máximo las tecnologías disponibles, tales como Editores Web (FrontPage, Crimson Editor, gEdit), Edición de imágenes (Fireworks, Paint, Gimp), Animación (SwishMax) Lenguajes de Programación (HTML, PHP, JavaScripts, CSS), Cliente FTP (SecureFX, gFTP), etc. Una vez que tengamos claro hacia donde y que camino debe tomar el Sitio Web, pasaremos a definir los objetivos, los cuales deben ser muy claros, para que así se logre el mayor enfoque y desarrollar efectivamente lo que se desea alcanzar. - Objetivos Definiremos un objetivo global, el cual ayudará a tener una idea global de lo que se quiere lograr y a partir de esto iremos proponiendo objetivos mas específicos que se irán cumpliendo a medida que se avance en el desarrollo del sitio. • El objetivo principal del Sitio Web es ofrecer un servicio a la comunidad, en donde los visitantes se puedan informar sobre las actividades de la Institución y de la comunidad en general, por otro lado, que el visitante pueda comunicarse con la institución haciendo 12 preguntas sobre los diferentes acontecimientos y sus inquietudes, todo esto de una forma amigable, didáctica y fácil de encontrar. • Ofrecer información a la comunidad en general y a personas de otros lugares, de manera que tengan conocimiento sobre la realidad local y de lo que vendrá próximamente. Esta información será presentada en un módulo de Noticias, que por lo general cada semana será actualizada. • Permitir la interacción entre las personas que visitan el sitio, esto es, que las personas pueden conversar en tiempo real y compartir ideas, establecer relaciones, etc. • Promocionar el turismo en la comuna, a través de un módulo en donde los visitantes puedan solicitar folletos de información turística, mapas, etc. Y además ofrecer una guía turística online, en donde el visitante pueda ver desde cualquier lugar los atractivos turísticos de la comuna. • Fomentar el comercio local, destacando un comerciante (PyME) cada mes, mostrando sus productos e información adicional que pueda ser de gran ayuda para el visitante. • Dar información sobre las autoridades de la comuna, y además que los visitantes puedan enviarle mensajes a ellos. - Equipo de trabajo. El equipo de trabajo está compuesto por dos personas, el jefe del Departamento de Informática de la Municipalidad, Fernando Seguy y el alumno en práctica, Luis Vega. Se debe tener una relación constante para así saber lo que falta y lo que se puede mejorar. Entre las actividades a desarrollar y cargos establecidos se encuentran: • Fernando Seguy: Gestor de contenido, es decir, seleccionar módulos que se incluirán en el sitio, de esta manera se le dará la formalidad deseada. Además ayuda a la creación de estos mismos, en lo que se refiere a la información (estructura, formato, etc.). Por otro lado ayuda a revisar sistemáticamente la actualización de la información. • Luis Vega: Webmaster, es el encargado de la construcción física e infraestructura técnica del sitio. Además es el que hace uso de las tecnologías mencionadas anteriormente. Otra tarea a desarrollar es la de implementación del sito, en donde las actividades son el diseño en lo que se refiere a la estética y por otro lado la programación de este. 13 - Logros y no logros. En general, todo lo que se pidió hacer fue realizado sin ningún problema. El sitio cumplió con la mayoría de sus expectativas, ya que se incrementó bastante el número de visitas por día y los módulos creados han funcionado con éxito hasta el día de hoy. Algo que sin duda dejó muy contentos a los Jefes de la institución. Uno de los problemas que se tuvo y no pudo ser solucionado fue el de cambiar el Chat, en todos sus aspectos, es decir, desde el lenguaje de programación usado, hasta su estética. Esto no se pudo lograr ya el servicio de Hosting de la página tenia unos problemas con el soporte para el lenguaje PHP, ya que el Chat estaba programado en ese lenguaje, y el antiguo Chat estaba desarrollado con ASP y no tenía muchas prestaciones por decirlo así. Se llegó a la conclusión de que el hosting tenia incompatibilidad de con la versión de PHP, ya que se estaba usando la versión 4.3.4 y nosotros una mas antigua. Pero no quiere decir que el Chat no funcione, por que había sido probado en otros servidores, donde funcionó sin ningún problema. 14 III.- DESCRIPCIÓN DE LAS COMPETENCIAS PUESTAS EN PRÁCTICA. 3.1.- Creación de Firewall. Las competencias puestas en práctica para esta actividad son las siguientes: Utilización de plataformas x86, para el desarrollo del Firewall Administración de Redes Computacionales. Configuración de equipos en diferentes plataformas para adaptarse a una red corporativa. Utilización de plataformas basadas en Unix, como lo son Windows y GNU/Linux. Utilización de Software libre para desarrollar las soluciones propuestas. Uso de diferentes metodologías para solucionar los problemas. Técnicas de expresión para aclarar dudas con respecto a la problemática. Entre otras. El dominio de realización para esta actividad consta del Soporte Técnico, esto abarca todo lo mencionado anteriormente, lo que se reflejará en la explicación que se dará más adelante. En cuanto a las dificultades encontradas, podemos mencionar la poca experiencia en la implementación de firewalls bajo plataformas Linux, y un poco de desconocimiento del funcionamiento de la red local de la institución. La forma en que se resolvieron estas dificultades consta desde la inscripción en listas de correo, hasta las consultas realizadas administradores de redes que ya han trabajado en el tema de 8 GNU/Linux y la seguridad de sistemas . Lo anterior también está respaldado por la lectura de documentos y ejemplos encontrados en Internet, lo cual dio mucha ayuda a la resolución del problema. 3.2.- Servidor FTP. Las competencias puestas en práctica para esta actividad en específico, fue básicamente la de Soporte Técnico (domino de realización), ya que requiere en un 100% la utilización de Sistemas Operativos, tanto Windows como GNU/Linux, para la configuración, implementación y puesta en marcha del servicio y por otro lado el manejo de redes de área local (LAN) y redes de áreas extensas (WAN). 8 Ver, Linux - Discusión de Linux en Castellano https://listas.inf.utfsm.cl/mailman/listinfo/linux 15 Al igual que la anterior actividad, esta requiere el uso del Sistema Operativo GNU/Linux, el que se integrará al Firewall existente y así se aprovecha mejor los recursos que la maquina puede entregar. Las competencias utilizadas, contemplan: Utilización de plataformas x86. Administración de Redes Computacionales. Utilización de plataformas basadas en Unix, como lo son Windows y GNU/Linux. Utilización de Software libre para desarrollar las soluciones propuestas. Apoyo teórico a los usuarios finales. Uso de diferentes metodologías para solucionar los problemas. Técnicas de expresión para aclarar dudas con respecto a la problemática. Entre otras. En cuanto a dificultades encontradas, por parte de la configuración e implementación del servidor, se puede decir que no hubieron ya que se requería de experiencia, aunque no tan avanzada, pero cumplía bien con los objetivos requeridos. La única dificultad se encontró en el momento de la puesta en marcha y la utilización por parte de los usuarios finales. Ya que como dijimos anteriormente, la mayoría de ellos no sabían utilizar este servicio y más aun los conocimientos en el uso de estaciones de trabajo no era muy buena. Lo anterior no se pudo resolver en un 100%, ya que aun con dar apoyo teórico y práctico a los usuarios, ellos no fueron capaces de realizarlo por si solo, Pero no es un problema que tenga que ver con la configuración del servicio, que es lo que interesa explicar. 3.3.- Desarrollo de Sitio Web Se debe considerar la creación de un Sitio Web como el desarrollo de un software a medida, ya que debe cumplir una serie de etapas, tal como lo hace el ciclo de vida del software, pero que en la mayoría de los casos, las etapas no se cumplen porque no son necesarias. Las etapas realizadas en este caso son la de especificación de requerimientos, diseño y programación del sitio, puesta en marcha e implementación final. En lo que se refiere al dominio de la práctica, relacionándolo con el desarrollo de software, podemos mencionar las siguientes competencias aplicadas. 16 Utilización de herramientas para la gestión de sitios web Herramientas para el diseño de sitios web (Imágenes, Páginas, Animaciones). Utilización de diversos lenguajes de programación (PHP, Java Script, ASP, HTML, CSS). Desarrollo de proyectos informáticos. Ingeniería de software. Entre otros. Las dificultades encontradas son siempre las mismas en la mayoría de las actividades en donde se pide el desarrollo de un software, que por lo general son el desconocimiento por parte del cliente acerca de lo que el quiere como producto final. Estos problemas son fáciles de resolver cuando se cuenta con una experiencia previa, ya que el desarrollador sabe que en la mayoría de las páginas, los servicios básicos entregados son los mismos, y es algo que en este caso si ocurrió. Por eso se hizo uso de prototipos que iban siendo probados durante el proceso de desarrollo hasta quedar con uno que se adecuara perfectamente a las necesidades del sitio. En lo que se refiere a diseño y programación del sitio, no tomó mucho tiempo, todo se hizo muy rápido (aproximadamente 1 semana), ya que se contaba con algunos módulos creados, solo se debieron adaptar al formato de la nueva página. Lo que si tomó tiempo fue definir bien los módulos a poner en la página principal, ya que resulta de mucha importancia la información que será mostrada a los visitantes. 17 IV.- DESCRIPCIÓN DE LA SOLUCIÓN PROPUESTA. 4.1.- Creación del Firewall alternativo en GNU/Linux. A continuación se explicará en un lenguaje técnico avanzado, la forma en que se desarrolló la solución propuesta, comenzando con un marco teórico y las etapas realizadas. 4.1.1.- Marco teórico. A.- ¿Que es un Firewall? Un Firewall es un dispositivo que filtra el tráfico entre redes, como mínimo dos, donde existe una política de control de acceso entre estas redes. Puede ser un dispositivo físico o un software sobre un Sistema Operativo. En general un Firewall es un dispositivo con dos interfaces de red en las que se establecen reglas de filtrado con las que se decide si una conexión determinada puede establecerse o no. Además puede realizar modificaciones sobre las comunicaciones, como por 9 ejemplo hacer NAT . Debemos recordar que la máquina que hará de Firewall también tendrá que hacer de Router con el objetivo de compartir Internet a los usuarios de la red local. El Router se integra con el Firewall dentro de la misma configuración de IPTables y las reglas de filtrado. El hardware dependerá exclusivamente de las necesidades de la red, [Mancill, 03a]. Con un Firewall podemos filtrar el tráfico TCP, UDP, ICMP, IP, etc., y decide si un paquete pasa o sale de nuestra red, si se modifica o simplemente se descarta, [Petersen, 01a]. B.- Diagrama de un Firewall básico. El diagrama mostrado en la figura 2, representa la estructura de un Firewall básico en que tenemos protegida nuestra red local a través del Firewall (PC) el cual esta detrás del Router que posee la conexión y que mira hacia Internet. Este diagrama es bastante similar al que vamos a usar en la creación de nuestro Firewall. Figura 2. Diagrama de un Firewall básico. 9 Ver, iptables en 21 segundos, http://www.pello.info/filez/IPTABLES_en_21_segundos.html 18 C.- ¿Qué es netfilter/iptables? Es un proyecto que pertenece al subsistema de Firewall de Linux 2.4.x y 2.6.x. Ofrece la funcionalidad de filtrado de paquetes, traducciones de direcciones (y puertos) de red (NA[P]T), la manipulación de paquetes (modificar ToS -Type of Service- y encabezados) y también facilita el 10 trabajo al subsistema de QoS (Quality of Service) de GNU/Linux . Netfilter es un conjunto de ganchos dentro de la pila de red del Kernel Linux 2.4.x y 2.6.x, que le permite a los módulos del Kernel registrar funciones callback que se mandan llamar cada vez que un paquete atraviesa alguno de esos ganchos, [Petersen, 01b]. IPTables es una estructura genérica tipo tabla para la definición de reglas de Firewall. Cada regla 11 dentro de una tabla IP consiste en un número de clasificadores y una acción asociada . D.- Uso básico de iptables Se verán algunos conceptos básicos de iptables para así poder entender su uso. Esto consta de lo siguiente: Reglas Los objetos más básicos son las “reglas” que realizan el filtrado de los paquetes o su manipulación. 12 Una regla se compone de varias partes . • La Tabla a la cual debe añadirse esta regla. • La Cadena a la cual se añade esta regla (INPUT, FORWARD, OUTPUT). • Las instrucciones de filtrado o de manipulación. • El objetivo de la regla. En el objetivo se define que se debe hacer con el paquete. DROP (denegar), REJECT (rechazar), ACCEPT (aceptar), LOG (enviar un archivo de log o avisos), entre otras. Cadenas Las reglas se organizan en cadenas, las que representan una lista ordenada de dichas reglas. Las cadenas por defecto que nos encontramos son INPUT, OUTPUT y FORWARD, [Petersen 01c]. Los paquetes que llegan al Firewall se comparan con las reglas que están definidas, eso sí, siguiendo el orden. 10 Ver, Web Principal del proyecto Netfilter, http://www.netfilter.org Ver, Web Principal de IPTables, http://www.iptables.org 12 Ver, http://www.elrincondelprogramador.com/default.asp?pag=articulos/leer.asp&id=14 11 19 Tablas Las cadenas se organizan en tablas. Hay tres tablas disponibles: • filter, es la que se usa por defecto y sirve para el filtrado de paquetes. • NAT, sirve para hacer traducciones de direcciones de red, permite cambiar las direcciones de origen y de destino en el paquete, en nuestro caso la usamos para hacer MASQUERADE. • mangle, se usa para cambiar atributos de los paquetes. En nuestro caso no la usaremos. Ordenes básicas. • iptables –F: flush de reglas (limpia). • iptables –L: listado de reglas que se están aplicando. • iptables –A: append, añadir regla. • iptables –D: borrar una regla. Para crear una nueva regla al final de las ya existentes en una chain (cadena) determinada se debe usar: # iptables -A [chain] [especificacion_de_la_regla] [opciones] Para insertar una regla en una posición determinada de la lista de reglas de una chain determinada: # iptables -I [chain] [posición] [especificacion_de_la_regla] [opciones] Para borrar una regla en una posición determinada de la lista de reglas de una chain determinada: # iptables -D [chain] [posición] Para todas las reglas de una chain determinada: # iptables -F [chain] Para listar las reglas de una chain determinada: # iptables -L [chain] La especificación de reglas se hace con los siguientes parámetros: • -p [protocolo]: protocolo al que pertenece el paquete. • -s [origen]: dirección de origen del paquete, puede ser un nombre de host, una dirección IP normal, o una dirección de red (con máscara, de forma dirección/máscara). • -d [destino]: dirección destino del paquete. 20 • -i [interfaz-entrada]: especificación del interfaz por el que se recibe el paquete (eth0, ppp0, etc). • -o [interfaz-salida]: interfaz por el que se va a enviar el paquete (eth0, eth1, etc). • --dport [puerto] y –sport [puerto]: puerto de destino y origen respectivamente. • -j [target]: nos permitirá elegir qué haremos con el paquete, elegimos el target al que se debe enviar ese paquete, esto es, la acción a llevar a cabo con él (DROP, REJECT, ACCEPT). 4.1.2.- Etapas Realizadas. A.- Situación actual. En estos momentos la Institución cuenta con un Firewall Físico D-Link Di 704 P, el cual posee un Sistema Operativo empotrado, configurable vía interfaz Web. El Firewall actualmente está configurado para actuar de Gateway (puerta de enlace) para las computadoras de la red local, además tiene algunas reglas de filtrado de ciertas páginas o sitios Web de Internet, cuyas reglas son limitadas, debido a las características del Firewall (Sistema Operativo limitado). El Firewall tiene bloqueado todo acceso desde Internet, ya que el servidor principal presta servicios en algunos Puertos, los cuales no tienen porqué ser vistos desde Internet. Algunos de estos servicios, son vistos solo por algunas direcciones IP desde Internet, las que son especificadas en las Reglas de SNAT, DNAT y Virtual Server del Firewall y las redirecciones de puertos. B.- Implementación La máquina destinada para la construcción del Firewall tiene las siguientes características: • Pentium 400 MHz con 32 MB de RAM. • Disco Duro de 2 GB IDE. • Tarjeta de red Realtek D-Link Fast Ethernet y una Davicom (Integrada) Fast Ethernet. • Sistema Operativo Debian GNU/Linux Sarge 3.1. (Kernel 2.6.8). • Iptables 1.2.10 La elección del Sistema Operativo, fue un poco complicada ya que se tenía experiencia en el uso de Mandrake Linux 10.0, pero la máquina en la que se trabajaba era un tanto limitada en cuanto a hardware, por lo que se optó usar Debian, debido a que ofrece un mejor aseguramiento de calidad en sus paquetes (aunque la versión usada en ese entonces era Testing), así como un esquema de actualización sencillo y eficiente (apt-get, aptitude), apego a los estándares, utiliza pocos recursos, da un nivel aceptable de seguridad por defecto, entre otros. 21 Debian GNU/Linux, además es el Sistema Operativo Libre por defecto de la mayoría de los administradores de red avanzados en casi todo el mundo, salvo por los que usan tecnologías BSD (FreeBSD) y sistemas con tecnologías SUN Microsystems, que son mas caras y mas difíciles de utilizar. La instalación tanto del Sistema Operativo y software utilizado no se detallaran en este informe ya que no se considera un tema relevante. C.- El Script. Un Script de iptables es un conjunto de ordenes que el sistema va leyendo y a la vez interpretando, por cada línea que este posee y que además se guarda en un archivo. Un Script de Firewall con iptables generalmente posee: • La carga de módulos necesarios (los imprescindibles y los auxiliares, como el de Masquerade. • Establece algún bit, como por ejemplo activar el Forward en el Kernel. • Luego borra todas las reglas actuales (Flush). • Establece las políticas por defecto para la aceptación, denegación, reenvío y salida de paquetes. • Y finalmente va aplicando todas las reglas de Firewall. El orden de algunos puntos no tiene por que ser siempre así. Por lo general, se usa la política de CERRAR todo por defecto e ir abriendo lo que se necesite, aunque es mucho más complejo. El Script además debe ser guardado en un archivo de texto plano con algún nombre fácil de recordar (por ejemplo firewall.sh), además este archivo debe tener atributos de ejecución, el cual se lo damos con el comando chmod (se debe estar como root): # chmod +x firewall.sh Por último si queremos que el Script se ejecute automáticamente cada vez que se encienda la máquina, se debe poner la siguiente línea en el archivo rc.local, obviamente debemos crear un link simbólico del archivo firewall.sh en /etc/init.d/ con el comando ln –s. Lo anterior se hace de la siguiente manera. /etc/init.d/firewall.sh 22 D.- Topología de Red. Como podremos ver en la figura 3, el Firewall posee dos interfaces de red, una que esta conectada al Router y otra que va hacia el Switch principal de la red local, la interfaz eth0 posee una IP pública, la que es proporcionada por los funcionarios de Telefónica quienes configuraron el Router. La interfaz eth1 está conectada el Switch principal de la red local, por lo que podemos decir que la red local está detrás del Firewall, por lo tanto está protegida. El módem solo cumple con hacer la conexión a Internet. Por defecto la topología usada es de tipo estrella, [Roja, 02b]. Para los equipos de la red local, su configuración de red debe ser la siguiente: • IP: 192.168.1.X, donde la X pertenece a un número entre 2 y 254, no se deben repetir. • Mascara de Subred: 255.255.255.0 • Puerta de Enlace: 192.168.1.1 • DNS: 200.54.144.227 • Host: chanco, en caso de ser Windows 98 o 95. • Dominio: tie.cl, en caso de ser Windows 98 o 95. Es bueno recordar que las direcciones IP públicas, asignadas (200.68.60.1 y 200.68.60.2), son estáticas, ya que se cuenta con un enlace dedicado. De esta manera se hace más fácil la configuración del Firewall, porque así no se estaría cambiando la dirección IP de la interfaz eth0 cada vez que se realice la conexión a Internet. Figura 3. Topología de red usada para la conexión del Firewall. E.- Explicación del Script. A continuación se mostrarán los puntos más importantes del Script creado, el Script completo se muestra en el anexo 7.1 del informe. Las líneas que comienza con “#” indican un comentario y no son tomadas en cuenta por el sistema. 23 Con esta línea indicamos que el archivo es un Script de Bash (Terminal Linux) y que debe ser leído línea a línea por el sistema: #!/bin/bash Debemos activar el Bit de Forward en el Kernel para el reenvío de paquetes. Esto permitirá a la maquina que actué como Gateway y así reenviar paquetes con origen remoto y destino remoto. echo 1 > /proc/sys/net/ipv4/ip_forward Se deben limpiar todas las reglas de las tablas si es que existiesen, de lo contrario el Script no tendría efecto. iptables –F iptables -X iptables -Z iptables –t nat –F Se definen las políticas por defecto, estas son: todo lo que entra, sale y se reenvía es aceptado. En algún momento del documento dijimos que todo el tráfico entrante estaba bloqueado, pero si nos fijamos en el Script, tenemos la política INPUT por defecto aceptada, esto no quiere decir que el tráfico entrante será aceptado, si no que solamente se aceptará las políticas que se declaren en el Script del Firewall (como por ejemplo la política para aceptar la entrada de paquetes por la interfaz localhost), por lo que no tendrá mayores inconvenientes. Es súper importante entender esto ya que puede traer confusiones. No porque se tenga INPUT aceptado, todo va entrar. iptables –P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables –P FORWARD ACCEPT Haremos uso de la tabla NAT y aceptaremos los paquetes antes y después que se enruten. Con PREROUTING podemos manipular el paquete modificando sus datos de destino, y de esta manera podemos hacer por ejemplo redirigir a otra maquina o a otro puerto, Esto se conoce como DNAT (Destination Network Address Translation), [Mancill, 03b]. Con POSTROUTING se pueden manipular los datos de origen de un paquete. Aquí podemos realizar SNAT (Source Network Address Translation), es decir, manipular los datos de origen del 13 paquete . iptables -t nat -P PREROUTING ACCEPT iptables –t nat -P POSTROUTING ACCEPT Como dijimos anteriormente el acceso desde Internet a nuestra red no está permitido por defecto, salvo a las direcciones IP que se especifiquen. 13 Ver, http://www.glib.org.mx/article.php?story=20030330191547238 24 En nuestro Firewall se especificaron algunas direcciones IP, a las cuales se les permite el acceso debido a que las máquinas de nuestra red deben ser revisadas, como lo es el caso del Sismógrafo, el cual es monitoreado por personal de la Universidad de Chile, los que recogen información a través de FTP y Telnet. Esto se debe hacer usando redirecciones de los puertos y haciendo NAT, enviando los paquetes a las máquinas especificadas. Acceso al Sismógrafo desde la Universidad de Chile, aceptando como IPs de origen las siguientes: 146.83.8.186, 146.83.8.235 y 146.83.8.252 y redirigiendo a los puertos 21 (FTP) y 23 (Telnet) de la maquina 192.168.1.80 (IP de clase C usada en la red local) que pertenece al Sismógrafo. Por ejemplo, la maquina con IP 146.83.8.186 hace una petición al puerto 21 a la IP 200.68.60.1, que es la del Router, esta petición pasa al Firewall, ya que pasa por la interfaz eth0, el cual según sus reglas evalúa la petición, entonces se comprueba que es una IP de origen valida, que el protocolo es TCP y que la petición se hace a un puerto válido, o sea 21, entonces llegamos al “-j” que dirá lo que se hará con el paquete , en este caso es hacer un DNAT (Traducción de Dirección de Red Destino), la cual es la maquina 192.168.1.80 de la red local, redirigiéndolo al puerto 21. La explicación para las demás reglas es la misma, solo cambian las direcciones IP. iptables –t nat –A PREROUTING –s 146.83.8.186 –i eth0 –p tcp –dport 21 –j DNAT –to 192.168.1.80:21 iptables -t nat -A PREROUTING -s 146.83.8.186 -i eth0 -p tcp --dport 23 -j DNAT --to 192.168.1.80:23 iptables -t nat -A PREROUTING -s 146.83.8.235 -i eth0 -p tcp --dport 21 -j DNAT --to 192.168.1.80:21 iptables -t nat -A PREROUTING -s 146.83.8.235 -i eth0 -p tcp --dport 23 -j DNAT --to 192.168.1.80:23 iptables -t nat -A PREROUTING -s 146.83.8.252 -i eth0 -p tcp --dport 21 -j DNAT --to 192.168.1.80:21 iptables -t nat -A PREROUTING -s 146.83.8.252 -i eth0 -p tcp --dport 23 -j DNAT --to 192.168.1.80:23 También debemos permitir el acceso a SMC que es una empresa de la ciudad de Concepción encargada de actualizar un Sistema de Información utilizado en la Municipalidad. En este caso es solo una IP (216.241.23.178) que se conecta a diferentes puertos (3389, 4899 y 1433). La regla aquí es la siguiente: si llega una petición con origen (-s) 216.241.23.178 por la interfaz eth0 (la que esta conectada al Router), con protocolo TCP (-p tcp) y con puerto destino 3389 (-- 25 dport 3389, en este caso), por regla el paquete (-j), será redirigido (DNAT) a (--to) la IP 192.168.1.254 al puerto 3389. iptables -t nat -A PREROUTING -s 216.241.23.178 -i eth0 -p tcp --dport 3389 -j DNAT --to 192.168.1.254:3389 iptables -t nat -A PREROUTING -s 216.241.23.178 -i eth0 -p tcp --dport 4899 -j DNAT --to 192.168.1.254:4899 iptables -t nat -A PREROUTING -s 216.241.23.178 -i eth0 -p tcp --dport 1433 -j DNAT --to 192.168.1.254:1433 Si alguna IP con origen remoto (Desde Internet) o de origen local (Red Local) hace una petición a algún puerto o servicio a través de la IP 200.68.60.1 y no se encuentra en las reglas que se evalúe, simplemente no se le responderá. Esto se debe a las políticas por defecto establecidas. En el caso que deseemos detener la conexión a Internet de alguna maquina de la red local, se debe aplicar la siguiente política. iptables -A OUTPUT -s 192.168.1.47 -j REJECT #iptables –A OUTPUT –s 192.168.0.0/24 –j REJECT # Dejamos toda la red sin Internet. Esto es, lo que venga (paquetes) con origen local y destino remoto (OUTPUT), con fuente 192.168.1.47 simplemente se rechazará (REJECT). Podemos ver la segunda línea comentada (·”#”), esta solo se descomentará cuando queramos dejar a toda la red local sin Internet. En algunos casos haremos uso de REJECT y DROP para rechazar paquetes, la diferencia entre estas dos políticas es que REJECT envía una respuesta al cliente, diciendo que por ejemplo el puerto está cerrado, en cambio DROP, simplemente no envía nada y el cliente recibe la respuesta de puerto cerrado por el timeout de su aplicación cliente. Aceptaremos las conexiones al localhost, esto sirve para hacer conexiones locales, como por ejemplo si tenemos un servidor MySQL, PostgreSQL o Web corriendo en la máquina. iptables –A INPUT -i lo -j ACCEPT Algo muy importante es denegar las peticiones de ping o lo que es lo mismo la petición de paquetes del tipo ICMP 8 (echo request), lo cual algunas personas podrían usar para saber si la maquina que hace de Firewall “esta viva”, algo que en muchos casos no es conveniente. Podemos ver el uso de DROP en este caso, ya que no tendría sentido usar REJECT, ya que el cliente sabría que esos paquetes se están bloqueando. iptables –A INPUT -p ICMP --icmp-type 8 -j DROP 26 En el apartado 4.2 explicaremos la configuración de un servidor FTP para uso exclusivo de la red local, entonces en este caso debemos cerrar el puerto que utiliza FTP (20 y 21), de manera que no sea accesible desde Internet. También hacemos uso de políticas DROP sobre INPUT. iptables -A INPUT -i eth0 -p TCP --dport 20 -m state --state NEW -j DROP iptables –A INPUT -i eth0 -p TCP --dport 21 -m state --state NEW -j DROP También bloqueamos los servicios de SSH (Secure Shell), X11 (Uso de interfaces X en Linux) y rpcbind (Servidor que gestiona la comunicación entre servidores y clientes NFS) respectivamente. iptables -A INPUT -i eth0 -p TCP --dport 22 -m state --state NEW -j DROP iptables -A INPUT -i eth0 -p TCP --dport 6000 -m state --state NEW -j DROP iptables –A INPUT -i eth0 -p TCP --dport 111 -m state --state NEW -j DROP Ahora llegamos a un punto importante del Script. Aquí es donde permitimos la salida de la red local (LAN) a Internet haciendo el uso de NAT y el filtro POSTROUTING. Como podemos ver le indicamos como fuente “-s” la IP de la red (192.168.1.0) con su respectiva máscara (/24). El uso de MASQUERADE permite que el servidor con GNU/Linux conectado a Internet comparta su conexión, para esto los PCs que van a usar la conexión deben estar conectados al servidor, en esta caso están conectados a través de la interfaz eth1 que es la que está conectada al Switch Principal. Esto permitirá que los paquetes salgan por la interfaz eth0 (-o eth0). De esta manera las maquinas accederán transparentemente a Internet ocultándose tras la maquina que hace de Gateway (que también es el Firewall), [Mancill, 03c]. iptables –t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE Por último denegaremos algunas Páginas Web que presentan contenidos no apropiados para una institución como lo es la Municipalidad, nos referimos a páginas con contenido pornográfico, satánico, juegos online, chats, descargas directas, programas P2P, etc., en conclusión todo lo que pueda distraer la imaginación de la persona y que no se adecue a tareas laborales. La manera de hacer esto es relativamente fácil, así que solo se mostrará un ejemplo de bloqueo, ya que la lista de páginas bloqueadas es demasiado larga. Es bueno recordar que si queremos agregar mas páginas solo se debe agregar la línea al final del Script y luego reiniciar el Firewall. Se añadirán tantas líneas como página encontremos. 27 Para bloquear una página se añade a la cadena FORWARD la dirección IP destino, en este caso la página. Para saber que dirección IP posee alguna página en especial, podemos hacer un ping a la dirección, por ejemplo para bloquear www.elchat.com, en una línea de comandos escribimos: ping elchat.com, el cual nos responderá con la dirección IP que corresponde a dicha pagina. Otra forma de hacerlo en GNU/Linux es usando el comando host, dándole como parámetro la dirección de la página, por ejemplo: host www.elchat.com, y luego nos entregará la IP que esta posee. Para rechazar el paquete podemos usar tanto REJECT como DROP, eso queda a criterio del administrador del sistema. # denegar acceso a elchat.com iptables –A FORWARD -d 200.76.33.27 -j REJECT F.- Uso de iptraf para el monitoreo de la red. Una vez que el Firewall esté funcionando, podemos utilizar herramientas de monitoreo para ver el comportamiento de la red, esto es de gran ayuda, ya que podemos ver o tener una idea de la cantidad de tráfico tanto TCP como UDP, que entran o salen por nuestra red. También podemos darnos cuenta a que página entran los usuarios de la red local, es decir, a los puertos que se conectan para hacer transferencias de paquetes, todo esto a nivel de aplicaciones, ya que físicamente es difícil saberlo. Para este caso, usamos IPTraf, que es una herramienta para consola basada en texto, la cual puede interceptar paquetes sobre la red y entrega información actual sobre el tráfico IP. Además 14 esta herramienta es de uso libre y no se requieren licencias . Esta herramienta es muy recomendada por los administradores de red, en ella podemos ver la cantidad de paquetes que salen o entran por alguna interfaz en común o si queremos una vista general de todo el tráfico, también podemos ver las direcciones IP a las que se conectan los clientes, entre otras cosas. Cabe recordar que el servidor que hace de Firewall (y FTP), es accedido también de manera remota usando una conexión segura y encriptada a través de SSH 15 (Secure Shell), así podemos configurar los diferentes servicios sin estar interactuando directamente con la máquina. Esta política es solo usada en la red local, por considerarse una posible vulnerabilidad para la red. 14 15 Ver, IPTraf, IP Network Monitoring Software, http://cebu.mozcom.com/riker/iptraf/ Ver, Página principal del proyecto OpenSSH, http://www.openssh.com/ 28 Podemos ver una screenshot de IPTraf trabajando en la figura 4. Figura 4. IPTraf entregando información actual sobre el tráfico IP de la red. 4.2.- Configuración de Servidor FTP en GNU/Linux. A continuación se explicará la forma en que se desarrolló la solución propuesta, comenzando con un marco teórico y las etapas realizadas. 4.2.1.- Marco teórico. A.- El protocolo FTP (File Transfer Protocol). El protocolo FTP, que en español significa Protocolo de Transferencia de Archivos, permite la transferencia de archivos de un computador a otro, bajo un control que es ejercido por un software que hace de Servidor y su respectiva configuración. Seguido de esto encontramos al cliente FTP, que es capaz de conectarse al servidor y realizar tareas que solo son permitidas por el servidor. Para establecer una comunicación mediante FTP entre dos máquinas (aunque también puede ser localmente o entre servidores FTP), se debe pasar por un proceso de autentificación, es decir, el servidor solicita un nombre de usuario y una contraseña, previamente establecidas en algún archivo de configuración, aunque la comunicación sea anónimamente se debe especificar un 16 nombre de usuario y contraseña . 16 Ver, Presentación de ProFTPD, http://bulma.net/body.phtml?nIdNoticia=1344&nIdPage=4 29 En muchos casos la conexión establecida no es segura, pero es muy difícil realizar ataques a los servidores FTP a través de este mismo protocolo, a no ser que se trate de vulnerabilidades en los Servidores (a nivel de software), que por lo general siempre hay, pero que son parchadas rápidamente por los desarrolladores, [Hatch, 03a]. B.- Hardware a utilizar. La máquina donde está el servidor, es la misma que utilizamos en la configuración del Firewall y creemos que cumple con los requisitos necesarios para este propósito. El único impedimento es que el Disco Duro es un poco Pequeño (2GB), pero esto se soluciona simplemente agregando otro disco duro a la máquina de manera que tendremos mas espacio para alojar los archivos, aunque los archivos a compartir son en la mayoría pequeños, por tratarse de documentos de texto. Al instalar otro disco duro en la maquina se debe crear una nueva partición, por lo general los sistemas de archivos utilizados son ext3 y etx2, pero ReiserFX, también es una buena opción. Luego de crear la partición, lo mejor es especificar que archivos irán a esa partición. Lo mas obvio es que si tenemos el uso de FTP, los archivos transferidos vallan todos a esa partición, para esto se debe especificar que “/home/ftp”, del primer disco duro (hda), este en la partición “/” (raiz o root) del segundo disco duro (hdb), es decir que el “/home/ftp”, quedará en hdb1. C.- Software a utilizar. El software utilizado es ProFTPD que es el servidor FTP que trae por defecto Debian GNU/Linux, aunque pondríamos utilizar muchos mas (vsftpd, pure-ftp, etc.), pero este en especial cumple con todas las características que buscamos, además posee un archivo de configuración fácil de entender ya que es amigable para la persona que lo configura o modifica. Tiene archivos de configuración para permitir el ingreso de usuarios así como también denegarlos (allow y deny). Otro factor importante a considerar es que ProFTPD es totalmente libre y gratuito, por lo que está libre de licencias comerciales y su uso es totalmente libre ya que esta licenciado bajo la Licencia 17 Pública General (GPL) de GNU , además se puede modificar su código fuente para adaptarlo a nuestras propias necesidades (pero eso es un tema aparte). La instalación de ProFTPD es muy sencilla, para nuestro caso ya tenemos las fuentes del apt-get configuradas en sources.list por lo que solo debemos poner en una línea de comandos: # apt-get install proftpd 17 Ver, GNU Project Web Server, http://www.gnu.org 30 Si en algún caso nos pide archivos de dependencias simplemente aceptaremos todo poniendo “S” o “Y” según sea el caso. Las dependencias por lo general son archivos o programas necesarios para la correcta utilización del paquete que se quiere instalar. Con lo anterior ya podemos tener nuestro servidor en marcha, pero es necesario hacer unas pequeñas modificaciones a sus archivos de configuración y adaptarlos a nuestras necesidades. 4.2.2.- Etapas realizadas. A.- Configuración y puesta en marcha de ProFTPD. El servidor ProFTPD cuenta con un fichero de configuración principal, llamado proftpd.conf, en donde se configuran todos los parámetros del servidor, como por ejemplo el nombre del servidor, el tipo de servidor, etc. Este archivo lo podemos encontrar en la mayoría de las distribuciones en el directorio /etc/proftpd.conf. Existen más archivos de configuración que se usan a partir de las 18 necesidades del servidor, y que en este caso no serán necesarios . Para poner en marcha el servidor, se debe levantar el servicio. En nuestro caso el servicio se levanta a través de una línea de comandos con privilegios de root, lo mismo ocurre para detenerlo, [Petersen, 01d]. Se especifica la ruta /etc/init.d/, que es en donde están la mayoría de los servicios en máquinas que poseen GNU/Linux, es decir, que la mayoría de los servicios se pueden manejar de esta manera. Para levantar o iniciar el servicio: # /etc/init.d/proftpd start Para detener el servicio: # /etc/init.d/proftpd stop Cada vez que hagamos cambios en el archivo principal de configuración (proftpd.conf) se debe reiniciar el servicio para que los cambios hagan efecto, esto se hace de la siguiente manera: # /etc/init.d/proftpd restart B.- Fichero de configuración de ProFTPD. A continuación se explicará el fichero de configuración proftpd.conf que se utilizó en nuestro servidor FTP de uso interno. 18 Ver, http://es.tldp.org/Tutoriales/doc-servir-web-escuela/doc-servir-web-escuela-html/proftpdconfig.html 31 En primer lugar dejamos como comentario las primeras líneas para explicar un poco de que se trata, el tipo de configuración, etc. # Fichero de configuración básico de ProFTPD. # FTP de uso interno. # I. Municipalidad de Chanco. # Luis Vega M. / fodsite@gmail.com Indicamos el nombre del servidor, el cual se mostrará cuando un cliente se conecte al servidor. ServerName "FTP. Municipalidad de Chanco." Algo muy importante es indicar el tipo de servidor, en nuestro caso lo tenemos configurado para que el servicio corra en standalone. Si se el servidor se deja como standalone, este corre normalmente por el sistema y cuando alguien lo solicita simplemente le abre una conexión, es 19 decir, siempre está esperando una solicitud de login . La otra forma es dejarlo como inetd, el cual el servidor corre bajo un demonio llamado también superserver o demonio de Internet, lo malo de esto es que el servidor no se está ejecutando constantemente. # ServerType ServerType inetd standalone Indicamos el servidor por defecto, no existen más directivas, simplemente se deja tal como viene, ya que no hay mas servidores FTP corriendo en nuestra máquina. DefaultServer on Activamos la opción de resumir, esto quiere decir que si alguien en algún momento está transfiriendo algún archivo y cancela la transferencia, podrá seguir transfiriendo desde el último porcentaje que había quedado en al última transferencia, algo muy útil por lo demás. AllowStoreRestart on Indicamos el puerto por el cual es servidor será accedido, por defecto los servidores FTP se acceden a través del puerto 21, así que dejamos la línea por defecto. Port 21 Se usa Umask 022 como un estándar para prevenir que lo nuevos directorios y archivos se creen con permisos de escritura para el grupo y otros, se deja por defecto por políticas de seguridad. Umask 19 022 Ver, ProFTPD, http://www.escomposlinux.org/lfs-es/blfs-es-5.1/content/proftpd.html 32 Para prevenir ataques DoS (Denegación de Servicios), establecemos un límite de 30 procesos hijo, así no se harán tantas peticiones en algún tiempo determinado [Hatch, 03b]. MaxInstances 30 Especificamos el usuario y grupo bajo el cual el servidor es ejecutado. Para este caso es cualquier usuario y cualquier grupo de usuarios. User Group nobody nogroup Otro factor importante es que los usuarios que se conecten al servidor FTP solo puedan ver su directorio raíz y sus subdirectorios, es decir, que no se les permita recorrer toda la jerarquía de directorios del sistema (es a lo que se llama enjaular o hacer chroot del usuario), ya que puede representar un factor de peligro para el sistema, debido a que el cliente puede tener acceso a todos los archivos del sistema de archivos y ver, por ejemplo ficheros de configuración de otros servicios. Podemos evitar esto añadiendo la siguiente línea: DefaultRoot ~ Algo que también se usa mucho es permitir sobrescribir archivos, para que así los clientes puedan reemplazar archivos con el mismo nombre, suponiéndose que se trata de alguna actualización del archivo, etc. Cuando un archivo está a punto de sobrescribirse, el servidor envía un mensaje al cliente, avisando el posible reemplazo del archivo. Debemos aclarar que cada usuario tiene o crea un directorio en el servidor donde puede guardar sus datos, para así evitar que otros usuarios remplacen archivos que no les pertenecen. AllowOverwrite on Podemos añadir una infinidad de opciones en nuestro servidor, pero sin embargo, la configuración mostrada anteriormente es necesaria para los fines que buscamos, la cual se puede decir que es 20 bastante básica . C.- El cliente FTP. Para que un usuario pueda conectarse al servidor, debe existir dicho usuario en el sistema, esto es parte de la política de ProFTPD y de la mayoría de los servidores FTP que corren bajo un sistema GNU/Linux. Es por esto que se tuvo que añadir un usuario al sistema usando los siguientes comandos. Se debe estar en una terminal (Bash o Eterm por ejemplo, que son las más utilizada en GNU/Linux) con privilegios de root, de otra manera no podremos añadir el usuario. 20 Ver, Montar Servidor FTP, http://www.linuxdata.com.ar/index.php?idmanual=ftpsers.htm&manuale=1 33 # adduser chanco Añadiendo usuario chanco... Adding new group `chanco' (1001). Adding new user `chanco' (1001) with group `chanco'. Creando el directorio home /home/chanco. Copiando archivos desde /etc/skel Enter new UNIX password: municipalidad Retype new UNIX password: municipalidad passwd: password updated successfully # Se añadió el usuario chanco con contraseña municipalidad, entonces ahora los clientes podrán conectarse al servidor FTP a través de algún cliente FTP, que es proveído por la mayoría de los Sistemas Operativos disponibles. El servidor requerirá un nombre de usuario y una contraseña y tal como vimos anteriormente se debe usar como nombre de usuario “chanco” y como contraseña “municipalidad”. Ahora veremos las distintas formas en que los clientes se pueden conectar al servidor: 1.- Usando una terminal y conectándose a través de comandos que FTP provee en la mayoría de los Sistemas Operativos y que son estándar. En Linux podemos usar la terminal Bash y en Windows el conocido D.O.S. para Windows 95/98 y Me) y cmd usado en Windows 2000/XP y NT. Ejemplo de conexión desde el Bash de Debian GNU/Linux: # ftp localhost Usuario [anonymous]: chanco Contraseña:************* Buscando localhost Conectado a localhost:21 220 ProFTPD 1.2.10 Server (I. Municipalidad de Chanco.) [127.0.0.1] USER chanco 331 Password required for chanco. PASS xxxx 230 User chanco logged in. 215 UNIX Type: L8 200 Type set to I 257 "/" is current directory. ftp> ls Cargando listado de directorio / desde el servidor (LC_TIME=es_CL) 227 Entering Passive Mode (127,0,0,1,128,56). 150 Opening ASCII mode data connection for file list 226 Transfer complete. drwxr-xr-x (?) chanco 4096 abr 01 2005 .. drwxr-xr-x (?) (?) 4096 abr 01 2005 Documentos drwxr-xr-x (?) (?) 4096 abr 01 2005 Imagenes drwxr-xr-x (?) (?) 4096 abr 01 2005 Oficios ftp> 34 2.- Utilizando el explorador de ventanas, en Windows llamado Explorador de Windows (para el caso de GNU/Linux, es posible, pero no fue probado), o también por la barra de direcciones que poseen los navegadores web (Internet Explorer, Firefox, Konqueror, Mozila, Lynx), solo se debe poner el nombre del dominio que posee el servidor o simplemente poniendo la IP en la barra de direcciones, eso si, anteponiendo: • ftp://ip_servidor • ftp://dominio_del_servidor Al poner ftp://, indicamos que haremos uso del protocolo FTP, lo mismo ocurre cuando abrimos paginas web, en donde anteponemos http://, que es el protocolo usado para el servicio web. 3.- Por último, la manera mas fácil y la mas usada es con un cliente FTP gráfico, el que se encarga de hacer las conexiones a través de asistentes y solo es cuestión de ir llenando campos de texto, [Petersen, 01e]. A continuación veremos el ejemplo de conexión con un cliente gráfico que trae el Escritorio Gnome 21 en GNU/Linux llamado gFTP . La transferencia de archivos se hace simplemente arrastrando los archivos o directorios que deseemos de una ventana a la otra. Figura 5. Cliente FTP gráfico bajo GNU/Linux. Se puede ver que al lado izquierdo está el directorio actual del cliente (directorio local), y al lado derecho el directorio actual del servidor (directorio remoto) al cual se conectó el cliente. 21 Ver, GNOME Files, Web con todos los paquetes del escritorio GNOME, http://www.gnomefiles.org 35 4.3.- Diseño y Creación de Sitio Web de la Municipalidad. A continuación se explicará la forma en que se desarrolló la solución propuesta, comenzando con un marco teórico y las etapas realizadas. 4.3.1.- Marco teórico. - Definición del Sitio. En esta sección se definirán los contenidos que tendrá el Sitio Web, la forma en que se 22 organizarán los módulos y su estructura . A. Arquitectura de la Información. Pasaremos a definir los contenidos del sitio, los que fueron elegidos de dos formas: La primera es basándose en las necesidades que podrían tener los visitantes, es decir, ofrecer información que las personas por lo general solicitan en la Municipalidad, tales como documentos, folletos, etc. La segunda forma fue fijándose en sitios web de similares características y objetivos (sitos web de municipalidades chilenas), de esta forma tenemos mas claro lo que se quiere lograr. Los contenidos serán agrupados en secciones, las que tendrán una serie de menús relacionados. A continuación se detallaran las secciones escogidas y una breve explicación. • Banner Principal: muestra el título del Sitio Web, a través de un Banner realizado con tecnología Flash, en donde se van mostrando imágenes de la comuna e información sobre la Municipalidad. Está ubicado en la parte superior de la página. • Menú de Acceso Directo: es un pequeño menú de forma horizontal en donde se puede acceder a los contenidos más importantes del sitio (Inicio, Turismo, Festival, Contacto, Chat). Se muestra bajo el Banner Principal. • Menú Principal: aquí se encuentran los contenidos más importantes del sitio, está ubicado en la parte izquierda de la página y se puede acceder a información relacionada con la Municipalidad, destacándose la información sobre los distintos departamentos que posee. 22 Ver, Guía Web 1.0, Capítulo 2, http://www.guiaweb.gov.cl/guia/capitulos/dos/index.htm 36 • Índice Noticioso: ubicado en la parte central de la página, muestra una serie de noticias relacionadas con la actualidad comunal, así como información sobre eventos realizados en la comuna. Además en esta parte de la página se van mostrando los menús que contiene el sitio, técnicamente es un iframe que va cambiando a medida que se acceden a los diferentes menús. • Imágenes: ubicado bajo el menú principal, esta sección muestra accesos directos a imágenes de eventos realizados en la comuna a través de animaciones en Flash. Mas abajo podemos ver un acceso a la sección donde se destaca a algún comerciante de la comuna, y de esta manera dar publicidad a éstos mismos. • Destacados: esta es una sección que posee dos subsecciones, donde se destacan temas relevantes de la comuna, como lo son el Festival de Chanco y el Turismo. • Festival 2005: ubicado en la parte derecha bajo el Banner Principal, esta sección muestra información sobre el Festival de Chanco realizado en el verano. • Turismo: ubicado bajo el menú del festival, esta subsección muestra información turística de la comuna, algo que es de gran importancia para promover el turismo ya que la gran mayoría de las personas que visitan la página lo hacen para buscar información acerca de los lugares que posee la comuna. • Concejales de la Comuna: algo que muchas páginas sobre municipalidades muestran a sus visitantes es información acerca de sus autoridades, esto es lo que se pretende con esta sección. Está ubicada en la parte inferior de la página. Ahora detallaremos los contenidos de cada una de las secciones a través de un Mapa del Sitio. Banner Principal No posee links. Menú de Acceso Directo |---> Inicio | |---> Índice Noticioso |---> Turismo |---> Festival |---> Contacto |---> Chat |---> Ingresar Índice Noticioso |----> Índice Noticioso Imágenes |---> Festival Chanco 2005 Menú Principal |---> Inicio | |---> Índice Noticioso |---> Alcaldía |---> Concejo Municipal |---> Educación |---> Salud | |---> Plan de Salud 2005. |---> Turismo | |---> Solicitud de Información Turística. |---> Omdel |---> Zona Típica | |---> Instructivo de Construcción. |---> El Tiempo |---> Webmail Municipal |---> Contáctenos |---> Chanco Chat 37 |---> Fiesta de la Candelaria |---> Microempresario Destacado |---> Productos Aguila |---> Miel |---> Polen |---> Propóleo |---> Como Consumir el Polen | |---> Ingresar |---> Links de Interés Concejales de la Comuna No posee links |---> Turismo |---> | | | | | | |---> |---> |---> |---> |---> |---> |---> |---> |---> Destacados |---> Festival 2005 |---> Bases |---> Ganadores 2005 |---> Participantes |---> Artistas |---> Venta de Entradas |---> Fotos XVII Festival |---> Ganadores 2005 |---> Fotos del Primer Día |---> Fotos del Segundo Día |---> Fotos del Tercer Día |---> Años anteriores Guía del Turista |---> Playas |---> Reservas Nacionales |---> Museo G. del Carmen |---> Quesos y Frutillas |---> Laguna Reloca |---> Fiesta de la Candelaria Alojamiento Donde Comer Distancias Mapa de Chanco Oficina de Turismo Datos Generales Fotos de la Comuna Semana Chanquina Verano 2005 Figura 6. Mapa del Sitio Web de la Municipalidad. B. Requerimientos Funcionales Para ofrecer algunos servicios y hacer que el sitio “haga” algo, debemos especificar los requerimientos funcionales y así saber el tipo de interacción que el visitante tendrá con el sitio. Esto requerimientos son: • Noticias: es un sistema de noticias en donde el visitante puede leer los acontecimientos de la comunidad, así como las actividades realizadas o a realizar en la misma. Es actualizado por lo general cada semana. • Solicitud de Información Turística: este es un módulo donde el visitante puede solicitar información turística sobre la comuna de Chanco, esta solicitud será recibida por el administrador del sitio, el que luego, enviará el mensaje al Departamento de Turismo para que envíe la solicitud al visitante, ya sea a través de correo convencional o electrónico. • Formulario de Contacto: en este módulo el visitante podrá enviar mensajes a los distintos Departamentos de la Municipalidad, pero primero el mensaje será evaluado por el administrador del sitio, y este decidirá si envía o no el mensaje al departamento, ya que muchas veces los mensajes no tienen nada que ver con temas de la Municipalidad. • Chat: es un módulo donde los visitantes del sitio pueden establecer relaciones y conversar en tiempo real, este módulo en particular es uno de los más visitados a diario. 38 • Estadísticas del Sitio: muestra información acerca de las visitas que ha tenido la página desde que se puso en Internet, el país de origen de los visitantes y resúmenes diarios de visitas. Este módulo no fue programado por el Webmaster, más bien es un servicio gratuito disponible en Internet, donde existe un sistema de ranking de páginas clasificadas por categoría, este sitio en particular se encuentra en el ranking de municipalidades chilenas. C. Estructura del Sitio. El Sitio Web posee una estructura bastante fácil de comprender, es decir, el visitante que entra al sitio se le hará fácil ubicar lo que desea buscar. Esto es porque tiene una estructura estándar, donde se tiene un Banner en la parte superior, los menús se encuentran ubicados en las partes laterales de la página y en medio posee información actualizada de noticias y los contenidos. En cuanto a los colores utilizados podemos decir que se usaron principalmente colores claros (amarillo claro, azul claro, gris en distintos tonos, verde claro, entre otros), ya que estamos hablando de un Sitio Web formal, en donde los colores se consideran una parte importante del sitio. A continuación una muestra de los colores utilizados: Figura 7. Colores utilizados en el Sitio Web. Como se puede apreciar los colores principales son bastante claros, las líneas divisoras usan colores un poco más oscuros y los textos usan colores oscuros, para que puedan ser apreciados por el visitante. D. Sistemas de Navegación. Los sistemas de navegación tienen que ver en como el visitante accede a los contenidos. En la figura 6 se mostró el Mapa del Sitio, en donde se ve con mejor detalle cada unos de los niveles y subniveles que posee. Por regla (utilizada por la mayoría de los Webmasters) se debe evitar que los contenidos estén a más de tres subniveles, de lo contrario, el visitante podría aburrirse de hacer tantos clicks en las páginas para entrar a algún contenido. 39 El sistema de navegación usado es muy simple, el menú principal está diseñado con imágenes, que poseen un texto que indica el contenido a visitar. Todos los demás menús son links de texto, de esta manera hacemos la página mas liviana, ya que si ponemos menús solo con imágenes, la carga de la página al accederla será muy lento, por lo tanto el visitante no entrará mas. Como explicaremos mas adelante, la página posee un iframe en donde se van mostrando los diferentes contenidos de la página, de esta manera los menús siempre estarán visibles para el usuario y además ayuda a la programación del sitio ya que no se tiene que programar cada página con los menús principales, si no que crea el contenido y algún link para volver al menú principal. E. Diseño Visual. En esta etapa mostraremos la estructura del sitio en forma de maqueta, sin su diseño final, esto nos servirá para tener una mejor idea de la forma que tendrá cada página del sitio. Figura 8. Estructura de la página principal. Podemos ver que el sitio posee una estructura ordenada, ya que es lo que se busca en cualquier Sitio Web, es decir, que cuando el visitante entre a la página pueda darse cuenta de inmediato donde están los contenidos que desea acceder o visitar. A continuación mostramos los diagramas de flujo sencillos de los requisitos funcionales que representan transacciones, para así saber la interacción que tendrá el usuario y el administrador del sitio cuando ocurra una. 40 En el anexo 7.3 B y 7.3 D respectivamente, se muestran las pantallas correspondientes a las transacciones, así se tendrá una mejor idea de lo que se quiere lograr con los módulos. Solicitud de información Turística: Figura 9. Diagrama de flujo, módulo de solicitud de información turística. Contacto desde el Sitio Web: Figura 10. Diagrama de flujo, contacto desde el Sitio Web. Nota: los otros requerimientos funcionales no serán explicados ya que no fueron programados por el Webmaster, si no que son módulos que ya estaban creados. 41 Por último presentamos el diseño elegido para el sitio. Podemos ver el Banner Principal que va mostrando imágenes de la comuna y el escudo de Chanco al lado izquierdo. Mas abajo tenemos el índice noticioso y a los lados tenemos los menús principales y destacados. En esta etapa se puede apreciar mejor el uso de colores. Figura 11. Diseño Oficial Sitio Web de Chanco. La generación de pantallas es más fácil ya que se trata de un sitio estático en general y no tiene mucho dinamismo, salvo por los módulos funcionales creados. 42 - Diseño Web y Estándares. A. Estética. Para que un sitio sea mas fácil de acceder debe ser liviano en cuanto diseño, es decir, lo ideal es usar imagen y texto en las páginas, pero muchas veces esto hace que el sitio sea muy estático y poco interactivo. Es por esto que se debe tener una buena relación entre texto, imágenes y 23 animaciones, de manera que no hagamos un sitio sobrecargado . Este sitio hace una muy buena mezcla entre estos elementos, es decir, un menú principal con imágenes para resaltar, todos los otros menús son de texto que son más livianos de cargar. Y por último cuatro animaciones flash relativamente pequeñas, las que son un poco pesadas pero que no se no se notan en una conexión medianamente rápida. Por otro lado cualquier página hoy en día se va a demorar en cargar si el visitante usa una conexión lenta como lo son las de 128kbps o 56kbps que aun se usan, pero en menor cantidad. El peso de las páginas (no del sitio), debe ser muy liviano, ya que un visitante no esperará tanto para abrir un determinado vínculo, por ejemplo, la página principal del sitio pesa 27.5KB, lo que es bastante liviano, por lo que con un módem de 56kbps un visitante no demorará más de 10 segundos en abrir la página. Por lo tanto está dentro de los estándares. B. Resolución de Pantalla. Por otra lado existe la resolución de pantalla en que los visitantes miran el sitio, siendo las mas usados 640x480, 800x600 y 1024x768. Obviamente que el más usado hasta la fecha con un valor de 90% aproximadamente es la resolución de 1024x768, luego en menor cantidad es 800x600 y por último que ya casi ni se usa es 640x480, por lo tanto el sitio fue diseñado para 1024x768, basándose en estadísticas de páginas que son visitadas más de 1000 veces al día. C. Uso de iframe. El uso de iframe puede ayudar mucho al visitante, ya que siempre se estará mostrando los menús del sitio y encabezados, y el visitante en todo momento sabrá donde está ubicado. Lo malo del uso de iframe o frames en general es que si el visitante llega desde algún enlace de otra página o desde algún buscador a algún contenido en particular y no a la página principal del sitio (index.php), el usuario no podrá ver el menú y solo verá el contenido al que accedió. Por esta razón en cada página de contenidos se debe crear un enlace o link que permita volver a la página principal y de esta manera el visitante podrá ver el sitio principal. 23 Ver, Guía Web 1.0, Capítulo 3, http://www.guiaweb.gov.cl/guia/capitulos/tres/index.htm 43 D. Meta Tags. El uso de <meta tags> adecuados, definidos pro la World Wide Web Consortiun 24 (W3C), nos ayuda a dar una descripción de la página para que así los sistemas de indexación y de búsqueda tomen los datos y características principales del sitio y los añadan a sus sistemas. Los <meta tags> utilizados en el sitio fueron los siguientes: <meta NAME=title CONTENT=I. Municipalidad de Chanco> <meta NAME=description CONTENT=Sitio Web de la Ilustre Municipalidad de Chanco> <meta NAME=keywords CONTENT=Playas, Tranquilidad, Turismo, Municipalidad, Chanco, Reservas Nacionales> E. Multimedia. El uso optimizado de las imágenes hace que se cumpla con la norma estándar establecida de 72dpi (72 x 72 pulgadas). Todas las imágenes del sitio están con formato JPG, así se aliviana mucho mas el peso de estas aprovechando mejor los colores que ellas poseen. Las imágenes usadas para la estética del sitio, se guardan en un directorio común para tener mucho mas ordenado los archivos en el sitio. Así mismo, el sitio esta ordenado en un árbol de directorios para tener mejor acceso a los archivos cuando se modifiquen. Las animaciones flash muchas veces pueden non verse en el navegador para ello el visitante debe bajar el respectivo plug-in (extensiones que usan los navegadores web), para poder visualizarlas. F. Interoperabilidad. En este apartado nos referimos a que el sitio puede ser accedido desde cualquier plataforma computacional y Sistema Operativo que posea una conexión a Internet y un navegador web, incluso navegadores web basados en texto. Para que esto sea posible el sitio ha considerado lo siguiente: • Uso de HTML estándar, ya que todos los navegadores no soportan las nuevas versiones de HTML • El sitio ha sido accedido desde diferentes sistemas operativos, entre los que destacan GNU/Linux y Windows, en donde no se presentaron problemas. Por el lado de los navegadores destacan Internet Explorer 5 y 6, Mozilla, Mozilla/Firefox, Opera, Lynx (basado en texto) entre otros. 24 Ver, The W3C Markup Validation Service, http://validator.w3.org/ 44 4.3.2- Etapas realizadas para la puesta en marcha del Sitio Web. En esta etapa explicaremos los pasos a seguir cuando se termine el desarrollo del Sitio Web para así efectuar la presentación a los usuarios finales (los visitantes). De esta forma daremos a conocer el trabajo realizado por los desarrolladores. A. Prueba de Errores. En primera instancia cuando se subió el Sitio Web, hubo algunos errores en el tamaño de las ventanas Pop Up que se programaron, ya que estas contienen imágenes. Veremos un ejemplo de la ventana con tamaño errado y otra con tamaño correcto en la figura 12. En la imagen de la izquierda se pueden apreciar las barras de desplazamiento, las cuales por estética y comodidad para el visitante, no deberían ir. La imagen del lado derecho no muestra esos errores. Figura 12. Ventana con tamaño incorrecto y ventana con tamaño correcto. Por otro lado se hicieron modificaciones a los contenidos creados ya que a veces no se lograba lo deseado, por ejemplo en caso del formulario de contacto, se estaba logrando el objetivo, es decir, que el mensaje llegara a nuestro correo, pero mas adelante se decidió que se averiguara la IP del visitante y el nombre del host que enviaba el mensaje, para saber su procedencia. Lo anterior tuvo que ser programado en Lenguaje PHP y fue logrado correctamente. Otra modificación que se hizo fue crear una lista de los distintos departamentos, para que así el visitante especifique al departamento que quiere enviar el mensaje. B. Pruebas de Carga. Las pruebas de carga permiten probar el hardware y software que hostea al Sitio Web, para así saber cuantos visitantes se pueden tener en línea al mismo tiempo. Esta prueba no ha causado mayores problemas ya que los visitantes se van alternando a través del día. 45 A través de estas pruebas se puede saber gran cantidad de información acerca de los visitantes y sus características de acceso, como lo son el ancho de banda utilizado, archivos solicitados, 25 páginas visitadas, datos descargados, etc. . Estos datos se resumen en estadísticas, un ejemplo de ellas puede verse en la figura 13. Figura 13. Sistema de estadísticas de visitas del Sitio Web. C. Hosting. El sitio está alojado en un hosting comprado en www.fulltime.cl con una capacidad de 400Mb, con acceso a través de FTP con una cuenta proporcionada por el administrador del hosting. El sitio se encuentra en un servidor con Windows 2003 Server con soporte para todos los lenguajes (nosotros usamos PHP y ASP.) y ancho de banda de subida y bajada ilimitado. Por ser un hosting externo, la seguridad del sitio dependerá exclusivamente del administrador del hosting quien se encargará de evaluar los archivos que son subidos y su contenido. D. Nombre de Dominio. Por otro lado la dirección de la página o nombre de dominio fue comprado en www.nic.cl que es administrada por la Universidad de Chile y en donde se hace un contrato por dos años. 25 Ver, Guía Web 1.0, Capítulo 4, http://www.guiaweb.gov.cl/guia/capitulos/cuatro/index.htm 46 La dirección comprada es www.chanco.cl, que es la que mejor se adecua al sitio, a sus necesidades y objetivos. Y obviamente es .CL. E. Seguridad En cuanto a la privacidad de los visitantes, esta es bastante segura, ya que los visitantes que envían mensajes especifican su e-mail y este se mantiene en una lista de contactos y solo son manejadas por el administrador del sitio, no utilizándose la información para fines comerciales o para envío masivo de correo. Y como ya habíamos mencionado antes, el administrador del hosting es el encargado de la seguridad del sitio, explicaremos una situación que ocurrió. En algún momento uno de nuestros archivos estaba en riesgo de ser utilizado para generar un DoS (Denegación de Servicio), ya que se podía enviar masivamente correo. Esta situación fue inmediatamente avisada al Webmaster por lo que se tuvo que modificar el archivo y subirlo nuevamente al hosting. F.- Mantención del Sitio Web. Sabemos que unos de los objetivos principales del sitio es difundir información y permitir la comunicación entre la institución y los visitantes por lo tanto se debe estar siempre actualizando el sitio, de manera que los visitantes sigan accediendo a él, de lo contrario no se tendrá mas visitas. La mantención del sitio no es una tarea que solo corresponde a los encargados de la creación del sitio, es decir, el Departamento de Informática, si no mas bien es un compromiso que toda la institución debe afrontar, ya que en cada unos de los departamentos siempre se están realizando actividades, reuniones y entregando información a la comunidad y a sus visitantes. Debido a lo anterior es que los departamentos debieran entregar al Webmaster documentación relevante acerca de sus actividades para que así él pueda ponerla a disposición de los visitantes. Tal es el caso del Departamento de Relaciones Públicas que siempre está entregando información a la comunidad a través de radiodifusión, esta información también es entregada al Webmaster para que sea puesta en el sitio como una noticia o algún enlace, dependiendo de la importancia. Las noticias son casi el único motivo para tener actualizado el sitio ya que los visitantes acceden a él casi exclusivamente a leer las noticias y al Chat, por otro lado esto ayuda a que los mismos visitantes promocionen la página entre sus conocidos. 47 Otro aspecto que debe tener en cuenta es el Chat, ya que hubo un momento en que el Chat fue deshabilitado y llegaron muchos correos pidiendo explicaciones de porque se había sacado. Por lo tanto se llegó a la conclusión que el Chat es usado por muchos “chanquinos” que se encuentran en otras ciudades de Chile y el mundo para comunicarse, de hecho hubo “chanquinos” radicados en suecia que han enviado correos de contacto. G.- Transmisión Festival de Chanco. Esta tarea tuvo como objetivo transmitir el Festival de Chanco realizado en el verano a través de Internet utilizando el decodificador de Windows Media Player para hacer el Streaming. Las etapas se detallan a continuación. 1.- Habilitar la conexión a Internet en el recinto donde se realiza el festival. Para ello se instaló un cable telefónico desde la Municipalidad hasta el recinto que aproximadamente está a unos 500 metros de distancia. Además se trasladó el Módem y el Router haciendo el recinto para establecer la conexión a Internet. Todo esto se realizó sin ningún problema. 2.- Abrir el puerto 8080 habilitado en el Firewall interno de la Municipalidad par que los visitantes puedan conectarse y ver el video que se esta transmitiendo. 3.- Conectar una WebCam al servidor que está haciendo el Streaming e instalar en el mismo el programa que provee Microsoft llamado Windows Media Player y su codificador que permite hacer el streaming hacia Internet. 4.- En el momento que se realiza el festival, se debe estar en el Chat explicando a los visitantes como se debe entrar para poder ver el video, los programas a utilizar y pasos a seguir. 5.- Crear un Banner en el Índice Noticioso para que cuando el visitante entre al sitio pueda ver que se transmitirá el festival a la hora indicada y además que haga clic en la imagen para poder entrar al lugar donde se encuentra el streaming. La imagen creada es la siguiente. Figura 14. Banner de ingreso para ver el video transmitido. 48 6.- Crear una página con dos frames, al lado izquierdo el Chat para ir explicando a los visitantes lo que ocurre en el Festival y al lado derecho el video del streaming y una imagen del festival que es actualizada cada dos minutos. La página que contiene el streaming debe llamar a un objeto de tipo Media Player para poder insertar el video en la página. A continuación mostramos el código: <object id="MediaPlayer" width="240" height="180" classid="CLSID:22D6F312-B0F6-11D0-94AB0080C74C7E95" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5, 715" standby="Instalando Windows Media Player ..." type="application/x-oleobject" align="left"> <param name="FileName" value="http://200.68.60.2:8080"> <param name="AutoStart" value="true"> <param name="volume" value="0"> <param name="TransparentAtStart" value="false"> <param name="AnimationatStart" value="false"> <param name="ShowControls" value="false"> <param name="ShowDisplay" value="false"> <param name="ShowStatusBar" value="true"> <param name="autoSize" value="false"> <param name="displaySize" value="false"> <embed type="application/x-mplayer2" pluginspage="http://www.microsoft.com/Windows/Downloads/Contents/Products/MediaPlayer/" src="http://streaming.entelchile.net/canal13" width="240" height="180" autostart="1" volume="0" transparentatstart="0" animationatstart="0" showcontrols="1" showdisplay="0" showstatusbar="0" autosize="1" displaysize="0" align="absmiddle"> </embed></object> • Primero se indica el tipo de objeto, se le da el ancho y alto que tendrá. • Se indica el codebase para que el cliente instale el programa que permitirá ver el video • En los <param name> se dan las características que tendrá el video. • FileName, se indica la IP y el puerto que esta haciendo el streaming, en este caso es la dirección del Router que tiene el puerto 8080 abierto. • AutoStart, para que reproduzca el video automáticamente conectado, por defecto esta en true. • Volume, esta en 0, permitirá que el visitante controle el volumen (audio) del video. • ShowControls, esta en false, no se mostrarán los controles. • ShowStatusBar, muestra la barra de estado para indicar lo que esta pasando, esta en true. • pluginspage, para poder descargar la extensión del programa Windows Media Player. • Los otros detalles son menos relevantes. Para que un visitante pueda ver el streaming, debe tener instalado el programa Windows Media Player, que por lo general viene instalado en la mayoría de las Versiones de Windows basadas en tecnologías NT, como lo son el caso de Windows 2000, XP, NT 4.0, Server 2000, Server 2003, etc. 49 Para los casos de Windows 95 y 98 se debe bajar el programa que por lo demás es gratuito en la página oficial de Microsoft (www.microsoft.com), además existen versiones en español. Se eligió este programa para los clientes, ya que es el que usan la mayoría de los visitantes del sitio según las estadísticas, y es uno de los programas mas usados a nivel mundial para el stream de video. En el caso de que algún visitante esté usando otro Sistema Operativo que no sea Windows, existen algunas soluciones para poder ver el video, como por ejemplo bajar codificadores especiales para la distribución que se está usando, pero esto se dejará a cargo del visitante y no habrá soporte para ello en la página. 50 V.- CONCLUSIONES. 5.1.- Conclusiones Generales. Todas las actividades realizadas en el Departamento de Informática de la Municipalidad de Chanco sirvieron de experiencia y generaron conocimiento al alumno, de los cuales se pueden extraer las siguientes conclusiones. • El Departamento de Informática para una institución pública es de vital importancia ya que permite dar apoyo a todo el personal y realizar su trabajo con mayor facilidad y perfección. Además de solucionar problemas con la rapidez que se necesita en esto días, ya que el tiempo hoy es un recurso muy valorado. • La utilización de software libre y de código abierto ayuda a una institución o empresas relativamente pequeñas a ahorrar muchos costos, ya que no se paga por ninguna licencia comercial, sólo se necesita a alguien que tenga el conocimiento y sea capaz de manejar dichos Software o Sistema Operativo. • Siguiendo con lo anterior, aclaramos que se debe tener muy en cuenta que el Software Libre, no es lo mismo que el Software Gratuito, un software puede ser gratuito o freeware pero no es libre, ya que no entrega sus códigos par poder modificarlos, en cambio el Software Libre o de Código Abierto (Open Source), si entrega sus código y se puede modificar para adaptarlo a las propias necesidades de un desarrollador. • Como apreciamos en el informe, se pueden integrar muchos de los servicios ofrecidos por GNU/Linux, en este caso hemos usado herramientas de un Firewall y el Servicio FTP, pero además de estos tenemos muchos más, los que se pueden implementar en una misma máquina. Estos servicios pueden ir desde un Servidor de Correo (MTA) hasta un servidor de impresión de archivos, utilizando SAMBA o alguna herramienta de ayuda como Webmin o CUPS, todas ellas con respectivos permisos de utilización por parte de los usuarios. Finalmente una maquina con GNU/Linux puede quedar: Router / Firewall / FTP / Web / SMTP / POP3 / SSH / DNS / Samba / LDAP y un sin fin de servicios. • El desarrollo de sitios web para instituciones, empresas y organizaciones en general, es de gran ayuda para éstas, ya que permiten mostrarse al mundo y así ganar prestigio, lo que representa a una organización que va acorde con las nuevas tecnologías de la información. 51 • La adquisición de conocimiento y experiencia por parte del alumno es muy importante y permite enfrentarse a la vida laboral con más seguridad y enfrentar los cambios tecnológicos con mayor rapidez. 5.2.- Creación de Firewall. • La creación de firewalls bajo plataformas Unix, representan una gran solución a pequeñas y medianas empresas, así como instituciones públicas que no pueden pagar tanto dinero a administradores calificados como por dispositivos físicos adecuados para la protección de redes. • Una ventaja real de acuerdo con la solución propuesta es que toda la documentación necesaria para la creación de firewalls en Linux, se encuentra disponible en Internet, esto quiere decir que está al alcance de cualquier persona o institución. • Algunos de los inconvenientes son que no se encuentran muchos administradores de redes o sistemas computacionales con la capacidad de crear este tipo de soluciones. Algo que hoy debería ser indispensable por la gran cantidad de PYMEs a nivel nacional e internacional. • La creación de un Firewall no es algo trivial, ya que se debe conocer bien la estructura de la red que queramos proteger, y que en algunos casos pueden ser varias redes. Es por esto que cada Firewall se debe adaptar a las necesidades que requiere la red. • La definición de políticas de acceso deben estar claras antes de empezar a escribirlas ya que se puede armar una confusión en donde después no sabremos que hacer, por lo cual el Firewall no cumplirá con sus objetivos. Quizás podremos usar reglas genéricas, pero no serán lo suficientemente confiables para la total protección de la red. • Un Firewall no representa la solución completa para la protección de la red, es decir, se debe estar vigilando o monitoreando a cada instante su comportamiento utilizando herramientas como la antes vista, de esta manera podremos darnos cuenta del real comportamiento de la red y así hacer las modificaciones correspondientes. El uso de sistemas de detección de intrusos (SNORT por ejemplo) podría ser una gran alternativa. 52 5.3.- Servidor FTP. En un principio la creación del servidor FTP, no fue muy bien recibida, ya que fue idea del alumno en práctica realizar esta actividad, ahora, una vez que fue implementado, tomó una mayor importancia y se hicieron variadas pruebas para verificar su efectividad. Uno de los inconvenientes de la solución propuesta fue el desconocimiento por parte de los usuarios finales. Nos referimos a desconocimientos en general en cuanto al uso de equipos computacionales, y es algo que aun está vigente en la mayoría de las instituciones públicas. Lo anterior ocurre porque las instituciones adquieren tecnologías que en primara instancia no se saben manejar, y aunque existan cursos de capacitación se les será difícil de aprender. En lo que se refiere al impacto del trabajo realizado para un futuro profesional, podemos ver las siguientes conclusiones: • Una vez más el trabajo en equipos es importante en este tipo de actividades, ya que siempre se debe estar probando el servicio y viendo pruebas de la utilización real del mismo. • Un servidor FTP, por muy básico que sea, es de gran ayuda para los usuarios de una red, ya que pueden respaldar sus archivos con seguridad y en cualquier caso de perdida por parte del usuario (es su computador), tendrá sus archivos en el servidor. • El uso de un servidor que puede mantener los archivos de la gran mayoría de los empleados de la institución, puede ser menos engorroso que estar usando el uso compartido de carpetas, así el usuario se evita estar compartiendo sus archivos o carpetas y los demás usuarios no tendrán acceso a los computadores de algún usuario en especial, a no ser que sea algún caso especial que necesite una conexión directa con algún PC. • La configuración y puesta en marcha del servidor, como pudimos darnos cuenta es bastante sencilla, y es algo al que todos podrían tener acceso, esa es la gran ventaja del uso de Software Libre y Código Abierto, todo está al alcance. 53 5.4.- Desarrollo de Sitio Web. • Como pudimos darnos cuenta, en la explicación anterior, se usó bastante teoría para dar a entender como se desarrolló el sitio, sin duda, es muy importante usar esta manera de trabajar ya que ayuda a entender (desde el principio) a los desarrolladores los objetivos del sitio y de esta manera lograrlos. • Desde que el sitio empezó a funcionar en Internet el número de visitas fue bastante buena en comparación a otros sitios similares, según el ranking de netstadbasic, ubicándose entre los 10 mejores puestos diariamente con un promedio de 150 visitas diarias superando incluso a municipalidades de ciudades mas grandes. • Un Sitio Web para una institución puede ser de gran ayuda, ya que permite a las personas interesadas buscar información importante sin trasladarse al lugar físico de la institución permitiendo ahorrar mucho tiempo. En cuanto al impacto del trabajo realizado, se puede decir que: • Sirve de mucho trabajar en equipos, ya que se logra de una mejor manera los objetivos de un proyecto en común, y así los clientes quedan conforme con el trabajo realizado. • A medida que se van desarrollando nuevas cosas, la experiencia va aumentando, en el caso de los sitios web, se aprenden muchas cosas, así como se refuerzan otras, como por ejemplo el uso de animaciones flash o el diseño de imágenes, en donde cada vez se hace más fácil su desarrollo. • Por otro lado cada sitio es diferente en cuanto a su estética y estructura, además cada sitio cumple objetivos diferentes aunque muchas veces parecidos. Lo anterior es lo que se logra diferenciar cuando se tiene una amplia experiencia. Es decir, el desarrollador se da cuenta de inmediato las inquietudes que tiene el cliente, así se logra un mejor trabajo. 54 VI.- BIBLIOGRAFIA. [Hatch, 03a] B. Hatch, J. Lee. Hackers en Linux. Capítulo 11, Seguridad del Protocolo de Transferencia de Ficheros, Historia del FTP, pp. 491-492. Segunda Edición. Osborne McGraw Hill, 2003. [Hatch, 03b] B. Hatch, J. Lee. Hackers en Linux. Capítulo 14, Ataque de Denegación de Servicios (DoS), pp606. Segunda Edición. Osborne McGraw Hill, 2003. [Petersen, 01a] R. Petersen. Linux Manual de Referencia. Capítulo 38. Administración de Redes TCP/IP. Conjunto de Protocolos TCP/IP, pp. 1025-1026. Segunda Edición, Osborne McGraw Hill, 2001. [Petersen, 01b] R. Petersen. Linux Manual de Referencia. Capítulo 39. Seguridad de Red: Firewall y Cifrado. Netfilter: IPTables y NAT (Kernel 2.4 y 2.6), pp. 10721074. Segunda Edición, Osborne McGraw Hill, 2001. [Petersen, 01c] R. Petersen. Linux Manual de Referencia. Capítulo 7. Configuración de los Sistemas de Seguridad. Configuración de un Firewall sencillo con IPTables (Kernel 2.4.x y 2.6.x), pp. 137-142. Segunda Edición, Osborne McGraw Hill, 2001. [Petersen, 01d] R. Petersen. Linux Manual de Referencia. Capítulo 24. Servidores FTP. Professional FTP Deamon (ProFTPD), pp. 605-606. Segunda Edición, Osborne McGraw Hill, 2001. [Petersen, 01e] R. Petersen. Linux Manual de Referencia. Capítulo 16. Clientes FTP, pp. 413-414. Segunda Edición, Osborne McGraw Hill, 2001. [Roja, 02a] J. Roja, C. Roja. Redes Locales. Capítulo 1. Conceptos Básicos. Que es una red LAN, pp. 20, Alfaomega Ra-Ma, 2002. [Roja, 02b] J. Roja, C. Roja. Redes Locales. Capítulo 2. Topología de las Redes. Configuración Estrella, pp. 39-40, Alfaomega Ra-Ma, 2002. [Vidal, 03] F. Vidal, P. Santamaría, J. Camus, P. Saavedra. Guia Web 1.0. Guía para el desarrollo de Sitios Web, Introducción, pp. 4. Gobierno de Chile, Ministerio Secretaría General de Gobierno, MSSG, 2003. [Mancill, 03a] T. Mancill. Routers en Linux. Capítulo 1, Bloques Fundamentales del Enrutamiento, Hardware de un Router, pp. 3-16. Segunda Edición. Prentice Hall, 2003. [Mancill, 03b] T. Mancill. Routers en Linux. Capítulo 9, Router de Servicios, Redirección Remota con DNAT, pp. 386-387. Segunda Edición. Prentice Hall, 2003. [Mancill, 03c] T. Mancill. Routers en Linux. Capítulo 4, Erbium : Un Router para Extranet, Enmascaramiento y NAT con netfilter, pp. 145-146. Segunda Edición. Prentice Hall, 2003. 55 VII. ANEXOS. 7.1.- Fichero de Configuración del Firewall (firewall.sh). #!/bin/bash ## Script de Proteccion. ## I. Municipalidad de Chanco ## Luis Vega. (fodsite@gmail.com) ## eth0: conectada al modem (RDSI) ## eth1: conectada al hub que mira la red local # Activando el forward en el Kernel echo 1 > /proc/sys/net/ipv4/ip_forward echo -n Aplicando Reglas de Firewall... ## FLUSH de reglas iptables -F iptables -X iptables -Z iptables -t nat -F ## Politicas por defecto iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT # ------------------------------------------------------------------------------------# Redirecciones, Desde la U. de Chile # Desde 146.83.8.186 , .252, .235, al puerto 23 y 21 de la maquina 192.168.1.80 (LAN) iptables -t nat -A PREROUTING -s 146.83.8.186 -i eth0 -p tcp --dport 21 -j DNAT --to 192.168.1.80:21 iptables -t nat -A PREROUTING -s 146.83.8.186 -i eth0 -p tcp --dport 23 -j DNAT --to 192.168.1.80:23 iptables -t nat -A PREROUTING -s 146.83.8.235 -i eth0 -p tcp --dport 21 -j DNAT --to 192.168.1.80:21 iptables -t nat -A PREROUTING -s 146.83.8.235 -i eth0 -p tcp --dport 23 -j DNAT --to 192.168.1.80:23 iptables -t nat -A PREROUTING -s 146.83.8.252 -i eth0 -p tcp --dport 21 -j DNAT --to 192.168.1.80:21 iptables -t nat -A PREROUTING -s 146.83.8.252 -i eth0 -p tcp --dport 23 -j DNAT --to 192.168.1.80:23 # Desde SMC # Desde la 216.241.23.178 al puerto 3389,4899,1433 a la maquina 192.168.1.254 iptables -t nat -A PREROUTING -s 216.241.23.178 -i eth0 -p tcp --dport 3389 -j DNAT --to 192.168.1.254:3389 iptables -t nat -A PREROUTING -s 216.241.23.178 -i eth0 -p tcp --dport 4899 -j DNAT --to 192.168.1.254:4899 iptables -t nat -A PREROUTING -s 216.241.23.178 -i eth0 -p tcp --dport 1433 -j DNAT --to 192.168.1.254:1433 # ------------------------------------------------------------------------------------# Detener Equipos #iptables -A OUTPUT -s 192.168.1.47 -j REJECT # Dejo el localhost (para conexiones locales) iptables -A INPUT -i lo -j ACCEPT # Denegar Ping iptables -A INPUT -p ICMP --icmp-type 8 -j DROP 56 # Bloquear FTP desde afuera iptables -A INPUT -i eth0 -p TCP --dport 20 -m state --state NEW -j DROP iptables -A INPUT -i eth0 -p TCP --dport 21 -m state --state NEW -j DROP # Bloquear SSH desde afuera iptables -A INPUT -i eth0 -p TCP --dport 22 -m state --state NEW -j DROP # Bloquear X11 desde afuera iptables -A INPUT -i eth0 -p TCP --dport 6000 -m state --state NEW -j DROP # Bloquear rpcbind desde afuera iptables -A INPUT -i eth0 -p TCP --dport 111 -m state --state NEW -j DROP # Permitir salida de la LAN iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE # -------------------------------------------------------------------------------------# Denegar el acceso a sitios web # denegar acseso a jugarjuegos.com iptables -A FORWARD -d 207.44.228.41 -j REJECT # denegar acseso a juegos666.com iptables -A FORWARD -d 207.44.134.136 -j REJECT # denegar acseso a minijuegos.com iptables -A FORWARD -d 80.69.64.154 -j REJECT iptables -A FORWARD -d 67.19.243.131 -j REJECT iptables -A FORWARD -d 80.69.64.200 -j REJECT # denegar acseso a juegosjuegos.com iptables -A FORWARD -d 66.98.172.17 -j REJECT # denegar acseso a elchat.com iptables -A FORWARD -d 200.76.190.254 -j REJECT # denegar acseso a latinchat.com iptables -A FORWARD -d 62.37.236.14 -j REJECT iptables -A FORWARD -d 200.68.58.83 -j REJECT iptables -A FORWARD -d 200.68.58.76 -j REJECT # denegar acseso a latinchat.cl iptables -A FORWARD -d 200.74.171.188 -j REJECT # denegar acseso a michat.com iptables -A FORWARD -d 213.41.125.162 -j REJECT # denegar acseso a juegos10.com iptables -A FORWARD -d 66.98.192.66 -j REJECT iptables -A FORWARD -d 67.19.251.114 -j REJECT # denegar acseso a juegos.com iptables -A FORWARD -d 161.58.17.20 -j REJECT # denegar acseso a geojuegos.com iptables -A FORWARD -d 62.151.20.51 -j REJECT # denegar acseso a estasmuerto.com iptables -A FORWARD -d 205.209.172.112 -j REJECT # denegar acseso a tonterias.com iptables -A FORWARD -d 69.72.131.131 -j REJECT 57 # denegar acseso a quefuerte.com iptables -A FORWARD -d 194.143.194.246 -j REJECT # denegar acseso a estasvivo.com iptables -A FORWARD -d 65.75.182.200 -j REJECT # denegar acseso a podrido.com iptables -A FORWARD -d 207.44.238.114 -j REJECT # denegar acseso a jocjuegos.com iptables -A FORWARD -d 212.0.105.123 -j REJECT iptables -A FORWARD -d 213.86.246.154 -j REJECT # denegar acseso a rotten.com iptables -A FORWARD -d 216.218.248.174 -j REJECT # denegar acseso a 1001juegos.com iptables -A FORWARD -d 64.49.219.154 -j REJECT # denegar acseso a 101juegos.com iptables -A FORWARD -d 212.227.34.3 -j REJECT # denegar acseso a barbie.com iptables -A FORWARD -d 200.68.58.71 -j REJECT # denegar acseso a cartoonnetwork.com iptables -A FORWARD -d 207.25.71.118 -j REJECT iptables -A FORWARD -d 64.236.16.231 -j REJECT # denegar acseso a l1.lopeor.com iptables -A FORWARD -d 207.21.211.86 -j REJECT # denegar acseso a cartoonnetwork.cl iptables -A FORWARD -d 207.25.71.228 -j REJECT # denegar acseso a jetrixtv.com iptables -A FORWARD -d 199.181.132.33 -j REJECT # denegar acseso a miniclick.com iptables -A FORWARD -d 64.40.102.42 -j REJECT # denegar acseso a irc.cl iptables -A FORWARD -d 200.14.80.69 -j REJECT # denegar acseso a etc.cl iptables -A FORWARD -d 200.29.0.11 -j REJECT # denegar acseso a latinchat iptables -A FORWARD -d 200.68.58.70 -j REJECT iptables -A FORWARD -d 200.68.58.101 -j REJECT iptables -A FORWARD -d 213.149.241.129 -j REJECT iptables -A FORWARD -d 200.68.58.98 -j REJECT # denegar acseso a juegosjuegos.com iptables -A FORWARD -d 67.19.251.90 -j REJECT iptables -A FORWARD -d 217.11.100.83 -j REJECT iptables -A FORWARD -d 207.21.211.56 -j REJECT # denegar acseso a escalofrio.com iptables -A FORWARD -d 80.69.64.112 -j REJECT # denegar acseso a private.com iptables -A FORWARD -d 217.116.240.20 -j REJECT 58 # denegar acceso a miniclip.comv iptables -A FORWARD -d 66.165.172.181 -j REJECT iptables -A FORWARD -d 212.113.31.48 -j REJECT # denegar acceso a irc iptables -A FORWARD -d 200.83.0.166 -j REJECT # denegar accesoa mejorbusqueda.com iptables -A FORWARD -d 213.173.190.47 -j REJECT iptables -A FORWARD -d 213.173.188.160 -j REJECT # denegar acceso a juegoramas.com iptables -A FORWARD -d 64.233.246.142 -j REJECT iptables -A FORWARD -d 64.235.246.150 -j REJECT iptables -A FORWARD -d 64.235.246.158 -j REJECT iptables -A FORWARD -d 64.235.246.141 -j REJECT # denegar accesoa chile.com/chat iptables -A FORWARD -d 200.29.90.58 -j REJECT # denegar acceso a terra.cl/chat iptables -A FORWARD -d 200.28.222.214 -j REJECT # denegar acceso a canal13.cl/chat iptables -A FORWARD -d 200.27.99.32 -j REJECT # Fin del script 59 7.2.- Fichero de Configuración Servidor FTP (proftpd.conf). # Configuracion basica de ProFTPD # Luis Vega M. # fodsite@gmail.com # FTP de Uso Interno ServerName "I. Municipalidad de Chanco." ServerType standalone DefaultServer on # Permitir Resumir AllowStoreRestart on # Puerto Standard del FTP Port 21 # Umask 022 is a good standard umask to prevent new dirs and files # from being group and world writable. Umask 022 # To prevent DoS attacks, set the maximum number of child processes # to 30. If you need to allow more than 30 concurrent connections # at once, simply increase this value. Note that this ONLY works # in standalone mode, in inetd mode you should use an inetd server # that allows you to limit maximum number of processes per service # (such as xinetd). MaxInstances 30 # Set the user and group under which the server will run. User Group nobody nogroup # To cause every FTP user to be "jailed" (chrooted) into their home # directory, uncomment this line. DefaultRoot ~ # Normally, we want files to be overwriteable. AllowOverwrite on 60 7.3.- Pantallas de módulos funcionales Sitio Web. A.- Índice Noticioso. Figura 15. Pantalla de la página Índice Noticioso. B.- Solicitud de Información Turística. Figura 16. Pantalla de la página Solicitud de Información Turística. 61 C.- Respuesta al enviar formulario de solicitud. Figura 17. Respuesta al enviar una solicitud de información. D.- Formulario de contacto. Figura 18. Formulario de Contacto. E.- Chat. Figura 19. Pantalla de Ingreso al Chat y su funcionamiento. 62 No se mostrará el sistema de estadísticas ya que una imagen de él ya fue mostrada en la figura 13, además no es parte de la programación el sitio porque es un servicio gratuito que ofrece netstadbasic.net. 7.4 Códigos módulos funcionales Sitio Web. A.- Índice Noticioso. Es solo código HTML que no tiene mayor programación esa es la razón por la que se sugirió un sistema automatizado de noticias. <table width="95%" border="0" align="center" cellpadding="3" cellspacing="0" height="1319"> <tr> <td height="10" valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="10"><strong> <font size="1" face="Verdana"><img src="images/arrow.gif" width="7" height="7"></font></strong></td> <td><strong> <font size="2" face="Verdana" color="#000000"> ÍNDICE NOTICIOSO</font></strong></td> </tr> </table></td> </tr> <tr> <td valign="top" height="1297"> <p align="left"> <font color="#FFFFFF" face="Verdana" size="1"> ....................................................................................<br> </font><b><font face="Verdana" size="2"> <font color="#800000"> <a href="noticias/halcones_fotos.htm">FOTOS HALCONES TOUR 2005</a></font><a href="noticias/halcones_fotos.htm">.</a></font><font color="#800000" face="Verdana" size="2"><br> </font></b> <font face="Verdana" size="1" color="#000000">Chanco (21 de febrero 2005).<br> Imágenes de la espectacular presentación del Grupo Halcones de la Fuerza Aérea de Chile (FACH) en la celebración de sus 75 años.<br> <b>Página con fotos <a href="noticias/halcones_fotos.htm">1</a> y <a href="noticias/halcones_fotos2.htm">2</a>.</b><br> </font><b><font face="Verdana" size="1"> <br> </font></b> </td> </tr> </table> 63 B.- Solicitud de información turística. • Comprobar si hemos recibido datos de algún formulario. La variable HTTP_POST_VARS, se encarga de verificar si hemos enviado datos a través de algún formulario, en este caso la antepone un signo “!”, lo que quiere decir es “si es diferente a”, si es positivo, entonces mostrará el formulario de contacto, de lo contrario “else” que esta mas abajo, enviará lo que hay en HTTP_POST_VARS. <? if (!$HTTP_POST_VARS){ ?> • Creación del formulario. El formulario poseerá unos check box para seleccionar el o los tipo de información que el visitante desee, luego mas abajo habrán campos de texto que el visitante tendrá que llenar para poder saber sus datos y así enviarle la información. No se usa ningún tipo de validación. <form action="turismo.php" method=post> <table border="1" cellpadding="3" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber4" bgcolor="#C0C0C0"> <tr> <td width="50%"><font face="Verdana" color="#000000" size="2"> <b> <input type="checkbox" name="general" value="Folleto información general de la comuna">Folleto información general de la comuna</b></font></td> </tr> <tr> <td width="50%"><font face="Verdana" color="#000000" size="2"> <b> <input type="checkbox" name="urbana" value="Folleto Zona Urbana">Folleto Zona Urbana</b></font></td> </tr> <tr> <td width="50%"><font face="Verdana" color="#000000" size="2"> <b> <input type="checkbox" name="calendario" value="Calendario de eventos">Calendario de eventos</b></font></td> </tr> <tr> <td width="50%"><font face="Verdana" color="#000000" size="2"> <b> <input type="checkbox" name="areas" value="Folleto de áreas naturales">Folleto de áreas naturales</b></font></td> </tr> <tr> <td width="50%"><font face="Verdana" color="#000000" size="2"> <b> <input type="checkbox" name="borde" value="Folleto borde costero">Folleto borde costero</b></font></td> </tr> <tr> <td width="50%"><font face="Verdana" color="#000000" size="2"> <b> <input type="checkbox" name="servicios" value="Guía de comercio y servicios">Guía de comercio y servicios</b></font></td> </tr> 64 <tr> <td width="50%"><font face="Verdana" color="#000000" size="2"> <b> <input type="checkbox" name="mapa" value="Mapa Rutero">Mapa Rutero</b></font></td> </tr> </table> <p align="justify"><b><font face="Verdana" size="2">Datos del solicitante:<br> &nbsp;</font></b><table border="1" cellpadding="3" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber5" bgcolor="#C0C0C0"> <tr> <td width="15%"><b><font face="Verdana" size="2">Nombre Completo</font></b></td> <td width="85%"> <p> <input type="text" name="nombre" size="34"></p> </td> </tr> <tr> <td width="15%"><b><font face="Verdana" size="2">Dirección</font></b></td> <td width="85%"><input type="text" name="direccion" size="35"></td> </tr> <tr> <td width="15%"><b><font face="Verdana" size="2">Ciudad</font></b></td> <td width="85%"><input type="text" name="ciudad" size="20"></td> </tr> <tr> <td width="15%"><b><font face="Verdana" size="2">Región</font></b></td> <td width="85%"><input type="text" name="region" size="5"></td> </tr> <tr> <td width="15%"><b><font face="Verdana" size="2">País</font></b></td> <td width="85%"><input type="text" name="pais" size="25"></td> </tr> <tr> <td width="15%"><b><font face="Verdana" size="2">E-Mail</font></b></td> <td width="85%"><input type="text" name="email" size="30"></td> </tr> <tr> <td width="15%" valign="top"><b><font face="Verdana" size="2">Comentarios</font></b></td> <td width="85%"> <p> <textarea rows="8" name="comentarios" cols="26"></textarea></p> </td></tr> <tr> <td width="15%">&nbsp;</td> <td width="85%"><p> <input type="submit" value="Enviar" name="enviar"> <input type="reset" value="Limpiar" name="limpiar"></p> </td> </tr> </table> </form> Si nos fijamos bien es un formulario que se llama así mismo y que tiene como método de envío post, el cual permite enviar los datos por la entrada estándar STDIO. A cada elemento del formulario se le da un nombre que luego se usará como variable en el código PHP. Al final del formulario hay declarado un botón que tiene como acción enviar (submit) todos los datos del formulario y un botón que tiene como acción reset, el cual borra todos los datos escritos en los campos de textos. 65 • Código PHP que permitirá enviar le formulario por mail. Declaramos $hostname para saber el nombre del host del visitante. Declaramos $hostaddressip para saber la dirección IP del visitante. Y por ultimo creamos el cuerpo del mensaje con la variable $cuerpo. Observar el uso de “.=”, para indicar que el contenido de la línea va junta con la anterior. Usamos isset para evaluar si la variable esta declarada. Usamos la función mail() que provee PHP para el envío del formulario al los correos indicados. <? }else{ //Estoy recibiendo el formulario, compongo el cuerpo $hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']); $hostaddressip = $_SERVER['REMOTE_ADDR']; $cuerpo = "Solicitud de informacion turisica.\n"; $cuerpo .= "Desde: " . $hostname . " con IP: " . $hostaddressip . "\n \n"; if (isset($_POST["general"])) $cuerpo .= $HTTP_POST_VARS["general"] . "\n"; if (isset($_POST["urbana"])) $cuerpo .= $HTTP_POST_VARS["urbana"] . "\n"; if (isset($_POST["calendario"])) $cuerpo .= $HTTP_POST_VARS["calendario"] . "\n"; if (isset($_POST["areas"])) $cuerpo .= $HTTP_POST_VARS["areas"] . "\n"; if (isset($_POST["borde"])) $cuerpo .= $HTTP_POST_VARS["borde"] . "\n"; if (isset($_POST["servicios"])) $cuerpo .= $HTTP_POST_VARS["servicios"] . "\n"; if (isset($_POST["mapa"])) $cuerpo .= $HTTP_POST_VARS["mapa"] . "\n"; $cuerpo .= "\n Nombre: " . $HTTP_POST_VARS["nombre"] . "\n"; $cuerpo .= "Direccion: " . $HTTP_POST_VARS["direccion"] . "\n"; $cuerpo .= "Ciudad: " . $HTTP_POST_VARS["ciudad"] . "\n"; $cuerpo .= "Region: " . $HTTP_POST_VARS["region"] . "\n"; $cuerpo .= "Pais: " . $HTTP_POST_VARS["pais"] . "\n"; $cuerpo .= "E-Mail: " . $HTTP_POST_VARS["email"] . "\n"; $cuerpo .= "Comentarios: \n \n " . $HTTP_POST_VARS["comentarios"] . "\n"; //mando el correo... mail("fodsite@gmail.com, municipalidad@chanco.cl","Solicitud de Informacion Turistica",$cuerpo); //doy las gracias por el envío; echo "<font face=\"Verdana\" size=\"2\">"; echo "<font color=\"800000\" face=\"Verdana\" size=\"2\"><b>SOLICITUD DE INFORMACION TURISTICA</b></font><br><br>"; echo "Gracias por rellenar el formulario. Se ha enviado correctamente."; echo "<br><a href=\"turismo.php\">Enviar otra solicitud</a>"; echo "</font>"; } ?> 66 C.- Formulario de contacto. Tiene un parecido con el formulario anterior, solo que acá no hacemos uso de check box, si no que una lista desplegable. • Primero evaluamos si hay datos por enviar en el formulario. <? if (!$HTTP_POST_VARS){ ?> • Luego creamos el formulario <form action="recomendar.php" method=post> <tr> <td width="16%" align="justify"><font face="Verdana" size="2">Nombre: </font></td> <td width="84%" align="justify"><input type=text name="nombre" size=30></td> </tr> <tr> </tr> <tr> <td width="16%" align="justify"><font face="Verdana" size="2">Tu E-Mail: </font></td> <td width="84%" align="justify"><input type=text name=email size=20></td> <td width="16%" align="justify"><font face="Verdana" size="2">Dirigido a: </font></td> <td width="84%" align="justify"> <select size="1" name="dirigido"> <option selected value="Alcaldesa">Alcaldesa</option> <option value="Concejales">Concejales</option> <option value="Secretaria Municipal">Secretaria Municipal</option> <option value="Finanzas">Finanzas</option> <option value="Informatica">Informática</option> <option value="Control">Control</option> <option value="Relaciones Publicas">Relaciones Públicas</option> <option value="Salud">Salud</option> <option value="Educacion">Educación</option> <option value="Turismo">Turismo</option> <option value="Transito y Patentes">Tránsito y Patentes</option> <option value="Social">Social</option> <option value="Obras">Obras</option> <option value="Prodesal">Prodesal</option> <option value="Omdel">Omdel</option> <option value="Juzgado de Policia Local">Juzgado de Policia Local</option> <option value="*Otros">*Otros</option> </select> </td> </tr> <tr> <td width="16%" align="justify"><font face="Verdana" size="2">Comentarios: </font></td> <td width="84%" align="justify"><textarea name=coment cols=30 rows=10></textarea></td> </tr> <tr> <td width="16%" align="justify"></td> <td width="84%" align="justify"><input value="Limpiar"></td> </tr> type=submit </form> 67 value="Enviar"> <input type=reset • Enviamos el formulario Se especifica el o los correos de destino, además se envían el nombre del host y la IP del visitante. <? }else{ //Estoy recibiendo el formulario, compongo el cuerpo $hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']); $hostaddressip = $_SERVER['REMOTE_ADDR']; $cuerpo = "Mensaje desde el Sitio Web de Chanco.\n"; $cuerpo .= "Desde: " . $hostname . " con IP: " . $hostaddressip . "\n"; $cuerpo .= "Nombre: " . $HTTP_POST_VARS["nombre"] . "\n"; $cuerpo .= "Email: " . $HTTP_POST_VARS["email"] . "\n"; $cuerpo .= "Dirigido a: " . $HTTP_POST_VARS["dirigido"] . "\n"; $cuerpo .= "Comentarios: \n \n " . $HTTP_POST_VARS["coment"] . "\n"; //mando el correo... mail("municipalidad@chanco.cl, fodsite@gmail.com","Contacto desde el Sitio Web de Chanco",$cuerpo); //doy las gracias por el envío; echo "<font face=\"Verdana\" size=\"2\">"; echo "<font color=\"004080\" face=\"Verdana\" size=\"2\"><b>CONTÁCTESE CON LA ILUSTRE MUNICIPALIDAD DE CHANCO</b></font><br><br>"; echo "Gracias por rellenar el formulario. Se ha enviado correctamente."; echo "<br><a href=\"recomendar.php\">Enviar otro mensaje</a>"; echo "</font>"; } ?> D.- Chat. El Chat está programado completamente en ASP y no fue programado por el Webmaster, es por esto que no se darán mayores detalles. Se compone de un frame con dos divisiones, una superior y una inferior. La página principal que muestra los frames es la siguiente. <html> <head> <title>Chanco Chat</title> </head> <frameset rows="280,180" noresize> <frame SRC="visualizacion.asp"> <frame SRC="incluir.asp" target="_self"> <noframes> <body> </body> </noframes> </frameset> </html> E.- Visualización del Chat Muestra los datos que son enviados por el visitante en la división inferior de la página. <% PaginaActual="http://"&_ Request.ServerVariables("SERVER_NAME")&_ Request.ServerVariables("SCRIPT_NAME") %> <html><head> <META HTTP-EQUIV="REFRESH" CONTENT="4;visualizacion.asp"> <title>Chanco Chat</title> 68 </head> <body bgcolor="E5E5E5"> <FONT FACE="verdana" COLOR="Blue" size="2"> <center><img border="0" src="bann_chat.jpg"><br></center> <% IF NOT isArray( Application("Opiniones")) THEN Application.Lock Dim Auxiliar() Redim Auxiliar(9) Application("Opiniones")=Auxiliar Application.UnLock END IF Temporal=Application("Opiniones") FOR Opinion=8 to 0 step -1%> <%= Temporal(Opinion) %> <BR> <% NEXT %> </body></html> F.- Archivo global .ASA, es procesado por cada sesión de navegador que inicia la aplicación <SCRIPT LANGUAGE="VBScript" RUNAT="Server"> Sub Application_OnStart Dim Auxiliar() Redim Auxiliar(9) Application("Opiniones")=Auxiliar End Sub </SCRIPT> G.- Envío de mensajes. <% IF Request.Cookies("Apodo")="" and request.form("opinion")<>"" THEN if request.form("apodo")<>"" then Response.Cookies("Apodo")=Request.Form("Apodo") else Response.Cookies("Apodo")="Anonimo" end if Application.Lock Temporal=Application("Opiniones") FOR i=7 TO 0 STEP -1 Temporal(i+1)=Temporal(i) NEXT if request.form("apodo")<>"" then Temporal(0)="<FONT COLOR=""#000000""><b>[</b> " & Request.Form("Apodo") & " <b>]</b> Entra en el chat</FONT>" else Temporal(0)="<FONT COLOR=""#000000""><b>[</b> Anonimo <b>]</b> Entra en el chat</FONT>" end if Application("Opiniones")=Temporal Application.Unlock END IF IF Request.Form("Opinion")<>"" THEN Apodo=Request.Cookies("Apodo") Application.Lock Temporal=Application("Opiniones") FOR i=7 TO 0 STEP -1 69 Temporal(i+1)=Temporal(i) NEXT Temporal(0)=Apodo& ": " &Request.Form("Opinion") Application("Opiniones")=Temporal Application.Unlock END IF%> <html> <head> <title>Incluir opinion</title> <base target="_self"> </head> <font color="004080" face="Verdana" size="2"> <form METHOD="POST" ACTION="incluir.asp"> <input type="hidden" name="go" value="si"><% IF Request.Cookies("Apodo")="" THEN %> <p align="left"> <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1"> <tr> <td><b>&nbsp;&nbsp;Nick :</b></td> <td><input TYPE="TEXT" SIZE="28" NAME="Apodo"> </td> </tr> <tr> <td><% END IF %> <b>&nbsp;&nbsp;Mensaje: </b> </td> <td><input TYPE="TEXT" SIZE="33" NAME="Opinion"></td> </tr> <tr> <td>&nbsp;</td> <td><input TYPE="SUBMIT" VALUE="Enviar"> <input type="reset" value="Limpiar" name="Limpiar"></td> </tr> </table> </html> 70 7.5.- ACTIVIDADES ALUMNO. Participaciones: • Primer Encuentro Estudiantil de Linux, Realizado entre el 21 y 22 Marzo de 2002, Universidad Católica del Maule, Talca. • Segundo Encuentro Estudiantil de Linux, Realizado entre el 18 y 22 Agosto de 2003, Universidad Católica del Maule, Talca. • Jornadas Chilenas de Computación, Realizadas entre el 3 y 8 de Noviembre de 2003, Universidad del Bio-Bio, Chillán. • Expositor, Programación en PLC, Simulación de Semáforo, Primera Feria de Computación e Informática, 21 al 23 de Abril de 2004, Universidad Católica del Maule. • Encuentro Nacional de Linux, Realizado los días 21, 22 y 23 de Octubre de 2004, Universidad Técnica Federico Santa María, Valparaíso. Artículos Realizados: • Introducción a PostgreSQL, Paulo Nuñez V., Luis Vega M., Julio Lobo V., Documento desarrollado para la asignatura de Administración de Sistemas Operativos, V Semestre, 17 de Junio de 2004, Universidad Católica del Maule. Web: http://es.geocities.com/fodcl/doc_post/doc_post.html. • Proyecto Con PLC. Línea de Secado de Productos a través de una Correa Transportadora. Paulo Nuñez V., Julio Lobo V., Cristian Mena C., Genaro Pobrete C., Luis Vega M. Documento desarrollado para la asignatura de Automatización de Procesos Industriales, V Semestre. 2 de Julio de 2004. Universidad Católica del Maule. Web: http://es.geocities.com/fodcl/doc_aut/doc_aut_intro.html. • Introducción a PHP y MySQL. Luis Vega M. Documento desarrollado para la asignatura de Programación Avanzada. V Semestre, 6 de Julio de 2004. Universidad Católica del Maule. Web: http://es.geocities.com/fodcl/doc_mysql/doc_mysql_intro.html. 71 7.6.- DOCUMENTOS PRÁCTICA. 7.6.1 Contrato de Práctica Profesional. Figura 20. Contrato de Práctica Profesional 72 7.6.2 Inscripción de Práctica Profesional. Figura 21. Inscripción de Práctica Profesional 73