Páginas

martes, 6 de noviembre de 2018

PF OpenBSD

Firewall PF OpenBSD router Soekris 2018 

Instalación OpenBSD en una monoplaca Soekris net5501
OpenBSD soekris router

# cat /etc/pf.conf
#       $OpenBSD: pf.conf,v 1.54 2014/08/23 05:49:42 deraadt Exp $
#
# See pf.conf(5) and /etc/examples/pf.conf
int_if="{ vether0 vr1 vr2 vr3 }"
ext_if="vr0"
icmp_types="echoreq"
vpn_if="tun0"
openvpn_port="1198"
lan1="192.168.3.0/24"
lan2="192.168.1.0/24"
ssh_port="21000"

# Esta es una tabla de direcciones privadas no enrutables que se utilizara mas adelante.
table <martians> { 0.0.0.0/8 224.0.0.22 127.0.0.0/8 172.16.0.0/12 \
        169.254.0.0/16 192.0.2.0/24 \
        192.0.2.0/24 198.51.100.0/24 203.0.113.0/24 \
        169.254.0.0/16 240.0.0.0/4 255.255.255.255/32 }

# Bloquear todo
block all

# Decide si los paquetes rechazados deben enviar un TCP RST o descartarse silenciosamente.
set block-policy drop

# Habilitada la recopilacion de estadisticas de bytes y paquetes en egress.
# estas estadisticas pueden verse con el comando pfctl -si
set loginterface egress

# Omitir la interfaz lo del procesamiento de paquetes
set skip on lo

# Las reglas de coincidencia que se utilizan aqui logran dos cosas: normalizar los paquetes
# entrantes y realizar la traduccion de direcciones de red, con la interfaz de salida entre
# la LAN y la Internet publica
match in all scrub (no-df max-mss 1440 reassemble tcp random-id)
match out on egress inet from !(egress:network) to any nat-to (egress:0)
match inet6 all

# La palabra clave antispoof proporciona cierta proteccion de paquetes con direcciones de 
# origen falsificadas. Los paquetes que llegan a la interfaz de egress deben eliminarse si
# parecen pertenecer a la lista de direcciones que no se pueden enrutar que definimos.  
# Dichos paquetes probablemente se enviaron debido a una configuracion incorrecta, o 
# posiblemente como parte de un ataque de suplantacion de identidad. Del mismo modo, 
# nuestros clientes no deben intentar conectarse a dichas direcciones. Especificaremos la 
# accion de "retorno" para evitar tiempos de espera molestos para los usuarios. 
antispoof quick for (egress) 
block in quick on egress from <martians> to any
block return out quick on egress from any to { <martians> no-route }
block return out quick inet6 all

# Por defecto, no permite conecciones remota a X11
block return in on ! lo0 proto tcp to port 6000:6010
  
# Permitir el trafico saliente de IPv4 desde la propia puerta de enlace y los clientes LAN.
pass out quick inet

# Permitir ICMP entrante sobre todas las interfaces
pass in inet proto icmp icmp-type $icmp_types 

# Permitir el rango predeterminado para traceroute (8):
pass out on $ext_if inet proto udp from any to any port 33433:33626 keep state

# Permitir el trafico interno LAN 
pass in on $int_if inet

# Permitir conexiones desde LAN ssh
pass in inet proto tcp from { $lan1 $lan2 } to port $ssh_port

# Permitir conexiones a Internet a través de un servidor VPN. VPN permite el salto de los 
# bloqueos geográficos, un mayor anonimato en la Red y el bloqueo de publicidad 
pass in quick proto udp to $ext_if port $openvpn_port keep state
pass in quick on $vpn_if inet from any to any keep state
#############################################################################

# pfctl -vf /etc/pf.conf
                                                  
int_if = "{ vether0 vr1 vr2 vr3 }"
ext_if = "vr0"
icmp_types = "echoreq"
vpn_if = "tun0"
openvpn_port = "1198"
lan = "192.168.3.0/24"
ssh_port = "22"
table <martians> { 0.0.0.0/8 224.0.0.22 127.0.0.0/8 172.16.0.0/12 169.254.0.0/16 192.0.2.0/24 192.0.2.0/24 198.51.100.0/24 203.0.113.0/24 169.254.0.0/16 240.0.0.0/4 255.255.255.255 }
set block-policy drop
set loginterface egress
set skip on { lo }
block drop all
match in all scrub (no-df random-id reassemble tcp max-mss 1440)
match out on egress inet from ! (egress:network) to any nat-to (egress:0) round-robin
match inet6 all
block drop in quick on ! egress from (egress:network) to any
block drop in quick from (egress) to any
block drop in quick on egress from  to any
block return out quick on egress from any to 
block return out quick on egress from any to no-route
block return out quick inet6 all
block return in on ! lo0 proto tcp from any to any port 6000:6010
pass out quick inet all flags S/SA
pass in inet proto icmp all icmp-type echoreq
pass in on vether0 inet all flags S/SA
pass in on vr1 inet all flags S/SA
pass in on vr2 inet all flags S/SA
pass in on vr3 inet all flags S/SA
pass in inet proto tcp from 192.168.3.0/24 to any port = 21000 flags S/SA
pass out on vr0 inet proto udp from any to any port 33433:33626
pass in quick inet proto udp from any to 192.168.1.99 port = 1198
pass in quick on tun0 inet all flags S/SA


https://gnulinuxcodigo.blogspot.com/2015/12/openbsd-soekris-router.html
http://www.openbsd.org
http://www.freebsd.org
https://networkfilter.blogspot.com/2015/01/be-your-own-vpn-provider-with-openbsd.html
http://whoer.net/
https://en.wikipedia.org

OpenBSD es genial!.

No hay comentarios:

Publicar un comentario