Firewalling/NAT/QoS Open ● Sistema LIBRE tipo Unix. ● Multiplataforma. ● Basado en 4.4BSD. ● ● Portabilidad, cumple standares, corrección del código... Seguridad proactiva y criptografía integrada. ● Filtrar tráfico TCP/IP. ● NAT ● ● Normalización y acondicionación del tráfico TCP/IP QoS ● ● ● Forma parte del núcleo de OpenBSD desde la versión 3.0 Creado por Daniel Hartmeier. Ports a NetBSD, FreeBSD y GNU/Linux. ● ● En el fichero /etc/rc.conf debemos de habilitar PF con: pf=YES ● Para activarlo y desactivarlo usaremos: pfctl [-e / -d] ● Durante el arranque, se van ejecutando los guiones rc; en caso de que esté habilitado pf, se procederá a leer las reglas de pf que están en /etc/pf.conf pfctl se encarga de interpretar el fichero. ● Macros ● Tablas ● Opciones ● Normalizacion/Desfragmentacion. ● Formación de colas ● NAT y redireccionamiento ● Reglas de filtrado # pfctl -f /etc/pf.conf Carga el fichero pf.conf # pfctl -nf /etc/pf.conf Comprueba la sintaxis. # pfctl -Nf /etc/pf.conf Carga solo las reglas de NAT # pfctl -Rf /etc/pf.conf Carga sólo las reglas de filtrado # pfctl -sn Muestra la configuracion actual de NAT # pfctl -sr Muestra las reglas actuales de filtrado # pfctl -ss Muestra la tabla de estado actual # pfctl -si Muestra estadísticas y contadores del filtrado # pfctl -sa Muestra TODO lo posible ● ● Nos permite aplicar una regla sobre un conjunto de protocolos/puertos/direcciones. Las listas enuncian entre llaves “{}”. La finalidad es ahorrar lineas y usar una sintaxis limpia. Ejemplo: – block out on wi0 proto {tcp udp} from { 172.168.0.1, 128.1.1.3 } to any ● Bloquea la salida de paquetes tcp ó udp a través de wi0 de 192.168.1 y 10.5.32.6, que forman una lista de ip's. ● Son variables que definimos para referirnos a direcciones de ip's, puertos, interfaces, ... ext_if = "fxp0" block in on $ext_if from any to any abusers = { 80.37.167.40, 80.25.140.109 } block on $ext_if from $abusers to any ● Son medios de altacenamientos de IP's (Ipv4 y Ipv6), mucho más optimizado que las listas que permite hacer lookups (búsquedas) de bastas cantidades de IP's en poco tiempo usando un mínimo de recursos. Las tablas se pueden utilizar para todo menos: – Redireccionamiento – Enrutamiento Las tablas se crean usando la directiva table. Se pueden usar dos atributos: const y strict. table <colegas> { 128.1.2.0/24 } table <rfc1918> const { 128.1.5.0/16, 128.1.23.0/12, \ 10.0.0.0/8, !128.1.23.3 } table <spammers> persist file /etc/spamersreallysux block in on tl0 from { <rfc1918>, <spammers> } to any pass in on xl0 from <goodguys> to any Las tablas se pueden modificar con: pfctl -t tabla -opcion [ip('s)/red(es)], con las siguientes opciones: -Tadd para añadir ip('s)/red(es) -Tshow para mostrar los datos cargados. -Tdelete para eliminar ip('s)/red(es) ● set block-policy: block – drop – return ● set limit (spoool de memoria) ● set loginterface int (interfaz) ● ● set optimization – normal – high-latency – aggressive – conservative set timeout – Interval (purga y fragmentos) – Frag (fragmentop desensamblado) scrub no-df: elimina el bit “don't fragment” random-id min-ttl num max-mss num fragment reassemble fragment crop fragment drop-ovl ● Queueing ● Schedulers ● RED (Random Early Detection) ● ECN (Explicit Congestion Notification) ● Altq ● Queue: – name – bw – pri – qlim – scheduler – sched_options (default/red/rio/ecn/borrow/) – queue_list