viernes, 3 de diciembre de 2010

Introducción

El firewall es un programa de instalación que actúa a modo de filtro, bloqueando o permitiendo determinadas conexiones y transmisiones de datos desde o hacia Internet, es decir, actúa como una barrera entre la red y nuestra PC.  Para entender esta definición podemos observar la figura.

En el caso de Suse hay varios firewalls que se pudieran utilizar por ejemplo Shorewall,
Firestarter y el Susefirewall2 por mencionar algunos de ellos, para el propósito de esta tarea investigativa trabajaremos con el Susefirewall2.
Un Firewall, como se ha dicho, intercepta todos y cada uno de los paquetes destinados a o procedentes de nuestro ordenador, y lo hace antes de que ningún otro servicio los pueda recibir. De esto extraemos la conclusión de que el Firewall puede controlar de manera exhaustiva todas las comunicaciones de un sistema a través de Internet. Se dice que un puerto de comunicaciones está abierto si, cuando llega un paquete de petición de establecimiento de conexión, el sistema devuelve una respuesta. En caso contrario el puerto se considera cerrado y nadie podrá conectarse a él.
La verdadera potencia de un Firewall reside en que al analizar cada paquete que fluye a su través, puede decidir si lo deja pasar en uno u otro sentido, y puede decidir si las peticiones de conexión a determinados puertos deben responderse o no. Por ejemplo, de este modo podemos configurar un Firewall para que sólo permita las comunicaciones a través de los puertos de correo electrónico, FTP y HTTP, si esos son los únicos servicios que necesitamos.

jueves, 2 de diciembre de 2010

Ventajas

Podemos resumir las ventajas de instalar un Firewall en los siguientes puntos, que son los más importantes:
  • Proteger el ordenador de los ataques que se produzcan desde máquinas situadas en Internet.
  • Asegurar que nuestro ordenador no se utiliza para atacar a otros.
  • Prevenir el uso de troyanos que puedan existir en el sistema debido a que alguien nos los ha introducido a través de correo electrónico o en algún CD o disquete.
  • Detectar patrones de ataques e identificar de dónde provienen.
  • Evitar que nuestro ordenador pueda ser un punto de entrada a una red privada virtual en el caso de utilizarlo para teletrabajo o acceso remoto a la red de una empresa.
  • Al probar nuevas aplicaciones podremos averiguar cuáles son exactamente los puertos de comunicaciones que necesitan usar.

Nociones Básicas sobre el Enmascaramiento

