Proyecto: Creación de un Proxy Transparente en Linux. Miguel Ángel Esteban



Documentos relacionados
Figura 1. Red de ejemplo para DHCP Server

Instalación del servidor DNS bind m2/servidor_dns_bind9.html

PRÁCTICA 1-2: INSTALACIÓN Y ADMINISTRACIÓN DE UN SERVIDOR DNS (PRIMARIO Y ZONA DE RESOLUCIÓN DIRECTA E INVERSA EN WINDOWS 2008 SERVER)

5.2.- Configuración de un Servidor DHCP en Windows 2003 Server

Servidor DHCP. Rocío Alt. Abreu Ortiz

Vielka Mari Utate Tineo Instituto Tecnológico de las Américas ITLA. Profesor José Doñé PRACTICA NO. 13, SERVIDOR DHCP EL SERVIDOR DHCP

Ubuntu Server HOW TO : SQUID. EN ESTE SE REALIZA LO SIGUIENTE: En este how to se le va a enseñar como instalar servidor proxi Squid.

Tipos de conexiones de red en software de virtualizacio n: VirtualBox y VMware

Servidor DNS sencillo en Linux con dnsmasq

'RFXPHQWDFLyQGHODLQVWDODFLyQGHXQ VHUYLGRU/,18;HQHO,(6$O$QGDOXV PLHUFROHV GH PDU]RGH

INSTALACIÓN DE UBUNTU SERVER 12.4 EN MÁQUINA VIRTUAL

[CONFIGURACIÓN DE DNS]

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS

En caso de que el cliente nunca haya obtenido una concesión de licencia de un servidor DHCP:

CÓMO CONFIGURAR DHCP EN SUSE LINUX

Redes de área local: Aplicaciones y servicios WINDOWS

MANUAL DE CONFIGURACION DE BIND 9

SERVIDOR DNS DINÁMICO EN WINDOWS 2000/2003 SERVER.

INSTALACIÓN FIREWALL IPCOP

Redes de área local: Aplicaciones y servicios WINDOWS

Definición de servidor DHCP

Luis Eduardo Peralta Molina Sistemas Operativos Instructor: José Doñe Como crear un Servidor DHCP en ClearOS

Una vez instalada podremos seleccionar los paquetes que deseamos instalar de una lista.

INSTITUTO TECNOLOGICO DE LAS AMERICAS (ITLA) Nombre: Brayhan E. Acosta Hiciano. Matricula: Materia: Sistema Operativo III

TUTORIAL - DHCP. RAFAEL BRITO HERNÁNDEZ ( ) Sistema III-Grupo 1 Profesor: José Doñe

COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX

4.2- Instalación y Configuración de un Servidor DNS Dnsmasq en Ubuntu sin DHCP

Diego Mauricio Cortés Quiroga

Redes Locales: El protocolo TCP/IP

Qué es DHCP? Una herramienta que puede hacer más agradable la vida de los administradores de una red local.

Firewall Firestarter. Establece perímetros confiables.

TUTORIAL INSTALACIÓN Y CONFIGURACIÓN SERVIDOR DNS BIND9 NET-DAEMONS ADRIAN PEÑA JOHAN LOPEZ FELIPE PANIAGUA RICARDO HENAO LINA MCKOLL

Presentación: Nombre: Matrícula: Grupo: Asignatura: Tema: Instructor:

PRÁCTICA DNS- SERVER

INSTALACIÓN DE UBUNTU SERVER 12.4 EN MÁQUINA VIRTUAL

Instalar protocolo, cliente o servicio nuevo. Seleccionar ubicación de red. Práctica - Compartir y conectar una carpeta

WINDOWS : TERMINAL SERVER

Laboratorio de PCs. Práctica 3: Montaje de una red de Área local

Instituto Tecnológico de Las América. Materia Sistemas operativos III. Temas. Facilitador José Doñe. Sustentante Robín Bienvenido Disla Ramirez

DNS. Domain Name System. Sistema de Nombres de Dominio. Administración de Redes de Computadores. Ficha:

Cliente se conecta hacia un Servidor Intermediario (Proxy).

SERVICIOS. UF 1- Servidor DHCP

Roles y Características

Informàtica i Comunicacions Plaça Prnt. Tarradellas, FIGUERES (Girona) Tel Fax

Mini-Prá cticás SAD - Squid

qwertyuiopasdfghjklzxcvbnmqwerty

INSTALACIÓN DE GATEWAYS SIP

CFGM. Servicios en red. Unidad 1 Servicio de nombres de dominio (DNS) 2º SMR Servicios en Red

SISTEMA OPERATIVO GNU/LINUX AVANZADO II JOSE ARRIETA NARVAEZ GUSTAVO CARO JESUS GARCIA NILXON VUELVAS TALLER CONFIGURACION DEL SERVIDOR DNS.

Configuración Servidor DHCP

Instalación y Configuración de un Servidor FTP

Software de Comunicaciones. Práctica 7 - Secure Shell. SSH

Ministerio de Educación,Cultura y Deporte. Aulas en Red. Windows. Módulo 2: Servicios Básicos. DNS

