jueves, 17 de septiembre de 2009

Resumen de Comandos IP Filter

IPFILTER en Solaris

Índice:

01 - Activar Solaris IP Filter

02 - Activar nuevas reglas de filtrado

03 - Desactivar el Filtrado de paquetes desde el Kernel

04 - Desactivar el NAT

05 - Deshabilitar el filtrado de paquetes

06 - Desactivar Solaris IP Filter en una interfaz de red

07 - Remover un pool de direcciones

08 - Listar los Pools de direcciones activos

09 - Listar las estadísticas de los pools

10 - Listar el LOG de IP Filter

11 - Listar las reglas de NAT activas

12 - Listar las estadísticas del NAT

13 - Listar las estadísticas del PFIL

14 - Listar las reglas de Filtrado

15 - Listar las estadísticas de estado

16 - Listar la tabla de estados de IP Filter

17 - Hacer un FLUSH del buffer del log

18 - Guardar en disco los paquetes logueados

19 - Agregar reglas de NAT desde línea de comandos

20 - Agregar reglas de NAT desde un archivo

21 - Agregar reglas de filtrado desde línea de comandos

22 - Agregar reglas de filtrado desde un archivo

23 - Agregar reglas a un pool de direcciones desde línea de comandos

24 - Agregar reglas a un pool de direcciones desde un archivo

25 - Agregar reglas de filtrado inactivas

26 - Switch entre reglas activas e inactivas

27 – Ejemplos

Ejemplo 1: Los paquetes entrantes y salientes de TCP/UDP para los puertos 161 (SNMP) y 1161 (Agente de SUNMC) y el protocolo ICMP. Luego bloquear el resto del trafico entre 2 equipos.

Ejemplo 2: Habilitar todo el trafico entrante y saliente, también habilitar el log para la NIC de loopback. Aceptar paquetes entrantes del puerto 22 TCP (ssh), 80 TCP/UDP (http), 53 TCP/UDP (DNS) y 3128 TCP/UDP (SQUID) por las NICs hme0 y hme1. Bloquear el resto de paquetes entrantes. Permitir la salida de todo tipo de paquetes y mantener el estado de la conexión.

Ejemplo 3: Habilitamos las reglas de NAT para la redirección del trafico entrante por la IF hme1 de cualquier IP al port 80 redireccionandolo a la ip 10.6.75.10 port 3128, lo mismo para el puerto 443 y para el resto del trafico.

Ejemplo 4: Configuración completa de IPFilter sobre solaris 10

Ejemplo 5: Comandos que nos pueden ser útiles de IPFilter sobre solaris 10

Ejemplo 6: Configuración de IPFilter para redirección de puertos. El objetivo es redirigir el puerto 22 de pool01 a pool02

28 – Documentación



01 - Activar Solaris IP Filter

- Activar Solaris IP Filter en una interfaz de red

# vi /etc/ipf/pfil.ap

# IP Filter pfil autopush setup

#

# See autopush(1M) manpage for more information.

#

# Format of the entries in this file is:

#

#major minor lastminor modules

#le -1 0 pfil

#qe -1 0 pfil

hme -1 0 pfil <-- Activa IP Filter en HME

#qfe -1 0 pfil

#eri -1 0 pfil

- Activar los cambios realizados reiniciando el servicio network/pfil.

# svcadm restart network/pfil

o

# svcadm enable network/pfil # Si no esta activado! (verificar con "svcs")

- Activar el IP Filter

# svcadm enable network/ipfilter

- Reiniciar la maquina o realizar un unplumb/plumb

# init 6


02 - Activar nuevas reglas de filtrado

- Cargar un nuevo grupo de reglas

# ipf -Fa -f /etc/ipf/ipf.conf

- Cargar reglas de NAT

# ipnat -CF -f /etc/ipf/ipnat.conf

- Cargar un pool

# ippool -F -f /etc/ipf/ippool.conf


03 - Desactivar el Filtrado de paquetes desde el Kernel

- Remover las reglas de filtrado activas en el kernel .

