25
Utilizando CentOS como un router Integrantes: Patricio Almonacid César Coliman

CentOS Como Router

Embed Size (px)

Citation preview

Utilizando CentOS como un router

Integrantes: Patricio Almonacid

César Coliman

Máximo Manque

Profesor: Marcelo Soto

Asignatura: Servidores

Introducción

La tecnología es el reflejo del fanatismo del hombre por sobrevivir.

Queremos hacer referencia antes de entrar de lleno en la materia que nos concierne en este informe, que en un principio teníamos grandes dudas sobre los temas que se nos asignaron a saber: utilizar un sistema operativo Linux de libre distribución como un router, implementar seguridad mediante SELinux y utilizar IPTables. A medida que empezamos a estudiar y a desarrollar los temas, nos fuimos dando cuenta de lo poco que sabíamos y lo útil que puede llegar a ser en el campo laboral.

Creemos que la materia a la cual vamos a hacer referencia a continuación debería ser parte integral de la malla de INACAP. A pesar de lo difícil que nos fue encontrar el conocimiento en un mar de opiniones divergentes en internet, logramos rescatar, a nuestro juicio, la mejor manera de implementar estos tópicos en la práctica con máquinas reales.

En este informe vamos a detallar nuestro estudio y la forma de implementarlo paso a paso.

Comenzaremos con las definiciones básicas, entendiendo que no todas las personas saben los términos complejos de la tecnología actual. En definitiva, nuestra misión es explicar con palabras simples, lo difícil.

Sistema Operativo CentOS

CentOS en sus siglas en ingles quiere decir, Community ENTerprise Operating System, este Sistema operativo es una bifurcacion de desarrollo de software, ¿que quiere decir esto?, bueno es la acción de crear un proyecto en una dirección diferente a un proyecto ya existente, por lo tanto Centos es un bifurcación de la distribución Linux Red Hat Enterprise Linux RHEL, compilado por voluntarios a partir del código fuente liberado por Red Hat.

Red Hat Enterprise Linux se compone de software libre y código abierto, pero se publica en formato binario usable (CD-ROM o DVD-ROM) solamente a suscriptores pagados. Como es requerido, Red Hat libera todo el código fuente del producto de forma pública bajo los términos de laLicencia pública general de GNU y otras licencias. Los desarrolladores de CentOS usan ese código fuente para crear un producto final que es muy similar al Red Hat Enterprise Linux y está libremente disponible para ser bajado y usado por el público, pero no es mantenido ni asistido por Red Hat. Existen otras distribuciones también derivadas de los fuentes de Red Hat.

En nuestro trabajo hemos decidido utilizar el Sistema Opertivo Centos para la implmentacion de nuestra infraestructura , pues en el trascurso del año nos asociamos a esta distribución por lo que su uso se nos hizo más fácil.

Objetivo

El objetivo a desarrollar en este trabajo es la operabilidad básica de SELinux, filtros IP y ruteo mediante una máquina cliente.

1) Para poder realizar estos trabajos vamos a instalar dos PC los cuales tendrán instalados cada uno de ellos un sistema operativo CentOS 6.3, los cuales haremos funcionar como routers.

2) Router Linux 1 tendrá habilitada una LAN con un PC virtual en el cual estará corriendo el sistema operativo Windows XP, a este PC se le asignara una IP mediante DHCP. Esto quiere decir que nuestro PC recibirá una IP automáticamente asignada por el router. En este Router Linux 1 habilitaremos NAT mediante IPTables para la conectividad a internet de toda nuestra infraestructura, es decir, actuara como router de borde y como núcleo. Y además crearemos un enrutamiento, o sea, habilitaremos una ruta para llegar a tener conectividad con el router Linux 2 y su LAN.

3) Router Linux 2 tendrá habilitada una LAN con una loopback (LAN virtual que se crea para probar rendimiento en la red y verificar conectividad entre distintas redes y entre routers). Habilitaremos el enrutamiento hacia el router Linux 1 y a su LAN.

4) Se deshabilitará, además, el servicio de SELinux y se implementará IPTables para el bloqueo de tráfico en el Router Linux 1.

Esquema

DHCP

¿Qué es DHCP?

DHCP (sigla en inglés de Dynamic Host Configuration Protocol, en español «protocolo de configuración dinámica de host») es un protocolo de red que permite a los clientes de una red IP obtener sus parámetros de configuración automáticamente. Se trata de un protocolo de tipo cliente/servidor en el que generalmente un servidor posee una lista de direcciones IP dinámicas y las va asignando a los clientes.

