sábado, 31 de diciembre de 2011

PF: OS based redirection

Supongamos que tenemos en nuestra red dos servidores web, a uno solo pueden entrar los clientes que corran Windows, a los otros los que usan GNU/Linux. ¿Es posible hacer esto de alguna manera sencilla?, la respuesta es si!. Utilizando PF, OS Fingerprints y una regla de redirección.

OS Fingerprints es un mecanismo que tiene PF para determinar el sistema operativo que esta utilizando un host en concreto que pasa por el firewall, lo hace mediante la examinación de algunos campos del header del paquete, como por ejemplo el TTL, y acorde a lo establecido en el archivo /etc/pf.os determina el sistema operativo al que corresponde el paquete.

Supongamos que el servidor web para Windows corre un IIS en el host 10.0.0.10, puerto 8080/TCP y el servidor Linux 2.6 un Apache en 10.0.0.20, puerto 8081/TCP.
Simplemente deberiamos utilizar estas reglas:
$ext_if = "em0"
$webwin="10.0.0.10"
$weblinux="10.0.0.20"

pass in on $ext_if proto tcp from any os "Windows" to any port 80 modulate state \
     flags S/SA rdr-to $webwin port 8081
pass in on $ext_if proto tcp from any os "Linux 2.6" to any port 80 modulate state \
     flags S/SA rdr-to $weblinux port 8081
Esto se consigue mediante la clave OS, a la que debe indicarsele el sistema operativo a evaluar el fingerprint, y rdr-to que nos permite realizar una redirección a un host determinado acompañado de su número de puerto.

No hay comentarios:

Publicar un comentario