# ipf -Fa

- Remover las reglas de filtrado para paquetes entrante.

# ipf -Fi

- Remover las reglas de filtrado para paquetes salientes.

# ipf -Fo


04 - Desactivar el NAT

- Remover el NAT del kernel.

# ipnat -FC


05 - Deshabilitar el filtrado de paquetes

- Desabilitar el filtrado de paquetes y permitir que todos pasen.

# ipf –D



06 - Desactivar Solaris IP Filter en una interfaz de red

- Editar el archivo pfil.ap y comentar el dispositivo para el cual queremos desactivar el filtrado.

# vi /etc/ipf/pfil.ap

#major minor lastminor modules

#le -1 0 pfil

#qe -1 0 pfil

#hme -1 0 pfil

#qfe -1 0 pfil

- Activar los cambios realizados.

# scvadm restart network/pfil

- Reiniciar la maquina o realizar un unplumb/plumb

# init 6

Nota: El reinicio es necesario si no se puede realizar un "ifconfig unplumb" y "ifconfig plumb" sobre la interfaz.


07 - Remover un pool de direcciones

# ippool -F


08 - Listar los Pools de direcciones activos

# ippool -l


09 - Listar las estadisticas de los pools

# ippool -s


10 - Listar el LOG de IP Filter

Opciones para ver los LOGs

* S: Muestra el estado del archivo de log

* N: Muestra el archivo de log para el NAT

* I: Muestra el archivo de log comun para la IP

# ipmon -o [S|N|I] [archivo]

Ver todos los archivos de log.

# ipmon -a [archivo]


11 - Listar las reglas de NAT activas

# ipnat -l


12 - Listar las estadisticas del NAT

# ipnat -s


13 - Listar las estadisticas del PFIL

# ndd -get /dev/pfil qif_status


14 - Listar las reglas de Filtrado

- Listar las reglas de filtrado activas en el kernel

# ipfstat -io

- Listar las reglas de filtrado inactivas

# ipfstat -I -io


15 - Listar las estadisticas de estado

# ipfstat -s


16 - Listar la tabla de estados de IP Filter

# ipfstat

Nota: Con la opcion -t la salida se muestra similar al formato del comando TOP.


17 - Hacer un FLUSH del buffer del log

# ipmon -F



18 - Guardar en disco los paquetes logueados

# cat /dev/ipl > /tmp/logfile

19 - Agregar reglas de NAT desde linea de comandos

# echo "map hme0 192.168.1.0/24 -> 50.0.20.1/32" | ipnat -f -


20 - Agregar reglas de NAT desde un archivo

# ipnat -f archivo


21 - Agregar reglas de filtrado desde linea de comandos

# echo "block in on hme0 proto tcp from 10.1.1.1/32 to any" | ipf -f -


22 - Agregar reglas de filtrado desde un archivo

# ipf -f /etc/ipf/ipf.conf


23 - Agregar reglas a un pool de direcciones desde linea de comandos

# echo "table role = ipf type = tree number = 100

{10.0.0.0/32, 172.16.1.2/32, 192.168.1.0/24};" | ippool -f -


24 - Agregar reglas a un pool de direcciones desde un archivo

# ippool -f filename


25 - Agregar reglas de filtrado inactivas

# ipf -I -f /etc/ipf/ipf.conf


26 - Switch entre reglas activas e inactivas

# ipf -s


27 – Ejemplos


Ejemplo 1: Habilitar los paquetes entrantes y salientes de TCP/UDP para los puertos 161 (SNMP) y 1161 (Agente de SUNMC) y el protocolo ICMP. Luego bloquear el resto del trafico entre 2 equipos.

# cat /etc/ipf/ipf.conf

pass in quick proto tcp/udp from any to any port = 161 keep state

pass out quick proto tcp/udp from any to any port = 161 keep state

pass in quick proto tcp/udp from any to any port = 1161 keep state

pass out quick proto tcp/udp from any to any port = 1161 keep state

pass in quick proto icmp from any to any keep state