SERVIDRO PROXY SQUID

QUÉ ES UN SERVIDOR Y CUÁLES SON LOS PRINCIPALES TIPOS DE SERVIDORES? (PROXY, DNS, WEB, FTP, SMTP, ETC.) (DV00408A)

Instalación y configuración del servidor DNS Bind

Direcciones IP IMPLANTACIÓN DE SISTEMAS OPERATIVOS 1º ASIR. En redes IPv4.

UNIDAD DIDACTICA 4 INTEGRACIÓN DE CLIENTES WINDOWS EN UN DOMINIO

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

How to. Servidor Proxy Squid

Configuración de una NIC

Guia sobre como instalar un servidor DNS en ubuntu

Ubuntu Server HOW TO : SERVIDOR VPN. EN ESTE SE REALIZA LO SIGUIENTE: En este how to se le va a enseñar como usar vpn. Qué es una VPN?

Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación

COMO INSTALAR Y CONFIGURAR UN SERVIDOR DNS

DNS Domain Name System Sistema de Nombres de Dominio Administración de Redes de Computadores John Deivis Tabares Tobón Luis Fernando Ramirez

Iptables, herramienta para controlar el tráfico de un servidor

Escritorio remoto y VPN. Cómo conectarse desde Windows 7

Práctica 9: Configuración de NAT y DHCP

REQUIERE ATENDER DESCONFIGURACIÓN DEL C.P.U.

Rosahora Vasquez Servidor DNS

Redes de área local Aplicaciones y Servicios Linux Servidor DHCP

SERVICIO DNS EN CENTOS 6.3 Publicado por Beatriz Vergara

Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia

How to Crear Servidor Samba

Guía de uso del Cloud Datacenter de acens

Redes de área local Aplicaciones y Servicios Linux Servidor DNS

GUIA DE LABORATORIO #10 Nombre de la Practica: Proxy y Filtrado web en ClearOS Laboratorio de Redes Tiempo Estimado: 2 Horas y 30 Minutos

P r á c t i c a 1 5. C o n f i g u r a c i ó n d e f i r e w a l l m e d i a n t e i p t a b l e s

Instituto Tecnológico Las Américas (ITLA) Sistemas Operativos 3 (SO3) Daniel Alejandro Moreno Martínez. Matrícula:

Proceso de resolución de un nombre de dominio. Javier Rodríguez Granados

CIF-KM. GUÍA DE LOS PRIMEROS PASOS

Servicios en red. UF 1: Servidor DHCP. Enrutando con virtual box.

SQUID. Universidad Técnica Federico Santa María Casa Central Elo322-Redes de Computadores Profesor Agustín González Primer Semestre 2009

Servicio de configuración de red (DHCP)

El gráfico siguiente muestra un uso básico de DNS, consistente en la búsqueda de la dirección IP de un equipo basada en su nombre.

SISTEMAS DE NOMBRES DE DOMINIO

Escudo Movistar Guía Rápida de Instalación Dispositivos Symbian

HOW TO SOBRE FIREWALL

Paso 1 - Servidor de correo en Ubuntu: Instalar Apache 2

Activación de un Escritorio Remoto

Explotación de Sistemas Informáticos IES Murgi PRÁCTICA 9: SERVICIO WEB Y FTP DE INTERNET INFORMATION SERVICE

Servidor DNS. DNSmasq. Rocío Alt. Abreu Ortiz

Servidores de nombres de dominio (DNS) Jesús Torres Cejudo

Dynamic Host Configuration Protocol (DHCP)

INSTALACIÓN DEL SISTEMA BASE

Tutorial: Primeros Pasos con Subversion

Instalación de FileZilla FTP Server

Laboratorio de Redes y Sistemas Operativos Trabajo Práctico Final

Transcripción:

Proyecto: Creación de un Proxy Transparente en Linux Miguel Ángel Esteban

Proyecto: Creación de un Proxy Transparente en Linux Miguel Ángel Esteban This project can be followed at: https://www.penflip.com/marianitu/proyecto 2014 Miguel Ángel Esteban

Contents 1 Pasos Iniciales 5 Objetivo............................................ 5 Software Utilizado....................................... 6 Instalación de Debian 7.................................... 9 Instalación de Webmin.................................... 10 Administración mediante SSH................................. 12 2 Configuración de la Red 16 El archivo /etc/network/interfaces.............................. 16 Reiniciando los servicios de red................................ 17 Videotutorial.......................................... 17 3 DHCP 18 DHCP Server......................................... 18 Hacer que DHCP escuche sólo a través de una interfaz................... 19 Asignando rangos de IP s a los clientes............................ 19 Reservas IP.......................................... 22 Videotutorial: DHCP..................................... 24 4 Servicio DNS 25 Para qué sirve el servicio DNS?................................ 25 Instalación del servicio DNS.................................. 25 Configurando el servicio DNS................................. 26 El archivo named.conf..................................... 26 Caché DNS, Reenviadores y opciones generales........................ 26 Zonas DNS.......................................... 29 Videotutorial: DNS...................................... 33 5 Squid: Montando un Proxy 34 Introducción: Por qué un Proxy?.............................. 34 Squid: Instalación....................................... 36 Editando Squid.conf...................................... 36 Selección de Puertos..................................... 38 Nombrando roles....................................... 38 Creando una Lista de Acceso................................. 41 Política hasta en Squid: LRU, LFUDA, GDSF........................ 44 3

