No pretendo entrar en detalle sobre la configuración del packet filter, la idea de este post, es que lo puedas usar rapidamente, sirviendote para lo que fue diseñado un firewall, permitir o denegar el acceso a algo o a alguien.#==============
# PACKET FILTER:
#==============
% Archivo de configuración de las reglas:
/etc/pf.conf
% Cargar modulo PF manualmente. Esto si no estuviera ya cargado.
#kldload pf.ko
% Opciones disponibles en rc.conf (Para que al inicio del servidor el PF carge normalmente)
pf_enable="YES" #habilita pf
pf_rules="/etc/pf.conf" #archivo de reglas de pf
pf_flags="" #flags adicionales
pflog_enables="YES" #empieza pflogd
pflog_logfile="/var/log/pflog" #almezanamiento de logs
pflog_flags="" #flag adicionales para pflogd
% Si se tiene una LAN destras del firewall o para hacer NAT y forwardear los paquetes de debe habilitar la opcion:
gateway_enable="YES" Habilita gateway para LAN
% Trabajando con el PF
pfctl -e Habilita PF
pfctl -d Deshabilita PF
pfctl -F all -f /etc/pf.conf #Flush de reglas y recarga pf.conf
pfctl -s rules | nat | state #muestra las reglas, el nat y el estado de las conexiones
pfctl -vnf /etc/pf.conf #chequea errores en el archivo pf.conf
=====
Ejemplo de Configuracion del Archivo pf.conf
###########################################
#1ro definir las macros:
ext_if = "re0"
servicio_sshd = "{ 22 }"
servicio_httpd = "{ 80 }"
lan_noc = "{ 200.132.3.0/24 }"
priv_nets = "{ 10.0.0.0/8 192.168.0.0/16 127.0.0.0/8 }"
# options
set block-policy drop #Comportamiento por defecto de paquetes bloqueados
set loginterface $ext_if #Habilita colección de paquetes para generar estadisticas. Se puede ver con pfctl -s info
#
scrub in all
#
# filter rules
block log all
# Permite conexiones tcp y udp que sean iniciadas por localhost
pass quick on lo0 all
pass out quick proto udp from any to any keep state
pass out quick proto tcp all flags S/SA keep state
# antispoof quick for $ext_if inet
block drop in quick on $ext_if from $priv_nets to any
block drop out quick on $ext_if from any to $priv_nets
# Permite el acceso al servicio ssh a toda la red del noc.
pass in quick on $ext_if proto tcp from $lan_noc to $ext_if port $servicio_sshd flags S/SA keep state
#Permite acceso al http a todos.
pass in quick on $ext_if proto tcp from any to $ext_if port $servicio_httpd flags S/SA keep state
pass out on $ext_if proto { tcp, icmp } all modulate state
pass out on $ext_if proto udp all
###########################################
TROUBLE SHOTTING
================
###################################################
Si sale el siguiente error al ejecutar el reload del archivo pf.conf:
# pfctl -F all -f /etc/pf.conf
pfctl: /dev/pf: No such file or directory
Sol: ejecutar
#kldload pf.ko
###################################################
No hay comentarios:
Publicar un comentario