Universidad Tecnológica de Querétaro

Anuncio
Victor Hugo Ruiz Franco
Universidad Tecnológica
de Querétaro
Firmado digitalmente por Universidad Tecnológica de Querétaro
Nombre de reconocimiento (DN): cn=Universidad Tecnológica
de Querétaro, o=Universidad Tecnológica de Querétaro, ou,
[email protected], c=MX
Fecha: 2011.05.19 11:16:26 -05'00'
UNIVERSIDAD TECNOLÓGICA DE
QUERÉTARO
SERVIDOR WEB DTAI
2011
Servidor Web DTAI
Memoria
Que como parte de los requisitos para obtener
el título de
Ingeniero en Tecnologías de la Información y Comunicación
Presenta
Victor Hugo Ruiz Franco
Asesor de la UTEQ
M. en GTI. Jorge García Saldaña
Asesor de la Empresa
M. en C. José Felipe Aguilar Pereyra
Santiago de Querétaro, Qro., Abril de 2011
1
2
RESUMEN
El presente trabajo es una memoria de titulación que documenta la elaboración un
servidor web para la Universidad Tecnológica de Querétaro, el cual permite a los
alumnos de la universidad realizar prácticas para el desarrollo de sus habilidades. El
documento está dividido por capítulos y secciones respectivamente, haciendo
énfasis en los puntos más importantes esto para describir el desarrollo y
funcionamiento en un punto de partida y cumplir en un lapso aceptable. El
documento cuenta con capítulos los cuales van detallando los puntos clave del
proyecto, los objetivos nos ayudan a establecer un punto de inicio y final del
proyecto, el alcance muestra las tareas que el servidor realizará para conocimiento
del cliente, el desarrollo es la fase donde se realiza el proceso se elaboración del
proyecto, se toman los riesgos durante el proyecto y la estimación del tiempo que se
tomará para realizar junto con las pruebas del proyecto lo cual nos permite tener una
mejora continua en la elaboración del proyecto. Al definir cada uno de los capítulos
nos permite llevar una mejor administración, elaboración del proyecto y no consume
más tiempo del que se tiene planeado. El análisis del proyecto nos permite tener
organización para realizar tareas eficazmente y agilizar la entrega del proyecto, y en
dado momento de que el proyecto crezca ya se tiene los antecedentes para la
modificación del proyecto. Con la realización de este proyecto se espera obtener un
mayor aprovechamiento para los alumnos en su educación, para que cuenten con
espacio propio para el incremento de sus conocimientos.
3
ABSTRACT
Work is a certification report which records the installation of web server for the
Technological University of Querétaro; this server will allow students to do internships
to develop their skills. This report is divided into chapters and sections; the report
emphasizes the most important in describing the development and operation to
comply within a period acceptable. The report has chapters detailing the key points of
the project and the objectives to help establish a starting point and end of the project,
the scope shows what the webserver perform for the students, the development of
the project face is where it performs project development process, risks are taken
during the project and the estimated time it will take to perform. The tests with the
project which allows us to have a better handle on the development of the project in
defining each of the chapters allows us to bring better management, project and does
not consume more time than is planned. The project analysis allows us to have
organization to perform tasks efficiently and expedite project delivery, and given time
the project grows and you have the background to the modification of the project.
With the installation of this project is expected to make a greater use of technology
for students in their education, to have their own space to increase their knowledge.
4
AGRADECIMIENTOS
Le doy gracias a Jehová Dios por darme la oportunidad de terminar esta
etapa de mi vida, también le agradezco por darme unos padres que siempre me
apoyaron para lograr esta meta y que nunca tendré conque pagarles todo el
esfuerzo que han hecho por mí.
A mi hermana que siempre ha estado conmigo a pesar de las dificultades
de la vida y que siempre nos apoyamos para salir adelante en cualquier situación
que hay que superar.
También agradezco a la familia Meza Ruiz que han sido un apoyo
incondicional para lograr esta etapa de mi vida y que siempre me han brindado su
apoyo en cualquier situación.
Agradezco la labor de mis profesores por su entrega y profesionalismo que
demostraron a lo largo de mi carrera y por el voto de confianza que depositaron
en mí para culminar esta etapa.
5
ÍNDICE
Página
Resumen
Abstract
3
Agradecimientos
4
Índice
5
I.
INTRODUCCIÓN
7
II.
ANTECEDENTES
8
III.
JUSTIFICACIÓN
10
IV. OBJETIVOS
11
V.
12
ALCANCES
VI. FUNDAMENTACIÓN TEÓRICA
13
VII. PLAN DE ACTIVIDADES
27
VIII.
RECURSOS MATERIALES Y HUMANOS
28
IX.
DESARROLLO DEL PROYECTO
29
X.
RESULTADOS OBTENIDOS
122
XI.
ANÁLISIS DE RIESGOS
123
XII.
CONCLUSIONES
124
XIII.
RECOMENDACIONES
125
XIV.
REFERENCIAS BIBLIOGRÁFICAS
126
6
I. INTRODUCCIÓN
En el presente trabajo se desarrolla la implementación y funcionamiento de un
servidor web en la Universidad Tecnológica de Querétaro donde se busca brindar
herramientas a los docentes para evaluar el desarrollo de sus alumnos y darle el
seguimiento correspondiente para guiar su desarrollo aun nivel profesional y
competitivo. El servidor web busca brindar un espacio para cada alumno en el cual le
sirva para experimentar y desarrollar en las asignaturas de programación y base de
datos principalmente entre otras y que el alumno tenga la mayor parte del tiempo
esta herramienta disponible usando el internet sin la necesidad de instalar
aplicaciones ya sea en su equipo o cualquier otro.
La problemática actual es que la mayoría de los alumnos no cuentan con un
equipo de cómputo propio y necesitan rentar uno o si cuentan con uno las
aplicaciones que necesitan usar son difíciles de instalar o no compatibles, es por eso
que se tiene la idea de centralizar en un servidor web todas las aplicaciones que el
alumno necesita y que tenga acceso a ellas desde cualquier dispositivo con acceso
a internet y que el docente pueda llevar un monitoreo del desarrollo de las prácticas
o proyectos a entregar en cada una de las faces.
7
II. ANTECEDENTES
La Universidad Tecnológica de Querétaro (UTEQ) a lo largo de 17 años de
trayectoria en nuestra entidad, ésta se ha consolidado como una Institución
Educativa de calidad que ofrece una formación profesional, cuyo distintivo es la
estrecha relación con el sector productivo. La UTEQ comienza sus labores docentes
en septiembre de 1994, iniciando la formación en las áreas de Administración,
Comercialización, Mantenimiento Industrial y Procesos de Producción.
Actualmente se imparten ocho carreras -a las cuatro primeras se sumaron las
de Electrónica y Automatización, Telemática -actualmente Tecnologías de la
Información y Comunicación-, Tecnología Ambiental y más recientemente Servicio
Posventa: Área Automotriz, todas avaladas por la preparación profesional y
curricular del cuerpo docente, en su mayoría con estudios de maestría y doctorado
en áreas afines a las materias que imparten y en los atributos del modelo educativo,
mismo que incluye actividades culturales y deportivas para la formación integral del
estudiantado.
En la carrera de Tecnologías de la Información y Comunicación se imparte
clases a más de 500 alumnos tanto en el turno matutino como en el vespertino, de
los cuales cada cuatrimestre necesita desarrollar sus habilidades en asignaturas
tanto de programación como de base de datos, es por eso que el director de la
carrera Ing. Rodrigo Mata Hernández propone implementar un servidor web donde
los alumnos puedan interactuar con diferentes tecnologías para el desarrollo de su
8
aprendizaje, esto es con el fin de ayudar a los alumnos a que cuenten con un
espacio en la red disponible las 24 horas del día en donde se accede ya sea por sus
equipos o desde un cibercafé y sin la necesidad de instalar ninguna aplicación para
el desarrollo de sus prácticas, así tener evidencias de sus logros y un mayor control
de las calificaciones del alumno.
9
III. JUSTIFICACIÓN
Se instalará un servidor web con la finalidad de tener un espacio para cada
alumno para el desarrollo de prácticas para las asignaturas de programación y base
de datos, por lo que el servidor les ayudará a que tengan este espacio disponible la
mayor parte del tiempo desde cualquier lugar con acceso a internet, el alumno podrá
subir, modificar, borrar, cualquier archivo que tengan en el espacio asignado.
El proyecto busca brindar herramientas eficaces para que los maestros
puedan utilizarlas para el beneficio de sus alumnos.
10
IV. OBJETIVOS
Dentro de los principales objetivos del servidor web en la carrera de
Tecnologías de la Información y Comunicación son:

Proporcionar un medio activo y dinámico de proveer información sobre los
aspectos docentes e investigadores.

Publicar toda la información de asignaturas, cursos y dar ubicación a los
recursos de programas elaborados en proyectos finales y de investigación.

Desarrollo de habilidades en asignaturas de tecnologías de la información.
11
V. ALCANCES
La instalación del servidor constará de 7 partes y en cada una se desglosará
por subtemas donde contendrá los puntos principales para el desarrollo de cada
parte, los temas a completar son los siguientes:
 Instalación de Ubuntu Server 10.4
 Creando usuario SUDO
 Usuario limitado
 Actualización de SO
 Instalación de ia32-libs
 Instalación de JDK
 Instalación de Tomcat
 Iniciando Tomcat
 Instalación de XAMPP
 XAMPP para Linux
 Instalación de XAMPP en Ubuntu
 Iniciando XAMPP
 Configuración XAMPP
 Alta usuarios en sistema
 Rsync
 Cron
12
VI. JUSTIFICACION TEORICA
Se instalará un servidor web con la finalidad de tener un espacio para cada
alumno para el desarrollo de prácticas para las asignaturas de programación y base
de datos. El proyecto busca brindar herramientas eficaces para que los maestros
puedan utilizarlas para el beneficio de sus alumnos, las tecnologías que se utilizaran
para realizar los proyectos son las siguientes:
UBUNTU 10.10
Ubuntu es
una distribución GNU/Linux basada
en Debian
GNU/Linux que
proporciona un sistema operativo actualizado y estable para el usuario medio, con
un fuerte enfoque en la facilidad de uso e instalación del sistema. Al igual que otras
distribuciones
se
compone
de
múltiples
paquetes
de software normalmente
distribuidos bajo una licencia libre o de código abierto. Estadísticas web sugieren
que el porcentaje de mercado de Ubuntu dentro de las distribuciones Linux es de
aproximadamente 50%, y con una tendencia a subir como servidor web.
Está patrocinado por Canonical Ltd., una compañía británica propiedad del
empresario sudafricano Mark Shuttleworth que en vez de vender la distribución con
fines lucrativos, se financia por medio de servicios vinculados al sistema operativo y
vendiendo soporte técnico. Además, al mantenerlo libre y gratuito, la empresa es
capaz de aprovechar los desarrolladores de la comunidad en mejorar los
13
componentes de su sistema operativo. Canonical también apoya y proporciona
soporte para cuatro derivaciones de Ubuntu: Kubuntu, Xubuntu, Edubuntu y la
versión de Ubuntu orientada a servidores (Ubuntu Server Edition).
Su eslogan es Linux for Human Beings (Linux para seres humanos) y su
nombre proviene de la ideología sudafricana Ubuntu(«humanidad hacia otros»).
Cada seis meses se publica una nueva versión de Ubuntu la cual recibe
soporte por parte de Canonical, durante dieciocho meses, por medio de
actualizaciones de seguridad, parches para bugs críticos y actualizaciones menores
de programas. Las versiones LTS (Long Term Support), que se liberan cada dos
años, reciben soporte durante tres años en los sistemas de escritorio y cinco para la
edición orientada a servidores.
Características
En su última versión, Ubuntu soporta oficialmente dos arquitecturas
de hardware en computadoras personales y servidores: x86 yAMD64 (x86-64);
siendo
la
versión
6.10
la
última
que
oficialmente
soportó
la
arquitectura PowerPC, después de lo cual es solo soportada por la comunidad. Sin
embargo,
extraoficialmente,
Ubuntu
ha
sido portado a
tres
arquitecturas
más: SPARC, IA-64 yPlaystation 3.
A partir de la versión 9.04 —lanzada en abril de 2009— se empezó a ofrecer
soporte oficial para procesadores ARM, comúnmente usados en dispositivos
móviles, PDA etc.
14
Al igual que la mayoría de las distribuciones basadas en GNU/Linux, Ubuntu
es capaz de actualizar a la vez todas las aplicaciones instaladas en la máquina a
través de repositorios.
Esta distribución está siendo traducida a más de 130 idiomas, y cada usuario
es capaz de colaborar voluntariamente a esta causa, a través de Internet.
Software Incluido
Posee una gran colección de aplicaciones para la configuración de todo el
sistema,
valiéndose
principalmente
escritorio predeterminado
de
Ubuntu
de interfaces
gráficas.
es GNOME y
se
Elentorno
sincroniza
con
de
sus
liberaciones. Existen otras dos versiones oficiales de la distribución, una con el
entorno KDE, llamada Kubuntu, y otra con el entorno Xfce, llamada Xubuntu; existen
otros escritoriosdisponibles, que pueden ser instalados en cualquier sistema Ubuntu
independientemente del entorno de escritorio instalado por defecto.

Aplicaciones de Ubuntu: Ubuntu es conocido por su facilidad de uso y las
aplicaciones orientadas al usuario final. Las principales aplicaciones que trae
Ubuntu
son:
navegador
web Mozilla
Firefox,
cliente
de
mensajería
instantánea Empathy, cliente de redes sociales Gwibber, cliente para enviar y
recibir
correo Evolution,
reproductor
multimedia Totem,
reproductor
de
música Rhythmbox, editor de vídeos PiTiVi, gestor y editor de fotos Shotwell,
cliente y gestor de torrents Transmission, grabador de discos Brasero, suite
15
ofimática OpenOffice.org, y el instalador central para buscar e instalar
aplicaciones Centro de software de Ubuntu.