Una vez que tenemos instalado CentOS en nuestro Router Linux 1, haremos lo siguiente:

1. Lo primero será estar logeados como root. Esto deberá ser siempre así, para tener los permisos necesarios para modificar y descargar archivos.

2. Antes de instalar DHCP, es necesario actualizar nuestro sistema operativo, para esto ejecutaremos el comando yum update y colocaremos “y” cada vez que sea necesario.

Con esto haremos que se descarguen los archivos y paquetes necesarios para el siguiente paso.

3. Una vez que el sistema se ha actualizado, ejecutaremos el comando yum install dhcp –y. Así, se instalará la última versión de DHCP disponible (4.1.1 en este caso).

Para comprobar si se instaló de manera correcta el DHCP, vamos a ejecutar el comando rpm –q dhcp.

4. Volvemos a la terminal de CentOS y colocamos el siguiente comando:cd /etccd dhcpcp –p /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample dhcpd.confCon esto, lo que haremos será reemplazar el archivo que lleva la configuración del DHCP por defecto y lo editaremos para poder crear nuestra propia configuración.Cuando pregunte si deseamos sobreescribir el archivo, le daremos que si (“s”).

5. Ahora entraremos al archivo dhcpd.conf y lo editaremos mediante el comando vi dhcpd.conf

Ya en el editor y para un trabajo más fácil habilitaremos la numeración de las líneas. Para ello ejecutaremos “Esc + : se nu”.Ahora vamos a configurar los parámetros necesarios, por ahora serán las líneas 7 y 8:

Donde dice “example.org” colocaremos el nombre de nuestro dominio, por ejemplo “pato.local” y “ns1.example.org, ns2.example.org” deberemos reemplazarlo por el DNS que vayamos a ocupar, en nuestro caso será el de INACAP (10.29.64.1).

Es importante señalar que el “;” debe mantenerse al final de cada línea editada.

6. Ahora vamos a editar los parámetros del DHCP:En la línea 46 colocaremos la dirección de nuestra red de trabajo con su respectiva mascara.-En la línea 47, irá el rango de IP que tomaran los PC de nuestra LAN.-En la línea 48 irá un DNS, en este caso será la gateway del router de Inacap al cual estamos conectados a internet, ya que por ejemplo el DNS de Google (8.8.8.8) está bloqueado. Por lo tanto, donde dice “ns1.internal.pato.local” debe ir 10.29.64.1.-En la línea 49 irá el nombre del dominio, o sea “internal.pato.local”. -En la línea 50 irá la IP de nuestro router Linux.-En la línea 51 irá la dirección de broadcast.

7. Mediante el comando setup se configurarán los dispositivos de red. Con lo cual nos saldrá la siguiente ventana:

En esta, elegiremos Configuración de la red y luego Configuración de dispositivos

8. En la siguiente ventana editaremos los parámetros de cada tarjeta de red:

La tarjeta eth0 es nuestra tarjeta de red cableada, en esta colocaremos los datos que habíamos configurado anteriormente en el archivo dhcpd.conf.Primero, mediante la tecla espaciadora, deshabilitaremos la opción de “Usar DHCP”, ya que configuraremos una IP estática.

En “IP Estática” y “IP de la puerta de enlace predeterminada” irá la misma IP de nuestro router Linux con su respectiva mascara. Daremos Aceptar.

Nos saldrá nuevamente el listado de nuestras tarjetas de red. Ahora editaremos la inalámbrica, que es la wlan0.

Acá simplemente deberemos fijarnos que la opción Usar DHCP venga marcada, ya que con esta, recibiremos una IP automática del router de internet.

Daremos Aceptar y saldremos del asistente guardando los cambios.

9. Mediante el comando service network restart reiniciaremos los parámetros de la red. Luego iniciaremos el servicio DHCP mediante el comando service dhcpd restart.Con esto, los PC de nuestra LAN deberían recibir una IP automáticamente al ir a los parámetros de IPv4 en el adaptador de red.

Enrutamiento estático

¿Qué es enrutamiento estático ?

Es el reenvío de datos de una red a través de una ruta fija.

1. Mediante el comando vi /etc/sysctl.conf se editará un valor, con el que lograremos que CentOS funcione como router. Para esto cambiaremos el número 0 que viene por defecto en “net.ipv4.ip_forward=0” y lo dejaremos en 1.

Saldremos del editor y guardaremos mediante “Esc + :wq”.

