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
# ipnat -f
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
inet 127.0.0.1 netmask ff000000
bge0: flags=1100843
inet 10.150.2.58 netmask ff000000 broadcast 10.255.255.255
ether 0:1e:68:4:a5:d3
nge0: flags=1100843
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.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:
Publicar un comentario