pass out quick proto icmp from any to any keep state

#

# Bloquear el resto de trafico entre newmike y new_backup

#

block in quick from 192.168.152.82/32 to any

block out quick from any to 192.168.152.82/32



Ejemplo 2: Habilitar todo el trafico entrante y saliente, también habilitar el log para la NIC de loopback.

Aceptar paquetes entrantes del puerto 22 TCP (ssh), 80 TCP/UDP (http), 53 TCP/UDP (DNS) y 3128 TCP/UDP (SQUID) por las NICs hme0 y hme1.

Bloquear el resto de paquetes entrantes.

Permitir la salida de todo tipo de paquetes y mantener el estado de la conexión.

# vi /etc/ipf/ipf.conf

pass in all

pass out all

pass in log quick on lo0 all

pass out log quick on lo0 all

pass in quick on hme0 proto tcp from any to any port = 22 keep state

pass in quick on hme0 proto tcp/udp from any to any port = 53 keep state

pass in quick on hme0 proto tcp/udp from any to any port = 80 keep state

pass in quick on hme0 proto tcp/udp from any to any port = 3128 keep state

pass in quick on hme1 proto tcp from any to any port = 22 keep state

pass in quick on hme1 proto tcp/udp from any to any port = 53 keep state

pass in quick on hme1 proto tcp/udp from any to any port = 80 keep state

pass in quick on hme1 proto tcp/udp from any to any port = 3128 keep state

block return-rst in log on hme0 proto tcp from any to any

block return-rst in log on hme1 proto tcp from any to any

pass out on hme0 proto tcp from any to any keep state

pass out on hme1 proto tcp from any to any keep state



Ejemplo 3: Habilitamos las reglas de NAT para la redirección del trafico entrante por la IF hme1 de cualquier IP al port 80 redireccionandolo a la ip 10.6.75.10 port 3128, lo mismo para el puerto 443 y para el resto del trafico.

# vi /etc/ipf/ipnat.conf

rdr hme1 0/0 port 80 -> 10.6.75.10 port 3128

rdr hme1 0/0 port 443 -> 10.6.75.10 port 3128

rdr hme1 0/0 -> 10.6.75.10


Ejemplo 4: Configuración completa de IPFilter sobre solaris 10

- Habilitar el IPFILTER

# vi /etc/ipf/pfil.ap

# IP Filter pfil autopush setup

#

# See autopush(1M) manpage for more information.

#

# Format of the entries in this file is:

#

#major minor lastminor modules

#le -1 0 pfil

#qe -1 0 pfil

hme -1 0 pfil (Device has been uncommented for filtering)

#qfe -1 0 pfil

#eri -1 0 pfil

#ce -1 0 pfil

#bge -1 0 pfil

- Activamos los cambios realizados reiniciando el servicio network/pfil.

# svcadm restart network/pfil

o

# svcadm enable network/pfil # Si no está activado! (verificar con "svcs")

- Activamos el IPFILTER

# svcadm enable network/ipfilter

# reboot



Nota: Es importante reiniciar el equipo, las operaciones de unplumb y plumb sobre la IF no son seguras.

Si se desactiva temporalmente el IPFILTER se puede reactivar utilizando el comando:

# ipf -E # Activa el IPFILTER

# ipf -f # Activa el filtrado de paquetes

# ipnat -f # Activa el NAT

Nota: Para un detalle mayor sobre IPFILTER ver estas URLs:

http://docs.sun.com/app/docs/doc/816-4554/6maoq023u?a=view

http://docs.sun.com/app/docs/doc/816-4554/6maoq024c?a=view

- Habilitamos el IP Forwarding en Solaris para IPV4

# routeadm -u -e ipv4-forwarding

- Preparamos las reglas del FIREWALL (IPFILTER)

# vi /etc/ipf/ipf.conf

#

# ipf.conf

#

# IP Filter rules to be loaded during startup

#

# See ipf(4) manpage for more information on

# IP Filter rules syntax.

#

