informe_tp6.pdf

17
Trabajo Práctico 6: Implementación de servicios de red en GNU/Linux Agüero Barrionuevo, Lucas [email protected] Aguilera, Germán [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 administrarán 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 Introducción Figura 1. Diagrama de la red.

Upload: pedro-ruiz-diaz

Post on 13-Sep-2015

217 views

Category:

Documents


0 download

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