El enmascaramiento es la forma específica de NAT (conversión de direcciones de red) de Linux Se puede emplear para conectar una LAN pequeña (donde los Hosts utilizan direcciones IP de rango privado, Para que los hosts de la LAN puedan conectarse a Internet, sus direcciones privadas se traducen en direcciones oficiales. Esta operación se realiza en el router, que actúa de Gateway entre la LAN e Internet. El principio subyacente es muy sencillo: El router tiene más de una interfaz de red, normalmente una tarjeta de red y una interfaz que lo conecta a Internet. Mientras que esta última enlaza el router con el exterior, una o varias de las demás lo conectan a los hosts de LAN. Con los hosts de la red local conectados a la tarjeta de red (como por ejemplo eth0) del router, es posible enviar cualquier paquete no destinado a la red local a su Gateway o router por defecto.
***Cuando configure su red, asegúrese de que tanto la dirección de difusión como la máscara de red son las mismas para todos los hosts locales. Si no toma esta precaución, los paquetes no se enrutarán adecuadamente. ***
Como se ha mencionado, cuando uno de los hosts de LAN envía un paquete destinado a una dirección de Internet, éste se dirige al router por defecto. Sin embargo, el router debe configurarse antes de poder reenviar los paquetes. Por razones de seguridad, SUSE Linux no habilita esta función en una instalación por defecto. Debemos hacerlo manualmente, fijando la variable IP_FORWARD en el archivo /etc/sysconfig/sysctl como IP_FORWARD= “yes”

Qué son las Iptables?

Es un filtro y manipulador de paquetes IP. Se lo denomina packet filter, por que todas las operaciones que realiza las hace sobre paquetes de red. Estas operaciones (targets, en la terminología de iptables) se aplican a ciertos paquetes en base de a un determinado criterio de coincidencia (match, en ingles). Esta herramienta es muy útil si tenemos una red LAN y queremos compartir Internet utilizando una distro Linux, ya que nos permite tener seguridad (bloqueando los paquetes que no deseamos que pasen por el Linux) y nos permite realizar NAT para que las máquinas de la red LAN puedan acceder a Internet.
*Las Iptables se utilizan en el kernel de Linux versión 2.4 o superior.

Conceptos Importantes

SuSEfirewall2 es un guión que lee las variables establecidas en /etc/sysconfig/SuSEfirewall2 para generar un juego de reglas de iptables. Se definen tres zonas de seguridad, aunque solamente se consideran la primera y la segunda en el siguiente ejemplo de configuración:
Zona externa
Debido a que no existe ninguna manera de controlar lo que sucede en la red externa, el Host necesita estar protegido de dicha red. En la mayoría de los casos, la red externa es Internet, pero también podría tratarse de otra red insegura, como por ejemplo una red WLAN.
Zona interna
Hace referencia a la red privada, en la mayoría de los casos una red LAN. Si los hosts de esta red utilizan direcciones IP de rango privado, habilite la conversión de direcciones de red (NAT), de forma tal que los hosts de la red interna puedan acceder a la red externa.
Zona desmilitarizada (DMZ)
Mientras que se puede llegar a los hosts que se ubican en esta zona tanto desde la red externa como interna, dichos hosts no pueden acceder a la red interna. Esta configuración puede emplearse para incluir una línea adicional de defensa ante la red interna, debido a que los sistemas DMZ están aislados de la red interna.

Objetivos

  • Aprender a instalar el servicio firewall en el sistema operativo Suse
  • Aprender a configurar el servicio firewall en el sistema operativo Suse
  • Conocer los diferentes tipos de firewall que podemos instalar y configurar en el sistema operativo Suse.
  • Ampliar nuestros conocimientos respecto al sistema operativo Suse.
  • Familiarizarnos con las diferentes formas de instalar y configurar el firewall en Suse (por medio de consola y grafica)
  • Conocer las diferentes limitaciones que SuSefirewall2 pueda llegar a tener.

Configuración

Bueno como se mencionó anteriormente el firewall en Suse se puede instalar y configurar de modo grafico y modo consola, el  firewall de Suse se puede descargar desde http://www.opensuse.org/ El comando para instalar el paquete seria por ejemplo rpm –ivh iptables-1.3.8-28i586.rpm aunque cabe aclarar que el servicio de firewall viene instalado por default en el S.O. Suse. El primer paso en modo consola es verificar si tenemos los paquetes instalados. Con el comando rpm –qa iptables*








Como podemos ver en la captura de pantalla arriba ya contamos con los paquetes necesarios para poder configurar nuestro SuSefirewall2
Es importante la inicialización de SuSefirewall2 durante el arranque, entonces es cuando /etc/init.d/SuSefirewall2_init  es llamado
case "$1" in
start)
echo -n "Starting Firewall Initialization: "
echo -n '(phase 1 of 3) '
( $SUSEFWALL close ) > /dev/null 2>&1 || return=$rc_failed
echo -e "$return" ;;


Una vez que hemos configurado SuSefirewall2 para que se inicie desde el arranque debemos ir a /etc/sysconfig/SuSefirewall2 para generar un juego de reglas de iptables o comúnmente conocidas como variables. (Habilitar SuSefirewall2 en su nivel de ejecución 3 ó 5 para una mayor probabilidad),a continuación pasamos a detallar las variables (iptables) que se necesitan modificar para una configuración Standard (SuSefirewall2 ya viene preconfigurado) así que solo tendremos que modificar las variables según nuestras necesidades. 
FW_DEV_EXT= “any eth0”  (cortafuegos, enmascaramiento)
Es el dispositivo que está conectado a Internet. Para una conexión por módem, escriba ppp0. Para una conexión RDSI, utilice ippp0. Las conexiones DSL, por su parte, utilizan dsl0. Especifique auto para utilizar la interfaz que se corresponda con la ruta por defecto.


FW_DEV_INT= “ “  (cortafuegos, enmascaramiento)
Es el dispositivo conectado a la red interna privada (como por ejemplo eth0). Deje esta opción en blanco si no existe una red interna y si el cortafuegos protege solamente el Host en el que se ejecuta el cortafuegos.


