• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Configuracion de Firewalls e Pasarelas
 

Configuracion de Firewalls e Pasarelas

on

  • 18,030 views

Configuracion de Firewalls e Pasarelas

Configuracion de Firewalls e Pasarelas

Statistics

Views

Total Views
18,030
Views on SlideShare
15,395
Embed Views
2,635

Actions

Likes
11
Downloads
0
Comments
2

10 Embeds 2,635

http://fernandezg.wordpress.com 2504
http://www.aweba.com.ar 37
http://www.slideshare.net 35
http://aweba.itdmf.com 28
http://www.glug.es 24
http://webcache.googleusercontent.com 2
http://translate.googleusercontent.com 2
https://www.google.com.mx 1
url_unknown 1
http://www.techgig.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

12 of 2 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • buenas tardes

    me podrias pasar el link de descarga ya que ese manual me es muy util...
    saludos
    Are you sure you want to
    Your message goes here
    Processing…
  • plz send download link to me . on yograj0021@gmail.com
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Configuracion de Firewalls e Pasarelas Configuracion de Firewalls e Pasarelas Presentation Transcript

    • Configuración de Firewalls y Pasarelas para Internet
    • Índice de contenidos Introducción Pasarelas Firewalls Bridging
    • Introducción
      • Una pasarela (o gateway en inglés):
      • Una pasarela o gateway es un dispositivo, con mas frecuencia un ordenador, que realiza la conversión de protocolos entre diferentes tipos de redes o aplicaciones.
      • En realidad es una puerta de acceso, teniendo lugar una conversión completa de protocolos hasta la capa de aplicación del modelo de referencia OSI.
    • Introducción
      • Una pasarela:
      • Está configurado para dotar a las máquinas de una red local (LAN) conectadas a él de un acceso hacia una red exterior, generalmente realizando para ello operaciones de traducción de direcciones IP (NAT: Network Address Translation).
      193.147.87.0/24 192.168.200.0/24 172.19.32.0/29 IN IN / OUT IN / OUT IN / OUT OUT
    • Introducción
      • Una pasarela:
      • Esta capacidad (NAT) de traducción de direcciones permite aplicar una técnica llamada IP Masquerading (enmascaramiento de IP), usada muy a menudo para dar acceso a Internet a los equipos de una red de área local compartiendo una única conexión a Internet, y por tanto, una única dirección IP externa.
      • Se podría decir que un gateway es un router que conecta dos redes. La dirección IP interna de un gateway a menudo se parece a X.X.X.1.
    • Muchas opciones
    • Galnix
    • Galnix
    • Introducción
      • Un cortafuegos (o firewall en inglés):
      • Elemento de hardware o software.
      • Prevenir algunos tipos de comunicaciones prohibidas según las políticas de red.
      • Configuración dependiendo de las necesidades de la organización.
      • Su modo de funcionar es definido por la recomendación RFC 2979 , la cual define las características de comportamiento y requerimientos de interoperabilidad.
    • Introducción La idea principal de un cortafuegos es crear un punto de control de la entrada y salida de tráfico de una red. eth0 eth1 IN IN OUT OUT OUT OUT
    • Introducción
      • Un cortafuegos correctamente configurado es un sistema adecuado para añadir protección a una instalación informática, pero en ningún caso debe considerarse como suficiente.
      • La Seguridad informática abarca más ámbitos y más niveles de trabajo y protección:
      • Seguridad lógica
      • Seguridad física
      • Seguridad de red
      • Seguridad de contenido
    • Índice de contenidos
      • Pasarelas:
      • Requisitos Hardware (kernel)
      • Configuraciones básicas de red
      • Como se configura una pasarela en GNU/Linux
      • Forwarding - Tablas de rutas
    • Requisitos Hardware
      • Hardware:
      • Podemos instalar una pasarela en multitud de hardware:
      • Intel 486
      • Intel Pentium, Pentium Pro, Pentium II, Pentium III
      • ...
      • Dependemos mucho de:
      • Lo que queremos hacer en la pasarela/firewall (tipo de seguridad)
      • Cantidad de información que va a fluir por la pasarela/firewall
      • Tipo de distribución a instalar
      • Tipo de kernel a instalar: 2.4 - 2.6
      • Network support
      Configurando el kernel
      • Network devices ethernet
      • Existen muchos tipos de tarjetas ethernet, por lo que habrá que seleccionar la correspondiente a la que tengamos.
      • Si tenemos un hardware muy cambiante, los drivers que seleccionemos serán compilados siempre como módulo, nunca como kernel.
      • Hay equipos que tienen la tarjeta de red pero no la utilizan porque utilizan modem. Compilar este driver como un módulo, por si acaso necesito la tarjeta en un futuro.
      • Por supuesto, seleccionar el tipo de red y tarjeta de tu equipo.
      Configurando el kernel
      • Ethernet Network devices
      Configurando el kernel
      • Network Options
      • Existen muchos tipos de protocolos soportados en linux. Todos y cada uno de ellos son controlados por el módulo de red que está dentro del kernel.
      • Podremos configurar pasarelas con VPN, VLANs, Bridges, Seguridad IPSec, IPV6 , ...
      Configurando el kernel
      • Network Options
      Configurando el kernel
      • Network Options – NETFILTER(iptables) – BRIDGE (ebtables)
      • NETFILTER, que es el sistema filtrante de red en Linux se activa en Network Options y se configura en el siguiente menú.
      • BRIDGE, es una tecnología que SOLO está en el kernel v2.6. Para disfrutar de esta en el kernel v2.4 hay que parchearlo.
      Configurando el kernel
      • Network Options – NETFILTER(iptables) – BRIDGE (ebtables)
      Configurando el kernel
      • Las herramientas tradicionales de configuración de red en sistemas GNU/Linux son los programas ifconfig y route.
      • El programa ifconfig funciona con Linux 2.2 y superior y es más poderoso que las herramientas anteriores.
      Configuración de la red
      • Configuración con ifconfig y route
      • # ifconfig
      • eth0 Link encap:Ethernet HWaddr 08:00:46:7A:02:B0
      • inet addr:192.168.0.3 Bcast:192.168.0.255 Mask:255.255.255.0
      • UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
      • RX packets:23363 errors:0 dropped:0 overruns:0 frame:0
      • TX packets:21798 errors:0 dropped:0 overruns:0 carrier:0
      • collisions:0 txqueuelen:100
      • RX bytes:13479541 (12.8 MiB) TX bytes:20262643 (19.3 MiB)
      • Interrupt:9
      • lo Link encap:Local Loopback
      • inet addr:127.0.0.1 Mask:255.0.0.0
      • UP LOOPBACK RUNNING MTU:16436 Metric:1
      • RX packets:230172 errors:0 dropped:0 overruns:0 frame:0
      • TX packets:230172 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0
      • RX bytes:22685256 (21.6 MiB)
      • TX bytes:22685256 (21.6 MiB)
      • # route
      • Kernel IP routing table
      • Destination Gateway Genmask Flags Metric Ref Use Iface
      • 192.168.0.0 * 255.255.0.0 U 0 0 0 eth0
      • default 192.168.0.1 255.255.255.255 UG 0 0 0 eth0
      Configuración de la red
      • Primero deshabilitamos la interfaz.
      • # ifconfig eth0 inet down
      • # ifconfig
      • lo Link encap:Local Loopback
      • ... (no más entradas eth0)
      • # route
      • ... (no más entradas en la tabla de rutas)
      • Luego la habilitamos con la nueva IP y la nueva ruta.
      • # ifconfig eth0 inet up 192.168.0.111 netmask 255.255.0.0 broadcast 192.168.255.255
      • # route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.1 dev eth0
      Configuración de la red
      • RESULTADO:
      • # ifconfig
      • eth0 Link encap:Ethernet HWaddr 08:00:46:7A:02:B0
      • inet addr:192.168.0.111 Bcast:192.168.0.255 Mask:255.255.255.0
      • UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
      • RX packets:0 errors:0 dropped:0 overruns:0 frame:0
      • TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
      • collisions:0 txqueuelen:100
      • RX bytes:0 (0 MiB) TX bytes:0 (0 MiB)
      • Interrupt:9
      • lo Link encap:Local Loopback
      • inet addr:127.0.0.1 Mask:255.0.0.0
      • UP LOOPBACK RUNNING MTU:16436 Metric:1
      • RX packets:0 errors:0 dropped:0 overruns:0 frame:0
      • TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0
      • RX bytes:0 (0 MiB)
      • TX bytes:0 (0 MiB)
      • # route
      • Kernel IP routing table
      • Destination Gateway Genmask Flags Metric Ref Use Iface
      • 192.168.0.0 * 255.255.0.0 U 0 0 0 eth0
      • default 192.168.0.1 255.255.255.255 UG 0 0 0 eth0
      Configuración de la red
      • Los comandos ip equivalentes a los comandos ifconfig y route anteriores son:
      • ip link show
      • ip route list
      • ip link set eth0 down
      • ip addr del dev eth0 local 192.168.0.3
      • ip addr add dev eth0 local 192.168.0.111/16 broadcast 192.168.255.255
      • ip link set eth0 up
      • ip route add dev eth0 to 10.0.0.0/8 src 192.168.0.111 via 192.168.0.1
      • El programa ip muestra la sintaxis de sus comandos cuando se ejecuta con el argumento help.
      • Por ejemplo, ip link help imprime por pantalla :
      • Usage: ip link set DEVICE { up | down | arp { on | off } |
        • dynamic { on | off } |
        • multicast { on | off } | txqueuelen PACKETS |
        • name NEWNAME |
        • address LLADDR | broadcast LLADDR |
        • mtu MTU }
      • ip link show [ DEVICE ] Véase también ip(8).
      Configuración de la red
      • Un sistema GNU/Linux a veces necesita identificarse por su nombre.
      • Para este propósito el kernel guarda el hostname (nombre de la máquina).
      • El script de inicio /etc/init.d/hostname.sh establece el nombre de la máquina durante el arranque (con el comando hostname) usando el nombre almacenado en /etc/hostname.
      • Este archivo únicamente debería contener el nombre de la máquina y no un nombre de dominio completo.
      • Para mostrar el nombre actual de la máquina ejecute hostname sin argumentos.
      Nombre de la máquina
      • La tarea de averiguar las direcciones IP asociadas con un nombre de dominio particular es la función de un sistema de resolución ( resolver ).
      • La forma que el sistema de resolución de la biblioteca C resuelve los nombres viene dada por la línea hosts del archivo de configuración /etc/hosts.conf. Esta línea lista los servicios que deberían usarse para resolver un nombre: por ejemplo, dns, files, nis, nisplus.
      • Si se utiliza el servicio files, el comportamiento del sistema de resolución también viene regido por el archivo de configuración /etc/hosts.
      • Todos los archivos anteriores son estáticos y se pueden editar con su editor favorito.
      Sistema de resolución
      • Si se utiliza el servicio dns, el comportamiento del sistema de resolución también viene dado por el archivo de configuración /etc/resolv.conf.
      • Una de las funciones importantes del archivo resolv.conf consiste en listar las direcciones IP de los servidores de nombres que se contactarán para resolver el nombre.
      • Esta lista a menudo depende del entorno de red que puede cambiar de tanto en tanto mientras la máquina está funcionando.
      • Programas tales como pppd y dhclient son capaces de manipular resolv.conf para añadir y eliminar líneas, pero estas características no siempre funcionan adecuadamente y entran en conflicto entre sí.
      Sistema de resolución
      • La configuración de las interfaces de red se puede automatizar mediante el Protocolo de Configuración Dinámica de Hosts (DHCP).
      • De esta manera, su cortafuegos, router o su ISP de banda ancha puede suministrar direcciones IP y otros parámetros.
      • Para que esto funcione debe instalar uno de los siguientes paquetes:
        • dhcp3-client (versión 3, Internet Software Consortium)
        • dhcpcd (Yoichi Hariguchi y Sergei Viznyuk)
        • pump (Red Hat)
      • pump es sencillo y ampliamente utilizado. dhcp3-client es complejo pero más configurable.
      Configuración con DHCP
      • Configuración a través de archivos:
      • A fin de facilitar la configuración de la red, GNU/Linux proporciona unas herramientas estándares de configuración de red que consiste en los programas ifup, ifdown y el archivo /etc/network/interfaces .
      • ifupdown se programó bajo la suposición que sólo iba a ser utilizado para configurar y desconfigurar las interfaces de red.
      • Para actualizar la configuración de la interfaz haga lo siguiente:
        • # ifdown eth0
        • # vi /etc/network/interfaces
        • # ifup eth0
      Configuración de red
      • Configuración estática
      • Supongamos que desea configurar una interfaz Ethernet que tiene una dirección IP fija 192.168.0.123.
      • Esta dirección comienza con 192.168.0 por lo tanto debe estar en una LAN.
      • Supongamos además que 192.168.0.1 es la dirección de la puerta de enlace de la LAN a Internet.
      • Edite /etc/network/interfaces de modo que incluya un fragmento como el siguiente:
            • iface eth0 inet static
            • address 192.168.0.123
            • netmask 255.255.255.0
            • gateway 192.168.0.1
      Configuración de red
      • Si tiene instalado el paquete resolvconf puede añadir líneas para especificar la información relativa al DNS. Por ejemplo:
          • iface eth0 inet static
          • address 192.168.0.123
          • netmask 255.255.255.0
          • gateway 192.168.0.1
          • dns-search lindodominio.org
          • dns-nameservers 195.238.2.21 195.238.2.22
      • Luego que se activa la interfaz, los argumentos de las opciones dns-search y dns-nameservers quedan disponibles para resolvconf para su inclusión en resolv.conf.
      • El argumento lindodominio.org de la opción dns-search corresponde al argumento de la opción search en resolv.conf.
      • Los argumentos 195.238.2.21 y 195.238.2.22 de la opción dns-nameservers corresponde a los argumentos de las opciones nameserver en resolv.conf.
      • Otras opciones reconocidas son dns-domain y dns-sortlist.
      Configuración de red
      • Para configurar una interfaz usando DHCP edite el /etc/network/interfaces de manera que incluya un fragmento como el siguiente :
        • iface eth0 inet dhcp
      • Para que esto funcione debe tener instalado uno de los clientes DHCP mencionados
      Configuración - IP dinámica
      • Supongamos que eth0 está conectada a Internet con un dirección IP configurada con DHCP y eth1 está conectada a la LAN con una dirección IP estática 192.168.1.1.
      • Edite /etc/network/interfaces de modo que incluya un fragmento similar al siguiente:
          • iface eth0 inet dhcp
          • iface eth1 inet static
          • address 192.168.1.1
          • netmask 255.255.255.0
      Configuración 2 interfaces
      • Usando interfaces virtuales puede configurar una única tarjeta Ethernet para que sea la interfaz de distintas subredes IP.
      • Por ejemplo, supongamos que su máquina se encuentra en una red LAN 192.168.0.x/24. Desea conectar la máquina a Internet usando una dirección IP pública proporcionada con DHCP usando su tarjeta Ethernet existente.
      • Edite /etc/network/interfaces de modo que incluya un fragmento similar al siguiente:
          • iface eth0 inet static
          • address 192.168.0.1
          • netmask 255.255.255.0
          • network 192.168.0.0
          • broadcast 192.168.0.255
          • iface eth0:0 inet dhcp
      • La interfaz eth0:0 es una interfaz virtual. Al activarse también lo hará su padre eth0.
      Interfaces virtuales
      • Al arrancar, el script de init /etc/rcS.d/S40networking ejecuta el comando ifup -a.
      • Esto activa todas las interfaces físicas que aparecen en las secciones auto de /etc/network/interfaces.
      • El arranque se puede considerar como un simple evento hotplug.
      • No obstante, en casi todos los casos uno desea por lo menos que la interfaz de retorno (loopback) lo se active en el arranque. Por lo tanto, asegúrese que /etc/network/interfaces incluya las siguientes líneas:
          • auto lo
          • iface lo inet loopback
      Activación ifaces arranque
      • Tener físicamente 2 interfaces insertadas en el ordenador.
      • Tener todas las interfaces habilitadas (UP) y directamente conectadas a las redes que se quieren unir.
      • Configurar las interfaces de red con IPs de distinto rango. ( definición de gateway ).
      • Probar conectividad entre las 2 redes con el router. (ping)
      Pasarelas - configuración
    • Pasarelas - configuración
    • Pasarelas - configuración
    • Pasarelas - configuración
    • Pasarelas - configuración
    • Forwarding
      • Característica de un sistema de red, que tiene al menos 2 tarjetas de red.
      • Consiste en una comnutación de paquetes entre diferentes redes, según sea esta su tabla de rutas.
      • echo "1" > /proc/sys/net/ipv4/ip_forward
    • Firewalls
      • Introducción
      • Netfilter/Iptables
      • Reglas básicas
      • NAT
      • NAT Reverso - DNAT
      • Qué es un firewall
      • Un firewall es un dispositivo que filtra el tráfico entre redes, como mínimo dos.
      • El firewall puede ser un dispositivo físico o un software sobre un sistema operativo.
      • En general debemos verlo como una caja con DOS o mas interfaces de red en la que se establecen una reglas de filtrado con las que se decide si una conexión determinada puede establecerse o no.
      • Incluso puede ir más allá y realizar modificaciones sobre las comunicaciones, como el NAT.
      • Esa sería la definición genérica, hoy en dia un firewall es un hardware especifico con un sistema operativo o una IOS que filtra el tráfico TCP/UDP/ICMP/../IP y decide si el paquete:
        • Continua.
        • Se modifica
        • Se convierte
        • Se descarta.
      • Para que un firewall entre redes funcione como tal, debe tener al menos dos tarjetas de red.
      Firewalling - Introducción
      • Esta sería la tipología clásica de un firewall:
      • Este es un esquema típico de firewall para proteger una red local conectada a internet a través de un router.
      • El firewall debe colocarse entre el router (con un único cable) y la red local (conectado al switch o al hub de la LAN).
      • Dependiendo de las necesidades de cada red, puede ponerse uno o más firewalls para establecer distintos perímetros de seguridad en torno a un sistema.
      Firewalling
      • Es frecuente también que se necesite exponer algún servidor a internet (como es el caso de un servidor web, un servidor de correo, etc..), y en esos casos obviamente en principio se debe aceptar cualquier conexión a ellos.
      • Lo que se recomienda en esa situación es situar ese servidor en lugar aparte de la red, el que denominamos DMZ o zona desmilitarizada.
      • En la zona desmilitarizada se pueden poner tantos servidores como se necesiten.
      • Con esta arquitectura, permitimos que el servidor sea accesible desde internet de tal forma que si es atacado y se gana acceso a él, la red local sigue protegida por el firewall.
      • El firewall tiene entonces tres entradas:
      Firewalling
      • Los firewalls se pueden usar en cualquier red. Es habitual tenerlos como protección de internet en las empresas, aunque ahí también suelen tener una doble función:
        • Controlar los accesos externos hacia dentro y también los internos hacia el exterior.
        • A través de un proxy (que también utilizan reglas, aunque de más alto nivel).
      • También, en empresas de hosting con muchos servidores alojados lo normal es encontrarnos uno o más firewalls ya sea filtrando toda la instalación o parte de ella:
      Firewalling
    • Firewalling
      • Sea el tipo de firewall que sea, generalmente no tendrá mas que un conjunto de reglas en las que se examina el origen y destino de los paquetes del protocolo tcp/ip.
      • En cuanto a protocolos es probable que sean capaces de filtrar muchos tipos de ellos, no solo los tcp, también los udp, los icmp, los gre y otros protocolos vinculados a vpns.
      • Este podría ser (en pseudo-lenguaje) un el conjunto de reglas de un firewall del primer gráfico:
      • Politica por defecto ACEPTAR. Todo lo que venga de la red local al firewall ACEPTAR Todo lo que venga de la ip de mi casa al puerto tcp 22 ACEPTAR Todo lo que venga de la ip de casa del jefe al puerto tcp 1723 ACEPTAR Todo lo que venga de hora.rediris.es al puerto udo 123 ACEPTAR Todo lo que venga de la red local y vaya al exterior ENMASCARAR Todo lo que venga del exterior al puerto tcp 1 al 1024 DENEGAR Todo lo que venga del exterior al puerto tcp 3389 DENEGAR Todo lo que venga del exterior al puerto udp 1 al 1024 DENEGAR
      Firewalling
      • En definitiva lo que se hace es:
        • Habilita el acceso a puertos de administración a determinadas IPs privilegiada.
        • Enmascara el trafico de la red local hacia el exterior (NAT, una petición de un pc de la LAN sale al exterior con la ip pública), para poder salir a internet.
        • Solo permitir el tráfico entrante si se ha CREADO/ESTABLECIDO ANTERIORMENTE -> RELATED, ESTABLISHED
      • Hay dos maneras de implementar un firewall:
        • Política por defecto ACEPTAR: en principio todo lo que entra y sale por el firewall se acepta y solo se denegará lo que se diga explícitamente.
        • Política por defecto DENEGAR: todo esta denegado, y solo se permitirá pasar por el firewall aquellos que se permita explícitamente.
      Firewalling
      • Por ejemplo, si queremos proteger una máquina linux, podemos hacer un netstat -natup | grep LISTEN y así, saber que puertos están abiertos, poner reglas para proteger esos puertos y ya está.
      • ¿Para qué vamos a proteger un puerto que realmente nunca se va a abrir?
      • El único problema que podemos tener es que no controlemos que es lo que esta abierto, o que en un momento dado se instale un software nuevo que abra un puerto determinado, o que no sepamos que determinados paquetes ICMP son peligrosos.
      • Si la política por defecto es ACEPTAR y no se protege explícitamente, nos la estamos jugando un poco.
      Firewalling
      • En cambio, si la política por defecto es DENEGAR, a no ser que lo permitamos explícitamente, el firewall se convierte en un auténtico MURO infranqueable.
      • El problema es que es mucho más difícil preparar un firewall así, y hay que tener muy claro como funciona el sistema (sea iptables o el que sea) y que es lo que se tiene que abrir sin caer en la tentación de empezar a meter reglas super-permisivas.
      • Esta configuración de firewall es la recomendada, aunque no es aconsejable usarla si no se domina mínimamente el sistema.
      • Uno de los objetos principales de este documento es mostrar la forma de crear este tipo de firewalls.
      Firewalling
      • IMPORTANTE
      • El orden en el que se ponen las reglas de firewall es determinante.
      • Normalmente cuando hay que decidir que se hace con un paquete se va comparando con cada regla del firewall hasta que se encuentra una que le afecta (match), y se hace lo que dicte esta regla (aceptar o denegar); después de eso NO SE MIRARÁN MÁS REGLAS para ese paquete.
      • ¿Cuál es el peligro? Si ponemos reglas muy permisivas entre las primeras del firewall, puede que las siguientes no se apliquen y no sirvan de nada.
      Firewalling
      • Netfilter es un sistema de firewall vinculado al kernel de linux que se ha extendido enormemente a partir del kernel 2.4 de este sistema operativo.
      • ¿Cómo se pone en marcha?
      • Realmente lo que se hace es aplicar reglas.
      • Se ejecuta el comando iptables , con el que añadimos, borramos, o creamos reglas.
      • Por ello un firewall de iptables no es sino un simple script de shell en el que se van ejecutando las reglas de firewall.
      • Se puede implementar un script de inicio en /etc/rc.d/INIT.d (o /etc/INIT.d ) con el que hagamos que iptables se "inicie o pare" como un servidor más.
      • Lo podemos hacer nosotros o es probable que venga en la distribución (como en redhat por ejemplo).
      Firewalling - Netfilter
      • ¿Cómo se pone en marcha?
      • Una máquina linux con soporte para iptables , tiene reglas aplicadas y empiezan a llegar/salir/pasar paquetes.
      • Las reglas de firewall están a nivel de kernel, y al kernel lo que le llega es un paquete y tiene que decidir que hacer con él.
      • El kernel lo que hace es, dependiendo si el paquete es para la propia maquina o para otra maquina, consultar las reglas de firewall y decidir que hacer con el paquete según mande el firewall.
      Firewalling - Netfilter
    • Firewalling - Netfilter
        • Este es el camino que seguiría un paquete en el kernel
      • Como se ve en el gráfico, básicamente se mira si el paquete esta destinado a la propia maquina o si va a otra.
      • Para los paquetes (o datagramas, según el protocolo) que van a la propia maquina se aplican las reglas INPUT y OUTPUT, y para filtrar paquetes que van a otras redes o maquinas se aplican simplemente reglas FORWARD.
      • INPUT, OUTPUT y FORWARD son los tres tipos de reglas de filtrado. Pero antes de aplicar esas reglas es posible aplicar reglas de NAT: estas se usan para hacer redirecciones de puertos o cambios en las IPs de origen y destino.
      • E incluso antes de las reglas de NAT se pueden meter reglas de tipo MANGLE, destinadas a modificar los paquetes; son reglas poco conocidas y es probable que no las usen.
      • Por tanto tenemos tres tipos de reglas en iptables:
        • MANGLE.
        • NAT: reglas PREROUTING, POSTROUTING
        • FILTER: reglas INPUT, OUTPUT, FORWARD.
      Firewalling - Netfilter
      • Muy bien, tenemos una máquina linux pinchada en internet y queremos protegerla con su propio firewall
      • Lo único que tenemos que hacer es crear un script de shell en el que se van aplicando las reglas. Los scripts de iptables pueden tener este aspecto:
      • Descripción de que estamos haciendo (echo) Borrado de las reglas aplicadas actualmente (flush) Aplicación de políticas por defecto para INPUT, OUPUT, FORWARD
      • Ojo con el orden de las reglas!
      Firewalling - Scripts
      • #!/bin/sh
      • echo -n Aplicando Reglas de Firewall...
      • ## FLUSH de reglas iptables -F iptables -X iptables -Z iptables -t nat –F
      • ## Establecemos politica por defecto iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT
      • ## Empezamos a filtrar
      • # El localhost se deja (por ejemplo conexiones locales a mysql) iptables -A INPUT -i lo -j ACCEPT
      • # A nuestra IP le dejamos todo iptables -A INPUT -s 195.65.34.234 -j ACCEPT
      • # A un colega le dejamos entrar al mysql para que mantenga la BBDD iptables -A INPUT -s 231.45.134.23 -p tcp --dport 3306 -j ACCEPT
      • # A un diseñador le dejamos usar el FTP iptables -A INPUT -s 80.37.45.194 -p tcp -dport 20:21 -j ACCEPT
      • # El puerto 80 de www debe estar abierto, es un servidor web. iptables -A INPUT -p tcp --dport 80 -j ACCEPT
      • # Y el resto, lo cerramos iptables -A INPUT -p tcp --dport 20:21 -j DROP iptables -A INPUT -p tcp --dport 3306 -j DROP iptables -A INPUT -p tcp --dport 22 -j DROP iptables -A INPUT -p tcp --dport 10000 -j DROP
      • echo " OK . Verifique que lo que se aplica con: iptables -L -n"
      • # Fin del script
      Firewalling – Scripts
      • ¿Qué es lo que hace falta?
      • Obviamente, una regla que haga NAT hacia fuera (enmascaramiento en iptables), con lo que se haría dos veces NAT en el firewall y en el router.
      • Entre el router y el firewall lo normal es que haya una red privada (192.168.1.1 y 192.168.1.2 por ejemplo), aunque dependiendo de las necesidades puede que los dos tengan IP pública.
      • El router se supone que hace un NAT completo hacia dentro (quizá salvo puerto 23), o sea que desde el exterior no se llega al router si no que de forma transparente se "choca" contra el firewall.
      • Lo normal en este tipo de firewalls es poner la política por defecto de FORWARD en denegar (DROP), pero eso lo vemos más adelante.
      Firewalling – Scripts (NAT)
        • #!/bin/sh
        • # Con esto permitimos hacer forward de paquetes en el firewall, o sea # que otras máquinas puedan salir a traves del firewall. echo 1 > /proc/sys/net/ipv4/ip_forward
        • echo -n Aplicando Reglas de Firewall...
        • ## FLUSH de reglas iptables -F iptables -X iptables -Z iptables -t nat –F
        • ## Establecemos politica por defecto iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT
        • ## Empezamos a filtrar ## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN # El localhost se deja (por ejemplo conexiones locales a mysql) /sbin/iptables -A INPUT -i lo -j ACCEPT
        • # Al firewall tenemos acceso desde la red local iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT
        • # Ahora hacemos enmascaramiento de la red local # y activamos el BIT DE FORWARDING (imprescindible!!!!!) iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE
        • ## Y ahora cerramos los accesos indeseados del exterior: # Nota: 0.0.0.0/0 significa: cualquier red
        • # Cerramos el rango de puerto bien conocido iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -p udp -dport 1:1024 -j DROP
        • # Cerramos un puerto de gestión: webmin iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 10000 -j DROP
        • echo " OK . Verifique que lo que se aplica con: iptables -L -n"
        • # Fin del script
      Firewalling – Scripts (NAT)
      • Con iptables se pueden hacer muchas cosas diferentes.
      • Tres cadenas de uso interno: INPUT, OUTPUT y FORWARD, que no se pueden borrar.
      • Veamos las operacioes que se pueden hacer en todas las cadenas:
        • Crear una nueva cadena (-N).
        • Borrar una cadena vacía (-X).
        • Cambiar la política de una cadena de uso interno (-P).
        • Listar las reglas de una cadena (-L).
        • Vaciar de reglas una cadena (-F).
        • Poner a cero los contadores de paquetes y bytes de todas las reglas de una cadena (-Z).
      Firewalling – Iptables
      • Las reglas de una cadena se pueden manipular de varias maneras:
        • Añadir una nueva regla a una cadena (-A).
        • Insertar una nueva regla en alguna posición de la cadena (-I).
        • Mover una regla a otra posición dentro de una cadena (-R).
        • Borrar una regla de un sitio en particular de una cadena (-D).
        • Borrar la primera regla que coincida con los parámetros dados en una cadena (-D).
      Firewalling – Iptables
      • Especificar las direcciones IP de Origen y Destino
      • Las direcciones IP de origen («-s», «--source», o «--src») y destino («-d», «--destination», o «--dst») se pueden especificar de cuatro maneras .
      • La más común es usar el nombre completo, tal como «localhost» o «www.linuxhq.com».
      • La segunda manera es especificar la dirección IP, como «127.0.0.1».
      • Las tercera y cuarta maneras permiten especificar un grupo de direcciones IP, como «199.95.207.0/24» o «199.95.207.0/255.255.255.0».
      • Ambas especifican cualquier dirección entre 199.95.207.0 y 199.95.207.255, ambas inclusive; los dígitos tras la «/» dicen qué partes de la dirección IP son significativas.
      • «/32» o «/255.255.255.255» es la opción por defecto (coincide con toda la dirección IP). Para especificar cualquier dirección IP, se debe usar «/0», de esta manera:
          • # iptables -A INPUT -s 0/0 -j DROP
      • Se usa rara vez, ya que el efecto que se consigue en esta regla es lo mismo que si no se especificase la opción «-s».
      Firewalling – Opciones
      • Especificar una inversión
      • Hay muchos indicadores, como «-s» (o «--source») y «-d» («--destination») cuyos respectivos argumentos pueden ir precedidos por «!» (se pronuncia «not» o «no»), para que coincidan con direcciones que NO sean iguales a las proporcionadas.
      • Por ejemplo, «-s ! localhost» coincide con cualquier paquete que no venga de localhost.
      • Especificar el protocolo
      • Se puede especificar el protocolo con el indicador «-p» (o «--protocol»).
      • El protocolo puede ser un número (si sabe los valores numéricos) o un nombre en el caso especial de «TCP», «UDP» o «ICMP».
      • No importa si lo pone en mayúscula o minúscula; «tcp» valdrá lo mismo que «TCP».
      • El nombre de protocolo puede ir prefijado de una «!», para invertirlo, de manera que «-p ! TCP» especifica paquetes que no sean TCP.
      Firewalling – Opciones
      • Especificar la Interfaz
      • Las opciones «-i» (o «--in-interface») y «-o» (o «--out-interface») especifican el nombre de una interfaz con la que coincidir.
      • Una interfaz es el dispositivo físico por el que entra («-i») o sale («-o») un paquete.
      • Puede usar la orden ifconfig para obtener una lista de las interfaces que están «up» (esto es, funcionando en ese momento).
      • Los paquetes que pasan por la regla INPUT no tienen un interfaz de salida, con lo que nunca se activará una regla de esta cadena que use «-o». De forma similiar, los paquetes que atraviesan OUTPUT no tienen interfaz de salida, de manera que ninguna regla que use «-i» en esta cadena funcionará.
      • Sólo los paquetes que pasan por la cadena FORWARD tienen a la vez interfaz de entrada y de salida.
      Firewalling – Opciones
      • La coincidencia (match) State
      • El criterio de coincidencia más útil vienen proporcionado por la extensión «state», que interpreta el análisis de seguimiento de conexión del módulo «ip_conntrack».
      • Especificar «-m state» permite una opción «--state» adicional, que es una lista separada de estados a buscar (el indicador «!» especifica que no se desea buscar esos estados).
      • Los estados son:
      • NEW
        • Paquete que crea una nueva conexión.
      • ESTABLISHED
        • Paquete que pertenece a una conexión existente (esto es, que tuvo paquetes de respuesta).
      • RELATED
        • Paquete que está relacionado a una conexión existente, pero que no es parte de ella, como un error ICMP o (con el módulo de FTP insertado), un paquete que establece una conexión de datos ftp.
      • INVALID
        • Paquete que no pudo ser identificado por alguna razón: incluye quedarse sin memoria y errores ICMP que no corresponden a ninguna conexión conocida. Normalmente estos paquetes deberían ser descartados.
      Firewalling – Opciones
      • Ahora queremos compartir algún servicio pero de un servidor que tenemos dentro de la red local, por ejemplo el IIS de un servidor windows2000, y además permitir la gestión remota por terminal server para esta máquina para una empresa externa.
      • En este caso lo que hay que hacer es un redirección de puerto. Antes de iptables esto se podía hacer fácilmente con un servidor como rinet.
      • Rinet lo que hace es simplemente abrir un puerto en el firewall y al conectarse a él te lleva hasta el puerto de otra máquina, como una tubería.
      • Con Iptables podemos hacer redirecciones con una ventaja: no perdemos la información de IP origen, cosa que con rinet sí ocurría.
      • En fin, veamos la configuración, con las nuevas reglas de DNAT:
      Firewalling – DNAT
      • #!/bin/sh
      • # Con esto permitimos hacer forward de paquetes en el firewall, o sea # que otras máquinas puedan salir a traves del firewall. echo 1 > /proc/sys/net/ipv4/ip_forward
      • echo -n Aplicando Reglas de Firewall...
      • ## FLUSH de reglas iptables -F iptables -X iptables -Z iptables -t nat -F
      • ## Establecemos politica por defecto iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT
      • ## Empezamos a filtrar
      • ## REDIRECCIONES
      • # Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos # a una maquina interna iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.10.12:80
      • # Los accesos de un ip determinada a Terminal server se redirigen e esa # maquina iptables -t nat -A PREROUTING -s 221.23.124.181 -i eth0 -p tcp --dport 3389 -j DNAT --to 192.168.10.12:3389
      Firewalling – DNAT
      • ## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN # El localhost se deja (por ejemplo conexiones locales a mysql) iptables -A INPUT -i lo -j ACCEPT
      • # Al firewall tenemos acceso desde la red local iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT
      • ## Abrimos el acceso a puertos de correo
      • # Abrimos el puerto 25, hay que configurar bien el relay del servidor SMTP iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 25 -j ACCEPT
      • # Abrimos el pop3 iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 110 -j ACCEPT
      • # Y abrimos el puerto pptpd para la ip del adsl de casa del jefe iptables -A INPUT -s 211.45.176.24 -p tcp --dport 1723 -j ACCEPT
      Firewalling – DNAT
      • ## Ahora con regla FORWARD filtramos el acceso de la red local ## al exterior. Como se explica antes, a los paquetes que no van dirigidos al ## propio firewall se les aplican reglas de FORWARD
      • # Aceptamos que vayan a puertos 80 iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 80 -j ACCEPT
      • # Aceptamos que vayan a puertos https iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 443 -j ACCEPT
      • # Aceptamos que consulten los DNS iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 53 -j ACCEPT iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p udp --dport 53 -j ACCEPT
      • # Y denegamos el resto. Si se necesita alguno, ya avisaran iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -j DROP
      • # Ahora hacemos enmascaramiento de la red local # previa activación del BIT DE FORWARDING (imprescindible!!!!!) iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE
      • # Fin del script
      Firewalling – DNAT
    • Requisitos Hardware
      • Hardware:
      • Podemos instalar una pasarela en multitud de hardware:
      • Intel 486
      • Intel Pentium, Pentium Pro, Pentium II, Pentium III
      • ...
      • Dependemos mucho de:
      • Lo que queremos hacer en la pasarela/firewall (tipo de seguridad)
      • Cantidad de información que va a fluir por la pasarela/firewall
      • Tipo de distribución a instalar
      • Tipo de kernel a instalar: 2.4 - 2.6
    • Índice de contenidos
      • Bridging:
      • Introducción
      • Requisitos Hardware
      • Como se configura un bidge en GNU/Linux
      • ARP Forwarding
      • Script
      • Los puentes segmentan el tráfico LAN transfiriendo el tráfico remoto y filtrando el tráfico local.
      • Los puentes aprenden la situación de cada dispositivo en las LAN y construyen una tabla de direcciones. Esta tabla se usa para determinar cuándo transmitir trafico entre los segmentos LAN.
      • Transfiriendo tráfico LAN inteligentemente, cada LAN se segmenta de las otras. El tráfico LAN local permanece en su propio segmento y no es retransmitido por el puente a otros segmentos, lo que mejoran la eficacia y prestaciones de toda la LAN.
      • Los puentes operan en la Capa de Enlace de Datos (2) del modelo OSI, lo que los hace completamente transparentes al tipo de protocolos usados en los segmentos LAN.
      Bridging - Introducción
    • Bridging - Introducción
      • ¿Cómo puede detectar el puente cuál es el tráfico local y cuál no lo es?
      • La respuesta es la misma que podría dar el servicio postal cuando se le pregunta cómo sabe cuál es el correo local.
      • Verifica la dirección local.
      • Cada dispositivo de networking tiene una dirección MAC exclusiva en la NIC, el puente rastrea cuáles son las direcciones MAC que están ubicadas a cada lado del puente y toma sus decisiones basándose en esta lista de direcciones MAC.
      Bridging - Introducción
      • Un switch, se denomina puente multipuerto, así como el hub se denomina repetidor multipuerto.
      • La diferencia entre el hub y el switch es que los switches toman decisiones basándose en las direcciones MAC y los hubs no toman ninguna decisión.
      • Como los switches son capaces de tomar decisiones, hacen que la LAN sea mucho más eficiente.
      • Los switches hacen esto conmutando los datos sólo hacia el puerto al que está conectado el host destino apropiado.
      Bridging - Switch
    • Bridging - Switch
    • Bridging - Switch
    • Requisitos Hardware
      • Hardware:
      • Podemos instalar una bridge en multitud de hardware:
      • Intel 486
      • Intel Pentium, Pentium Pro, Pentium II, Pentium III
      • ...
      • Dependemos mucho de:
      • Cantidad de información que va a fluir por el bridge
      • Sólo funciona en el kernel 2.6, 2.4 o 2.2 con parches
      • Instalar el paquete bridge-utils
    • # brctl commands: addbr <bridge> add bridge (1) addif <bridge> <device> add interface to bridge (2) delbr <bridge> delete bridge (3) delif <bridge> <device> delete interface from bridge (4) show show a list of bridges (5) showbr <bridge> show bridge info (6) showmacs <bridge> show a list of mac addrs (7) setageing <bridge> <time> set ageing time (8) setbridgeprio <bridge> <prio> set bridge priority (9) setfd <bridge> <time> set bridge forward delay (10) setgcint <bridge> <time> set garbage collection interval (11) sethello <bridge> <time> set hello time (12) setmaxage <bridge> <time> set max message age (13) setpathcost <bridge> <port> <cost> set path cost (14) setportprio <bridge> <port> <prio> set port priority (15) stp <bridge> <state> {dis,en}able stp (16) Bridging - Comandos
    • # brctl addbr mibridge1 # brctl stp mibridge1 off -> desabilitar opción spanning tree protocol # ifconfig eth0 down -> bajamos la interfaz para borrar configuraciones # ifconfig eth0 0.0.0.0 up -arp -> habilitamos interfaz modo promiscuo # ifconfig eth1 down # ifconfig eth1 0.0.0.0 up -arp # brctl addif mibridge1 eth0 -> añadimos interfaces al bridge # brctl addif mibridge1 eth1 -> añadimos interfaces al bridge # ifconfig mibridge1 0.0.0.0 up -arp # brctl show bridge name bridge id stp enabled interfaces mibridge1 8000.00105ade368a no eth0 eth1 Bridging - Comandos
    • mibridge1 Link encap:Ethernet HWaddr 00:10:5A:DE:36:8A UP BROADCAST RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:29431886 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:2292971244 (2.1 GiB) TX bytes:0 (0.0 b) eth0 Link encap:Ethernet HWaddr 00:E0:7D:9A:77:EB UP BROADCAST RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:1177453418 errors:89 dropped:747 overruns:67 frame:0 TX packets:803197123 errors:0 dropped:0 overruns:8 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2253367088 (2.0 GiB) TX bytes:2649549007 (2.4 GiB) Interrupt:10 Base address:0x6500 eth1 Link encap:Ethernet HWaddr 00:10:5A:DE:36:8A UP BROADCAST RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:803504797 errors:0 dropped:0 overruns:37 frame:0 TX packets:1161554958 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2691578187 (2.5 GiB) TX bytes:3973246327 (3.7 GiB) Interrupt:9 Base address:0x6600 eth2 Link encap:Ethernet HWaddr 00:10:4B:50:AD:16 inet addr:193.147.87.182 Bcast:193.147.87.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:21430860 errors:0 dropped:0 overruns:0 frame:0 TX packets:55023 errors:0 dropped:0 overruns:0 carrier:1 collisions:180 txqueuelen:1000 RX bytes:1517793836 (1.4 GiB) TX bytes:9440840 (9.0 MiB) Interrupt:11 Base address:0x6700 Bridging - Comandos
    • # brctl showbr mybridge1 mybridge1 bridge id 8000.00105ade368a designated root 8000.00105ade368a root port 0 path cost 0 max age 4.00 bridge max age 4.00 hello time 1.00 bridge hello time 1.00 forward delay 4.00 bridge forward delay 4.00 ageing time 300.00 gc interval 4.00 hello timer 0.84 tcn timer 0.00 topology change timer 0.00 gc timer 1.84 flags eth0 (1) port id 8001 state forwarding designated root 0000.0800062815f6 path cost 100 designated bridge 0000.0800062815f6 message age timer 0.00 designated port 8001 forward delay timer 0.00 designated cost 0 hold timer 0.84 flags eth1 (2) port id 8002 state forwarding designated root 0000.0800062815f6 path cost 100 designated bridge 0000.0800062815f6 message age timer 0.00 designated port 8002 forward delay timer 0.00 designated cost 0 hold timer 0.84 flags Bridging - Comandos
    • # brctl showmacs mibridge1 port no mac addr is local? ageing timer 1 00:10:4b:b6:c6:e4 no 119.25 1 00:50:04:43:82:85 no 0.00 1 00:50:da:45:45:b1 no 76.75 1 00:a0:24:d0:4c:d6 yes 0.00 1 00:a0:24:f0:22:71 no 5.81 1 08:00:09:b5:dc:41 no 22.22 1 08:00:09:fb:39:a1 no 27.24 1 08:00:09:fc:92:2c no 53.13 4 08:00:09:fc:d2:11 yes 0.00 1 08:00:09:fd:23:88 no 230.42 1 08:00:09:fe:0d:6f no 144.55 Bridging - Comandos
    • #Indicación de las tarjetas de red físicas $PROG -A FORWARD -m physdev --physdev-in eth0 --physdev-out eth1 -j &quot;FW-int->lan&quot; #Indicación de las tarjetas de red físicas $PROG -A FORWARD -m physdev --physdev-in eth1 --physdev-out eth0 -j &quot;FW-lan->int&quot; #Indicación de las tarjetas de red físicas $PROG -A FORWARD -m physdev --physdev-in eth1 --physdev-out eth1 -j &quot;FW-lan->lan&quot; Bridging - Netfilter
        • Linux Source Code:
          • http://lxr.linux.no/source/
        • Linux Documentation Project (+ online books)
          • http://www.ibiblio.org/mdw/index.html
          • http://www.ibiblio.org/mdw/guides.html
          • Linux Kernel 2.4 Internals
            • http://www.ibiblio.org/mdw/LDP/lki/index.html
          • Linux Kernel Module Programming Guide
            • http://www.ibiblio.org/mdw/LDP/lkmpg/mpg.html
        • Linux Router Project (poor documentation)
          • http://www.linuxrouter.org/
        • MIT Click Modular Router:
          • http://www.pdos.lcs.mit.edu/click/
        • ICIR XORP (extensible router) project: http://www.xorp.org/
        • Book: Kernel Projects for Linux, Gary Nutt
      Referencias