Seguridad y accesibilidad: El sistema incluye funciones avanzadas de
seguridad y entre sus políticas se encuentra el no activar, de forma
predeterminada, procesos latentes al momento de instalarse. Por eso mismo, no
hay un cortafuego predeterminado, ya que no existen servicios que puedan
atentar a la seguridad del sistema. Para labores o tareas administrativas en
la línea de comandos incluye una herramienta llamada sudo (de las siglas
en inglés de SuperUser do), con la que se evita el uso del usuario administrador.
Posee accesibilidad e internacionalización, de modo que el sistema esté
disponible para tanta gente como sea posible. Desde la versión 5.04, se
utiliza UTF-8 como codificación de caracteres predeterminado.
No sólo se relaciona con Debian por el uso del mismo formato de paquetes .deb.
También tiene uniones muy fuertes con esa comunidad, contribuyendo con cualquier
cambio directa e inmediatamente, y no sólo anunciándolos. Esto sucede en los
tiempos de lanzamiento. Muchos de los desarrolladores de Ubuntu son también
responsables de los paquetes importantes dentro de la distribución Debian.
Para centrarse en solucionar rápidamente los bugs, conflictos de paquetes, etc.
se decidió eliminar ciertos paquetes del componente main, ya que no son populares
o simplemente se escogieron de forma arbitraria por gusto o sus bases de apoyo
al software libre. Por tales motivos inicialmente KDE no se encontraba con más
16
soporte de lo que entregaban los mantenedores de Debian en sus repositorios,
razón
por
la
que
se
sumó
la
se
liberan
comunidad
de KDE creando
la
distribución GNU/Linux Kubuntu
Lanzamientos y Soporte
Las
versiones
estables
cada
6
meses
y
Canonical
proporciona soporte técnico y actualizaciones de la seguridad para la mayoría de las
versiones de Ubuntu durante 18 meses, excepto para las versiones LTS (Long term
support) que ofrece 3 años para la versión escritorio y 5 años para la versión
servidor, a partir de la fecha del lanzamiento.
Existen planes para lanzar una rama de Ubuntu bajo el nombre en
clave «Grumpy Groundhog», la cual solo estará disponible para desarrolladores.
Soporte técnico extendido
Cada 4 versiones de Ubuntu se libera una versión con soporte técnico
extendido a la que se añade la terminación LTS.
Esto significa que los lanzamientos LTS contarán con actualizaciones de
seguridad de paquetes de software durante tres años en entorno de escritorio y
cinco años en servidor por parte de Canonical, a diferencia de los otros lanzamientos
de Ubuntu que sólo cuentan con 18 meses de soporte.
La primera LTS fue la versión 6.06 de la cual se liberó una remasterización (la
6.06.1) para la edición de escritorio y dos remasterizaciones (6.06.1 y 6.06.2) para la
17
edición servidor, ambas incluían actualizaciones de seguridad y corrección de
errores.
La segunda LTS fue la versión 8.04 «Hardy Heron», de la cual ya va por la
cuarta y última revisión de mantenimiento (la 8.04.4).
La última versión LTS que ha sido lanzada es la 10.04, Lucid Lynx, fue
liberada en abril de 2010, la versión de mantenimiento actual va por la 10.04.1.
Estable y en desarrollo
La última versión estable del sistema, Ubuntu 10.10 Maverick Meerkat, se
lanzó el 10 de octubre de 2010.
La versión para netbooks incluye el entorno Unity, el cual brinda una interfaz
simple, ligera, y que proporciona un lanzador de aplicaciones al lado izquierdo de la
pantalla. Unity fue creado especialmente para esta versión, siguiendo la misma línea
de diseño que se utilizará en el futuro GNOME 3.0. En la versión para netbooks se
incluye un menú de aplicaciones global en la barra superior, y los controles de
ventana (cerrar, minimizar, maximizar) se integran en la barra superior. También se
eliminan todos los notificadores de terceros de la barra superior, y son reemplazados
por nuevos indicadores con menús desplegables.
El instalador de Ubuntu fue casi completamente renovado, incluye la opción
de instalar Adobe Flash Player, códecs como MP3,Xvid, DVD (MPEG-2), y Java (es
necesaria una conexión a Internet), y en general es fácil de usar a la hora de instalar
18
el sistema. Las transparencias en ventanas y menús serán más consistentes con la
interfaz de usuario gracias al soporte RGBA que vendrá por defecto. También se
incluye una nueva fuente de texto, desarrollada por el equipo de Canonical. Los
temas«Ambiance» y «Radiance» fueron modificados, recibiendo colores más claros
(los tonos cafés ya no se utilizarán más), dando una interfaz más ligera en
general. El menú de sonido ahora se integra con el reproductor de música
Rhythmbox.
El Centro de software de Ubuntu se actualiza a la versión 3.0, incluye un
nuevo historial de sucesos diarios, las librerías y elementos extras se ocultan por
defecto (hay un enlace inferior para verlas) y solo se muestran las aplicaciones,
Canonical publicará nuevas aplicaciones post-lanzamiento en la versión estable, y
permite comprar aplicaciones por medio de un sistema de logueo de usuario y
sistema de compra.
El editor de imágenes F-Spot es reemplazado por Shotwell, el cual es más
rápido y simple de usar, y se pueden subir imágenes a Facebook, Flickr, y Picasa
Web. Maverick Meerkat no incluye GNOME Shell por defecto, debido al retraso en el
lanzamiento de GNOME 3.0 para 9 abril de 2011.
Y en el aspecto más técnico, se utiliza el kernel Linux 2.6.35, el cual trae
mejoras en drivers de video (ATI, nVidia), reconocimiento de hardware, y mejoras en
el rendimiento del núcleo Linux.73 El escritorio GNOME se actualiza a la versión
2.32. Se agrega el soporte para el sistema de archivos Btrfs. La compilación de
19
arquitectura se optimiza para i686, siendo esta la que se utilizará por defecto, y se
abandonará IA64, i386, e i486. En el área gráfica se actualiza X.Org Server a la
versión 1.9. Se mejora aún más la velocidad de arranque del sistema, Upstart recibe
optimizaciones a la hora de iniciar el sistema, y se otorga una interfaz gráfica más
amigable a GRUB2. Soporte multitáctil para pantallas y dispositivos con estas
prestaciones, y además los productos de Apple con capacidades multitouch tienen
soporte por defecto.
Requisitos
Los requisitos mínimos «recomendados», teniendo en cuenta los efectos de
escritorio, deberían permitir ejecutar una instalación de Ubuntu.103

Procesador x86 a 1 GHz.

Memoria RAM: 512 MB.

Disco Duro: 5 GB (swap incluida).

Tarjeta gráfica VGA y monitor capaz de soportar una resolución de 1024x768.

Lector de CD-ROM o puerto USB

Conexión a Internet puede ser útil.
Los efectos de escritorio, proporcionados por Compiz, se activan por defecto en
las siguientes tarjetas gráficas:103

Intel (i915 o superior, excepto GMA 500, nombre en clave «Poulsbo»)

NVidia (con su controlador propietario)
20

ATI (a partir del modelo Radeon HD 2000 puede ser necesario el controlador
propietario)
Si se dispone de una computadora con un procesador de 64 bits (x86-64), y
especialmente si dispone de más de 3 GB de RAM, se recomienda utilizar la versión
de Ubuntu para sistemas de 64 bits.
XAMPP
XAMPP es
un servidor independiente
de plataforma, software
libre,
que
consiste principalmente en la base de datos MySQL, el servidor web Apache y los
intérpretes para lenguajes de script: PHP y Perl.
El nombre proviene del acrónimo de X (para cualquiera de los diferentes
sistemas operativos), Apache, MySQL, PHP, Perl.
El programa está liberado bajo la licencia GNU y actúa como un servidor web
libre, fácil de usar y capaz de interpretar páginas dinámicas. Actualmente XAMPP
está disponible para Microsoft Windows, GNU/Linux, Solaris, y Mac.
Características y Requerimientos
XAMPP solamente requiere descargar y ejecutar un archivo zip, tar, o exe,
con unas pequeñas configuraciones en alguno de sus componentes que el servidor
Web necesitará. XAMPP se actualiza regularmente para incorporar las últimas
versiones de Apache/MySQL/PHP y Perl. También incluye otros módulos
como OpenSSL y phpMyAdmin. Para instalar XAMPP se requiere solamente una
21
pequeña fracción del tiempo necesario para descargar y configurar los programas
por separado.
TOMCAT
Tomcat (también llamado Jakarta Tomcat o Apache Tomcat) funciona como
un contenedor de servlets desarrollado bajo el proyecto Jakarta en la Apache
Software Foundation. Tomcat implementa las especificaciones de los servlets y
de JavaServer Pages (JSP) de Sun Microsystems.
Estado de Desarrollo
Tomcat es mantenido y desarrollado por miembros de la Apache Software
Foundation y voluntarios independientes. Los usuarios disponen de libre acceso a su
código fuente y a su forma binaria en los términos establecidos en la Apache
Software Licence. Las primeras distribuciones de Tomcat fueron las versiones 3.0.x.
Las versiones más recientes son las 7.x, que implementan las especificaciones de
Servlet 3.0 y de JSP 2.2. A partir de la versión 4.0, Jakarta Tomcat utiliza el
contenedor de servlets Catalina.
Entorno
Tomcat es un servidor web con soporte de servlets y JSPs. Tomcat no es
un servidor de aplicaciones, como JBoss o JOnAS. Incluye el compilador Jasper,
que compila JSPs convirtiéndolas en servlets. El motor de servlets de Tomcat a
menudo se presenta en combinación con el servidor web Apache.
22
Tomcat puede funcionar como servidor web por sí mismo. En sus inicios
existió la percepción de que el uso de Tomcat de forma autónoma era sólo
recomendable para entornos de desarrollo y entornos con requisitos mínimos de
velocidad y gestión de transacciones. Hoy en día ya no existe esa percepción y
Tomcat es usado como servidor web autónomo en entornos con alto nivel de tráfico
y alta disponibilidad.
Dado que Tomcat fue escrito en Java, funciona en cualquier sistema operativo
que disponga de la máquina virtual Java. (También se puede usar con xampp)
Características del Producto
Tomcat 4.x

Implementado a partir de las especificaciones Servlet 2.3 y JSP 1.2

Contenedor de servlets rediseñado como Catalina

Motor JSP rediseñado con Jasper

Conector Coyote

Java Management Extensions (JMX), JSP Y administración basada en Struts
Tomcat 5.x

Implementado a partir de las especificaciones Servlet 2.4 y JSP 2.0

Recolección de basura reducida

Capa envolvente nativa para Windows y Unix para la integración de las
plataformas
23

Análisis rápido JSP
Tomcat 6.x

Implementado de Servlet 2.5 y JSP 2.1

Soporte para Unified Expression Language 2.1

Diseñado para funcionar en Java SE 5.0 y posteriores

Soporte para Comet a través de la interfaz CometProcessor
Tomcat 7.x

Implementado de Servlet 3.0 JSP 2.2 y EL 2.2

Mejoras para detectar y prevenir "fugas de memoria" en las aplicaciones web

Limpieza interna de código

Soporte para la inclusión de contenidos externos directamente en una aplicación
web
RSYNC
r5 es una aplicación de software para sistemas de tipo Unix que ofrece
transmisión eficiente de datos incrementales, que opera también con datos
comprimidos y cifrados. Mediante una técnica de delta encoding, permite sincronizar
archivos y directorios entre dos máquinas de una red o entre dos ubicaciones en una
misma máquina, minimizando el volumen de datos transferidos. Una característica
importante de rsync no encontrada en la mayoría de programas o protocolos es que
la copia toma lugar con sólo una transmisión en cada dirección. rsync puede copiar o
24
mostrar directorios contenidos y copia de archivos, opcionalmente usando
compresión y recursión.
En modalidad de "Daemon" servidor, rsync escucha por defecto el
puerto TCP 873, sirviendo archivos en el protocolo nativo rsync o via un terminal
remoto como RSH o SSH. En el último caso, el ejecutable del cliente rsync debe ser
instalado en el host local y remoto.
Lanzado bajo la licencia GNU General Public License, rsync es software libre
Características y Aplicaciones
Mientras que el algoritmo rsync forma parte del núcleo de la aplicación rsync y
esencialmente optimiza las transferencias entre dos computadoras sobre TCP/IP, la
aplicación rsync provee otras funciones que asisten en la transferencia. Estas
incluyen compresión y descompresión de los datos bloque por bloque, utilizando zlib
al enviar y recibir, y soporte para protocolos de cifrado, tal como SSH, lo que permite
transmisión cifrada y eficientemente diferenciada de datos comprimidos usando el
algoritmo rsync.
Adicionalmente puede utilizarse una aplicación de tunneling también para
crear un túnel cifrado que asegure los datos transmitidos.
Además
de
archivos,
el
algoritmo
permite
copiar
directorios,
aún
recursivamente, así como vínculos, dispositivos, grupos y permisos. No requiere por
defecto privilegios de root para su uso.
25
Rsync fue escrito como un reemplazo de rcp y SCP. Una de las primeras
aplicaciones de rsync fue el espejado (mirroring) o respaldo de múltiples
clientes Unix dentro de un servidor Unix central, usando rsync/ssh y cuentas
estándares
de Unix.
Habitualmente
se
lo
ejecuta
mediante
herramientas
de scheduling como cron, para automatizar procesos de sincronización entre
múltiples computadoras host y servidores centrales.
26
VII. PLAN DE ACTIVIDADES
Figura 1.0 Diagrama general de Gantt
27
VIII. RECURSOS MATERIALES Y HUMANOS
Los recursos a utilizar para la elaboración del proyecto son los siguientes:

Recursos Hardware
Cantidad
1
1
1
1
1


Recurso
Servidor Dell Poweredge SC1430
Monitor VGA
Teclado
Mouse
Laptop
Recursos de Software
Recursos
Descripción
Linux Ubuntu 10.10 64 bits
Sistema operativo basado en Linux.
XAMMP Versión 1.7.3ª
Servidor independiente de plataforma y
software libre.
Instalación de JDK (Java Development
Kit)
Instalación Tomcat
Múltiples herramientas para programación y
desarrollo de aplicaciones.
Servidor Web para Apache soporta Servlets y
JSP para Java.
Recursos Humanos
2 técnicos en soporte con las siguientes características:
 Conocimientos en sistema operativo Linux
 Conocimientos en redes
 Proactivos