# This is a simple ruleset that blocks all inbound TCP traffic

# except for SSH, and allows all outbound traffic,

#

# And of course, make sure the loopback allows packets to traverse

# it.

pass in all

pass out all

pass in log quick on lo0 all

pass out log quick on lo0 all

pass in quick on hme0 proto tcp from any to any port = 22 keep state

pass in quick on hme0 proto tcp/udp from any to any port = 53 keep state

pass in quick on hme0 proto tcp/udp from any to any port = 80 keep state

pass in quick on hme0 proto tcp/udp from any to any port = 3128 keep state

pass in quick on hme1 proto tcp from any to any port = 22 keep state

pass in quick on hme1 proto tcp/udp from any to any port = 53 keep state

pass in quick on hme1 proto tcp/udp from any to any port = 80 keep state

pass in quick on hme1 proto tcp/udp from any to any port = 3128 keep state

block return-rst in log on hme0 proto tcp from any to any

block return-rst in log on hme1 proto tcp from any to any

pass out on hme0 proto tcp from any to any keep state

pass out on hme1 proto tcp from any to any keep state

- Preparamos las reglas del NAT (IPFILTER)

# vi /etc/ipf/ipnat.conf

rdr hme1 0/0 port 80 -> 10.6.75.10 port 3128

rdr hme1 0/0 port 443 -> 10.6.75.10 port 3128

rdr hme1 0/0 -> 10.6.75.10



Ejemplo 5: Comandos que nos pueden ser útiles de IPFilter sobre solaris 10

# ipf -E # Enable ipfilter when running for the first time.

# ipf -f /etc/ipf/ipf.conf # Load rules in /etc/ipf/ipf.conf file into the active firewall.

# ipf -Fi # Flush all input rules.

# ipf -I -f /etc/ipf/ipf.conf # Load rules in /etc/ipf/ipf.conf file into inactive firewall.

# ipf -V # Show version info and active list.

# ipf -s # Swap active and inactive firewalls.

# ipf -Fa # Solo para pruebas, flush de todas las reglas.

# ipf -Fa -f /etc/ipf/ipf.conf # Flush de las reglas y carga las nuevas

# ipfstat -ion # Lista las reglas que activas.

# ipfstat # Show summary

# ipfstat -i # Show input list

# ipfstat -o # Show output list

# ipfstat -hio # Show hits against all rules

# ipfstat -t -T 5 # Monitor the state table and refresh every 5 seconds.

# ipnat -l # Lista los NAT activos

# ipnat -FC # Realiza un Flush de las

# ipnat -f /etc/ipf/ipnat.conf # Activa las nuevas reglas de NAT

# ipmon -a # Verificamos el comportamiento del NAT

Output is similiar to 'top' monitoring the process table.

# ipmon -s S # Watch state table.

# ipmon -sn # Write logged entries to syslog, and convert back to hostnames and servicenames.

# ipmon -s [file] # Write logged entries to some file.

# ipmon -Ds # Run ipmon as a daemon, and log to default location.

(/var/adm/messages for Solaris)

(/var/log/syslog for Tru64)



Ejemplo 6: Configuración de IPFilter para redirección de puertos. El objetivo es redirigir el puerto 22 de pool01 a pool02

Configuración en POOL01

- Configuración ipfilter

# cat /etc/ipf/ipf.conf

#

# ipf.conf

#

# IP Filter rules to be loaded during startup

#

# See ipf(4) manpage for more information on

# IP Filter rules syntax.

pass in all

pass out all

pass in log quick on lo0 all

pass out log quick on lo0 all

pass in quick on bge0 proto tcp/udp from any to any port = 22 keep state

pass in quick on bge0 proto tcp/udp from any to any port = 53 keep state

pass in quick on bge0 proto tcp/udp from any to any port = 80 keep state

block return-rst in log on bge0 proto tcp from any to any

pass out on bge0 proto tcp from any to any keep state


- Configuración ipnat

# vi /etc/ipf/ipnat.conf

## Este ejemplo funciona con la siguiente configuracion