FW_ROUTE = “no” (puede configurarse tanto para cortafuego y enmascaramiento)
Viene “no” `por default.
Si necesita masquerading, (enmascaramiento) debe introducir yes en este punto. Las máquinas internas no serán visibles desde afuera, ya que tienen direcciones de red privadas (por ejemplo 192.169.x.x), que no se muestran en Internet.
Con un cortafuegos sin masquerading, escoja aquí yes, si quiere permitir el acceso a la red interna. Para ello, las máquinas internas deben tener direcciones IP asignadas oficialmente. En casos normales, no debería permitir el acceso desde fuera a las máquinas internas.  

FW_MASQUERADE = “no” (enmascaramiento)
Viene “no” por default.
Establezca este valor en yes si precisa la función de enmascaramiento. Esto proporciona a los Hosts internos una conexión prácticamente directa a Internet. Es más seguro contar con un servidor alterno entre los Hosts de la red interna e Internet. El enmascaramiento no es necesario para aquellos servicios proporcionados por servidores alternos.
Es recomendable tener en cuenta que es mas seguro que la red interna acceda a Internet a través de un Proxy.


FW_MASQ_NETS = “0/0” (Enmascaramiento)
Especifique aquí los Hosts o las redes para las que se realizará el enmascaramiento; no olvide dejar un espacio entre cada una de las entradas individuales. Por ejemplo:
FW_MASQ_NETS="192.168.0.0/24 192.168.10.1"
 
 
 
FW_PROTECT_FROM_INT = “no” (cortafuegos)
Establezca este valor en yes para proteger el Host configurado con el cortafuegos frente a ataques originados en la red interna. Los servicios estarán disponibles para la red interna únicamente si se han habilitado expresamente. A este respecto, puede consultar también FW_SERVICES_INT_TCP y FW_SERVICES_INT_UDP.
 
 
 
FW_SERVICES_EXT_TCP = “domain” (cortafuegos)
Introduzca los puertos TCP que deberían estar disponibles.osea de los servicios a los que se deba tener acceso tales como www, smtp,  ftp etc. Deje esta opción en blanco en aquellas estaciones de trabajo normales de uso doméstico que no se emplean para ofrecer servicios.



FW_SERVICES_EXT_UDP = “domain”  (cortafuegos)
Deje esta opción en blanco excepto si se ejecuta un servicio UDP y quiere que se pueda acceder a él desde el exterior. Los servicios que emplean UDP incluyen, entre otros, a los servidores DNS, IPSec, TFTP y DHCP. En ese caso, escriba los puertos UDP que se van a emplear.


FW_SERVICES_INTERNAL_TCP “”  (firewall) Aquí se definen los servicios a disposición de la red interna.



FW_TRUSTED_NETS = “”  (firewall)
Indique aquí los ordenadores de confianza (trusted hosts). Tenga en cuenta que estos también deben estar protegidos de posibles agresiones. 172.20.0.0/16 172.30.4.2 significa que todos los ordenadores cuya dirección IP empieza con 172.20.x.x, así como el ordenador con la dirección IP 172.30.4.2, pueden atravesar el cortafuegos.

FW_ALLOW_INCOMING_HIGHPORTS_TCP = “” (firewall)
Si trabaja con un FTP normal (activo), introduzca ftp-data.


FW_ALLOW_INCOMING_HIGHPORTS_UDP = “”  escriba dns, para poder utilizar los servidores de nombres introducidos en /etc/resolv.conf. Con yes” deja libres todos los números altos de puertos.


FW_STOP_KEEP_ROUTING_STATE = “no”
Si accede a Internet automáticamente con diald o vía RDSI (dial on demand), introduzca yes.”

Aquí puede indicar lo que quiere registrar en los archivos Log. Para el sistema en funcionamiento, basta con yes” en FW_LOG_DENY_CRIT.
*Estas son las variables que comúnmente se necesitarían modificar en /etc/sysconfig/SuSefirewall2 para configurar nuestro firewall en Suse.
***Después de haber configurado el cortafuegos, compruebe la configuración del dispositivo. Los conjuntos de reglas del cortafuegos se crean escribiendo el comando SuSEfirewall2 start como usuario root. A continuación, utilice por ejemplo el comando telnet desde un Host externo para comprobar si se ha denegado la conexión. Después de esta operación, consulte /var/log/messages, donde debería aparecer un mensaje como el que se muestra a continuación:

Mar 15 13:21:38 linux kernel: SFW2-INext-DROP-DEFLT IN=eth0 
OUT= MAC=00:80:c8:94:c3:e7:00:a0:c9:4d:27:56:08:00 SRC=192.168.10.0 
DST=192.168.10.1 LEN=60 TOS=0x10 PREC=0x00 TTL=64 ID=15330 DF PROTO=TCP 
SPT=48091 DPT=23 WINDOW=5840 RES=0x00 SYN URGP=0 
OPT (020405B40402080A061AFEBC0000000001030300) 

Configuración por medio de Yast

Para acceder a los cuadros de diálogos del YAST, para la configuración grafica de SuSefirewall2 tomamos los siguientes pasos:
  • Click en sistema y luego en la aplicación YAST como se muestra en la siguiente pantalla



  • Luego en la siguiente pantalla se nos pide la contraseña (de root) para poder ingresar al YAST.


 
*Una vez dentro del centro de control de YAST elegimos la opción Seguridad y usuarios la cual esta en el panel izquierdo del cuadro de diálogo


* Después en la siguiente ventana seleccionamos la opción cortafuegos


La configuración del firewall se divide en 7 secciones u opciones a las que se puede acceder directamente desde la estructura de árbol que se encuentra situada en el panel de la parte izquierda del cuadro de dialogo del firewall.


OPCION INICIO
En esta opción del cuadro de dialogo se define el comportamiento de inicio del firewall, Cuando se trate de una instalación por defecto, SuSEfirewall2 se iniciará automáticamente. También puede iniciar aquí tanto el inicio como la detención del cortafuegos. Para implementar la nueva configuración en un cortafuegos que se esté ejecutando, utilice la opción Guardar la configuración y reiniciar cortafuegos.









OPCION INTERFACES
En este cuadro de diálogo se muestra una lista con todas las interfaces de red conocidas. Para eliminar una interfaz de una zona, seleccione la interfaz y, a continuación, pulse Cambiar y seleccione Ninguna zona asignada. Para añadir una interfaz a una zona, seleccione la interfaz, pulse Cambiar y, a continuación, seleccione cualquiera de las zonas disponibles. También puede crear una interfaz especial con sus propios ajustes utilizando para ello la opción Personalizar.




Al seleccionar personalizar nos muestra la siguiente ventana, en la cual podremos elegir o crear una interfaz especial con nuestros propios ajustes según nuestras necesidades.


OPCION SERVICIOS AUTORIZADOS
Esta opción es necesaria para poder ofrecer servicios desde su sistema a una zona que se encuentre protegida. Por defecto, el sistema se encuentra protegido únicamente de zonas externas. Autorice expresamente los servicios que deberían estar disponibles para los hosts externos. Active los servicios después de seleccionar la zona deseada en Allowed Services for Selected Zone (Servicios autorizados para zona seleccionada).
Como podemos ver no hay ningún servicio agregado en este momento (lo haremos después).


 
OPCION DE ENMASCARAMIENTO
 El enmascaramiento oculta su red interna a las redes externas, como por ejemplo Internet, al tiempo que permite que los hosts de la red interna puedan acceder a la red externa de forma transparente. Las solicitudes enviadas de la red externa a la red interna se bloquean, mientras que las solicitudes enviadas por la red interna parecen ser enviadas por el servidor de enmascaramiento cuando éstas se ven externamente. Si los servicios especiales de una máquina interna necesitan estar disponibles para la red externa, añada reglas especiales de redirección para el servicio.
OPCION DE BROADCAST O DIFUSION
  
En este cuadro de diálogo, configure los puertos UDP que permiten difusiones. Añada los números o servicios de puertos necesarios a la zona adecuada, separados entre sí por espacios. Consulte igualmente el archivo /etc/services, Es aquí, por otra parte, donde puede habilitarse el registro de las difusiones no aceptadas. Esto puede originar problemas, puesto que los hosts de Windows utilizan difusiones para saber obtener información unos de otros y, de esa forma, generan paquetes que no son aceptados



OPCION DE SOPORTE IPsec
En esta opción se determina si el servicio IPsec  deberá estar disponible para la red externa en este cuadro de diálogo. Configure qué paquetes son confiables en Detalles.  
 


En la ventana de Detalles elegimos la zona en la que queremos configurar los paquetes del servicio IPsec






OPCION NIVEL DE REGISTRO
Son dos las reglas existentes para el registro: paquetes aceptados y no aceptados. Los paquetes no aceptados son DROPPED (SUPRIMIDOS) o REJECTED (RECHAZADOS). Seleccione para ambos una de las siguientes opciones: Registrar todos, Log Critical (Registrar críticos) o No registrar ninguno.


OPCION CUSTOM RULES
Esta opción es utilizada para abrir o habilitar puertos por medio de la permisión de reglas personalizadas, introduciendo datos como SOURCE NETWORK (red o IP de donde la conexión viene, el  protocolo que se utilizara, el puerto de destino(opcional) y el puerto fuente (de donde viene la conexión) que es también opcional. Hay que darle click a la opción añadir para poder crear la regla personalizada como aparece en la siguiente captura de pantalla.

Una vez que haya concluido la configuración del cortafuegos, salga de este cuadro de diálogo utilizando la opción Siguiente. Se abrirá a continuación un resumen de la configuración de su cortafuegos orientado a las zonas. En dicho resumen, compruebe todos los ajustes. Todos los servicios, puertos y protocolos que se han autorizado se indican en este resumen. Para modificar la configuración, utilice la opción Atrás. Pulse Aceptar para guardar su configuración.



*Ahora trataremos de usar el servicio DNS desde un cliente para ver si el firewall instalado en el servidor Linux nos permite acceder al servicio (ya que como mostramos arriba no hay ningún servicio agregado en “servicios autorizados”


Como podemos ver no pudimos accesar al servicio, ahora vamos a “servicios autorizados” en la configuración del firewall y agregamos el servicio DNS y/o cualquier otro servicio al cual necesitemos accesar.


Ahora regresamos al cliente Windows XP y tratamos de ingresar al servicio y podemos ver que ahora si podemos accesar al servidos DNS como se muestra en la siguiente pantalla.