28
IX. DESARROLLO DEL PROYECTO
ANÁLISIS Y REQUERIMIENTOS
Requerimientos del Hardware
Se hiso una examinación exhaustiva para determinar cuáles son las
necesidades requeridas para poder lograr nuestro objetivo en este caso en equipo
físico, por lo tanto la Universidad Tecnológica de Querétaro adquirió un servidor que
cumple con los requerimientos para el desarrollo de este proyecto, las
especificaciones del servidor son las siguientes:
Servidor PowerEdge 11G T410
Figura 1.1 Servidor Dell PowerEdge
29
Rendimiento
de
procesamiento,
memoria
y
almacenamiento
avanzados
Compacto, flexible, silencioso y fácil de usar, el Dell PowerEdge T410
aprovecha las tecnologías de última generación de Dell para brindar un rendimiento
confiable.
El rendimiento avanzado de los procesadores de la serie Intel® Xeon®, la
memoria DDR3 y hasta seis discos duros de 3,5" (o de 2,5" de manera opcional)
satisfacen las necesidades de las diversas aplicaciones de una empresa en
crecimiento.
El Dell PowerEdge T410 cuenta con una acústica silenciosa, fuentes de
alimentación redundantes disponibles y un medio de diagnóstico excelente a través
de una LCD interactiva disponible.
Diseño compacto inspirado en los clientes
La profundidad del chasis de 24 pulgadas da una flexibilidad óptima para la
implementación
en
empresas
con
restricciones
de
espacio.
El Dell PowerEdge T410 cuenta con características comunes de sistema e
imagen de primera clase y una facilidad de uso inspirada en los clientes. Tiene un
30
diseño lógico e impecable y la fuente de alimentación está ubicada de manera que la
instalación se pueda realizar rápidamente y la reimplementación sea más simple.
El Dell PowerEdge T410 también incluye un chasis de vanguardia, además de
portadoras y ventiladores mejorados para los discos duros, que brindan una
confiabilidad excepcional, operaciones silenciosas y fluidas y facilidad de uso.
Procesadores
Procesadores Intel® Xeon® serie 5500 y 5600 disponibles
Intel® Xeon® X5560; 2,80 GHz/8 MB, 4 núcleos 95 W
Intel® Xeon® E5540; 2,53 GHz/8 MB, 4 núcleos 80 W
Intel® Xeon® E5530; 2,40 GHz/8 MB, 4 núcleos 80 W
Intel® Xeon® E5520; 2,26 GHz/8 MB, 4 núcleos 80 W
Intel® Xeon® E5506; 2,13 GHz/4 MB, 4 núcleos 80 W
Intel® Xeon® E5504; 2,00 GHz/4 MB, 4 núcleos 80 W
Intel® Xeon® E5502; 1,86 GHz/4 MB, 2 núcleos 80 W
Chipset
Chipset Intel® 5500
31
Memoria
Hasta 128GB1 (8 ranuras DIMM2): 1 GB1/2 GB1/4 GB1/8 GB1/16 GB1 de memoria
DDR3 de 800 MHz, 1066 MHz o 1333 MHz
Sin búfer con ECC o con registros con ECC a 1333/1066/800 MHz
Opciones:
UDIMM/RDIMM de 1GB1
UDIMM/RDIMM de 2GB1
RDIMM de 4GB1
RDIMM de 8GB1
RDIMM de 16GB1
Sistemas operativos
Microsoft® Windows® Small Business Server 2008 (en inglés)
Microsoft® Windows® Essential Business Server 2008 (en inglés)
Microsoft® Windows Server® 2008 SP2, x86/x64 (x64 inclut Hyper-VTM ) (en inglés)
Microsoft® Windows Server® 2008 R2, x64 (includes Hyper-VTM v2) (en inglés)
Novell® SUSE® Linux® Enterprise Server (en inglés)
Red Hat® Enterprise Linux® (en inglés)
Para obtener más información sobre las versiones y agregados específicos,
visite www.dell.com/OSsupport (sólo en inglés).
Almacenamiento
32
Opciones de disco duro
SATA de 3,5" (7.200 RPM): 160GB1, 250 GB1, 500 GB1, 750 GB1, 1 TB1
SAS intermedio de 3,5" (7.200 RPM): 500GB1, 750 GB1, 1 TB1
3.5" 6Gps SAS (7.2K): 2 TB1
SAS de 3,5" (15.000 RPM): 146GB1, 300 GB1, 450 GB1
SAS de 3,5" (10.000 RPM): 600GB1
SAS de 2,5" (10.000 RPM): 73GB1, 146 GB1, 300 GB1
Unidad de estado sólido SATA de 2,5": 25 GB1, 50 GB1, 100 GB1
SAS Nearline de 2,5" (7.200): 1 TB
Capacidad máxima de almacenamiento interno:
12 TBs1(6x 2TB SATA)
12 TBs1(6x 2TB NL-SAS)
Dispositivos de respaldo
RD1000 (interna y externa)
DATA72 (interna y externa)
LTO2-L (interna y externa)
LTO3-060 (interna y externa)
LTO3FH (externa)
LTO4-120 de altura media (interna y externa)
33
LTO4-120 de altura completa (externa)
PV114T (externa, 2U)
Automatización de cintas
TL2000/TL4000
ML6000
PV124T
Software de respaldo y recuperación:
CommVault
Symantec Backup Exec incluido Backup Exec System Recovery
Vizioncore
Compartimientos para unidades
Dos opciones básicas de disco duro:
6 HDD de 3,5" con cables
O bien
6 HDD de 3,5" intercambiables en caliente
O bien
6 HDD de 2,5" intercambiables en caliente
SATA de 2,5" y 500 GB
34
Opciones de compartimiento para periféricos:
2 compartimientos para unidades de 5,25" con opción de DVD-ROM o DVD+/- RW, o
TBU
RANURAS
5 ranuras PCI
Ranura 1: PCIe x8 (enrutamiento x4, Gen2), media longitud
Ranura 2: PCIe x8 (enrutamiento x4, Gen2), longitud completa
Ranura 3: PCIe x8 (enrutamiento x4, Gen1), longitud completa
Ranura 4: PCIe x8 (enrutamiento x4, Gen2), media longitud
Ranura 5: PCIe x16 (enrutamiento x8, Gen2), media longitud
CONTROLADORAS RAID
Internas:
PERC H200 (6 Gb/s)
PERC H700 (6 Gb/s) con 512 MB de memoria caché respaldada por batería;
512 MB, 1 G de memoria caché no volátil respaldada por la batería
SAS 6/iR
PERC 6/i con 256 MB de memoria caché respaldada por batería
PERC S100 (basada en software, disponible para la configuración de 4 discos duros)
PERC S300 (basada en software, disponible para las configuraciones de 4 y 8
discos duros)
35
Externas:
PERC H800 (6 Gb/s) con 512 MB de memoria caché respaldada por batería;
512 MB, 1 G de memoria caché no volátil respaldada por la batería
PERC 6/E con 256 MB o 512 MB de memoria caché respaldada por batería
HBA externos (no RAID):
HBA SAS de 6 Gbps
HBA SAS 5/E
HBA SCSI con PCIe LSI2032
Comunicaciones opcionales
Intel PRO/1000PT; NIC GbE de cobre PCIe x1 Intel de un solo puerto
Adaptador Intel® Gigabit ET de dos puertos para servidor
Adaptador Intel® Gigabit ET de cuatro puertos para servidor
NIC Intel® de 1 GbE y un puerto
NIC Intel® de 1 GbE y dos puertos
NIC Intel® de 1 GbE y cuatro puertos
NIC GbE (basada en Xinan) PCIe Broadcom 5709 de cobre y dos puertos, TOE
NIC GbE (basada en Xinan) PCIe Broadcom 5709 de cobre y dos puertos, TOE/Isoe
NIC Broadcom® de 1 GbE y dos puertos
NIC GbE PCIe x4 Intel de cobre y cuatro puertos, Intel PRO/1000VT
36
Brocade CNA Dual-port adapter
HBA adicionales y opcionales:
Brocade FC4 and 8 GB HBAs
Alimentación
No redundante, 525 W (80+)
Redundante opcional, 580 W (80+ GOLD)
Ajuste automático (100 V a 240 V)
Sistema de alimentación ininterrumpida
500 W - 2700 W
Módulo de batería de duración prolongada (EBM)
Tarjeta de administración de red
Disponibilidad
Paquete de cuatro LED de diagnóstico / LCD con chasis para HDD intercambiable
en caliente
TCM
Controladora integrada de red
Controladora Ethernet Gigabit de dos puertos
Gráficos
Matrox G200eW con 8 MB
37
Chasis
444,9 x 217,9 x 616,8 (mm) (con cubierta, con pie para torre)
17,52 x 8,58 x 24,28 (pulgadas)
Administración
Dell OpenManage con Dell Management Console
BMC, cumple con IPMI2.0
Opcional: iDRAC6 Express, iDRAC6 Enterprise y Vflash
Microsoft® System Center Essential (SCE) 2010 v2
Requerimientos del Software
Se examinaron varias alternativas para la instalación del software en el servidor,
teniendo en cuenta que el proyecto se realiza en una institución pública y que los
recursos son limitados se optó por utilizar tecnología de código libre, en este caso lo
que se utiliza es lo siguiente:
 Linux Ubuntu 10.10 64 bits
 XAMMP Versión 1.7.3ª
 Instalación de JDK (Java Development Kit)
 Instalación Tomcat
Cabe mencionar que cada una de los programas que se mencionaron no tienen
ningún costo y se pueden descargar de internet desde la página del proveedor,
38
aunque sea software libre y sin costo cuenta con un soporte completo y las
aplicaciones con robustas lo cual asegura la protección de nuestro servidor.
Diseño de Plan de Trabajo
El plan de trabajo fue diseñado para poder tener el proyecto realizado en el
menor tiempo posible sin dejar el tiempo necesario en cada una de las etapas
del proyecto, se estima que el tiempo a realizar el proyecto es de 50 días hábiles, el
proyecto inicia en la fecha 10/01/11 y termina el día 17/03/11 con las siguientes
etapas:
 Análisis y Requerimientos
 Instalación del Servidor Web
 Configuración y Altas de Usuarios
 Pruebas
 Entrega