4 Navegando por los logs de Squid............................... 45 Videtutorial: Squid + IPtables................................ 46 6 IPTables 47 Introducción.......................................... 47 Tipos de peticiones...................................... 47 Nuestro listado de reglas................................... 49 Ejecutar nuestras reglas de iptables al arrancar el equipo.................. 52 Videotutorial: Squid+Iptables................................. 53 Documentación Adicional................................... 53 7 OpenDNS: Filtrado por DNS 54 Introducción.......................................... 54 Hacer que BIND utilice OpenDNS.............................. 54 Hacer que Squid utilice OpenDNS.............................. 55 Configurar los filtros de OpenDNS.............................. 55 Configurando ddclient..................................... 56 Video Tutorial: Un paseo por OpenDNS........................... 56

1 Pasos Iniciales Objetivo La idea de este proyecto es la creación de un Servidor Proxy Transparente basado en Debian Linux y configurado a bajo nivel, es decir, sin ayuda ni asistente alguno. Dicho proxy nos proporcionará las ventajas siguientes: Filtrado: Al pasar todo el tráfico web a través del Proxy, nosotros podremos decidir qué tráfico servir y qué tráfico no servir. Velocidad: Nuestro proxy proporcionará una caché, que hará que no sea necesario descargar más de una vez el mismo recurso de la red. Simplicidad: Al navegar a través de un proxy, normalmente es necesario configurar nuestro navegador con parámetros de IP y puerto del servidor proxy. Esto no es necesario cuando el proxy es transparente, como en nuestro caso. Nuestros usuarios estarán navegando a través de nuestro proxy sin darse cuenta. Para poder tener un proxy caché, deberemos colocar una máquina que corte el tráfico hacia internet, dando paso únicamente al que se necesite. Esa máquina contará con dos interfaces de red, una conectada a Internet o a un Router ADSL y la otra conectada a un Switch, donde se conectarán los equipos cliente. Más o menos tendremos una topología como la de la figura siguiente: 5

6 Software Utilizado Nuestro servidor deberá tener instaladas una serie de herramientas que proporcionen los servicios deseados. Éstas serán: Debian Linux: El Sistema Operativo bajo el que correrá todo nuestro servidor. Se hablará con más detalle en breve. DHCP: Mediante DHCP conseguiremos que los equipos clientes obtengan su configuración de red, es decir dirección IP, Puerta de Enlace, Servidores DNS Será nuestra propio servidor el que realice esta tarea y, para ello, utilizaremos el paquete isc-dhcp-server. Podremos definir rangos de IP, y también podremos realizar reservas IP, reservando una IP concreta a la dirección MAC de un adaptador de red. También podemos utilizar el paquete isc-dhcp-relay en un entorno de enroutado múltiple. En el caso de este proyecto no se dará el caso, aunque se mencionará brevemente su (sencillo) funcionamiento. DNS: Para el tema DNS utilizaremos el paquete de Software Bind9. El servicio DNS permitirá que nuestro servidor pueda resolver Nombres a los clientes de la red. Se creará una Zona DNS llamada casa.local. y nuestro servidor proxy será reconocido dentro de la red interna como

7 trasto.casa.local. Por otra parte las peticiones DNS desconocidas serán redireccionadas a unos forwarders externos (los DNS de Google o los de OpenDNS). Otra de las funciones que nos aportará Bind9 es la posibilida de cachear peticiones DNS, de manera que su resolución en el futuro será mucho más rápida. Servidor Proxy: Es el Software central en nuestro cometido. Utilizaremos Squid, incluído también dentro de los paquetes de Debian Linux. Squid será el software que descargará los elementos web de Internet y se los servirá a nuestros clientes. Así se podrán cachear dichos elementos y servirlos a los clientes de manera más eficiente. Otra de las carácterísticas fundamentales de Squid es el uso de Listas de Control de Acceso (o ACL) que nos permitirá tener un control preciso sobre a qué, cómo, cuándo, dónde podrán acceder nuestros clientes a los recursos web. Obsérvese que no se dice quién eso es debido a que una de las limitaciones de usar un proxy de manera transparente es que no permite autentificación de usuario. Firewall: Nuestro sistema también contará con un CortaFuegos, que en nuestro caso será iptables. IPTables no sólo filtra paquetes, sino que además permite realizar traducción de direcciones de la red (NAT). Será mediante esa traducción con la que nuestro servidor interpretará las peticiones web que reciba (puerto 80) y las redirigirá al puerto que tengamos configurado en nuestro servidor Proxy (puerto 8080 en nuestro caso). Mediante NAT también podemos hacer que nuestro servidor actúe de la misma manera que un router ADSL, aunque teniendo mayor control sobre qué queremos (o no) que entre o salga del/hacia el exterior. Para poder hacer esto deberemos crear una serie de reglas mediante las cuales construiremos unas tablas NAT que serán las que definiran el comportamiento de nuestro servidor como enroutador. Debian Debian es una distribución GNU/Linux creada por el proyecto debian en 1993. Su desarrollo no está supeditado a necesidades empresariales ya que ha sido creado por sus propios usuarios. Está disponible en Internet y se puede explotar comercialmente tanto por particulares como empresas siempre y cuando se respeten los términos de su licencia. Se ha elegido Debian por estar habituado a su uso a lo largo de los años (primera instalación en Junio de 1998) y por ser una distribución Linux en la que se prioriza la seguridad del sistema antes que la incorporación de las últimas versiones de los programas. Existen tres ramas de Debian en función del uso que le queramos dar.