## en pool01:

## default 10.150.0.1 UG 1 304

## en pool02:

## default 192.168.1.1 UG 1 2 bge0

##

## En pool01

## IPv4 routing enabled enabled

## IPv4 forwarding enabled enabled

##

## En pool02

## IPv4 routing disabled disabled

## IPv4 forwarding disabled disabled

##

#

map bge0 10.150.0.0/16 -> 192.168.1.1/32 portmap tcp/udp auto

map bge0 10.150.0.0/16 -> 192.168.1.1/32

rdr bge0 0/0 port 22 -> 192.168.1.2 port 22 tcp/udp

- Configuración de routeadm en pool01

# routeadm

Configuration Current Current

Option Configuration System State

---------------------------------------------------------------

IPv4 routing enabled enabled

IPv6 routing disabled disabled

IPv4 forwarding enabled enabled

IPv6 forwarding disabled disabled

Routing services "route:default ripng:default"

Routing daemons:

STATE FMRI

disabled svc:/network/routing/legacy-routing:ipv4

disabled svc:/network/routing/legacy-routing:ipv6

disabled svc:/network/routing/ndp:default

disabled svc:/network/routing/rdisc:default

disabled svc:/network/routing/ripng:default

disabled svc:/network/routing/ripng:quagga

online svc:/network/routing/route:default

disabled svc:/network/routing/zebra:quagga

disabled svc:/network/routing/rip:quagga

disabled svc:/network/routing/ospf:quagga

disabled svc:/network/routing/ospf6:quagga

disabled svc:/network/routing/bgp:quagga

Notas: Activar routing y forwarding con la opcion -e, con -d se desactiva.

# routeadm -u -e ipv4-routing

# routeadm -u -e ipv4-forwarding

- Default router

# cat /etc/defaultrouter

192.168.1.1

- Rutas de pool01

# netstat -rn

Routing Table: IPv4

Destination Gateway Flags Ref Use Interface

-------------------- -------------------- ----- ----- ---------- ---------

default 10.150.0.1 UG 1 304

10.0.0.0 10.150.2.58 U 1 11155 bge0

192.168.1.0 192.168.1.1 U 1 12 nge0

224.0.0.0 10.150.2.58 U 1 0 bge0

127.0.0.1 127.0.0.1 UH 1 63 lo0


- Configuración de IPs

# ifconfig -a

lo0: flags=2001000849 mtu 8232 index 1

inet 127.0.0.1 netmask ff000000

bge0: flags=1100843 mtu 1500 index 2

inet 10.150.2.58 netmask ff000000 broadcast 10.255.255.255

ether 0:1e:68:4:a5:d3

nge0: flags=1100843 mtu 1500 index 3

inet 192.168.1.1 netmask ffffff00 broadcast 192.168.1.255

ether 0:1e:68:4:a5:d5

- Activación de la configuración de ipf

# ipf -Fa

# ipf -Fa -f /etc/ipf/ipf.conf

# ipfstat -ion

- Activación de la configuración de ipnat

# ipnat -l

# ipnat -FC

# ipnat -f /etc/ipf/ipnat.conf

- Monitorización del NAT

# ipmon -a


Configuración en POOL02

- Default router

# cat /etc/defaultrouter

192.168.1.1

- Rutas del equipo

default 192.168.1.1 UG 1 2 XXX




28 - Documentación:

http://blogs.sun.com/dp/entry/squid_startup_extreme_makeover_with

http://www.opensolaris.org/os/community/documentation/opensolaris_guide/;jsessionid=E8DC7D74D6FC2EE46D0FCFB6A3678BCD

http://www.sun.com/bigadmin/features/articles/ipfilter.html

http://www.rite-group.com/rich/solaris_nat.html

http://www.securityfocus.com/infocus/1380

http://software.uaemex.mx/Paginas/herramientas/ipf.html

http://www.riddleware.com/solx86/nat-config.html

http://www.riddleware.com/solx86/

2009.09.04 Mariano Obarrio

No hay comentarios: