Usamos cookies propias y de terceros para ayudarte en tu navegación. Si continuas navegando consideramos que aceptas el uso de cookies. OK

martes, 8 de octubre de 2013

Configurar ipfilter en Solaris 10 - 11 - Avanzado

En la entrada anterior Configurar Ipfilter en Solaris vimos como activar y crear reglas simples de ipfilter para convertir nuestro servidor en un firewall. Ahora nos entraremos en las reglas avanzadas que nos ayudarán en el momento de aplicar un "ojo fino" en nuestra configuración. Veamos las opciones avanzadas.


Filtrando por protocolo:

Es posible especificar el fitrado para un tipo de protocolo. 
Ej:
# bloquea todos los paquetes entrantes de tipo ICMP
block in on net1 proto icmp all

El nombre del protocolo puede ser un nombre válido de /etc/protocols o directamente el número.

# permite todos los paquetes IP en los cuales está el protocolo 4
pass in on net1 proto 4 all

En algunos casos, como puede ser NFS, utiliza tanto TCP como UPD así que debemos especificar en la regla  "tcp/udp". Ej:

# previene el tráfico NFS entrante en la interfaz net1
block in on net1 proto tcp/udp from any to any port = 2049


Filtrando fragmentos IP:


Los fragmentos IP es algo que siempre se quiere evitar porque pueden ser una gran amenaza. La fragmentación IP se produce cuando la información a trasmitir no entra en el MTU. Por defecto ipV6 ya no permite la fragmentación, sino que comunica al emisor que baje el tamaño del paquete.

#
# bloquea todos los fragmentos IP
#
block in all with frag

Pero no siempre la fragmentación IP tiene como objetivo un fin malicioso. Se puede decir que los fragmentos más "dañinos" son los cortos. Así lo evitamos:
#
# bloquear los fragmentos demasiados cortos
#
block in proto tcp all with short


Filtrando por puerto:


Los  números de puertos están divididos en dos zonas. Los puertos bien conocidos, llamados también puertos reservados y puertos para la conexión. Cada aplicación tiene un puerto conocido que va desde el puerto 1 hasta el 1023.
Cuando una máquina quiere hacer una conexión a un host remoto, escoge un puerto mayor al puerto 1023 para él mismo y el puerto destino viene unido a la aplicación que esta ejecutando, llamado puerto bien conocido
Cuando el destino recibe información, este mira el campo puerto, y d esta manera sabe la aplicación a la cual debe reenviar la información.

Operando    Alias    Parametros    Resultado

      <               lt       port#              menor que
      >               gt      port#              mayor que
      =               eq     port#              igual que
     !=               ne     port#             distinto que
     <=              le      port#             menor e igual que
     =>              ge     port#             mayor o igual que

Ej:
#
# permite todos los paquetes TCP proveniente de la red 192.168.1.0/24 con destino 10.0.0.1/32 al puerto 53
#
pass in proto tcp from 192.168.1.0/24 to 10.0.0.1/32 port = 53
#
# Permite paquetes UDP que no son dirigidos al puerto 53 del localhost
#
pass in proto udp from 192.168.1.0/24 port != 53 to localhost


TCP Flags

En algunos casos vamos a querer filtrar paquetes de acuerdo al estado de las banderas del paquete TCP. Cuando una conexión se inicia hay un intercambio de paquetes con banderas SYN y ACK. Veamos el diagrama:

 
Comunicación TCP de tres via

De acuerdo a esto, podemos utilizar estas banderas para realizar el filtrado.
Ej:
#
# Permite los paquetes que llevan un ACK de la red 10.1.0.0/16 puerto 23
#
pass in proto tcp 10.1.0.0/16 port = 23 10.2.0.0/16 flags A/A
pass out proto tcp 10.1.0.0/16 port = 23 10.2.0.0/16 flags A/A

Pero seía más util utilizar las FLAGS para bloquear. Para esto la bandera SYN es más útil.
#
# Bloquea todas los inicio de conexiones desde cualquier origen a la red 192.168.1.0/24
#
block in on net1 proto tcp from any to 192.168.1.0/24 flags S/SA

Para bloquear las respuestas
#
# Bloquea las respuestas SYN-ACK
#
block out on net1 proto tcp from 192.168.1.0 to any flags SA/SA

Es muy importante que antes de crear este tipo de reglas comprendamos bien como funcionan las conexiones TCP.


Paquetes ICMP

Puede ser que querramos bloquear el tráfico ICMP en algún punto de nuestra red.

# bloquea todos los paquetes ICMP.
#
block in proto icmp all
#
# Permite el echo ICMP y el echo-reply (PING)
#
pass in on net1 proto icmp from any to any icmp-type echo
pass in on net1 proto icmp from any to any icmp-type echorep

No hay comentarios:

Publicar un comentario