8 Estable: Cuenta con el apoyo del Equipo de Seguridad de Debian y es la recomendada para su uso en producción. La versión actual es La 7.0 Wheezy. Es la que usaremos en este proyecto. Toy History? Sí, los nombres clave de las diferentes versiones de Debian son personajes de la película Toy History. Inestable: Es la rama en la que tiene lugar el desarrollo de Debian, donde aparecerán y las últimas versiones de los paquetes y donde fácilmente nos podremos encontrar con un sistema roto debido a lo poco que se ha probado el sistema. El nombre clave que se le da a esta rama es Sid. sí, el niño inestable que en Toy History se dedicaba a romperlo todo. En Pruebas: También conocida como Testing. En esta versión se encuentran paquetes que han estado previamente en la versión Inestable, pero que contienen muchos menos fallos. Esta versión es muy utilizada como sistema de escritorio para aquellos que buscan tener el software más actualizado, aunque se pierde en estabilidad. De la versión Testing es de la que aparecerá más tarde la futura versión estable, de hecho hay un punto en el que dicha versión se Congela, es decir, no se le añade ninguna funcionalidad más, y se lanza como nueva versión estable.

9 Instalación de Debian 7 Nuestra instalación de Debian se realizará sobre una máquina virtual generada con Virtual Box. A dicha máquina virtual se la dotará de dos intefaces de red, una interna y otra externa con salida a Internet. La interfaz externa será de tipo Puente o Bridged y apuntará a la Interfaz Ethernet o la Interfaz Wifi del equipo sobre el que virtualicemos. Ello dependerá de la situación en la que nos encontremos a la hora de realizar la presentación. La idea con ello es que se pueda obtener acceso a internet a través de dicha interfaz, ya se a través de un router ADSL, otro Proxy o bien un Punto de Acceso Wifi generado desde un teléfono con conectividad 3G. La Interfaz Interna será del tipo Red Interna, introduciendo en el campo Nombre la palabra intnet. Intnet es el nombre del Switch virtual al que estará conectado dicho interfaz de red. Toda máquina virtual a la que dotemos de una interfaz interna de nombre intnet estará conectada al mismo Switch virtual.

10 Dentro del esquema que vimos al principio del capítulo correspondería a esto: Instalación de Webmin Webmin es una herramienta de administración web que permite hacer toda clase de configuraciones sobre una máquina Linux a través de un navegador Web. Su uso es muy sencillo e intuitivo. Aunque nosotros no lo usaremos en nuestro proyecto, ya que todo lo configuraremos a bajo nivel en modo texto, sí que lo instalaremos para que cualquier usuario con los permisos suficientes pueda

