pfctl config para permitir solo la conexión OpenVPN

Encontré lo que parece ser una guía adecuada aquí , pero pfctl se queja de un error de sintaxis y "no se encontró una dirección IP para en3", que es mi interfaz principal. He tenido otras reglas pf que funcionan correctamente para reenviar puertos, etc., pero no puedo resolver esto.

Estoy en 10.11.4 y uso Tunnelblick conectado a un servidor OpenVPN. Me instalé en un VPS.

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

¡Gracias!

Respuestas (1)

Los siguientes trabajos en Sierra.

Agregue 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

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

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

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

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

Agregue Google DNS a /etc/pf.anchors/custom.list personalizado 8.8.8.8 8.8.4.4

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

Para cargar al inicio, edite el pfctl predeterminado en /System/Library/LaunchDaemons/com.apple.pfctl.plistpara establecer<key>Disabled</key> <true/>

asegúrese de que el modo sin raíz esté deshabilitado. (inicie en el terminal de recuperación con Command+Rel timbre y ejecute csrutil disableestos comandos, luego regrese al terminal de recuperación para volver a habilitar rootless concsrutil 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>

termine con sudo chmod 644 /Library/LaunchDaemons/com.apple.pfctl.plist, reinicie con el modo sin raíz habilitado y listo.

Siempre quise responder a esta pregunta: tengo una pestaña abierta con esta pregunta durante 2 meses, pero no pude configurar un servidor OpenVPN que funcione correctamente en AWS. Es bueno ver que se responde ahora.
¿ Realmente tienes que editar /etc/pf.confcomo root? esto parece tan roto. En linux/windows, puede simplemente agregar nuevas reglas de firewall llamando iptableso wfpcodificando. ¿Realmente no hay forma de hacer esto en osx sin editar un archivo de configuración frikkin como root?
el archivo es propiedad de root: -rw-r--r-- 1 root wheel 1.0K 16 Jul 2017 /etc/pf.conftambién puede ser posible crear un archivo de configuración propiedad del usuario. no lo he probado.