Instalación de filtros IP (IPFWADM)

Si está usando el núcleo 2.1.102 o uno más reciente, vaya directamente a la sección sobre IPCHAINS.

En versiones anteriores al reenvío de paquetes IP se activa por defecto en el núcleo y, por eso, su red deberá comenzar denegándole el acceso a todo y purgando cualquier orden ipfw que fuera ejecutada por últimas vez. Este fragmento del guión debe entrar en el de arranque de red. (/etc/rc.d/init.d/network)

  #
  # setup IP packet Accounting and Forwarding
  #
  #   Forwarding
  #
  # By default DENY all services
  ipfwadm -F -p deny
  # Flush all commands
  ipfwadm -F -f
  ipfwadm -I -f
  ipfwadm -O -f

Este es el último cortafuegos y nada podrá atravesarlo.

Ahora cree el fichero /etc/rc.d/rc.firewall. Este guión permitirá tráfico de correo, web y DNS ;-)

#! /bin/sh
#
# rc.firewall
#
# Bibioteca de funciones fuente
. /etc/rc.d/init.d/functions

# Obtenemos la configuracion
. /etc/sysconfig/network

# Comprobamos que la red esta activada.
if [ ${NETWORKING} = "no" ]
then
        exit 0
fi
case "$1" in
  start)
  echo -n "Iniciando servicios de cortafuego: "
  # Permitir que el correo llegue 
  # hasta el servidor de correo 
  /sbin/ipfwadm -F -a accept -b -P tcp \
          -S 0.0.0.0/0 1024:65535 -D 192.1.2.10 25
  # Permitir conexiones de correo 
  # hacia los servidores de correo externos
  /sbin/ipfwadm -F -a accept -b -P tcp \
          -S 192.1.2.10 25 -D 0.0.0.0/0 1024:65535
  # Permitir conexiones de correo 
  # hasta nuestro servidor Web
  /sbin/ipfwadm -F -a accept -b -P tcp \
          -S 0.0.0.0/0 1024:65535 -D 192.1.2.11 80
  # Permitir conexiones web 
  # hacia los servidores web externos
  /sbin/ipfwadm -F -a accept -b -P tcp \
          -S 192.1.2.* 80 -D 0.0.0.0/0 1024:65535 
  # Permitir trafico DNS
  /sbin/ipfwadm -F -a accept -b -P udp \
          -S 0.0.0.0/0 53 -D 192.1.2.0/24
  ;;
  stop)
  echo -n "Deteniendo los servicios de cortafuegos: "
  ipfwadm -F -p deny
  ;;
  status)
  echo -n "Se muestran ahora estadísticas del cortafuegos?"
  ;;
  restart|reload)
        $0 stop
        $0 start
        ;;
  *)
        echo "Uso: firewall {start|stop|status|restart|reload}"
        exit 1
esac

NOTA: En este ejemplo tenemos el servidor de e-mail (smtp) ejecutándose en el 192.1.2.10, el cual debe ser capaz de recibir y enviar al puerto 25 (servidor web ejecutándose en el 192.1.2.11). Así, estamos permitiendo a cualquiera en el LAN acceder a redes externas y servidores DNS.

Sin embargo, esto no es muy seguro, ya que el puerto 80 no tiene que usarse como puerto de web, pues un hacker habilidoso podría usar este puerto para crear una red virtual privada (VPN) a través del cortafuegos. La forma de evitar esto es instalar un web proxy y sólo permitir actuar al proxy a través del cortafuegos. Así, los usuarios de LAN tendrían que atravesar el proxy para acceder a servidores de web externos.

Usted podrá estar interesado en eliminar tráfico a través de su cortafuegos. Este guión contabilizará cualquier paquete y usted podrá añadir una o dos líneas para eliminar los paquetes destinados a un único sistema.

          
  # Flush the current accounting rules
  ipfwadm -A -f
  # Accounting
  /sbin/ipfwadm -A -f
  /sbin/ipfwadm -A out -i -S 192.1.2.0/24 -D 0.0.0.0/0
  /sbin/ipfwadm -A out -i -S 0.0.0.0/0 -D 192.1.2.0/24
  /sbin/ipfwadm -A in -i -S 192.1.2.0/24 -D 0.0.0.0/0
  /sbin/ipfwadm -A in -i -S 0.0.0.0/0 -D 192.1.2.0/24

Si todo lo que usted necesita es un cortafuegos de filtro, puede parar aquí. Pruébelo y disfrútelo.