informe_tp6.pdf
TRANSCRIPT
-
Trabajo Prctico 6: Implementacin de servicios de red en
GNU/Linux
Agero Barrionuevo, Lucas [email protected] Aguilera, Germn [email protected] Morales, Pablo [email protected]
Nazzi, Fabio [email protected]
Resumen. Se va a tratar el caso de una red privada en la cual se administrarn los servicios de
DNS, Base de Datos, servicios web, un servidor de archivos y un balanceador de carga
implementados en GNU/Linux.
Palabras Clave: DNS, Apache, NFS, HAProxy, bind, MySQL, Servidor.
1 Introduccin
Figura 1. Diagrama de la red.
-
Red: 93.184.216.0/24
La direccin IP: 93.184.216.100 NO puede ser utilizada.
Caractersticas generales de los Servidores Linux
* El servidor tendr como Sistema Operativo un GNU/Linux, pudiendo ser Centos (o
similar) 6, Debian 7, openSuse 13.1 o Ubuntu 12.04.
* El servidor debe tener una nica interfaz de red y la misma tendr una direccin IP
esttica asignada.
* El servidor debe tener el servicio de SSH instalado, abierto y habilitado para usuario
root
* La contrasea del usuario root debe ser laryc1
Direcciones IP de la Red
DNS Server1 93.184.216.2
DNS Server2 93.184.216.3
DB Server1 93.184.216.4
DB Server2 93.184.216.5
NFSv4 Server 93.184.216.6
HTTP Server1 93.184.216.7
HTTP Server2 93.184.216.8
HTTP Load B. 93.184.216.9
2 Desarrollo
2.1 Servidores DNS
Comenzamos por instalar la ltima versin estable de bind con el comando [1]:
$ sudo apt-get install bind9
Figura 2. Instalacin de Bind.
-
Se confirma y se completa la instalacin. Ahora se van a configurar las zonas que
administrarn. El formato es:
nombrederegistro IN tipodeentrada valor
El archivo que se debe editar para configurar una zona maestro/esclavo es
named.conf.local. Este archivo se encuentra en la carpeta /etc/bind.
Configuracin DNS Maestro
El nmero de IP asignado es el 93.184.216.2.
En el archivo /etc/bind/named.conf.local, se edita lo siguiente [2]:
Figura 3. Archivo named.conf.local para el Maestro.
Por otro lado, se crean los archivos que estn especificados en cada zona declarada
en el archivo /etc/bind/named.conf.local.
Entonces, en el directorio /var/lib/bind, se crean los archivos en los que se escriben
los registros (los mapeos de URL a direccin IP, y el reverso).
-
El archivo /var/lib/bind/db.laryc.efn.uncor.edu, es el siguiente:
Figura 4. Archivo db.laryc.efn.uncor.edu
El archivo /var/lib/bind/db.miempresa.com.ar, es el siguiente:
Figura 5. Archivo db.miempresa.com.ar
-
El archivo de mapeo reverso, es el siguiente:
Figura 6. Archivo de mapeo reverso
Configuracin DNS Esclavo
El nmero de IP asignado es el 93.184.216.3.
En el esclavo, se definen las mismas zonas, en el mismo archivo
(/etc/bind/named.conf.local), pero a diferencia del maestro, en el esclavo no se crean
los archivos declarados en cada zona, ya que estos archivos se copian
automticamente del maestro al esclavo [3].
-
Figura 7. Archivo named.conf.local para el Esclavo.
2.2 Servidores Base de Datos
Para instalar mysql server, la ltima versin del repositorio, lo que tenemos que hacer
es bajar the MySQL APT Repository:
http://dev.mysql.com/downloads/repo/apt/
Ahora descargamos la versin Ubuntu Linux 12.04 deb. Luego agregamos el
repositorio:
$ sudo dpkg -i mysql-apt-config_0.1.5-1ubuntu12.04_all.deb
Luego de eso, lo que hacemos es hacer un
$ sudo apt-get update
Finalmente un sudo apt-get install mysql-server y ya vamos a poder instalar la ltima
versin.
Para bajar el .deb lo podemos bajar en Windows y despus montar la unidad USB. [4]
Instalamos en ambos servidores
-
$ sudo apt-get mysql-server mysql-client
Por defecto, los procesos de MySQL slo aceptan conexiones desde localhost. Vamos a cambiar esta configuracin por defecto para que acepte peticiones desde otro
servidor, adems de hacer otros cambios necesarios para la replicacin de los datos.
Para ello editamos el fichero de configuracin que nos encontraremos en la ruta
/etc/mysql/my.cnf, en que cambiaremos las siguientes lneas. server-idc = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = laryc
binlog_do_db = miempresa
# bind-address = 127.0.0.1
La primera de esas lneas es el identificador nico que tendr nuestro servidor en
nuestro sistema de replicacin de datos. En la segunda lnea le estamos indicando el
fichero de log donde se almacenar los cambios que se realicen en una base de datos o
tabla. En la tercera lnea lo que indicamos es el nombre de las bases de datos que
queremos replicar. Por ltimo comentamos la ltima lnea para que no slo acepte
peticiones desde la IP 127.0.0.1.
Una vez hecho estos cambios, necesitamos reiniciar MySQL.
Luego creamos las base de datos en cada servidor. Entramos a mysql:
$ mysql -u root p
Luego:
Create Database laryc;
create Database miempresa;
creamos las dos base de datos en los dos servidores. Luego tenemos que crear los
usuarios y darle los permisos uno para cada BD.
Para crear los usuarios hacemos:
create user 'miempresa'@'%' identified by 'miempresa1';
create user 'laryc'@'%' identified by 'laryc1';
el '%' quiere decir que se puede conectar de donde quiera. Luego le damos permiso
sobre las base de datos;
GRANT ALL PRIVILEGES ON miempresa.* TO 'miempresa@'%';
GRANT ALL PRIVILEGES ON laryc.* TO 'miempresa'@'%';
A continuacin le damos permisos necesarios a nuestro usuario para que realice la
replicacin. El usuario que va a hacer la replicacin es laryc, de esta forma nos
ahorramos crear otro usuario para que replique.
grant replication slave on *.* to 'laryc'@'%';
-
Luego en cada server, le decimos quien es el master, poniendo la ip del Master.
Lo que debemos hacer, es:
mysql> CHANGE MASTER TO
-> MASTER_HOST='93.184.1.5',
-> MASTER_USER='laryc',
-> MASTER_PASSWORD='laryc1',
-> MASTER_PORT=3306,
-> MASTER_CONNECT_RETRY=10;
de ambos lados, con las IP del otro, segn corresponda.
En el archivo de configuracin se agrega lo siguiente, para no usar DNS:
[mysqld]
skip-host-cache
skip-name-resolve
2.3 Servidores NFS
El servido NFS (Network File System) es un protocolo de nivel de aplicacin
utilizado para sistemas de archivos distribuido en un entorno de red de computadoras
de rea local. Posibilita que distintos sistemas conectados a una misma red accedan a
ficheros remotos como si se tratara de locales. El sistema NFS est dividido al menos
en dos partes principales: un servidor y uno o ms clientes. Los clientes acceden de
forma remota a los datos que se encuentran almacenados en el servidor.
De modo que se necesitaran instalar una distribucin extra host servidor. Para ambos:
$ sudo apt-get install nfs-common
Slo en el servidor:
$ sudo apt-get install nfs-kernel-server
Se crea un directorio donde se accedern los archivos:
$ mkdir /srv/www/data
Y se lo exporta editando el archivo ubicado en /etc/exports :
-
Figura 8. Archivo exports para NFS.
Se indica la carpeta a compartir y las IP que pueden tener acceso a ella.
El parmetro rw da permitos de lectura y escritura al cliente.
El parmetro sync activa el modo sincronizado, con el cual no se responden las
peticiones antes de que los cambios se escriban en el disco.
El parmetro no_subtree_check desactiva la comprobacin de que las carpetas
compartidas perteneces al mismo volumen con lo cual la transferencia es ms rpida.
El parmetro root_squash deniega privilegios de root al usuario cliente.
El parmetro anonuid=33 fueza que las conexiones sean annimas para el user
identification 33 en el servidor.
El parmetro anongid=33 fueza que las conexiones sean annimas para el group
identification 33 en el servidor.
2.4 Servidores Balanceador de Carga
Se usar HAProxy (High Availability Proxy) el cual es un balanceador de carga open
source el cual puede hacer el balance de cualquier servicio TCP. Se destaca por el
mejorar la performances con balanceo de carga HTTP a travs de varios servidores.
Se instala mediante el comando:
$ sudo apt-get install haproxy
Se activa para el inicio editando el script seteando ENABLE en 1:
Figura 9. Archivo haproxy.
-
Se chequea el cambio ejecutando: $ service haproxy
La consola devuelve: Usage: /etc/init.d/haproxy {start|stop|reload|restart|status}
Por lo que el cambio fue implementado correctamente.
Para la configuracin se edita el archivo en /etc/haproxy/haproxy.cfg:
Figura 10. Archivo de configuracin haproxy.
Resta iniciar el balanceador tipeando:
$ service haproxy start
2.5 Servidores Web
Con los siguientes comandos se actualizan los repositorios y posteriormente se
procede a instalar los paquetes de apache, php y mysql. [30]
-
$sudo apt-get update
$sudo apt-get upgrade
$sudo apt-get install apache2
$sudo apt-get install php5
$sudo apt-get install mysql-server
Se configura el servidor HTTP para que maneje virtual hosts: [31]
Figura 11. Archivo de configuracin hosts.
Modificamos los archivos /etc/apache2/sites-avaibles/laryc.conf y miempresa.conf
Figura 12. Archivo de configuracin laryc.conf.
-
Figura 13. Archivo de configuracin miempresa.conf.
Se configura ServerToken y HTTP Trace para que den la menor informacin posible
[35]:
Se debe ocultar la versin de apache y limitar la informacin que el servidor ofrece
acerca de los mdulos de que dispone y el sistema operativo que lo aloja aadiendo
las siguientes lneas en /etc/apache2/conf.d/seurity
ServerTokens Prod
ServerSignature Off
TraceEnable Off
ServerTokens nos permite decidir qu informacin dice el servidor. ServerTokens por
defecto tiene el valor Full como norma de seguridad es recomendable ocultar la
mayor cantidad de informacin posible acerca de la versin de nuestro apache. La
directiva que se encarga de esto es:
ServerTokens Minimal|ProductOnly|OS|Full
Como siempre lo ms importante es ocultar la versin del servidor, de esta forma un
posible atacante tendr que usar una mayor cantidad de ataques para tirar nuestro
sistema, teniendo as nosotros ms posibilidades de detectar el ataque y tomar
medidas.
La variable ServerSignature permite la configuracin del pie de pgina que aparece en
ciertos mensajes generados por el servidor (mensajes de error, salida de mod_info,
etc.). Si se utiliza ServerSignature On, se aade una lnea con el nmero de versin de Apache, el nombre del servidor ServerName, y el email del responsable
ServerAdmin.
-
ServerSignature Off
Disponer del mtodo TRACE habilitado en nuestro servidor Web puede tener
consecuencias negativas. El mtodo TRACE tiene como funcin principal poder
realizar debug del protocolo HTTP.
TraceEnable Off
Figura 14. Archivo de configuracin security
Para configurar el auto mount se modifica el archivo /etc/fstab, agregando al final del
mismo:
93.184.216.6:/srv/www/data /var/www nfs rsize=8192,wsize=8192,
timeo=14,intr
-
Figura 15. Archivo de configuracin security
Para instalar y configurar dos sitios web con wordpress usando como servidor de base
de datos a db1.laryc.efn.uncor.edu:
$sudo wget http://wordpress.org/latest.tar.gz
$sudo mv latest.tar.gz /var/www/
$sudo tar xzf latest.tar.gz
$sudo mv wordpress/* /var/www/
$sudo service apache2 restart
-
3 Seccin de Referencias
2.1 Servidores DNS
[1] Installing master and slave DNS Servers using Bind 9 on Ubuntu 12.04 -
http://www.barlow.eu.com/techblog/installing-master-and-slave-dns-servers-using-
bind-9-on-ubuntu-12-04/ [2] DNS Ubuntu 11 - http://solucioninformaticaes.wordpress.com/2012/12/11/dns-
ubuntu-11/
[3] Formato del archivo de zona - http://dns-
bind9.wikispaces.com/Formato+del+archivo+de+zona
2.2 Servidores Base de Datos
[4] Mount/USB - https://help.ubuntu.com/community/Mount/USB
[5] Incorrect usage of DB GRANT and GLOBAL PRIVILEGES -
http://systemadmin.es/2011/10/incorrect-usage-of-db-grant-and-global-privileges
[6] ARQUITECTURA MAESTRO / MAESTRO EN MYSQL -
http://miguelangelnieto.net/?action=view&url=arquitectura-maestro-maestro-en-
mysql
[7] Mysql5. Replicacin maestro-maestro + SSL + retrasada -
http://luismido.wikidot.com/mysql5-replicacion-maestro-maestro
[8] Configurar arquitectura maestro maestro MySQL para la replicacin de datos -
http://www.digitalvalley.com/blog/configurar-arquitectura-maestro-maestro-mysql-
para-la-replicacion-de-datos/
[9] Configuracin de servicios, servidores, sistemas en general. -
http://panicoenelcpd.blogspot.com.ar/2011/11/configurar-mysql-en-modo-
maestro.html
[10] How To Set Up MySQL Master-Master Replication -
https://www.digitalocean.com/community/articles/how-to-set-up-mysql-master-
master-replication
[11] Cmo crear una base de datos MySQL y dar privilegios a usuarios -
https://blog.infranetworking.com/crear-base-de-datos-mysql-dar-privilegios/
[12] CREAR BASE DE DATOS Y USUARIO EN MYSQL -
http://cjenkins.wordpress.com/2011/02/14/crear-base-de-datos-y-usuario-en-mysql/
[13] 5.7.2. Aadir nuevas cuentas de usuario a MySQL -
http://dev.mysql.com/doc/refman/5.0/es/adding-users.html
[14] 5.7.5. Asignar contraseas a cuentas -
http://dev.mysql.com/doc/refman/5.0/es/passwords.html
[15] 13.4.2.6 STOP SLAVE Syntax - http://dev.mysql.com/doc/refman/5.6/en/stop-
-
slave.html
[16] MySQL [Warning] IP address could not be resolved -
http://serverfault.com/questions/341290/mysql-warning-ip-address-could-not-be-
resolved
[17] Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (38)
- http://stackoverflow.com/questions/5376427/cant-connect-to-local-mysql-server-
through-socket-var-mysql-mysql-sock-38
[18] MySQL Master Master Replication -
http://www.howtoforge.com/mysql_master_master_replication
2.3 Servidores NFS
[19] Ubuntu Linux NFS Server installation and Configuration -
http://www.cyberciti.biz/faq/how-to-ubuntu-nfs-server-configuration-howto/
[20] How to configure NFS on Linux - http://how-to.linuxcareer.com/how-to-
configure-nfs-on-linux
[21] SettingUpNFSHowTo -
https://help.ubuntu.com/community/SettingUpNFSHowTo
[22] Resolved how to check nfs version in linux - http://www.doxer.org/resolved-
how-to-check-nfs-version-in-linux/
[23] What is the use of "root_squah" and "no_root_squash" in NFS -
http://www.linkedin.com/groups/What-is-use-rootsquah-norootsquash-
49301.S.192942962
[24] Captulo 9. Sistema de archivos de red (NFS) - http://web.mit.edu/rhel-
doc/4/RH-DOCS/rhel-rg-es-4/ch-nfs.html
[25] Chapter 19 - Network File System - http://www.brennan.id.au/19-
Network_File_System.html
[26] Network File System - http://es.wikipedia.org/wiki/Network_File_System
2.4 Servidores Balanceador de Carga
[27] How To Use HAProxy to Set Up HTTP Load Balancing on an Ubuntu VPS -
https://www.digitalocean.com/community/tutorials/how-to-use-haproxy-to-set-up-
http-load-balancing-on-an-ubuntu-vps
[28] Install and Configure HAProxy on CentOS/RHEL 5/6 -
http://tecadmin.net/configure-haproxy-on-centosrhel-56/#
[29] HAProxy - http://en.wikipedia.org/wiki/HAProxy
2.5 Servidores Web
[30] Montar un Servidor Web con Ubuntu Server 12.04 -
http://www.pasospara.info/montar-un-servidor-web-con-ubuntu-server-12.04-parte-5.-
-
servidor-web-(lamp).html
[31] Cmo crear un VirtualHost en ubuntu y apache -
http://www.fedesilva.com/blog/2013/04/como-crear-un-virtualhost-en-ubuntu-y-
apache
[32] Instalacin de un servidor web Apache en Ubuntu 12.04 -
http://getupcity.wordpress.com/2012/05/03/instalacion-de-un-servidor-web-apache-
en-ubuntu-12-04/
[33] How To Set Up Apache Virtual Hosts on Ubuntu 12.04 LTS -
https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-
hosts-on-ubuntu-12-04-lts
[34] Cmo instalar un webserver con Apache, PHP5 y WordPress utilizando
Virtual Hosts - http://infoaleph.wordpress.com/2008/05/12/como-apache-php5-
wordpress-virtual-hosts/
[35] Trucos y ejemplos de configuracin del Apache -
http://www.merlos.org/documentos/linux/23-trucos-de-apache.html
[36] introBlog - http://blog.intropedro.com/es/content/apache
[37] Estado de Cross-Site Tracing (XST) - http://www.pentester.es/2010/07/estado-de-
cross-site-tracing-xst.html