11 administrar el sistema sin necesidad de conocer todos los archivos de configuración. Lo primero que hemos de saber es que Webmin no viene incluído dentro de Debian. No hay problema, ya que se puede descargar desde la página Web de Webmin para su posterior instalación. Advertencia En el momento de la confección de éste documento (07/05/2014) la última versión de Webmin era la 1.680. Podría ser que los pasos y/o enlaces actuales no correspondan a los que lees. No obstante la página de Webmin (http://www.webmin.com/deb.html) aparecen los pasos necesarios para hacer hacer una instalación con la versión actual. Descarga e Instalación Lo primero que deberíamos hacer es instalar el paquete de webmin mediante el gestor de descargas wget. Caso de no tenerlo (poco probable porque Debian lo instala por defecto), deberías instalarlo con el comando sudo aptitude install wget. El comando para descargar el paquete de webmin sería el siguiente wget http://prdownloads.sourceforge.net/webadmin/webmin_1.680_all.deb Una vez finalizado el proceso de descarga, se deberían instalar toda una serie de paquetes de los cuales depende webmin y sin los cuales no puede funcionar. Es probable que ya los tengamos instalados, pero no estaría de más ejecutar el comando siguiente para asegurarnos. sudo apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python Hecho esto instalaríamos el paquete webmin que descargamos previamente. Al no instalar desde repositorios utilizaremos el comando dpkg. sudo dpkg install webmin_1.680_all.deb Una vez realizados estos pasos, podremos gestionar nuestra Debian desde la siguiente URL: https://ipserver:10000, donde IPServer será en nuestro caso 172.20.0.1 si accedemos desde una máquina de la red Interna.

12 Administración mediante SSH Cuando tenemos un servidor, lo más normal es acceder a él remotamente. Al tratarse de un entorno en modo texto lo habitual era usar Telnet para esos menesteres, pero al ser un protocolo inseguro, cada vez más se está utilizando más SSH para este fin. Acceder es muy sencillo. Si intentamos desde un sistema Linux/Mac simplemente abriremos una terminal y ejecutaremos este comando ssh -l maec 172.20.0.1 Donde maec será el usuario con el que queremos iniciar sesión y 172.20.0.1 la dirección IP o nombre DNS de nuestro servidor Linux. Si el sistema no nos reconoce el comando, deberíamos instalar el cliente SSH mediante el comando siguiente: sudo aptitude install openssh-client

13 Una vez dentro se nos pedirá la contraseña y podremos trabajar con el equipo como si estuviésemos sentados ante él. Desde una máquina Windows la manera de acceder varía ligeramente, ya que necesitaremos una aplicación cliente que permita conectar con nuestro servidor SSH. La más popular es Putty, y puede ser descargada desde http://www.chiark.greenend.org.uk/ ~sgtatham/putty/download.html Su funcionamiento es extremandamente sencillo. Al abrir se nos pedira los datos (dirección, puerto y protocolo) del servidor al que queramos conectarnos. En el caso de la captura siguiente sería 172.20.0.1 (dirección), SSH (protocolo) y 22 (puerto).

Donde una vez se haya establecido la conexión, nos aparecerá una sesión en modo texto contra el servidor 14

15

2 Configuración de la Red El archivo /etc/network/interfaces Ya tenemos instalado Debian Linux 7 con dos adaptadores de red: eth0: Salida a Internet eth1: Red Interna Por defecto nos quedará eth0 configurado por DHCP y eth1 sin configurar. La idea es cambiar la configuración de manera que eth1 tendrá la IP estática 172.20.0.1 perteneciente a la red 172.20.0.0/24. Para poder configurar esto deberemos editar el archivo /etc/network/interfaces, con un editor de textos como nano, vim, etc Para editar el archivo con nano habá que ejecutar el comando siguiente: sudo nano /etc/network/interfaces Debiendo dejar el contenido del archivo tal y como sigue: 1 2 # This file describes the network interfaces available on your system 3 # and how to activate them. For more information, see interfaces(5). 4 5 # The loopback network interface 6 auto lo 7 iface lo inet loopback 8 9 # Xarxa Externa 10 auto eth0 11 iface eth0 inet dhcp 12 13 # Xarxa Interna 14 auto eth1 15 iface eth1 inet static 16 address 172.20.0.1 17 netmask 255.255.255.0 18 network 172.20.0.0 19 broadcast 172.20.0.255 16

17 A continuación paso a explicar para qué sirve cada una de estas opciones. auto eth1: Hace que la interfaz eth1 se inicialice automáticamente al arrancar el equipo o al reiniciar los servicios de red (sudo service networking restart). iface eth1 inet static: Indica que la interfaz eth1 tendrá una dirección estática. Si en vez de static pusiéramos dhcp, no deberíamos poner indicar más configuraciones en el adaptador ya que la dirección IP se intentaría obtener automáticamente por DHCP. address 172.20.0.1: Asigna la dirección IP 172.20.0.1 al adaptador de res que hayamos inicializado previamente (en este caso eth1). netmask 255.255.255.0: Asigna una máscara de 24 bits a la red eth1. network 172.20.0.0: Indica la dirección de red. broadcast 172.20.0.255: Indica la dirección de difusión de la red. Adicionalmente podríamos introducir la línea gateway 172.20.0.1, que haría que la puerta de enlace del adaptador sea 172.20.0.1, aunque en el caso de este proyecto no se hará uso de ésta opción. Reiniciando los servicios de red Una vez hayamos editado los archivos de configuración, deberemos reiniciar el servicio de red para que el sistema adopte los cambios mediante el comando siguiente: sudo service networking restart Si lo hemos hecho todo bien, ahora nuestra máquina debería ser capaz de responder pings tanto desde la red conectada a eth1 como a la conectada a eth0. Videotutorial A continuación unos videos en los que se muestra de manera práctica cómo hacer todo lo visto a los capítulos anteriores. Instalación de Debian: https://www.youtube.com/watch?v=lh_zowqndqy Configuración Red y de Sudo: https://www.youtube.com/watch?v=ccd_sgmc5be

3 DHCP Lo primero que deberíamos hacer es conseguir que nuestras máquinas de la Red Interna obtengan Dirección IP, Puerta de Enlace y Servidores DNS. De esa manera simplificaremos la configuración de las máquinas cliente haciendo que todas estén integradas en la red y perfectamente configuradas para acceder a Internet. La idea es que todas las máquinas tengan definida como puerta de enlace la dirección IP en la que tendremos instalado nuestro proxy. Para poder disponer disponer de este servicio, usaremos el paquete isc-dhcp-server, correspondiente lal servicio DHCP del ISC (Internet System Consortium). Como no se encuentra instalado por defecto en nuestro sistema, deberemos instalarlo mediante el comando siguiente. sudo aptitude install isc-dhcp-server Dicho servicio se configurará editando el archivo /etc/dhcp/dhcpd.conf, aunque para que los cambios tengan efecto, se deberá reiniciar el servicio dhcp mediante el siguiente comando: sudo service isc-dhcp-server restart Donde sudo: Ejecuta el comando siguiente como administrador service: Comando que indica que queremos hacer algo con un servicio (encenderlo, apagarlo, reiniciarlo ) isc-dhcp-server: Nombre del servicio que queremos apagar, encender, reiniciar, etc en este caso se trata del servidor DHCP. restart: Acción que queremos realizar sobre el servicvio previamente indicado. Con restart reiniciaremos el servicio para que los cambios tengan efecto. Podemos apagar (stop), encender (start), etc Vamos a ver cómo se configuran los diferentes archivos para que nuestro servicio DHCP esté activo. DHCP Server Ya tenemos en marcha nuestro servidor DHCP. Ahora deberemos configurarlo convenientemente para que todo configure como debiera. 18

19 Lo que buscamos en nuestro caso es que se asignen direcciones IP automáticamente sólo a través de la interfaz eth1, es decir, la de la red interna a través de la cual accederán nuestros equipos cliente. A todos los equipos cliente que soliciten dirección IP por DHCP se les pasará la siguiente información: Red: 172.20.0.0 Máscara de Red: 255.255.255.0 (/24) Dirección IP: Entre 172.20.0.10 y 172.20.0.100 Puerta de Enlace: 172.20.0.1 Servidor DNS: 172.20.0.1 Para conseguir todo esto deberemos editar algunos archivos y reiniciar el servicio DHCP. Veamos cómo se hace todo esto. Hacer que DHCP escuche sólo a través de una interfaz Lo primero que hará es hacer que nuestro servidor DHCP sólo escuche peticiones a través de la interfaz de red interna, es decir, eth1. Para ello será necesario editar el archivo /etc/default/isc-dhcp-server con un editor de textos cualquiera, por ejemplo nano sudo nano /etc/default/isc-dhcp-server dentro de dicho archivo deberíamos localizar una cadena con el siguiente contenido: 1 INTERFACES ="" Que deberemos editar dejándola como: 1 INTERFACES =" eth1" Finalmente reiniciaremos el servicio de DHCP para que los cambios surjan efecto. Deberemos ejecutar el comando siguiente: sudo service isc-dhcp-server restart A partir de ahora nuestro servidor DHCP sólo atenderá peticiones recibidas a través de la interfaz eth1. Ahora vamos a configurar nuestro servidor para que sepe interfaz enviar a través de ella. Asignando rangos de IP s a los clientes A continuación configuraremos nuestro servidor DHCP para que vaya asignando los parámetros de red a las máquinas que se conecten a la red local. Todos los parámetros necesarios para llegar a tal fin han de ser introducidos en el archivo /etc/dhcp/dhcpd.conf. Por defecto se nos proporciona un archivo de configuración por defecto, pero yo optaré por crear mi propio archivo de configuración desde cero.

20 cd /etc/dhcp sudo mv dhcpd.conf dhcpd.porsi sudo touch dhcpd.conf Con esto tendremos un archivo de configuración vacío y una copia de seguridad por si hemos metido la pata. Vamos a realizar la configuración en sí. Recordenos qué es lo que queremos que haga nuestro servidor DHCP: Red: 172.20.0.0 Máscara de Red: 255.255.255.0 (/24) Dirección IP: Entre 172.20.0.10 y 172.20.0.100 Puerta de Enlace: 172.20.0.1 Servidor DNS: 172.20.0.1 Para conseguir esto, deberemos editar /etc/dhcp/dhcpd.conf con cualquier editor de textos como nano, vim, emacs Una vez dentro escribiré las siguientes instrucciones. 1 subnet 172.20.0.0 netmask 255.255.255.0{ 2 range 172.20.0.10 172.20.0.100; 3 option routers 172.20.0.1; 4 option domain -name - servers 172.20.0.1; 5 option domain - name " casa. local"; 6 default -lease - time 68000; 7 } Vamos a explicar para qué sirve cada uno de estos comanditos subnet 172.20.0.0 netmask 255.255.255.0 { }: Define una subred 172.20.0.0/24 con máscara 255.255.255.0 y, obviamente, 172.20.0.255 como dirección de difusión. Los parámetros de esa red los definiremos en la zona marcada con puntos suspensivos. Obsérvese que cada parámetro finaliza en un punto y coma (;). range 172.20.0.10 172.20.0.100;: Indica en qué rango se irán asignando IP a los equipos clientes que se vayan conectando. Tal y como aparece el diálogo, se asignarán dinámicamente las direcciones comprendidas entre la 10 y la 100, pudiendo dedicarse el resto de direcciones (de la 1 a la 9 y de la 101 a la 254) a direcciones estáticas. option routers 172.20.0.1;: Con esta linea se indicará cual será la puerta de enlace o Gateway asignado a cada uno de los clientes que nos realicen peticiones dhcp. A nosotros interesa que las máquinas cliente naveguen a través nuestro, es por eso que pondremos la dirección de la máquina Linux como Gateway por defecto. -option donamain-name-servers 172.20.0.1;: En esta línea se indica qué máquina deberán utilizar los equipos cliente como DNS para resolver nombres. Como montaremos un servidor DNS en nuestro mismo equipo, nos pondremos nosotros mismos como servidores DNS. -option domain-name casa.local ;: Sirve para indicar un nombre de domio que el cliente utilizará a la hora de resolver nombres por DNS. -default-lease-time 68000;: Se trata del tiempo en segundos que por defecto tardará el servidor en volver a ofrecer una IP asignada previamente a otro cliente.

21 Una vez introducida esta información reinciaremos el servidor DHCP (sudo service isc-dhcp-server restart) y encenderemos una máquina cliente con el TCP/IP configurado por defecto para ver si es capaz de pillar dirección IP. Vamos a hacerlo con un Windows 8. Este Windows 8 ha sido creado con VirtualBox para acceder a mismo Switch virtual que creamos para nuestra máquina Debian Linux. Tal y como podemos ver en la siguiente figura, se ha dejado toda la configuración por defecto para que busque algún servidor DHCP en la red.

22 Sin embargo si hacemos un ipconfig, veremos que tiene toda la información de red asignada correctamente. Reservas IP Uno de los problemas que nos podemos encontrar con DHCP es que la IP aisignada a un equipo puede variar de una sesión a otra. Este hecho puede ser problemático en entornos donde queremos que ciertas máquinas conserven siempre la misma dirección IP. Para evitar esto exite la caracteristica de reserva IP, que permite que el servidor DHCP se reserve determinadas direcciones IP para asignarselas a determinados ordenadores de la red. Dichos ordenadores serán identificados por el servidor DHCP a través de la dirección MAC del adaptador de red que instalado el equipo, de manera que adaptaremos cada una de esas direcciones IP a cada una de las direcciones MAC. En el caso de nuestra red, vamos a hacer que la dirección IP 172.20.0.254 a la máquina con Windows 8. Siendo una máquina Windows, podremos obtener la MAC del adaptador de red a través del comando ipconfig/all (en linux sería con sudo ifconfig -a, aunque al tratarse de una máquina virtual, también podremos ver la dirección MAC de su adaptador de red a través de la configuración del mismo adaptador dento de VirtualBox.

23 En este caso la dirección MAC del adaptador sería 08:00:27:D5:05:0F, de manera que lo que queremos es que la IP 172.20.0.254 quere reservada al adaptador con MAC 08:00:27:D5:05:0F. La manera para conseguir esto desde nuestro servidor sería la siguiente. Editamos el archivo /etc/dhcp/dhcpd.conf como administrador sudo nano /etc/dhcp/dhcpd.conf y colocaremos en la parte final del mismo las siguientes instrucciones: 1 host windows8 { 2 hardware ethernet 08:00:27: D5:05:0F; 3 fixed - address 172.20.0.254; 4 } Esto lo que hará es que un host, al que llamaremos windows8, de MAC 08:00:27:D5:05:0F, tenga asignada la IP fija 172.20.0.254. Reiniciamos el servicio DHCP (sudo service isc-dhcp-server restart) y probamos a agregar nuestro windows 8 a ver qué IP obtiene esta vez.

24 Como podemos ver, funciona. Ya tenemos resuelto el tema de los parámetros IP, ahora falta tener en marcha la resolución de nombres, pero eso tocará en el capítulo siguiente. Videotutorial: DHCP El siguiente vídeo muestra a grandes rasgos el funcionamiento de DHCP tal y como se ha visto a lo largo de este documento: https://www.youtube.com/watch?v=gpofopi_z98

4 Servicio DNS Para qué sirve el servicio DNS? El objetivo de DNS es la resolución de nombres, es decir, hacer corresponder un nombre fácil de recordar con una dirección IP. En el caso de nuestro proyecto, la máquina que hará de proxy tendrá como dirección IP 172.20.0.1. Sin embargo, como recordar esta dirección va a ser complicado para la mayoría de los usuarios, utilizaremos un servicio DNS que permitirá resolver el nombre trasto.casa.local hacia dicha dirección. De esa manera los usuarios que quieran acceder al proxy podrán hacerlo atacando únicamente a trasto.casa.local. Por ejemplo: En el caso de webmin había que acceder a https://172.20.0.1:10000. Pues bien, tan pronto como configuremos nuestro servicio DNS podremos acceder a él desde cualquie punto de la red simplemente con https://trasto.casa.local:10000. Instalación del servicio DNS Para instalar el servicio DNS sería necesario instalar toda una serie de paquetes que por defecto no vienen instalados en el sistema. El comando para hacer esto sería el siguiente: sudo aptitude install bind9 bind9-doc dnsutils Ahora deberíamos editar el archivo /etc/resolv.conf para que realice las peticiones DNS a través de nuestro propio ordenador (127.0.0.1). Concretamente deberíamos dejarlo como en la captura siguiente: 1 domain casa. local 2 search casa. local 3 nameserver 127.0.0.1 Con esto ya tendríamos todo lo necesario para tener un sistema DNS en marcha. Ahora sólo faltaría configurarlo. 25

26 Configurando el servicio DNS El servicio DNS es gestionado por un ejecutable llamado named cuyo comportamiento podemos configurar editando el archivo /etc/bind/named.conf. Cada vez que realicemos alguna modificación en ese archivo, o en alguno que dependa de él, deberemos reiniciar el servicio DNS para que dichos cambios tengan efecto. Reiniciar el servicio DNS Para reiniciar el servcicio DNS realizaremos el siguiente comando: sudo service bind9 restart De esta manera todos los cambios que hayamos realizado sobre los archivos de configuración de BIND tendrán efecto. El archivo named.conf Como dijimos antes, named.conf es el archivo donde podemos indicar todas las configuraciones a nivel DNS. Sin embargo, lejos de introducir todas las instrucciones allí dentro, realizaremos una serie de includes para poder hacer referencia a archivos externos. De hecho viene así por defecto. Miremos el contenido de este archivo 1 // This is the primary configuration file for the BIND DNS server named. 2 // 3 // Please read / usr/ share/ doc/ bind9/ README. Debian.gz for information on the 4 // structure of BIND configuration files in Debian, * BEFORE* you customize 5 // this configuration file. 6 // 7 // If you are just adding zones, please do that in / etc/ bind/ named. conf. local 8 9 include "/ etc/ bind/ named. conf. options"; 10 include "/ etc/ bind/ named. conf. local"; 11 include "/ etc/ bind/ named. conf. default - zones"; Como podemos ver, se hace referencia a tres archivos: - named.conf.options: Caché, reenviadores y opciones - named.conf.local: Definición de zonas DNS locales - named.conf.default-zones: Definición de zonas por defecto (servidores raíz, localhost, etc ) De estos tres archivos tocaremos los dos primeros, veremos cómo y para qué. Caché DNS, Reenviadores y opciones generales. Como ya sabemos, el servicio DNS se encarga de traducir nombres (p.e. pepelotas.net) a su correspondiente dirección IP. Este proceso, aunque en apariencia rápido, puede demorar un poco. Es

27 por ello por lo que conviene disponer de una cache DNS que nos evite tener que resolver direcciones que ya fueron resueltas en anteriores ocasiones. Una cache DNS guarda localmente los resultados de esa búsqueda para utilización futura, evitando la repetición de búsquedas y aumentando drásticamente la velocidad de las mismas. La configuración generada durante la instalación es perfectamente funcional, no requiere modificaciones. Sin embargo, vamos personalizar la instalación en 2 aspectos principales: vamos a definir a cuáles servidores consultará el nuestro para pedir ayuda en la resolución de nombres, si no es posible hacer esto localmente (forwarders) y vamos a fortalecer algunos aspectos de seguridad. Como forwarders podemos optar por varias hipótesis: podemos utilizar los servidores DNS de nuestro proveedor de acceso a Internet. Nosotros optaremos por una opción muchísimo mejor: los servidores de OpenDNS (http://www.opendns.com/) OpenDNS no sólo provee resoluciones más rápidas, sino también diversos servicios adicionales de seguridad, como filtros de direcciones maliciosos y otros más. Lo único que deberemos saber es que los servidores DNS de OpenDNS (y por tanto, nuestros reenviadores) serán 208.67.222.222 y 208.67.220.220. En el futuro podremos documentarnos a través de su página web para poder configurar todos los filtros y características extra que nos aporta. Para configurar estos parámetros deberíamos editar nuestro archivo named.conf.options procurando que nos quede de la siguiente manera: 1 options { 2 directory "/ var/ cache/ bind"; 3 // If there is a firewall between you and nameservers $ 4 // to talk to, you may need to fix the firewall to all$ 5 // ports to talk. See http:// www.kb. cert. org/ vuls/id/$ 6 7 // If your ISP provided one or more IP addresses for s$ 8 // nameservers, you probably want to use them as forwa$ 9 // Uncomment the following block, and insert the addre$ 10 // the all -0's placeholder. 11 12 forwarders { 13 208.67.222.222; 14 208.67.220.220; 15 }; Por seguridad sólo serán recibidas conexiones por el puerto 53 a través de la interfaz local o la destinada a la red interna (listen-on port 53 { 127.0.0.1; 172.20.0.1; };). Así mismo, sólo serán contestadas las peticiones de resolución que partan del propio puesto o de la red interna (allow-query { 127.0.0.1; 172.20.0.0/24; };). El resto de peticiones DNS será denegadas. De esta manera, nuestro named.conf.options continuará como sigue: 1 listen -on port 53 { 127.0.0.1; 172.20.0.1; }; 2 allow - query { 127.0.0.1; 172.20.0.0/24; }; 3 allow - recursion { 127.0.0.1; 172.20.0.0/24; }; 4 allow - transfer { none; }; Una vez realizados estos cambios, deberemos comprobar que el fichero está correcto. Esto se hace a través del este comando