SafeChildren Banner

Havoc Oracle Solaris Experts

miércoles, 16 de septiembre de 2009

Configuración de IPFilter en Solaris 10 para Hadoop

Introducción
Aunque la documentación de Apache sobre Hadoop insta a desactivar el Firewall, creo que es mejor (aunque lleve más tiempo) tener una sistema de Firewall activo con unas sencillas reglas para evitar el acceso de cualquiera a nuestro cluster.

Aunque esta configuración se hace sobre Solaris 10 para Hadoop, se puede extender a cualquier tipo de filtrado ya que no dejan de ser los mismos comandos y simplemente debemos cambiar las reglas del archivo Aunque esta configuración se hace sobre , se puede extender a cualquier tipo de filtrado ya que no dejan de ser los mismos comandos y simplemente debemos cambiar las reglas del archivo ipf.conf

Comprobar el Estado de IPFilter y activarlo
Nuestro primer paso será comprobar el estado de IPFilter en el sistema, que si no hemos hecho nada antes por defecto viene desactivado.
# svcs ipfilter
STATE STIME FMRI
disabled ago_13 svc:/network/ipfilter:default
Creación de Reglas
Las reglas están en el archivo /etc/ipf/ipf.conf y tiene el siguiente formato:

{block | pass } {in|out} [log] [quick] from {IP|pool|any} [port] to {IP|pool |any} [port]

Por ejemplo, si queremos denegar todos los paquetes que vienen desde la red 10.7.0.0/16 a nuestra máquina (que si recordais nuestro NameNode es la 10.1.1.3) utilizaremos lo siguiente
block in quick from 10.7.0.0/16 to any
block out quick from any to 10.7.0.0/16
Hemos utilizado los modificadores quick y any en nuestro ejemplo para conseguir lo siguiente
  • Modificador quick Si IPFilter hace match en la regla no seguirá evaluando más
  • Modificador any Hace referencia a cualquier IP, es como poner 0.0.0.0/0
Cuándo utilizar quick?
Por regla general es mejor utilizarlo siempre que tengamos un firewall puro, es decir, imaginaros el pseudo archivo de configuración

permit ssh
permit web
permit smtp
block all

En este modelo de firewall (el tradicional y más seguro) debemos dejar de evaluar las reglas, ya que sino evaluaría todas las reglas, y siempre haría match en block all, por ejemplo, un paquete de tráfico ssh se evaluaría así:

  1. permit ssh (OK)
  2. permit web (N/A)
  3. permit smtp (N/A)
  4. block all (DENY)
Y el paquete SSH sería denegado.

Configuración del archivo /etc/ipf/ipf.conf
Vamos a permitir el acceso SSH desde nuestra LAN y acceso a nuestro NameNode, esta versión es muy restrictiva ya que no nos permite acceder a Internet, DNS, icmp, etc. fuera de nuestra LAN

# vi /etc/ipf/ipf.conf
# eliminamos los paquetes peque!nos
block in log quick from any with ipopts
block in log quick proto tcp from any to any with short

##################################
## PERMITIMOS SSH SOLO
##################################
pass in quick from 10.0.0.0/8 to 10.1.1.3/32 port=22
pass out quick from 10.1.1.3/32 port=22 to 10.0.0.0/8
pass in quick from 10.0.0.0/8 port=22 to 10.1.1.3/32
pass out quick from 10.1.1.3/32 to 10.0.0.0/8 port=22

##################################
## PERMITIMOS ACCESO LIBRE EN LAN
##################################
pass in quick from 10.0.0.0/8 to 10.1.1.3/32
pass out quick from 10.1.1.3/32 to 10.0.0.0/8

##################################
## TODO LO DEMAS DENEGADO
##################################
block in from any to any
block out from any to any

:wq
Activaremos nuestro IPFilter y comprobaremos su correcto funcionamiento mediante svcs
# svcadm enable ipfilter
# svcs ipfilter
STATE STIME FMRI
online 10:07:37 svc:/network/ipfilter:default
Una vez activado, debemos cargar las reglas que hemos creado, para ello, utilizaremos el comando ipf con el modificador -f y la ruta donde tenemos las reglas, en nuestro caso /etc/ipf/ipf.conf

Nota: también he utilizado el comando -Fa para que haga un FlushAll esto produce un corte y hay que utilizarlo con cuidado.
# ipf -E
# ipf -Fa -f /etc/ipf/ipf.conf

Referencias

1 comentario:

  1. Hola, Urko, el primer enlace de referencias, ya no existe, por la compra de Sun por parte de Oracle.

    Ahora lleva a una página genérica de documentación

    Un saludo y gracias por el post. Me ha venido bien para clarificar el uso de Quick. Me imaginaba que era para eso, pero perfecto para confirmarlo

    Un saludo
    Rodolfo

    ResponderEliminar