2. Para agregar las rutas colocaremos los siguientes comandos:route add -net X.X.X.X netmask Y.Y.Y.Y gw Z.Z.Z.Z

Donde:X.X.X.X: es la red de destino.Y.Y.Y.Y: es la mascara de dicha red.Z.Z.Z.Z: es la gateway o siguiente salto.

Con el mando ip route show podremos ver las rutas que hemos agregado.

Es importante aclarar que la red de destino y la mascara pueden ser 0.0.0.0, con esto el enrutamiento estático será por defecto.Si se quiere especificar todo, entonces será simplemente un enrutamiento estático.

Con esto, el enrutamiento estará listo, pero se borrará al reiniciar el computador, por lo que si se quieren conservar las rutas será necesario editar un archivo, para esto, ejecutaremos:cd /etc/sysconfig/network-scripts/vi route-eth1

Y nos saldrá el editor, en el que agregaremos por ejemplo una ruta por defecto y una gateway cualquiera.

Saldremos y guardaremos mediante “Esc + :wq”.

Es importante aclarar que el enrutamiento estático no es el único que existe. Linux también soporta los siguientes enrutamientos dinámicos: OSPFv2; OSPFv3; RIP v1 y v2; RIPng y BGP-4, cuya implementación es mediante la suite de software libre Quagga.

IPTables¿Qué es IPTables?

Es una herramienta de cortafuegos que permite no solamente filtrar paquetes, sino también realizar traducción de direcciones de red (NAT) para IPv4 o mantener registros de log.

Es parte de Netfilter, el que a su vez está disponible en el núcleo y permite interceptar y manipular paquetes de red.

Las reglas tienen un orden, y cuando se recibe o se envía un paquete, las reglas se recorren en orden hasta que las condiciones que pide una de ellas se cumplen en el paquete, y la regla se activa realizando la acción que se le ha especificado.

Tipos de cadenas:-INPUT: Paquetes recibidos para nuestro sistema-FORWARD: Paquetes enrutados a través de nuestro sistema-OUTPUT: Paquetes generados en nuestro sistema y que son enviados

Tipos de acciones:-DROP: eliminar paquete sin informar al remitente-REJECT: eliminar paquete informado error al remitente por defecto.-ACCEPT: paquete aceptado

Comandos útiles:#iptables –F: elimina todas las reglas#iptables –X: elimina la cadena#iptables –L: lista las reglas#iptables –n –L –v - - line-numbers: muestra las reglas enumeradas#iptables –L (OUTPUT|INPUT|FORWARD) –n –v: muestra solo las reglas especificadas# service iptables save: guarda las reglas#service iptables restart: reinicia IPTables para así aplicar los cambios introducidos

Ejemplos:#iptables –P (OUTPUT|INPUT|FORWARD) (DROP|ACCEPT|REJECT): dependiendo de los parámetros a configurar, por ejemplo #iptables –P OUTPUT REJECT rechazará todo el trafico saliente.#iptables -I FORWARD -s 192.168.12.1 -p tcp --dport 443 -j DROP: bloqueará el acceso a páginas HTTPS al host 192.168.12.1# iptables -I FORWARD -s 192.168.4.0/24 -p tcp --dport 80 -j ACCEPT: aceptará el acceso a páginas HTTP a la subred 192.168.4.0

Configurando una regla de IPTables:1. Si queremos denegar el tráfico al puerto 80 y al 443 (HTTP y HTTPS

respectivamente) a un host en específico (el 192.168.12.1), debemos colocar el siguiente comando:

2. Ahora, solo basta con guardar los cambios y reiniciar el servicio de IPTables:

3. Para volver a aceptar el tráfico de ese host en particular a los puertos 80 y 443, simplemente se coloca un ACCEPT en vez de DROP:

4. Volvemos a guardar los cambios y reiniciamos el servicio:

NAT¿Qué es NAT?

NAT (Network Address Translation - Traducción de Dirección de Red) es un mecanismo utilizado por routers IP para intercambiar paquetes entre dos redes que asignan mutuamente direcciones incompatibles. Consiste en convertir, en tiempo real, las direcciones utilizadas en los paquetes transportados.

En nuestro caso, NAT fue necesario para poder darle internet a una LAN creada. Para aplicar NAT es necesario emplear también IP Tables.

1. Lo primero es eliminar las reglas de firewall que vienen por defecto, para esto colocaremos los siguientes comandos:# iptables -F # iptables -t nat -F # iptables -t mangle –F