INSTALACIÓN DEL SERVIDOR WEB
Instalación De Ubuntu Server 10.10
Para la Instalación de un servidor en Ubuntu 10.04 primero que todo
descargamos
una
imagen
iso
del
sistema
operativo
desde
http://www.ubuntu.com/server/get-ubuntu/download escoges la versión de 32 o 64.
39
Al iniciar el cd dentro de nuestro equipo nos muestra la ventana donde
escogeremos el idioma de instalación
Figura 1.2 Ubuntu 10.10 idiomas.
Luego seleccionamos la opción de instalar ubuntu server
Figura 1.3 Ubuntu 10.10 pantalla de inicio
40
Escogemos el país de ubicación
Figura 1.4 Ubuntu 10.10 Selección de lenguajes
Ahora la distribución del teclado
Figura 1.5 Ubuntu 10.10 Menú principal de instalación
41
Y comienzan a cargar los datos iniciales de instalación. Luego le damos el
nombre a la máquina.
Figura 1.6 Ubuntu 10.10 Configuración de Red
Luego buscar la hora en un servidor y zona de horario correcta.
Llegamos a la parte del particionado de los discos donde nos aparece la
pantalla puedes asignarlas de forma automática configurando LVM o de forma
manual.
42
Figura 1.7 Ubuntu 10.10 Partición de discos
En este caso haremos las particiones de forma LVM automática, puesto que
utilizaremos todo el espacio en disco duro.
Anteriormente se administraba el sistema en varias particiones, esto era
porque los discos duros eran solo de 1 o 2 gb a lo máximo, entonces pues teníamos
varios discos y cada uno era de una partición o varios discos formaban una sola
partición. El servidor cuenta con un disco duro de 2 T por lo que no nos
preocuparemos por el espacio.
Comienza la instalación del sistema y durante esta instalación nos pregunta:
Nombre completo para nuevo usuario: Administrador DTAI
Nombre de usuario para la cuenta: root
Password: uteq2010.mx
43
Si deseas actualizar de forma manual o de forma automática. En esta parte es
recomendable utilizar las actualizaciones automáticas, pero para tener un mejor
control es mejor hacerlo de manera manual con:
sudo apt-get update && sudo apt-get upgrade
Luego de esto se cargan los paquetes a instalar y escogemos los servicios
que vamos a usar dentro de la red LAN
Figura 1.8 Ubuntu 10.10 Selección de programas
Y se instalan todos los paquetes
Adicional puedes instalar nmap para escanear los puertos de comunicación lo
haces con el comando
$ apt-get install nmap
44
Actualización de SO
Una vez que terminamos de instalar el sistema operativo, debemos de
actualizarlo para que podamos trabajar con los últimos paquetes. Para esto
debemos de entrar al sistema con el usuario root o con el usuario uribe que tiene
privilegios de root (lo acabamos de agregar al archivo sudoers).
Una vez que entremos al sistema abrimos una sesión de consola y tecleamos
lo siguiente si somos root:
apt-get update && apt-get upgrade
Si entramos como uribe entonces podemos hacer dos cosas:
sudo apt-get update && sudo apt-get upgrade
Nos pedirá de nuevo nuestro password y una vez que se lo demos ejecutará el
comando.
La otra forma es cambiarnos al perfil de root con el sudo:
sudo su -
(Así nos cambiamos al perfil de root)
apt-get update && apt-get upgrade
Cuando nosotros utilizamos #apt-get update, lo que en realidad estamos
haciendo es actualizar los repositorios --ver si hay algo nuevo--, es decir actualizar la
45
lista de todos los paquetes, con la dirección de dónde obtenerlos para que a la hora
de hacer la búsqueda y su posterior descarga, sea más rápida.
En cambio, cuando utilizamos #apt-get upgrade, lo que hacemos es una
actualización de nuestro sistema con todas las posibles actualizaciones que pudiera
haber, es decir no sólo actualiza nuestro sistema operativo sino que también las
aplicaciones
que
están
contenidas
en
los
repositorios.
En resumen: el update lista los paquetes de los repositorios y el upgrade
instala las actualizaciones.
Figura 1.9 Actualización SO
46
Instalación de IA32-LIBS
El servidor tiene un procesador de 64 bits, por lo que tendremos problemas
ejecutando aplicaciones de 32 bits (que son la mayoría).
Para aprovechar las mejoras de las extensiones de 64 bits de esta
arquitectura con respecto a la arquitectura x86 (32 bits) es necesario tener instalado
la versión AMD64 del sistema operativo. Ubuntu tiene una versión para 64 bits desde
hace años.
A pesar de las ventajas, ciertas aplicaciones no tienen una versión para 64
bits sino sólo para 32 bits. De todas formas, eso no significa que no puedan ser
ejecutadas sobre un sistema operativo de 64 bits. Hay varias formas de hacer esto.
La más sencilla es:
apt-get install ia32-libs
Cuando termine de instalar podremos ejecutar aplicaciones de 32 bits sin
problemas.
Nota: Hay que ejecutar el comando con permisos de root o con sudo.
47
Instalación de JDK (Java Development Kit)
Java Development Kit (o simplemente, JDK) es un software que nos provee
de excepcionales herramientas de desarrollo para programar y crear aplicaciones y
programas en Java, mismo software que puede instalarse en un equipo local o en
una unidad de Red.
JDK es multiplataforma, y puede instalarse en entornos Linux, Windows,
Solaris y Mac OS. Hoy vamos a aprender a instalarlo en Linux, concretamente en
Debian y distribuciones basadas en ésta, tal es el caso de Ubuntu.
Para llevar a cabo la instalación ejecutamos los siguientes comandos en una
terminal como root o con sudo:
sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
sudo apt-get install sun-java6-jdk
La primera línea nos permite agregar un nuevo repositorio donde
encontraremos los archivos de instalación de java.
La segunda línea ejecuta la instalación de java. Cuando se inicie debemos de
aceptar la licencia.
48
Figura 1.10 Configuración sun-java6-jre
Ya que terminemos de instalar, verificamos la versión de java con el
comando:
java –version
Para ejecutar los comandos ―java‖ y javac‖ desde cualquier ubicación hace
falta editar el archivo .bashrc del superusuario (root) y de tu propio usuario. Para ello,
debemos editar el archivo correspondiente para cada usuario con las siguientes
líneas, mismas que se agregarán al final:
export JAVA_HOME=/usr/java/jdk1.6.0_05
49
export PATH=$JAVA_HOME/bin:$PATH
Para acceder a editar el archivo del usuario root:
nano /root/.bashrc
Para tu usuario:
nano /home/tu_usuario/.bashrc
Al terminar de añadir las líneas a ambos archivos, guardamos los cambios y
cerramos la consola. JDK está instalado, con los permisos suficientes y listos para
programar en Java.
Instalación De Tomcat
Tomcat es un servidor web desarrollado por la peña de Apache, que tiene
soporte para servlets y JSP, bastante útil si quieres programar en Java.
Un servlet es un programa escrito en java que se ejecuta en un servidor y que
normalmente se utiliza para generar contenido html dinámico.
JSP se parece más a php que un servlet, porque al igual que con php,
podemos tener trozos de html y de JSP mezclados, el servidor tiene que interpretar
JSP de la misma manera en la que interpreta PHP.
Después de instalar el JDK nos descargamos el apache desde este enlace
http://tomcat.apache.org/
50
Después hay que descomprimirlo
tar xvzf apache-tomcat-6.0.14.tar.gz
Luego lo mandamos a este directorio
sudo mv apache-tomcat-6.0.14 /usr/share/tomcat6
Iniciamos tomcat
sudo /usr/share/tomcat6/bin/startup.sh
Luego creamos un inicializador del apache para que cada vez que prendamos
el servidor, se ejecute
sudo nano /etc/init.d/tomcat
# Tomcat auto-start
# description: Auto-starts tomcat
# processname: tomcat
# Tomcat auto-start
# description: Auto-starts tomcat
# processname: tomcat
# pidfile: /var/run/tomcat.pid
export JAVA_HOME=/usr/lib/jvm/java-6-sun
51
case $1 in
start)
sh /usr/share/tomcat6/bin/startup.sh
;;
stop)
sh /usr/share/tomcat6/bin/shutdown.sh
;;
restart)
sh /usr/share/tomcat6/bin/shutdown.sh
sh /usr/share/tomcat6/bin/startup.sh
;;
esac
exit 0
Luego dar permisos para ejecutar
sudo chmod 755 /etc/init.d/tomcat
Y por último, actualizamos
52
sudo update-rc.d tomcat defaults 99
Para probar que todo va bien, podemos ir a cualquier navegador web y
escribir en la barra de direcciones:
http://localhost:8080/manager/html
Instalación De Xampp
Muchos usuarios saben por experiencia propia que la instalación de un
servidor web Apache no es fácil y que se complica aún más si se desea agregar
MySQL, PHP y Perl.
XAMPP es una forma fácil de instalar la distribución Apache que contiene
MySQL, PHP y Perl. XAMPP es realmente simple de instalar y usar - basta
descargarlo, extraerlo y comenzar.
XAMPP es un servidor independiente de plataforma, software libre, que
consiste principalmente en la base de datos MySQL, el servidor Web Apache y los
intérpretes para lenguajes de script: PHP y Perl. El nombre proviene del acrónimo de
X (para cualquiera de los diferentes sistemas operativos), Apache, MySQL, PHP,
Perl. El programa está liberado bajo la licencia GNU y actúa como un servidor Web
libre, fácil de usar y capaz de interpretar páginas dinámicas. Actualmente XAMPP
está disponible para Microsoft Windows, GNU/Linux, Solaris, y MacOS X.
53
XAMPP solamente requiere descargar y ejecutar un archivo zip, tar, o exe,
con unas pequeñas configuraciones en alguno de sus componentes que el servidor
Web necesitará. XAMPP se actualiza regularmente para incorporar las últimas
versiones de Apache/MySQL/PHP y Perl. También incluye otros módulos como
OpenSSL y phpMyAdmin. Para instalar XAMPP se requiere solamente una pequeña
fracción del tiempo necesario para descargar y configurar los programas por
separado.
XAMPP para Linux
La versión para sistemas Linux (testeado para SuSE, RedHat, Mandrake y
Debian)contiene: Apache, MySQL, PHP & PEAR, Perl, ProFTPD, phpMyAdmin,
OpenSSL, GD, Freetype2, libjpeg, libpng, gdbm, zlib, expat, Sablotron, libxml, Ming,
Webalizer, pdf class, ncurses, mod_perl, FreeTDS, gettext, mcrypt, mhash,
eAccelerator, SQLite e IMAP C-Client.
Instalando Xampp En Ubuntu
El proceso es sencillísimo. Nos descargamos la última versión:
Descarga XAMPP
http://www.apachefriends.org/en/xampp-linux.html
Actualmente la 1.7.3
Una vez descargado, abrimos una terminal y nos vamos al directorio donde lo
descargamos y ejecutamos el comando:
54
sudo tar xvfz xampp-linux-1.7.3.tar.gz -C /opt
Nos pide nuestra contraseña, la ponemos.
Si somos root:
tar xvfz xampp-linux-1.7.3.tar.gz -C /opt
Y ya tenemos instalado XAMPP en /opt/lampp.
Iniciando XAMPP
Para iniciar XAMPP abrimos una terminal, y escribimos:
/opt/lampp/lampp start
Si todo ha ido bien, debemos ver esto
Starting XAMPP for Linux 1.7.3...
XAMPP: Starting Apache with SSL (and PHP5)...
XAMPP: Starting MySQL...
XAMPP: Starting ProFTPD...
XAMPP for Linux started.
Pues nada, ya tenemos XAMPP iniciado.
¿Cómo se puede comprobar que todo funciona de verdad? Sólo tienes que escribir
en la siguiente URL en su navegador web favorito:
http://localhost
55
Figura 1.11 Pantalla de inicio XAMPP
Ahora deberías ver la página de inicio de XAMPP conteniendo algunos
enlaces para comprobar el estado del software instalado y algunos ejemplos de
programación pequeños.
Parámetros de Stop y Start
Parámetro Descripción
start
Inicia XAMPP.
stop
Detiene XAMPP.
restart
Detiene e inicia XAMPP.
56
startapache
Inicia sólo el Apache.
startssl
Inicia el soporte Apache SSL.
Este comando activa el soporte SSL permanentemente, por ejemplo, si se
reinicia XAMPP en el futuro SSL permanecerá activado.
startmysql
Inicia sólo la base de datos MySQL.
startftp
Inicia el servidor ProFTPD. A través de FTP se pueden subir archivos de su
servidor web (el usuario "nobody", password "lampp"). Este comando activa el
ProFTPD permanentemente, por ejemplo, si se reinicia XAMPP en el futuro FTP
permanecerá activado.
stopapache
Detiene el Apache.
stopssl
Detiene el soporte Apache SSL. Este comando desactiva el soporte SSL
permanentemente, por ejemplo, si se reinicia XAMPP en el futuro SSL se quedará
desactivada.
stopmysql
57
Detiene la base de datos MySQL.
stopftp
Detiene el servidor ProFTPD. Este comando desactiva el ProFTPD
permanentemente, por ejemplo, si se reinicia XAMPP en el futuro FTP permanecerá
desactivado.
Configurando XAMPP
httpd.conf
Lo primero que debemos de hacer es editar el archivo httpd.conf que es el
archivo de configuración de apache del servidor web. Y está localizado en
/opt/lampp/etc
Ahí podemos modificar en puerto en que aparecerán las páginas web, por
ejemplo podemos seleccionar que todas las páginas por defecto se abran en el
puerto 8080
Para esto buscamos el atributo Listen y lo modificamos
Listen 8080
También podemos cambiar el usuario y el grupo que ejecutaran las páginas
web
User nobody
58
Group nogroup
Algo que si es muy importante para este proyecto, es que apache ligue un
directorio de nuestros usuarios (www) con el nombre de usuario en el dominio.
Es decir, que al teclear www.dtai.uteq.edu.mx/uribe, nos muestre el contenido
de lo que el usuario uribe tiene en su directorio /home/uribe/www/ y para esto
debemos de activar un módulo en el archivo httpd.cof llamado mod_userdir, por
default ya está activado, pero debemos de activar el archivo de configuración:
# User home directories
#Include etc/extra/httpd-userdir.conf
En el archivo httpd.conf si tenemos un # es que esta comentado así que
debemos de desconectarlo para que se active:
Include etc/extra/httpd-userdir.conf
Guardamos y ahora vamos a editar un archivo que esta /opt/lampp/etc/extra y
se llama httpd-userdir.conf
En él está la ruta del directorio del usuario al que queremos acceder. Vamos a
poner la siguiente línea:
UserDir ~/www
59
Con esta ruta le indicamos con el ~ que es cualquier usuario y que muestre el
contenido de la carpeta www que está dentro de su home. Ahora guardamos los
cambios.
Para que XAMPP tome la configuración, vamos a reiniciar SOLO apache:
/opt/lampp/./lampp reloadapache
Se reinicia el servidor apache y ahora debemos de ligar el directorio www con
el usuario uribe para que se vea en nuestro servidor web. Y esto lo hacemos de la
siguiente manera
ln –s /home/uribe/www /opt/lampp/htdocs/uribe
Lo que hacemos es crear un linksoft para que apache lo vea y nos muestre el
contenido
de
www
con
el
alias
de
uribe.
Ahora
sí,
si
tecleamos
www.dtai.uteq.edu.mx/uribe podremos ver el contenido.
proftpd.conf
Proftp es un servidor de ftp, por default ya se activa cuando iniciamos
XAMPP, pero tenemos que configurar que los usuarios queden encasillados en su
home, de tal manera que no puedan accesar por ftp a otros directorios que estén por
encima de su home.
Para hacer esto es muy fácil, editamos el archivo proftpd.conf que está en
/opt/lampp/etc
60
Y lo que haremos es añadir la siguiente línea:
DefaultRoot ~
De esta manera hacemos que la raíz para todos los usuarios sea su home.
Seguridad XAMPP
El comando security nos revisa la seguridad del sitio, principalmente si el
password de root de MySQL esta en blanco, los permisos, etc. Es muy importante
ejecutarlo para modificar los parámetros adecuados como el password de root de
MySQL.
MySQL Server
XAMPP cuenta con un servidor de bases de datos MySQL versión 5.1.41
Lo primero que debemos de hacer es cambiar los permisos del usuario root
(usuario de la base de datos) si es que no se hizo cuando se corrió el script para
mejorar la seguridad del servidor MySQL.
Lo que debemos de hacer es ir a http://localhost o a la dirección ip del
servidor o al nombre del dominio del servidor y entrar a phpAdmin.
Ahora nos vamos privilegios y editamos el usuario root. Nos vamos a la
sección Cambiar la información de la cuenta. Ahí cambiamos el password de la
cuenta de root.
61
Usuarios en MySQL
PhpMyAdmin es un programa de libre distribución en PHP, creado por una
comunidad sin ánimo de lucro. Es una herramienta muy completa que permite
acceder a todas las funciones típicas de la base de datos MySQL a través de una
interfaz web muy intuitiva.
La aplicación en si no es más que un conjunto de archivos escritos en PHP
que podemos copiar en un directorio de nuestro servidor web, de modo que, cuando
accedemos a esos archivos, nos muestran unas páginas donde podemos encontrar
las bases de datos a las que tenemos acceso en nuestro servidor de bases de datos
y todas sus tablas. La herramienta nos permite crear tablas, insertar datos en las
tablas existentes, navegar por los registros de las tablas, editarlos y borrarlos, borrar
tablas y un largo etcétera, incluso ejecutar sentencias SQL y hacer un backup de la
base de datos.
Para dar de alta en MySQL un usuario, debemos de ir al phpMyAdmin y entrar
a la pestaña de privilegios y le damos clic en Agregar un nuevo usuario.
62
Figura 1.12 Pantalla de inicio phpMyAdmin
Nos aparecerán varios campos para llenar. Empezamos por el nombre de
usuario, hay que recordar que si se diferencian las mayúsculas de las minúsculas.
Así que debemos de agregar usuarios en minúsculas para que no tengamos
problemas.
Figura 1.13 phpMyAdmin
63
Es importante que agreguemos un password bien definido o si lo deseamos,
XAMPP no puede generar password.
Para seleccionar el servidor, phpMyAdmin nos permite seleccionar si
deseamos conectarnos a la base de datos local o si queremos a cualquier servidor
ya sea local o remoto con el comodín %
Para que no haya problemas seleccionaremos que el usuario tenga el
comodín % que es Cualquier Servidor.
La siguiente parte debemos de indicar que al crear el usuario debemos de
crear una base de datos con el mismo nombre de usuario.
Figura 1.14 phpMyAdmin agregar un nuevo usuario
64
La siguiente parte es donde le damos privilegios globales al usuario, pero si
seleccionamos esto tendrá privilegios sobre todas las bases de datos.
Una vez que terminemos, le damos continuar y listo, ya tenemos un usuario
con acceso a una base de datos con su mismo nombre y con privilegios sobre esa
base de datos. No podrá ver las demás bases de datos que existan en el servidor.
Figura 1.15 Privilegios de Usuarios
65
CONFIGURACION Y ALTA DE USUARIOS EN SISTEMA
Creando Usuarios Sudo
Cuando se instala el sistema, nos pide un usuario adicional al de root, el cual
no tiene ningún privilegio.
Recordemos que en Linux podemos tener varios niveles de usuarios, pero
básicamente se manejan 3:
Root
Sudos
Users
Root es el usuario principal del sistema, es el que tienen el mayor nivel de
privilegios en el sistema.
Los usuarios sudos son usuarios que se crean de manera normal, pero se le
dan ciertos permisos que pueden llegar casi al de root, estos permisos se configuran
en un archivo llamado: sudoers.
Users son los usuarios comunes que también tienen ciertos privilegios
dependiendo del Shell que se les asigne como bash, zshell, cshell o nologin.
66
Una vez que hayamos creado el usuario normal en Linux y queremos darle
permisos de tipo sudo, debemos de ir a /etc/ y con el comando nano editamos el
archivo sudoers.
sudo /etc/sudoers
Una vez dentro del archivo sudoers, podemos establecer varias cosas, como
crear grupos los cuales tendrán permisos a ciertos comandos, o que tengan
permisos para ejecutar cualquier cosa. Vemos los dos casos.
Usuario Limitado
Lo primero que debemos de hacer es crear un alias. Un alias se refiere a un
usuario, un comando o a un equipo. El alias engloba bajo un solo nombre (nombre
del alias) una serie de elementos que después en la parte de definición de reglas
serán referidos aplicados bajos cierto criterio.
La forma para crear un alias es la siguiente:
tipo_alias NOMBRE_DEL_ALIAS = elemento1, elemento2, elemento3, ... elementoN
tipo_alias NOMBRE1 = elemento1, elemento2 : NOMBRE2 = elemento1, elemento2
El tipo_alias define los elementos, es decir, dependiendo del tipo de alias
serán sus elementos. Los tipo de alias son cuatro y son los siguientes:
Cmnd_Alias - define alias de comandos.
67
User_Alias - define alias de usuarios normales.
Runas_Alias - define alias de usuarios administradores o con privilegios.
Host_Alias - define alias de hosts o equipos.
Cmnd_Alias
Definen uno o más comandos y otros alias de comandos que podrán ser
utilizados después en alias de usuarios. Ejemplos:
Cmnd_Alias WEB = /usr/sbin/apachectl, /usr/sbin/httpd, sudoedit /etc/httpd/
Indica que a quien se le aplique el alias WEB podrá ejecutar los comandos
apachectl, httpd y editar todo lo que este debajo del directorio /etc/httpd/, nótese que
debe de terminar con '/' cuando se indican directorios. También, la ruta completa a
los comandos debe ser indicada.
Cmnd_Alias APAGAR = /usr/bin/shutdown -h 23\:00
Al usuario que se le asigne el alias APAGAR podrá hacer uso del comando
'shutdown' exactamente con los parámetros como están indicados, es decir apagar h (halt) el equipo a las 23:00 horas. Nótese que es necesario escapar el signo ':', así
como los símbolos ' : , = \
Cmnd_Alias NET_ADMIN = /sbin/ifconfig, /sbin/iptables, WEB
68
NET_ADMIN es un alias con los comandos de configuración de interfaces de
red ifconfig y de firewall iptables, pero además le agregamos un alias previamente
definido que es WEB, así que a quien se le asigne este alias podrá hacer uso de los
comandos del alias WEB.
Cmnd_Alias TODO_BIN = /usr/bin/, !/usr/bin/rpm
A quien se le asigne este alias podrá ejecutar todos los comandos que estén
dentro del directorio /usr/bin/ menos el comando 'rpm' ubicado en el mismo
directorio. NOTA IMPORTANTE: este tipo de alias con un permiso muy amplios
menos '!' algo, generalmente no son una buena idea, ya que comandos nuevos que
se añadan después a ese directorio también podrán ser ejecutados, es mejor
siempre definir específicamente lo que se requiera.
User_Alias
Definen a uno o más usuarios, grupos del sistema (indicados con %), grupos
de red (netgroups indicados con +) u otros alias de usuarios. Ejemplos:
User_Alias MYSQL_USERS = andy, marce, juan, %mysql
Indica que al alias MYSQL_USERS pertenecen los usuarios indicados
individualmente más los usuarios que formen parte del grupo 'mysql'.
User_Alias ADMIN = sergio, ana
'sergio' y 'ana' pertenecen al alias ADMIN.
69
User_Alias TODOS = ALL, !samuel, !david
Aquí encontramos algo nuevo, definimos el alias de usuario TODOS que al
poner como elemento la palabra reservada 'ALL' abarcaría a todos los usuarios del
sistema, pero no deseamos a dos de ellos, así que negamos con '!', que serían los
usuarios 'samuel' y 'david'. Es decir, todos los usuarios menos esos dos. NOTA
IMPORTANTE: este tipo de alias con un permiso muy amplios menos '!' algo,
generalmente no son una buena idea, ya que usuarios nuevos que se añadan
después al sistema también serán considerados como ALL, es mejor siempre definir
específicamente a los usuarios que se requieran. ALL es válido en todos los tipos de
alias.
User_Alias OPERADORES = ADMIN, uribe
Los del alias ADMIN más el usuario 'uribe'.
Runas_Alias
Funciona exactamente igual que User_Alias, la única diferencia es que es
posible usar el ID del usuario UID con el caracter '#'.
Runas_Alias OPERADORES = #501, uribe
Al alias OPERADORES pertenecen el usuario con UID 501 y el usuario 'uribe'
Host_Alias
70
Definen uno o más equipos u otros alias de host. Los equipos pueden
indicarse por su nombre (si se encuentra en /etc/hosts) por nombre de dominio, si
existe un DNS de dominios, por dirección IP, por dirección IP con máscara de red.
Ejemplos:
Host_Alias LANS = 192.168.0.0/24, 192.168.0.1/255.255.255.0
El alias LANS define todos los equipos de las redes locales.
Host_Alias WEBSERVERS = 172.16.0.21, web1: DBSERVERS = 192.168.100.10,
dataserver
Se define dos alias en el mismo renglón: WEBSERVERS y DBSERVERS con
sus respectivas listas de elementos, el separador ':' es válido en cualquier definición
de tipo de alias.
Reglas de acceso
Aunque no es obligatorio declarar alias, ni opciones (defaults), y de hecho
tampoco reglas de acceso, pues el archivo /etc/sudoers no tendría ninguna razón de
ser si no se crean reglas de acceso. De hecho podríamos concretarnos a crear
solamente reglas de acceso, sin opciones ni alias y podría funcionar todo muy bien.
Las reglas de acceso definen que usuarios ejecutan que comandos bajo que
usuario y en que equipos. La mejor y (según yo, única manera) de entender y
aprender a configurar sudoers es con ejemplos, así que directo al grano:
71
usuario host = comando1, comando2, ... comandoN
Sintaxis básica, 'usuario' puede ser un usuario, un alias de usuario o un grupo
(indicado por %), 'host' puede ser ALL cualquier equipo, un solo equipo, un alias de
equipo, una dirección IP o una definición de red IP/máscara, 'comandox' es cualquier
comando indicado con su ruta completa. Si se termina en '/' como en /etc/http/
entonces indica todos los archivos dentro de ese directorio.
uribe ALL = /sbin/iptables
Usuario 'uribe' en cualquier host o equipo puede utilizar iptables.
ADMIN ALL = ALL
Los usuarios definidos en el alias 'ADMIN' desde cualquier host pueden
ejecutar cualquier comando.
Para nuestro caso, solo agregaremos nuestro usuario al sudoers con todos
los privilegios que pueda tener.
Para esto buscamos una línea que dice así:
root
ALL=(ALL)
ALL
Y debajo de esta ponemos
uribe
ALL=(ALL)
ALL
72
De esta manera el usuario uribe tendrá los privilegios de root, solo nos queda
guardar el archivo y listo.
Para dar de alta un usuario en sistema podemos hacerlo de dos formas:
Con el comando adduser
Con el script llamado userman
La diferencia es que con el adduser agregamos un solo usuario y con el
userman, podemos generar un archivo txt que tenga una lista de usuarios y
passwords y lo tomara para crear de una sola vez todas las cuentas que se
necesiten.
Adduser
La sintaxis de adduser es la siguiente:
useradd [D binddn] [P-ruta] [c comentario] [-d directorio home] [ -e expire ] [ -f
inactive ] [ -G group,... ] [ -g gid ] [-E expirará] [-f inactivo] [G-grupo, ...] [-g gid]
[ -m [ -k skeldir ]] [ -o ] [ -p password ] [ -u uid] [M [-k skeldir]] [-o] [-p contraseña] [-u
uid] [ -r ] [ -s shell ] [ --service service ] [ --help ] [-R] [-s shell] [- Servicio] [- help] [ -usage ] [ -v ] account [- Uso] [-v] cuenta useradd --show-defaults useradd - se
presenta por defecto useradd --save-defaults [ -d homedir ] [ -e expire ] [ -f inactive ]
useradd - guardar-por defecto [-d directorio home] [-e expirará] [-f inactivo] [ -g gid ] [
-G group,... ] [ -k skeldir ] [ -s shell ] [-G gid] [-G grupo, ...] [k skeldir] [shell-s] useradd
73
creates a new user account using the default values from /etc/default/useradd and
the specified on the useradd crea una nueva cuenta de usuario utilizando los valores
por defecto de / etc / default / useradd y el especificado en el command line. de
línea de comandos. Depending on the command line options the new account will be
added to the system files or LDAP Dependiendo de las opciones de línea de
comandos de la nueva cuenta se agregará a los archivos del sistema o LDAP
database, the home directory will be created and the initial default files and
directories will be copied. base de datos, el directorio se creará y los archivos y
directorios por defecto inicial se copiarán.
The account name must begin with an alphabetic character and the rest of
the string should be from the POSIXEl nombre de cuenta debe comenzar con un
carácter alfabético y el resto de la cadena debe ser de la POSIX portable character
class ([A-Za-z_][A-Za-z0-9_-.]*[A-Za-z0-9_-.$]). clase de caracteres móviles ([A-Zaz_] [A-Za-z0-9_-.] * [A-Za-z0-9_-.$]).
Opciones
-C, - comentario Comentario
Esta opción especifica la información de los usuarios de los dedos.
-D, - homedir casa
Esta opción especifica el directorio home del usuario. Si no se especifica, por
defecto de / etc / default / useradd se utiliza.
74
-E, - expirarán expirará
Con esta opción, podemos modificar la fecha en que estará vencida y se
podrá cambiar. EXPIREDATE tiene que ser especificado como el número de días
desde el 01 de enero 1970. La fecha también puede expresarse en el formato
AAAA-MM-DD. Si no se especifica, el valor por defecto de / etc / default / useradd
se utiliza.
-F, - inactivos inactivos
Esta opción se utiliza para establecer el número de días de inactividad
después de una contraseña ha caducado antes de la cuenta está bloqueada. Un
usuario cuya cuenta está bloqueada debe comunicarse con el administrador del
sistema antes de poder para utilizar la cuenta de nuevo. Un valor de -1 desactiva
esta función. Si no se especifica, el valor predeterminado de / Etc / default / useradd
se utiliza.
-G, - grupo de grupos,..
Con esta opción puede ser una lista de grupos suplementarios especificados,
que el usuario debe ser miembro de cada grupo se separa de la siguiente sólo por
una coma, sin espacios en blanco. Si no se especifica, el por defecto de / etc /
default / useradd se utiliza.
-G, - gid gid
75
El nombre del grupo o el número de grupo principal del usuario. El nombre
del grupo o el número debe hacer referencia a una ya existentes grupo. Si no se
especifica, por defecto de / etc / default / useradd se utiliza.
-K, - skeldir skel
Especifique un directorio skel alternativa. Esta opción sólo es válida, si el
directorio de inicio para el nuevo usuario se debe crear, también.
Si no se
especifica, por defecto de / etc / default / useradd o / etc / skel se utiliza.
-M, - crear el hogar
Crear directorio para la nueva cuenta de usuario.
-O, - no único
Permita que duplicado (no únicos) ID de usuario.
-P, - password contraseña
Contraseña cifrada devuelta por la cripta (3) para la nueva cuenta. El valor
por defecto es desactivar la cuenta.
-U, - uid uid
76
Fuerza el ID de usuario nuevo sea el número dado. Este valor debe ser
positivo y único. El valor por defecto es usar la primera identificación libre después
de la más grande que se utiliza. La gama de la cual se elige el ID de usuario se
puede especificar el archivo / etc / login.defs.
-R, - sistema de
Crear una cuenta de sistema. Una cuenta de sistema es un usuario con un
UID entre SYSTEM_UID_MIN y SYSTEM_UID_MAX tal como se define en / etc /
login.defs, si no se especifica UID. La entrada GRUPOS en / etc / default / useradd
también se ignora.
-S, - shell shell
Shell de login del usuario Indique la. El valor por defecto para las cuentas de
usuario normal es tomado de / etc / default / useradd /, por defecto para las cuentas
del sistema es / bin / false.
-D, - binddn binddn
Utilice el binddn nombre completo para enlazar con el directorio LDAP. El
usuario se le solicitará una contraseña para la autenticación simple.
-P, - ruta ruta
77
La sombra de los archivos passwd y se encuentran por debajo de la ruta del
directorio especificado. Useradd utilizará estos archivos, no / etc / passwd y / etc /
shadow.
- Help
Muestra una lista de opciones válidas con una breve descripción.
- Use
Imprimir una lista de opciones válidas.
-V,
Versión Imprimir el número de versión y salir.
Para usar el script userman seguimos la siguiente sintaxis.
UserMan
USERMAN es un simple script de perl-que ayuda a la gestión de cuentas de usuario.
It can completely handle /etc/passwd, /etc/shadow, /etc/group and
/etc/gshadow. Se puede manejar por completo el archivo / etc / passwd, / etc /
shadow, / etc / group y / etc / gshadow.
To use userman you need the following: Para utilizar USERMAN necesita lo
siguiente:
78
- Perl 5 (or above) - Perl 5 (o superior)
- Shadowed Passwords (saving passwords to /etc/shadow instead to /etc/passwd) –
Las contraseñas Sombrío (contraseñas de ahorro a / etc / shadow en vez de /
etc / passwd)
Opciones
Basta con añadir un usuario con todos los valores predeterminados
Agregar:
userman -A user
Agregar un usuario con 'foobar' password
userman -A user -p foobar
Agregar un usuario con la contraseña 'foobar', donde '/ tmp', concha '/ bin /
false "y nombre real "foo bar"
userman -A user -p foobar -H /tmp -s /bin/false -R "foo bar"
Borrar:
Borrar usuario
userman -D user
Elimina un usuario y quita su home y su cola de correo
79
userman -D user -r
o
userman -rD user
Modificar:
Cambiar una contraseña a los usuarios 'foobar'
userman -M user -p foobar
Cambio de Home a los usuarios '/ tmp', pero deja intacta el antiguo Home
userman -M user -H /tmp
Cambio de Home a los usuarios '/ tmp' y mover el viejo Home al nuevo
userman -M user -H /tmp -r
or
userman -M user -rH /tmp
USERMAN-M también puede construir un nuevo usuario completo, utilizando
uno ya existente, cambiar un nombre de usuario 'dummy', mueve su Home para "/
home / dummy ', pone la contraseña
a 'dummyuser' y cambia su nombre real de "usuario simulado"
userman -M user -U dummy -rH /home/dummy -p dummyuser -R "dummy user"
80
Eliminar un usuario de 'bin' de los grupos y 'root' y lo pone en "juegos".
userman -M user -E games -e bin,root
GROUPHANDLING:
Agregar un grupo al sistema
userman -GA group
Agregar un grupo con 'foobar' password
userman -GA group -p foobar
Eliminar un grupo
userman -GD group
Cambiar el grupo-contraseña para 'foobar'
userman -GM group -p foobar
Añadir el usuario 'dummy' a un grupo
userman -GM group -E dummy
Eliminar los usuarios 'dummy' y «dau» de un grupo
userman -GM group -e dummy,dau
Cambiar el nombre de grupo de 'foobar', quita el usuario 'dummy', añade 'dau'
usuarios y 'foo' y desactivar el grupo-contraseña.
81
userman -GM group -U foobar -e dummy -E dau,foo -J
Control:
Comprobar la SystemFiles de los errores comunes
userman -C
Comprobar la SystemFiles de los errores comunes y repararlos
userman -C -r
or
userman -rC
Usar el modo BATCH-MODE:
galileo:~# cat > foo
user1 password1
user2 password2
user3 password3
galileo:~# userman -B foo
galileo:~# grep "^user" /etc/passwd
user1:x:500:100:user1:/home/user1:/bin/false
82
user2:x:501:100:user2:/home/user2:/bin/false
user3:x:502:100:user3:/home/user3:/bin/false
galileo:~#
Rsync
Rsync es una aplicación de software para sistemas de tipo Unix que ofrece
transmisión eficiente de datos incrementales, que opera también con datos
comprimidos y cifrados. Mediante una técnica de delta encoding, permite sincronizar
archivos y directorios entre dos máquinas de una red o entre dos ubicaciones en una
misma máquina, minimizando el volumen de datos transferidos. Una característica
importante de rsync no encontrada en la mayoría de programas o protocolos es que
la copia toma lugar con sólo una transmisión en cada dirección. rsync puede copiar o
mostrar directorios contenidos y copia de archivos, opcionalmente usando
compresión y recursión.
En modalidad de "Daemon" servidor, rsync escucha por defecto el puerto TCP
873, sirviendo archivos en el protocolo nativo rsync o via un terminal remoto como
RSH o SSH. En el último caso, el ejecutable del cliente rsync debe ser instalado en
el host local y remoto.
83
Características y aplicaciones
Mientras que el algoritmo rsync forma parte del núcleo de la aplicación rsync y
esencialmente optimiza las transferencias entre dos computadoras sobre TCP/IP, la
aplicación rsync provee otras funciones que asisten en la transferencia. Estas
incluyen compresión y descompresión de los datos bloque por bloque, utilizando zlib
al enviar y recibir, y soporte para protocolos de cifrado, tal como SSH, lo que permite
transmisión cifrada y eficientemente diferenciada de datos comprimidos usando el
algoritmo rsync.
Adicionalmente puede utilizarse una aplicación de tunneling también para
crear un túnel cifrado que asegure los datos transmitidos.
Además
de
archivos,
el
algoritmo
permite
copiar
directorios,
aun
recursivamente, así como vínculos, dispositivos, grupos y permisos. No requiere por
defecto privilegios de root para su uso.
Rsync fue escrito como un reemplazo de rcp y SCP. Una de las primeras
aplicaciones de rsync fue el espejado (mirroring) o respaldo de múltiples clientes
Unix dentro de un servidor Unix central, usando rsync/ssh y cuentas estándares de
Unix. Habitualmente se lo ejecuta mediante herramientas de scheduling como cron,
para automatizar procesos de sincronización entre múltiples computadoras host y
servidores centrales.
84
Uso de la aplicación
La invocación más simple de la aplicación a través de línea de comandos
tiene la siguiente forma:
rsync [OPTION]... SRC [SRC]... DEST
La simplicidad de la aplicación se puede ver en el siguiente ejemplo (se
utilizan opciones largas para facilitar su explicación, pero también se pueden utilizar
opciones abreviadas):
rsync --verbose --compress --rsh=/usr/local/bin/ssh --recursive \
--times --perms --links --delete --exclude "*bak" --exclude "*~" \
/www/* webserver:/www
Este comando ejecuta rsync en modo verboso (muestra mensajes de estado
por la salida estándar), con compresión, a través de ssh, en forma recursiva para los
subdirectorios, preservando fechas y permisos del archivo origen, incluyendo
vínculos, borrando archivos que fueron borrados en el directorio origen, excluyendo
backups y archivos temporales (*bak, *~); el origen es el contenido del directorio
/www y el destino el directorio /www en el host webserver.
Adicionalmente es necesario configurar uno de los puntos hosts como
servidor rsync, ejecutando rsync en modo daemon:
rsync –-daemon
85
Y configurando el archivo /etc/rsyncd.conf.
Una vez configurado un servidor, cualquier máquina con rsync instalado
puede sincronizar archivos hacia o desde éste.
Backups
Rsync es una poderosa implementación de un pequeño y maravilloso
algoritmo. Su principal poder es la habilidad de replicar eficientemente un sistema de
archivos. Usando rsync, es fácil configurar un sistema que mantendrá una copia
actualizada de un sistema de archivos usando un arreglo flexible de protocolos de
red, tales como NFS, SMB o SSH. La segunda gran característica que consigue este
sistema de copias de seguridad es la capacidad de archivar viejas copias de
archivos que han sido modificadas o eliminadas. Hay muchas más características de
rsync a considerar.
En resumen, este sistema usa una máquina Linux barata con muchos discos
baratos y con un pequeño script que llama a rsync. [Fig 1] Cuando se hace una
copia de seguridad, le decimos a rsync que cree un directorio llamado ‗YY-DD-MM‘
como lugar para almacenar los cambios incrementales. Seguidamente, rsync
examina los servidores de los que hacemos copias de seguridad de los cambios. Si
un archivo ha cambiado, se copia la versión vieja al directorio incremental, y luego
sobrescribe el archivo en el directorio principal de copias de seguridad. [Fig 2]
86
Figura 1.16 Estructura de Rsync
En general, los cambios de un día tienden a ser solamente un pequeño
porcentaje del total del sistema de archivos. Encuentro que el tamaño medio está
entre el 0.5% y 1%. De todas formas, con un conjunto de discos de copias de
seguridad que es dos veces el tamaño de nuestros servidores de archivos, puede
mantener 50-100 días de copias de seguridad incrementales en el disco duro.
Cuando el disco se llene, sólo cambio a un nuevo conjunto de discos, y muevo los
viejos. En la práctica, es posible mantener cerca de seis meses de respaldos
incrementales en el disco. De hecho, si puede encontrar espacio en cualquier lugar,
puede copiar sus incrementales a otro servidor antes de rotar los discos. De este
modo, puede mantener un número arbitrariamente grande de incrementales en
disco.
87
Figura 1.17 Respaldo usando Rsync
Las ventajas: La recuperación de desastres y la restauración de archivos se
hace más fácil.
Vuelva a la conversación imaginaria de arriba. Ahora, en vez de un incómodo
sistema basado en cintas, imagine tener seis meses de copias de seguridad
incrementales esperándole en su máquina Linux. Usando su combinación favorita de
locate/find/grep, puede encontrar todas las ocurrencias de archivos que posee
nuestro usuario imaginario, que contengan una ‗e‘ y que su fecha sea un jueves en
Febrero o Abril, y volcarlos dentro de un directorio en el directorio principal del
usuario. El problema de averiguar qué versión es la correcta se ha convertido en mi
tipo de problema favorito: ¿el de alguien más?
Seguidamente, imagine nuestro escenario favorito: fallo completo. Digamos
que tiene un gran servidor NSF/SMB que ha perdido. Bueno, si ha hecho copia de
seguridad de sus configuraciones, puede levantar su servidor de copia de seguridad
como un sustituto solo-lectura en minutos. Intente esto con las cintas.
88
Porque el uso de rsync para copias de seguridad de disco duro tiene ventaja
frente a las cintas
Cinta de copia de
Rsync
seguridad
Coste
Muy alto
Bajo
Rápido
Rápido
Rápido
Rápido
Copia de
seguridad
completa
Copia de
seguridad
incremental
Muy lento,
Restauración
Rápido -está todo en
probablemente
completa
discomúltiples cintas
Muy rápido -está
Lento, quizás
Restauración múltiples cintas, a
de archivo
todo en disco y tiene
todo el poder de las
menudo difícil de
herramientas de
encontrar la
búsqueda de UNIX
89
versión correcta
como find, grep o
locate-
Se puede establecer
La única opción es
Fallo
como un servidor de
la restauración
archivos en un
completo
completa
momento
Tabla 1.1 Ventajas de Rsync
Las herramientas
Hay muchas formas para ponerlos en funcionamiento. Todas estas
herramientas son de Código Abierto, incluidas en las distribuciones estándar, y muy
flexibles. Aquí, describimos una posible configuración, pero no es la única manera.
El servidor: Utilizo Red Hat Linux. Cualquier distribución puede funcionar, al
igual que cualquier UNIX. (Incluso lo he configurado con Mac OS X). Una
advertencia: mucha RAM ayuda.
Disco:. La manera más fácil que hemos encontrado de construir un gran
conjunto barato de discos es una tarjeta PCI Firewire conectada a un puñado de
90
discos IDE baratos en cajas Firewire externas. Configurar Linux para usarlos como
una gran partición RAID es cosa sencilla.
El software: rsync en una gran herramienta. Es un tipo de herramienta
multiuso de replicación de sistemas de archivos. Si no sabe sobre él, compruébelo
en rsync.samba.org.
Conectando a los servidores de archivos: rsync es muy flexible. Usamos NFS
y smbfs. También puede usar el protocolo de red propio de rsync ejecutando un
demonio rsync en el servidor de archivos. También puede decirle a rsync que use
SSH para hacer copias de seguridad seguras de sitios remotos. En los recursos de
abajo existe información sobre cómo configurar estas conexiones.
Haciendo un script
Veamos la sintaxis del comando Rsync
NOMBRE
rsync - una forma rápida, versátil, a distancia (y local) la herramienta de copia
de archivos
SYNOPSIS
Local: rsync [OPTION...] SRC... Local: rsync [OPCIÓN ...] SRC ... [DEST]
[DEST]
Access via remote shell: Acceso a través de shell remoto:
91
Pull: rsync [OPTION...] [USER@]HOST:SRC... Tire: rsync [OPCIÓN ...] [user @
host]: SRC ... [DEST] [DEST]
Push: rsync [OPTION...] SRC... Push: rsync [OPCIÓN ...] SRC ...
[USER@]HOST:DEST [User @ host]: DEST
Access via rsync daemon: Acceso a través de demonio rsync:
Pull: rsync [OPTION...] [USER@]HOST::SRC... Tire: rsync [OPCIÓN ...] [user @
host]:: SRC ... [DEST] [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... rsync [OPCIÓN ...] rsync: /
/ [user @ host] [: puerto] / SRC ... [DEST] [DEST]
Push: rsync [OPTION...] SRC... Push: rsync [OPCIÓN ...] SRC ...
[USER@]HOST::DEST [User @ host]:: DEST
rsync [OPTION...] SRC... rsync [OPCIÓN ...] SRC ...
rsync://[USER@]HOST[:PORT]/DEST rsync: / / [user @ host] [: puerto] / DEST
Usos con un solo argumento SRC y no arg DEST listará los archivos de
origen en lugar de copiar.
Aquí está un breve resumen de las opciones disponibles en rsync. Por favor,
descripción detallada a continuación para una descripción completa.
- v --verbose
-V, - verbose Incrementa la verbosidad
92
- q --quiet
-Q, - quiet no elimine los mensajes de error
- no - motd - No-motd suprimir MOTD demonio-mode (ver advertencia)
- c - checksum skip based on checksum, not mod-time & size -C, - suma de
comprobación saltar sobre la base de suma de comprobación no, mod en tiempo y
tamaño
- a - archive - el modo de archivo de archivo, es igual-rlptgoD (sin H, A,-X)
- no - OPTION - desactivar una opción implícita (por ejemplo - no-D)
- r - recursive -R, - recursive recursiva en directorios
- R - relative - los nombres relativos uso relativo ruta
- no - implied - dirs - no envía dirs implícita - en relación
- b - backup copia de seguridad hacer copias de seguridad (ver - y el sufijo - backupdir)
- backup - dir - DIR hacer copias de seguridad en la jerarquía basada en DIR
- suffix = SUFIJO sufijo de respaldo (por defecto ~ W / O - backup-dir)
- u - update omitir archivos que son más recientes en el receptor
- inplace update - archivos de destino actualización en contexto
- append - añade los datos en archivos de menor
93
- append - verify - append w / datos antiguos en el archivo de control
- d - dirs - directorios directorios transferencia sin recursivamente
- l - links - copia de enlaces enlaces simbólicos como enlaces simbólicos
- L - copia de los enlaces transformar enlace simbólico en el archivo referente / dir
- copy – unsafe - links - Seguro de copia de enlaces sólo "inseguros" enlaces
simbólicos se transforman
- safe - links - Caja-enlaces ignorar enlaces simbólicos que apuntan fuera del árbol
- k – copy - dirlinks - copia dirlinks transformar enlace simbólico al directorio en el
directorio referente
- K – keep - dirlinks - tratar dir un enlace simbólico en el receptor como dir
- H – hard - links - enlaces duros preservaba enlaces duros
- p - perms - preservar los permisos permanentes
- E - executability - ejecutabilidad preservar ejecutabilidad
- chmod = CHMOD afectan a archivos y / o directorio permisos
- A - ACL preservar ACL (implica-p)
- X - xattrs preservar los atributos extendidos
- o - propietario de conservar sus (súper-usuario solamente)
94
- g - grupo de preservar grupo
- devices - Dispositivos de preservar los archivos de dispositivos (super-usuario
solamente)
- specials - Especiales preservar archivos especiales
- t - tiempos de preservar hora de modificación
- O - omitir-dir veces omiten directorios - de los tiempos
- super - Receptor súper intentos de las actividades de super-usuario
- fake-super - La tienda del falso-super / recuperar attrs privilegiada con xattrs
- S, - escasa manejar archivos dispersos de manera eficiente
- N – dry - run realizar un ensayo sin cambios realizados
- W, - archivos de copia de archivos de todo el conjunto (w / algoritmo o delta-xfer)
- X, - un sistema de archivos no cruzan las fronteras del sistema de archivos
- B, - block-size = TAMAÑO vigor una suma de comprobación del bloque de tamaño
fijo
- E - rsh = COMANDO especificar el shell remoto para utilizar
Rsync - path = PROGRAMA especificar el rsync para ejecutar en la máquina remota
-existing - Existentes saltar la creación de nuevos archivos en el receptor
95
- ignore-existing - omitir archivos de actualización que existen en el receptor
- remove-source-files - Remitente extraer los archivos de código elimina archivos
sincronizados (no dir)
- delete - Eliminar archivos superfluos de dest directorios
-delete - Antes de eliminar borra el receptor antes de la transferencia (por defecto)
- delete-delay - Eliminar el retardo encontrar supresiones durante, después de
eliminar
- delete - after -después elimina el receptor después de la transferencia, no antes
- delete - excluded - eliminar archivos excluidos de dest directorios
-ignore – errors - eliminar errores, incluso si hay errores E / S
- max – delete = NUM no eliminar más de archivos NUM
- Max-size = TAMAÑO no transferir cualquier archivo de más de TAMAÑO
- Min-size = TAMAÑO no transferir cualquier archivo más pequeño que talla
- partial - Parcial mantener parcialmente los archivos transferidos
- Parcial-dir = DIR poner un fichero parcialmente transferido a DIR
- Delay-actualizaciones de poner todos los archivos actualizados en su lugar al final
96
- M, - ciruela-vacío-dirs podar las cadenas vacías directorio desde el archivo de la
lista
- Numeric-ids no se asignan uid / gid valores por el usuario / nombre de grupo
- Timeout = SEGUNDOS conjunto de E / S de tiempo de espera en segundos
- Contimeout = SEGUNDOS demonio de fijar el tiempo de conexión en segundos
- I - ignore-veces no se salte los archivos que coinciden con el tamaño y el tiempo
- size - only - Tamaño de sólo omitir archivos que coinciden en el tamaño
- Modificar la ventana = NUM comparar mod veces con menor precisión
-T - dir = temp-DIR crear archivos temporales en el directorio DIR
-Y, - difusa encontrar el archivo de base similares si dest no hay ningún archivo
Compare - dest = DIR también comparar los archivos recibidos en relación con DIR
- Copy-dest = DIR ... and include copies of unchanged files e incluir copias de los
archivos no modificados
- Enlace dest = DIR enlaces duros a los archivos en DIR cuando sin cambios
- Z, - compress comprimir los datos de archivos durante la transferencia
- Comprimir nivel = NUM establece explícitamente el nivel de compresión
- Skip-comprimir = Ignorar la lista de compresión de archivos con el sufijo en la
97
LISTA
- C: - CV / exclusión automática ignorar archivos en el CVS misma manera se
- filter = REGLA añadir una regla de filtrado de archivos
- F lo mismo que - filter = "dir-fusión / rsync-filtro.
- Exclude = PATRÓN excluye archivos que coinciden con PATRÓN
- Exclude-from = ARCHIVO leer excluir a los patrones de ARCHIVO
- Include-from = ARCHIVO leer, como los patrones de ARCHIVO
- Los archivos-from = ARCHIVO leer la lista de nombres de archivo de origen, desde
ARCHIVO
- 0 - From0 todos desde / filtrar archivos están delimitados por 0s
-S, - proteger-args ningún espacio-división; caracteres comodín sólo
- Address = DIRECCIÓN DE unen para toma de salida a demonio
- Port = PUERTO especificar dos puntos el número de puerto alternativo
- Sockopts OPCIONES = especificar opciones personalizadas TCP
- stats - Estadísticas de dar algunas estadísticas de transferencia de archivos
- H, - número de salida legible en un formato legible para el usuario
- progress - muestra el progreso durante la transferencia
98
-I - la producción detallan los cambios de un cambio-resumen de todas las
actualizaciones
- Fuera format = FORMATO actualizaciones de salida utilizando el formato
especificado
- Log - file = archivo de registro de lo que estamos haciendo en el archivo
especificado
- Log - file - format = actualizaciones FMT registro utilizando la FMT especificado
- Password - file = ARCHIVO leer demonio de acceso a la contraseña del ARCHIVO
- only - write - batch = FILE like --write-batch but w/o updating dest - Sólo-escritura
como proceso por lotes = ARCHIVO - escritura de lotes, pero w / o actualización de
dest
- read – batch = FILE read a batched update from FILE - Lectura lote = ARCHIVO
leer una actualización por lotes de ARCHIVO
- protocol = NUM force an older protocol version to be used - Protocol = NUM vigor
una versión del protocolo más para ser utilizado
- iconv = CONVERT_SPEC
request charset conversion of filenames - Iconv =
solicitud CONVERT_SPEC juego de caracteres de conversión de nombres de
archivo
99
- checksum – seed =NUM
set block/file checksum seed (advanced) - Suma de
control de semillas = bloque NUM sistema / semillas de suma de comprobación de
archivos (avanzado)
- 4, --ipv4
prefer IPv4 -4 - Ipv4 prefieren IPv4
- 6, --ipv6
prefer IPv6 -6 - Ipv6 prefieren IPv6
- version print version number - Versión para imprimir el número de versión
(-h) --help show this help (see below for -h comment) (H) - help muestra esta ayuda
(ver más abajo comentario para-h)
Rsync también se puede ejecutar como un demonio, en cuyo caso las
siguientes opciones are accepted: Se aceptan:
-daemon run as an rsync daemon - Demonio se ejecute como un demonio rsync
- address = ADDRESS bind to the specified address - Address = DIRECCIÓN se une
a la dirección especificada
- bwlimit=KBPS limit I/O bandwidth; KBytes per second - Bwlimit = límite KBPS de E /
S de ancho de banda; Kbytes por segundo
- config = FILE specify alternate rsyncd.conf file - Config = FILE especifica archivo
rsyncd.conf alternativo
- no - detach do not detach from the parent - No separar-no separarse de los padres
100
- port = PORT listen on alternate port number - Port = PUERTO escuchar en el
número de puerto alternativo
- log – file = FILE override the "log file" setting - Log-file = ARCHIVO reemplazar el
"archivo de registro de" ajuste
- log – file – format = FMT override the "log format" setting - Log-archivo-formato
FMT = reemplazar el "formato de registro" ajuste
- sockopts = OPTIONS specify custom TCP options - Sockopts OPCIONES =
especificar opciones personalizadas TCP
- v, --verbose increase verbosity -V, - verbose Incrementa la verbosidad
- 4, --ipv4 prefer IPv4 -4 - Ipv4 prefieren IPv4
- 6, --ipv6 prefer IPv6 -6 - Ipv6 prefieren IPv6
- h, --help show this help (if used after --daemon) -H, - help muestra esta ayuda (si
se utilizan después - demonio)
Con las opciones que hemos visto, ahora crearemos un script.
La forma básica de hacer un respaldo es de esta forma
/usr/bin/rsync -avzrpog --delete /home/Origen /home/Destino
Lo que hacemos es respaldar lo que está en el directorio /home/Origen a
/home/Destino pero además hacemos lo siguiente:
101
Con a le decimos que copie archivo por archivo, con v incrementamos la
verbosidad o cantidad de palabras, z que los comprima cuando los esté
transfiriendo, r que sea recursivo, p conserva los permisos de los archivos, o
conserva el propietario y g conserva el grupo.
Pero ahora ¿qué hacemos?
Bien, editamos un archivo llamado backup con el comando nano, vi o pico y
creamos el script
#!/bin/bash
/usr/bin/rsync -avzrpog --delete /home/Origen /home/Destino
Lo guardamos y le damos los permisos correspondientes.
Ahora, si queremos que el script se ejecute a cierta hora y día o lo queremos
que se ejecute cada cierto tiempo, debemos de agregarlo al cron del sistema.
Veamos cómo funciona el crontab.
Cron
El nombre cron viene del griego chronos que significa "tiempo". En el sistema
operativo Unix, cron es un administrador regular de procesos en segundo plano
(demonio) que ejecuta procesos o guiones a intervalos regulares (por ejemplo, cada
minuto, día, semana o mes). Los procesos que deben ejecutarse y la hora en la que
deben hacerlo se especifican en el fichero crontab.
102
Cron se podría definir como el "equivalente" a Tareas Programadas de Windows.
Cron es impulsado por un cron, un archivo de configuración que especifica
comando shell para ejecutarse periódicamente a una hora específica. Los archivos
crontab son almacenados en donde permanecen las listas de trabajos y otras
instrucciones para el demonio cron. Los usuarios habilitados para crear su fichero
crontab se especifican en el fichero cron.allow. De manera análoga, los que no lo
tienen permitido figuran en /etc/cron.d/cron.deny, o /etc/cron.deny, dependiendo de
la versión de Unix.
Cada línea de un archivo crontab representa un trabajo y es compuesto por
una expresión CRON, seguida por un comando shell para ejecutarse.
Formato del fichero crontab
Fichero crontab de ejemplo:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
103
01 * * * * root nice -n 19 run-parts /etc/cron.hourly
50 0 * * * root nice -n 19 run-parts /etc/cron.daily
22 4 * * 0 root nice -n 19 run-parts /etc/cron.weekly
42 4 1 * * root nice -n 19 run-parts /etc/cron.monthly
Sintaxis
El formato de configuración de cron es muy sencillo.
El símbolo # es un comentario, todo lo que se encuentre después de ese
carácter no será ejecutado por cron.
El momento de ejecución se especifica de acuerdo con la siguiente tabla:
1. Minutos: (0-59)
2. Horas: (0-23)
3. Días: (1-31)
4. Mes: (1-12)
5. Día de la semana: (0-6), siendo 1=lunes, 2=martes,... 6=sábado y 0=domingo (a
veces también 7=domingo).
104
Figura 1.18 Script de respaldo
Bien ahora que tenemos esto podremos configurar que nuestro script se
ejecute cuando lo deseemos.
Ejemplo, vamos a configurar el cron para que ejecute nuestro script los
viernes a las 11:30 pm de todas las semanas.
En el cron quedaría así:
30 23 * * 5 root /usr/local/sbin/backup.sh
Pero si queremos que se ejecute todos los días cada 30 minutos:
30 * * * * root /usr/local/sbin/backup.sh
105
PRUEBAS
Simulación De Ataque
Introducción al análisis de puertos
Nmap comenzó como un analizador de puertos eficiente, aunque ha
aumentado
su
funcionalidad
a
través de los años, aquella sigue
siendo su
función primaria.
La sencilla orden nmap objetivo analiza más de 1660 puertos TCP del equipo
objetivo. Aunque muchos analizadores de puertos han agrupado tradicionalmente
los puertos en dos estados: abierto o cerrado, Nmap es mucho más descriptivo.
Se dividen a los puertos en seis estados distintos: abierto, cerrado,
filtrado, no filtrado, abierto |filtrado, o cerrado| filtrado.
Estos estados no son propiedades intrínsecas del puerto en sí, pero describen
como los ve Nmap. Por ejemplo, un análisis con Nmap desde la misma red en la que
se encuentra el objetivo puede mostrar el puerto 135/tcp como abierto, mientras que
un análisis
realizado
al mismo
tiempo y
con las mismas opciones,
pero
desde Internet, puede presentarlo como filtrado.
Los seis estados de un puerto, según Nmap abierto
Una
aplicación acepta
conexiones TCP
o
paquetes UDP
en este
puerto. El encontrar esta clase de puertos es generalmente el objetivo primario
de realizar un sondeo de puertos. Las personas orientadas a la seguridad saben que
cada puerto abierto es un vector de ataque. Los atacantes y las personas que
106
realizan pruebas de intrusión intentan aprovechar puertos abiertos, por lo que
los administradores intentan cerrarlos, o protegerlos con cortafuegos, pero sin que
los usuarios legítimos pierdan acceso al servicio.
Los puertos abiertos también son interesantes en sondeos que no están
relacionados con la seguridad porque indican qué servicios están disponibles
para ser utilizados en una red.
Cerrado
Un puerto cerrado es accesible: recibe y responde a las sondas de Nmap,
pero no tiene una aplicación escuchando en él. Pueden ser útiles para determinar si
un equipo está activo en cierta dirección IP (mediante descubrimiento de sistemas, o
sondeo ping), y es parte del proceso de detección de sistema operativo. Como los
puertos cerrados son alcanzables,
o
sea,
no se
encuentran filtrados,
puede
merecerla pena analizarlos pasado un tiempo, en caso de que alguno se abra.
Los administradores pueden querer considerar bloquear estos puertos con
un
cortafuegos.
Si
se
bloquean aparecerían filtrados,
como
se
discute
a
continuación.
Filtrado
Nmap no puede determinar si el puerto se encuentra abierto porque un filtrado
de paquetes previene que sus sondas alcancen el puerto.
El filtrado
puede
provenir
dedicado, de las reglas de un enrutador,
de
o
instalada en el propio equipo.
107
por
un dispositivo
una
de cortafuegos
aplicación de cortafuegos
Estos puertos suelen frustrara los atacantes, porque proporcionan
muy poca información.
A veces responden con mensajes de error ICMP del tipo 3, código 13
(destino inalcanzable: comunicación prohibida por administradores),
pero
los filtros que
sencillamente
descartan las
sondas
sin
responder son mucho más comunes.
Esto fuerza a Nmap a reintentar varias veces, considerando que la sonda pueda
haberse descartado por congestión en la red en vez de haberse filtrado.
Esto ralentiza drásticamente los sondeos.
No Filtrado
Este estado indica que el puerto es accesible, pero que Nmap no puede
determinar si se encuentra abierto o cerrado. Solamente el sondeo ACK, utilizado
para determinar las reglas de un cortafuego, clasifica a los puertos según este
estado. El analizar puertos no filtrados con otros tipos de análisis, como el sondeo
Windows, SYN o FIN, pueden ayudar a determinar si el puerto se encuentra abierto.
Abierto | Filtrado
Nmap marca a los puertos en este estado cuando no puede determinar si
el puerto se encuentra abierto o filtrado. Esto ocurre para tipos de análisis donde no
responden los puertos abiertos. La ausencia de respuesta puede también significar
que un filtro de paquetes ha descartado la sonda, o que se elimina cualquier
respuesta asociada. De esta forma, Nmap no puede saber con certeza si el puerto
108
se encuentra abierto o filtrado. Los sondeos UDP, protocolo IP, FIN, Null y X más
clasifican a los puertos de esta manera.
Cerrado | Filtrado
Este estado se utiliza cuando Nmap no puede determinar si un puerto se
encuentra cerrado o filtrado, y puede aparecer sólo durante un sondeo IPID pasivo.
Técnicas De Sondeo De Puertos
Cuando intento
pasarme
horas
realizar un arreglo
intentando utilizar mis
de mi
coche,
siendo novato, puedo
herramientas rudimentarias (martillo, cinta
aislante, llave inglesa, etc.). Cuando fallo miserablemente y llevo mi coche antiguo
en grúa al taller a un mecánico de verdad siempre pasa lo mismo: busca en su
gran cajón de herramientas hasta que saca una herramienta que hace que la
tarea se haga sin esfuerzo. El arte de sondear puertos es parecido.
Los expertos conocen docenas de técnicas de sondeo y eligen la más apropiada (o
una combinación de éstas) para la tarea que están realizando. Los usuarios sin
experiencia y los "script kiddies", sin embargo, intentan resolver cada problema
con el sondeo SYN por omisión. Dado que Nmap es libre, la única barrera que existe
para ser un experto en el sondeo de puertos es el conocimiento. Esto es mucho
mejor que el mundo del automóvil, donde puedes llegar a saber que necesitas un
compresor de tuerca, pero tendrás que pagar mil dólares por él.
La mayoría de los distintos tipos de sondeo disponibles sólo los puede llevar a
cabo
un
usuario
privilegiado. Esto
109
es debido a
que
envían y
reciben
paquetes en crudo, lo que hace necesario tener acceso como administrador (root)
en la mayoría de los sistemas UNIX.
En
los entornos
de administrador,
Windows
es recomendable
aunque Nmap algunas
utilizar una
cuenta
veces funciona
para
usuarios no privilegiados en aquellas plataformas donde ya se
haya instalado WinPcap.
La
necesidad
de privilegios como
usuario
administrador era
una
limitación importante cuando se empezó a distribuir Nmap en 1997, ya que muchos
usuarios sólo
tenían acceso
a
cuentas compartidas
en sistemas
como
usuarios normales. Ahora, las cosas son muy distintas.
Los ordenadores son más baratos, hay más personas que tienen acceso
permanente a Internet, y los sistemas UNIX (incluyendo Linux y MAC OS X)
son más comunes. También se dispone de una versión para Windows de Nmap, lo
que permite que se ejecute en más escritorios. Por todas estas razones, cada
vez es menos necesario ejecutar Nmap utilizando cuentas de sistema compartidas.
Esto es bueno, porque las opciones que requieren de más privilegios hacen que
Nmap sea más potente y flexible.
Aunque Nmap intenta generar resultados precisos, hay que tener en cuenta
que estos resultados se basan en los paquetes que devuelve el sistema objetivo (o
los cortafuegos que están delante de éstos).
Estos sistemas pueden no ser fiables y
sea confundir
a
Nmap.
enviar
respuestas
cuyo
Son aún más comunes los sistemas que
110
objetivo
no cumplen
con los estándares RFC, que no responden como deberían a las sondas de Nmap.
Son especialmente susceptibles a este problema los sondeos FIN, Null y Xmas. Hay
algunos
problemas específicos a
algunos
tipos
de sondeos que
se
discuten en las entradas dedicadas a sondeos concretos.
Esta sección documenta las aproximadamente doce técnicas
de sondeos de puertos que soporta Nmap.
Sólo puede utilizarse un método en un momento concreto, salvo por el
sondeo UDP (-sU) que puede combinarse con cualquiera de los sondeos TCP. Para
que sea fácil de recordar, las opciones de los sondeos de puertos son del estilo -sC,
donde Ces una letra característica del nombre del sondeo, habitualmente la
primera. La única excepción a esta regla es la opción obsoleta de sondeo FTP
rebotado (-b). Nmap hace un sondeo SYN por omisión, aunque lo cambia a
un sondeo
Connect()
si
el usuario
no tiene
los suficientes privilegios para
enviar paquetes en crudo (requiere acceso de administrador en UNIX) o si se
especificaron objetivos IPv6.
De los sondeos que se listan en esta sección los usuarios sin privilegios sólo
pueden ejecutar los sondeos Connect() o de rebote FTP.
-r (No aleatorizar los puertos)
Nmap ordena de forma
aleatoria
los puertos a
sondear por
omisión (aunque algunos puertos comúnmente accesibles se ponen al principio por
razones de eficiencia).
111
Esta aleatorización generalmente es deseable, pero si lo desea puede
especificar la opción-r para analizar de forma secuencial los puertos.
Detección de servicios y de versiones
Si le indica a Nmap que mire un sistema remoto le podrá decir que tiene
abiertos los
puertos 25/tcp, 80/tcp
y
53/udp. Informará
que
esos puertos se
corresponden habitualmente con un servidor de correo (SMTP), servidor de web
(HTTP) o servidor de nombres (DNS), respectivamente, si utilizas su base
de datos nmap-services con más de2.200 puertos conocidos. Generalmente este
informe es correo dado que la gran mayoría de demonios que escuchan en el puerto
25 TCP son, en realidad, servidores de correo. Pero no debe confiar su seguridad
en este hecho! La gente ejecuta a veces servicios distintos en puertos inesperados
Aún en el caso de que Nmap tenga razón y el servidor de ejemplo indicado
arriba está ejecutando servidores de SMTP, HTTP y DNS esto no dice mucho.
Cuando haga un análisis de vulnerabilidades (o tan sólo un inventario de red) en su
propia empresa o en su cliente lo que habitualmente también quiere saber es qué
versión se está utilizando del servidor de correcto y de DNS. Puede ayudar mucho a
la hora de determinar qué ataques pueden afectar a un servidor el saber el número
de versión exacto de éste. La detección de versiones le ayuda a obtener esta
información.
La detección de versiones pregunta para obtener más información de lo que
realmente se está ejecutando una vez se han detectado los puertos TCP y/o UDP
112
con alguno de los
probes contiene
métodos de sondeo. La base
sondas
para
tratar distintas respuestas en base
de datos nmap-service-
consultar distintos servicios y
a
una
serie
de expresiones.
reconocer y
Nmap intenta
determinar el protocolo del servicio (p. ej. ftp, ssh, telnet óhttp), el nombre de la
aplicación (p. ej. Bind de ISC, http de Apache, telnet de Solaris), un número
de versión, un tipo de dispositivo (p. ej. impresora o router), la familia de sistema
operativo (p. ej. Windows o Linux) y algunas veces algunos detalles misceláneos
como
por
ejemplo, si
un servidor
X
acepta
cualquier conexión externa,
la
versión de protocolo SSH o el nombre de usuario Kazaa). Por supuesto, la mayoría
de los servicios no ofrecen
Nmap con soporte
toda
OpenSSL
esta
se
información.
conectará
también a
Si
se
ha compilado
servidores SSL
para
determinar qué servicio escucha detrás de la capa descifrado. Se utiliza la
herramienta de pruebas RPC de Nmap (-sR) de forma automática para determinar
el programa RPC y el número de versión si se descubren servicios RPC .Algunos
puertos UDP se quedan en estado open|filtered (N. del T., 'abierto|filtrado') si un
barrido de puertos UDP no puede determinar si el puerto está abierto o filtrado. La
detección de versiones intentará obtener una respuesta de estos puertos (igual que
hace
con puertos abiertos)
y
cambiará
el estado
a
abierto
si
lo
consigue. Los puertos TCP en estado open|filtered se tratan de forma similar.
Tenga en cuenta
que
detección de versiones entre
la
opción -A
otras cosas.
113
de Nmap
actualiza
la
Puede encontrar un documento
describiendo el funcionamiento, modo de uso, y particularización de la detección de
versiones en http: //ww w.insecure.org/nmap /v s c an /.
Cuando Nmap obtiene una respuesta de un servicio pero no encuentra una
definición coincidente en la base de datos se imprimirá una firma especial y un URL
para que la envíe si sabe lo que está ejecutándose detrás de ese puerto. Por favor,
tómese unos minutos para enviar esta información para ayudar a todo el mundo.
Gracias a
estos
envíos Nmap tiene
ahora
alrededor de 3.000
patrones para
más de 350 protocolos distintos como smtp, ftp, http, etc.
La detección de versiones se activa y controla con las siguientes opciones:
-sV (Detección de versiones)
Activa la detección de versiones como se ha descrito previamente.
Puede utilizar la
opción -A
en su
lugar para
activar tanto
la
detección de versiones como la detección de sistema operativo.
--allports (No excluir ningún puerto de la detección de versiones)
La detección de versiones de Nmap omite
el puerto
TCP
9100 por
omisión porque algunas impresoras imprimen cualquier cosa que reciben en este
puerto, lo que da lugar a la impresión de múltiples páginas con solicitudes HTTP get,
intentos de
conexión de SSL, etc.
modificando o
eliminando
la
Este
directiva
114
comportamiento
Exclude
puede
cambiarse
en nmap-service-probes,
o
especificando –allports para sondear todos los puertos independientemente de lo
definido en la directiva Exclude.
--version-intensity <intensidad> (Fijar la intensidad de la detección de versiones)
Nmap envía
una
serie
de sondas
cuando
se
activa
la
detección de versiones (-sV) con un nivel de rareza pre asignado y variable de 1 a
9. Las sondas
con un número
bajo
son efectivas contra
un amplio
número
de servicios comunes, mientras que las de números más altos se utilizan rara vez.
El nivel de intensidad
indica
que
sondas
sea el número, mayor las probabilidades
de
deberían utilizarse. Cuanto
más alto
identificar el servicio. Sin
embargo,
los sondeos de alta intensidad tardan más tiempo. El valor de intensidad puede
variar de 0 a 9. El valor por omisión es 7. Se probará una sonda independientemente
del nivel de intensidad cuando ésta se registra para el puerto objetivo a través de la
directiva nmap-service-probes ports. De esta forma se asegura que las sondas
de DNS se probarán contra cualquier puerto abierto 53, las sondas SSL contra
el puerto 443, etc.
--version-light (Activar modo ligero)
Éste es un alias conveniente para --version-intensity 2. Este modo ligero hace
que
la
detección de versiones sea más rápida, pero
sea menos probable identificar algunos servicios.
--version-all (Utilizar todas las sondas)
115
también hace
que
Éste es un alias para --version-intensity 9, hace que se utilicen
todas las sondas contra cada puerto.
--version-trace (Trazar actividad de sondeo de versiones)
Esta opción hace que Nmap imprima información de depuración detallada
explicando lo que está haciendo el sondeo de versiones. Es un conjunto de lo que
obtendría si utilizara la opción --packet-trace.
-sR (Sondeo RPC)
Este método funciona conjuntamente con los distintos métodos de sondeo de
puertos de Nmap. Toma todos los puertos TCP/UDP que se han encontrado y los
inunda con órdenes de programa NULL SunRPC con el objetivo de determinar si son
puertos RPC y, si es así, los programas y número de versión que están detrás. Así,
puede obtener de una forma efectiva la misma información que rpcinfo -p aunque el
mapeador de puertos («portmapper», N. del T.) está detrás de un cortafuegos (o
protegido por TCP wrappers). Los señuelos no funcionan con el sondeo RPC
actualmente. Esta opción se activa automáticamente como parte de la detección de
versiones (-sV) si la ha seleccionado. Rara vez se utiliza la opción -sR dado que la
detección de versiones lo incluye y es más completa.
Detección de sistema operativo
116
Uno de los aspectos más conocidos de Nmap es la detección del sistema
operativo (SO) en base a la comprobación de huellas TCP/IP. Nmap envía una serie
de paquetes TCP y UDP al sistema remoto y analiza prácticamente todos los bits
de las respuestas. Nmap compara los resultados de una docena de pruebas como
puedan ser el análisis
de ISN
deTCP, el soporte
de opciones TCP
y
su
orden, el análisis de IPID y las comprobaciones de tamaño inicial de ventana, con su
base
de datos nmap-os-fingerprints.
Esta
base
de datos
consta
de más de 1500 huellas de sistema operativo y cuando existe una coincidencia se
presentan los detalles del
sistema
operativo. Cada huella
contiene
una
descripción en texto libre del sistema operativo, una clasificación que indica
el nombre del proveedor (por ejemplo, Sun), el sistema operativo subyacente (por
ejemplo, Solaris), la versión del SO (por ejemplo, 10) y el tipo de dispositivo
(propósito general, en caminador, conmutador ,consola de videojuegos, etc.).
Nmap le indicará una URL donde puede enviar las huellas si conoce
(con seguridad) el sistema operativo que utiliza el equipo si no puede adivinar
el sistema
operativo
de éste
y
las condiciones son óptimas (encontró
al menos un puerto abierto y otro cerrado). Si envía esta información contribuirá
al conjunto de sistemas operativos que Nmap conoce y la herramienta será así
más exacta para todo el mundo.
La
detección de sistema
operativo
activa, en cualquier caso, una
serie
de pruebas que hacen uso de la información que ésta recoge. Una de estas pruebas
117
es la medición de tiempo de actividad, que utiliza la opción de marca de tiempo TCP
(RFC
1323)
para
adivinar
cuánto
hace
que
un equipo fue reiniciado. Esta
prueba sólo funciona en sistemas que ofrecen esta información. Otra prueba que se
realiza
es la
clasificación de predicción
de número
de secuencia
TCP. Esta
prueba mide de forma aproximada cuánto de difícil es crear una conexión TCP falsa
contra
el sistema
remoto. Se
utiliza
cuando
se
quiere
hacer
uso
de relaciones de confianza basadas en la dirección IP origen (como es el caso de
login, filtros de cortafuegos, etc.) para ocultar la fuente de un ataque. Ya no se hace
habitualmente este tipo de malversación pero aún existen muchos equipos que son
vulnerables a ésta.
Generalmente es mejor utilizar la clasificación en inglés como:
―worthychallenge‖ («desafío difícil», N. del T.) o ―trivial joke‖ («broma fácil», N. del
T.). Esta información sólo se ofrece en la salida normal en el modo detallado (-v).
También se informa de la generación de números de secuencia IPID cuando se
activa el modo detallado conjuntamente con la opción -O. La mayoría de los equipos
estarán en la clase ―incremental‖, lo que significa que incrementan el campo ID en la
cabecera IP para cada paquete que envían. Esto hace que sean vulnerables a
algunos ataques avanzados de obtención de información y de falseo de dirección.
Puede encontrar un trabajo traducido a una docena de idiomas que detalla
el modo de funcionamiento, utilización y ajuste de la detección de versiones en
http://www.insecure.org/nmap/osdetect/.
118
La
detección de sistema
operativo
se
activa
y
controla
con las siguientes opciones:
-O (Activa la detección de sistema operativo)
Tal y
como
se
operativo. También
se
indica
previamente, activa
puede
utilizar la
la
opción -A
detección de sistema
para
activar la
detección de sistema operativo y de versiones.
--osscan-limit
(Limitar la
detección de sistema
operativo
a
mejor si
se
los objetivos prometedores)
La detección de sistema
operativo
funcionará
dispone de un puerto TCP abierto y otro cerrado. Defina esta opción si no quiere que
Nmap intente siquiera la detección de sistema operativo contra sistemas que
no cumplan este criterio. Esta opción puede ahorrar mucho tiempo, sobre todo si
está realizando sondeos -P0 sobre muchos sistemas. Sólo es de aplicación cuando
se ha solicitado la detección de sistema operativo con la opción -O o -A.
--osscan-guess;
--fuzzy
(Aproximar los resultados de la
detección de sistema
operativo)
Cuando Nmap no puede
perfectamente
a
detectar un sistema
veces ofrecerá
posibilidades
operativo
que
se
que
encaje
aproximen lo
suficiente. Las opciones tienen que aproximarse mucho al detectado para que
119
Nmap haga esto por omisión .Cualquiera de estas dos opciones (equivalentes)
harán que Nmap intente aproximarlos resultados de una forma más agresiva.
Pruebas de Acceso
Al tener todas las configuraciones necesarias en el servidor se hace una
prueba de acceso con las cuentas agregadas de todos los usuarios, se eligen a lazar
5 cuentas de usuarios y se hacen los accesos desde computadoras en otra
ubicación, esto es con la finalidad de probar el comportamiento del servidor y su
configuración.
ENTREGA
Capacitación
En esta última etapa se le da una capacitación al encargado de administrar el
servidor web, la capacitación constará de que el administrador tenga las habilidades
para altas, bajas y cambios de usuarios, en dado caso que sea necesario instalar el
servidor desde cero el administrador contara con un manual que lo guiara paso a
paso en la instalación del servidor web.
Manual
Se le entregara al administrador del servidor web un manual enfocado en la
instalación del servidor web desde el sistema operativo Ubuntu 10.10, el servidor
XAMPP, la librería JAVA, la aplicación TOMCAT, agregar usuarios tanto en el
120
servidor como en la base de datos y realizar las pruebas tanto de seguridad y
acceso.
121
X. RESULTADOS OBTENIDOS
Los principales resultados obtenidos de este proyecto son los siguientes:
Instalación de Ubuntu 10.10 64bits. Se instaló este sistema operativo por su
estabilidad y seguridad, está basado en Unix por lo cual hasta el momento no tiene
virus que lo dañen, su instalación fue rápida y sencilla, el sistema operativo se
actualiza constantemente, aunque es diferente a Windows es muy amigable y fácil
de entender para el administrador, al momento de instalar no se detectó algún
problema y al finalizar tampoco se tuvo problemas con los drivers para el uso del
hardware del servidor.
Instalación de XAMPP. Apache es uno de los servidores web más utilizados,
esto es debido a que su instalación es muy sencilla y rápida, es un servidor
configurable y de diseño agradable con la capacidad de extender su funcionalidad y
la calidad de sus servicios, trabaja en conjunto con gran cantidad de lenguajes de
programación lo que lo hace un servidor web completo.
Aplicación Rsync. Esta aplicación es solo para sistemas Unix el cual no tuvo
problemas de instalación con Ubuntu 10.10, esta aplicación nos permite tener una
copia de seguridad de archivos en el servidor ya sea en red o en la misma máquina.
122
XI. ANALISIS DE RIESGOS
Clasificación de
Riesgos
Riesgos –
Consecuencias
Riesgo…….Bajo
Retraso en fecha
de entrega
Riesgo……Medio
Caída del
Servidor por
energía
Riesgo….…Alto
Accesos no
autorizados por
configuraciones
erróneas
Riesgo……Medio
Contraseñas
débiles de los
usuarios
Riesgo…….Bajo
Riesgo de
pérdida de datos
Riesgo…….Bajo
Mal entendidos
con el alcance
del proyecto
Fecha de
identificación de
riesgo
Responsable
10/01/11
14/01/11
17/01/11
17/01/11
07/02/11
11/01/11
Acciones de
Mitigación
Fecha limite
mitigación
Team Leader
Cumplir con los
tiempos
establecidos
14/01/11
Soporte Técnico
Asegurar la
energía del
servidor o en
caso de no es
posible respaldar
la información
17/01/11
Realizar pruebas
de acceso y de
seguridad en el
servidor incluso
simulando
ataques.
31/02/11
Manejar un
estándar en las
contraseñas de
los usuarios para
que sean
robustas
21/02/11
Uso de la
tecnología Rsync
para el respaldo
de la información
21/02/11
Mantener al tanto
de los avances
del servidor
aclarando los
puntos ya
cubiertos
14/01/11
Team Leader
Team Leader
Team Leader
Team Leader
Tabla 1.2 Análisis de Riesgos
123
XII. CONCLUSIONES
En conclusión el servidor web se terminó en tiempo y forma, a pesar de haber
tenido problemas con la configuración ya que al principio se planeó usar Centos una
versión de Linux más enfocada a servidores, pero no cumplió con los requerimientos
lo cual se optó por Ubuntu que es la versión más popular de Linux y con muy buen
soporte, otro problema que se tuvo en el transcurso de la configuración fueron la alta
de los usuarios ya que el script que utilizamos para dar de alta todos los usuarios
estaba teniendo problemas de implementación por la sintaxis que se utilizaba.
Sin embargo todas las dificultades fueron superadas y resueltas el servidor se
encuentra funcionando en la carrera de Tecnologías de la Información y
Comunicación dando servicio a la comunidad estudiantil de esta carrera.
124
XIII. RECOMENDACIONES
El proyecto cuenta con posibilidades de crecimiento ya que en el futuro se
puede implementar un servidor de correo para los alumnos, claro que el crecimiento
de aplicaciones en el servidor y de servicios llevará a estructurar los servicios en el
mismo e incluso pensar en dividir servicios como por ejemplo tener en un servidor la
base de datos y en otro el servidor web para una mayor distribución de los recursos
y manejo de los mismos, incluso ayudará para que en un momento que se tenga
problemas se puede separar la falla dependiendo del error que se tenga.
Más que una recomendación es un punto importante en el funcionamiento del
servidor web que es mantener siempre los respaldos de la información, ya que de
eso depende la calificación y el buen aprendizaje que los profesores les impartan a
los alumnos con respecto a sus trabajos.
Tener esta nueva herramienta habla bien de la carrera y es por eso que es
muy importarte darle el uso apropiado para sacar el mayor provecho posible de
ambas partes.
125
XIV. REFERENCIAS BIBLIOGRAFICAS
 Servidor Web Dell PowerEdge T410 Manual PDF
 http://www.dell.com/downloads/global/products/pedge/pedge_t410_spe
csheet_new.pdf
 Ubuntu Server Guide 2010 Manual en PDF
 Copyright 2010 Canonical Ltd.
 http://help.ubuntu.com/10.10/serverguide/C/serverguide.pdf
 XAMPP Install Guide 2007
 A3webtech 2007 XAMPP
 http://www.a3webtech.com/index.php/xampp.html
 http://www.a3webtech.com/index.php/xampp-2.html
 Apache y Tomcat en Linux
 http://www.mundogeek.net/archivos/2006/04/03/apache-y-tomcat-enlinux/
 Rsync Tutorial
 http://www.fredshack.com/docs/rync.html
 Cron Tutorial
 http://www.ebitacora.com/tutorial-de-cron.html
 American Psychological Association. (2001). Publication Manual of the
American Psychological Association (5th ed.). Washington, DC: The
Author. (R 808.066 P976 2001). Version en Ingles.
126
Descargar