1 votos

pfctl config para permitir sólo la conexión OpenVPN

He encontrado lo que parece ser una guía adecuada aquí pero pfctl se queja de un error de sintaxis y "no se ha encontrado ninguna dirección IP para en3" que es mi interfaz principal. He tenido otras reglas pf trabajando con éxito para reenviar puertos, etc. pero no puedo entender esto.

Estoy en 10.11.4 y usando Tunnelblick conectado a un servidor OpenVPN que instalé yo mismo en un VPS.

¿Podría alguien dar instrucciones sobre la configuración correcta de pfctl en El Capitan? Necesito mantener el acceso abierto a redes privadas como 10.0.0.0 y 168.1.0.0

Gracias.

1voto

Erk Puntos 11

Lo siguiente funciona en Sierra.

Añada las siguientes líneas al final de /etc/pf.conf

anchor "org.vpnonly.pf"
load anchor "org.vpnonly.pf" from "/etc/pf.anchors/org.vpnonly.pf.rules"

Cree este archivo de configuración en /etc/pf.anchors/org.vpnonly.pf.rules

# Options
set block-policy drop
set fingerprints "/etc/pf.os"
set ruleset-optimization basic
set skip on lo0

# Interfaces
vpn_intf = "{ utun0 utun1 utun2 utun3 }"

# Ports
allowed_vpn_ports = "{ 1:65535 }"

# Table with allowed IPs
table <allowed_vpn_ips> persist file "/etc/pf.anchors/vpn.list" file "/etc/pf.anchors/custom.list"

# Block all outgoing packets
block out all

# Antispoof protection
#had to disable this to avoid error
#antispoof for $vpn_intf inet

# Allow outgoing packets to specified IPs only
pass out proto icmp from any to <allowed_vpn_ips>
pass out proto {tcp udp} from any to <allowed_vpn_ips> port $allowed_vpn_ports

# Allow traffic for VPN interfaces
pass out on $vpn_intf all

Crear /etc/pf.anchors/vpn.list y /etc/pf.anchors/custom.list

sudo touch /etc/pf.anchors/vpn.list /etc/pf.anchors/custom.list

Añadir una lista de direcciones IP permitidas (direcciones de servidores VPN) a /etc/pf.anchors/vpn.list

41.xxx.xxx.xxx
42.xxx.xxx.xxx

Añadir el DNS de google a la lista personalizada /etc/pf.anchors/custom.list 8.8.8.8 8.8.4.4

sudo pfctl -e -f /etc/pf.conf y comprobar si hay errores

Para que se cargue al inicio, edite a pfctl por defecto en /System/Library/LaunchDaemons/com.apple.pfctl.plist para establecer <key>Disabled</key> <true/>

asegúrese de que el modo sin root está desactivado. (arrancar al terminal de recuperación con Command+R a la campanada y a correr csrutil disable ejecute estos comandos, luego regrese a la terminal de recuperación para volver a habilitar el rootless con csrutil enable

Cree su LaunchDaemon en /Library/LaunchDaemons/com.apple.pfctl.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.apple.pfctl</string>
<key>ProgramArguments</key>
    <array>
        <string>pfctl</string>
        <string>-e</string>
        <string>-f</string>
        <string>/etc/pf.conf</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

terminar con sudo chmod 644 /Library/LaunchDaemons/com.apple.pfctl.plist , reiniciar con el modo rootless activado y ya está.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X