2. Ahora, eliminaremos las cadenas:

# iptables -X # iptables -t nat -X # iptables -t mangle –X

3. Luego, habilitaremos el FORWARD y el enmascaramiento:

# iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

# iptables -A FORWARD -i eth0 -j ACCEPT

Importante: se debe recalcar que wlan0 es la tarjeta mediante la cual saldremos a internet y eth0 será la tarjeta con la cual nos conectaremos a nuestra LAN.

4. Habilitaremos el reenvio de paquetes en el kernel:# echo 1 > /proc/sys/net/ipv4/ip_forward

4. Para guardar las configuraciones hechas se debe aplicar:# service iptables save

5. Para iniciar el servicio es necesario ejecutar el siguiente comando (también debe aplicarse cada vez que se reinicia el router centOS):# service iptables restart

SELinux

¿Qué es SELinux?

Es un sistema que permite limitar el acceso que tienen las aplicaciones a otras aplicaciones y a los ficheros, impidiendo que un proceso pueda modificar cualquier fichero del usuario con el que se lanzó.

Los modos en SElinux son:

1. Enforcing; el modo por defecto que permitirá o hará cumplir las políticas de seguridad en el sistema, denegando el acceso y registrando las acciones.

2. Permissive; en este modo SElinux está habilitado pero no se aplicara la política de seguridad, solo advertir y registrar las acciones, útil para la resolución de problemas.

3. Disabled; en este modo SElinux se apaga.

Comandos útiles:#sestatus: para revisar la configuración de SELinux.# setenforce x: para cambiar el modo. El “setenforce 0” lo dejará en modo permissive y “setenforce 1” volverá al modo por defecto; enforcing.

Como deshabilitar SELinux:Debemos modificar un archivo que lleva los parámetros de SELinux, para esto se debe colocar vim /etc/selinux/config.

Simplemente debemos cambiar la línea destacada a “SELINUX=disabled”.

Salimos y guardamos con “Esc + :wq”. Luego reiniciamos para que se guarden los cambios.

Como vemos, mediante el comando sestatus, el modo ahora es disabled.

Para volver al modo enforcing, se debe ir nuevamente al archivo anterior y modificar la línea “SELINUX=disabled” por “SELINUX=enforcing”.

ConclusiónAl principio al empezar a desarrollar este trabajo, nos enfrentamos a

muchas dificultades. A continuación damos un detalle de ellas y así mismo, como fuimos encontrando las soluciones.

-Tajetas de red Ethernet : para hacer la presentación de manera mas practica queríamos implementar en cada router Linux una LAN con su propia interfaz de red Ethernet, pero para ello debíamos comprar un tarjeta de red Ethernet con adaptador USB para los notebook, sin embargo debido a su precio no las pudimos comprar asi es que que creamos en el Router 2 una interfaz loopbackY el Router de nucleo lo levantamos en una maquina virtual en window 8 por la pues este sistema operativo da la facilidad en virtual box para administrar tarjetas virtuales, dándonos asi la opción de conectarnos punto a punto con el Router 2 (maquina real) y con una maquina virtual window para dar DHCP y crear una LAN y además conectarnos a internet en modo NAT mediante Wireless

-DHCP: en un principio no consideramos que para implementar este servicio hay que hacer una actualización al sistema CentOS completo, sin esta actualización el servicio no arranca.El segundo problema que se nos presento fue la versión que instalamos, pues cambiaban las rutas respecto a las versiones anteriores, así es que por ello es muy útil actualizar también el servicio.

-DNS: luego de implementado NAT los PC de la LAN podían hacer ping a las IP de los servidores de las páginas web, pero no podían acceder a los dominios. Esto es porque primero no habíamos asignado un DNS y luego cuando colocamos un DNS público (8.8.8.8 de Google) resulta que este estaba bloqueado por INACAP, por lo que tuvimos que utilizar el que esta nos asignaba.

-SELinux: debido al poco material disponible en internet, no pudimos implementar este tópico de la manera en que hubiésemos querido.

Podemos decir que el resultado de este trabajo fue exitoso, debido a que pudimos cumplir los objetivos de buena manera, aunque como dijimos, no exentos de problemas.

El uso de un PC como router puede abaratar costos de manera significativa, ya que no es necesario contar con una maquina “poderosa” para poder emular un enrutador, por lo que conocer los temas desarrollados acá, puede ser de suma ayuda para el futuro en el ámbito laboral.