Creando una lista blanca de algunos sitios web desde la Terminal

3

Quiero bloquear todos los sitios web excepto uno o dos sitios web (lista blanca) mientras trabajo con fines de 'productividad' (cuando estoy trabajando solo). Sé cómo bloquear sitios web individuales como se muestra aquí enlace pero Quiero bloquear todos excepto uno o dos (es decir, crear una lista blanca).

¿Se puede hacer desde la Terminal? (como bloquear aplicaciones como en el enlace)

Preferiría hacerlo sin instalar ninguna aplicación de productividad.

    
pregunta Umar 28.03.2016 - 21:04

2 respuestas

1

Para bloquear permanentemente el tráfico saliente a todos los dominios, excepto algunos, debe crear un nuevo archivo de anclaje y agregarlo a pf.conf y habilitar el firewall pf incluido.

  1. Cree un archivo de anclaje org.user.block.out en /private/etc/pf.anchors

    sudo touch /private/etc/pf.anchors/org.user.block.out
    

    con el siguiente contenido y una línea vacía al final

    #whitelist
    mygoodhosts = "{ wikipedia.org, stackexchange.com, 197.10.15.234 }"
    #ports to block/pass
    myports = "{ 443, 80, 8080 }"
    
    block drop out proto { tcp, udp } from any to any port $myports
    pass out proto { tcp, udp } from any to $mygoodhosts port $myports
    

    La dirección IP adicional en mygoodhosts es solo un ejemplo de cómo agregar elementos adicionales a la lista blanca. Lo mismo ocurre con el puerto 8080 en myports.

    Para permitir el acceso completo a stackexchange.com, debe agregar algunos dominios más porque algunos elementos (por ejemplo, javascript) se cargan desde dominios de terceros como ajax.googleapis.com.

  2. Modifique el archivo /private/etc/pf.conf pero mantenga una línea vacía al final

    archivo original:

    scrub-anchor "com.apple/*"
    nat-anchor "com.apple/*"
    rdr-anchor "com.apple/*"
    dummynet-anchor "com.apple/*"
    anchor "com.apple/*"
    load anchor "com.apple" from "/etc/pf.anchors/com.apple"
    

    a

    scrub-anchor "com.apple/*"
    nat-anchor "com.apple/*"
    rdr-anchor "com.apple/*"
    dummynet-anchor "com.apple/*"
    anchor "com.apple/*"
    anchor "org.user.block.out"
    load anchor "com.apple" from "/etc/pf.anchors/com.apple"
    load anchor "org.user.block.out" from "/etc/pf.anchors/org.user.block.out"
    
  3. Analice y pruebe su archivo de anclaje para asegurarse de que no haya errores:

    sudo pfctl -vnf /etc/pf.anchors/org.user.block.out
    
  4. Ahora habilita el firewall:

    sudo pfctl -f /etc/pf.conf -e
    
  5. Para deshabilitar pf más tarde (después de que haya terminado con el trabajo productivo) simplemente ingrese:

    sudo pfctl -d
    

Los dos primeros pasos solo deben hacerse una vez. Si desea agregar o eliminar un dominio en la lista blanca, detenga el firewall, modifique org.user.block.out , analice el archivo delimitador y vuelva a habilitar el firewall.

Para habilitar el registro, debe modificar varios archivos y agregar un daemon de inicio / script de shell (todos los archivos creados / modificados probablemente necesiten una línea vacía al final):

  1. Crear un archivo de registro:

    sudo touch /etc/log/pf.log
    
  2. Modifique syslog.conf agregando una línea:

    local2.*                        /var/log/pf.log
    
  3. Agregue un script de shell en /usr/local/bin/pflog.sh sin el contenido:

    #!/bin/sh
    # bodged solution to absence of pflogd, ref 'Book of PF' p136
    
    ifconfig pflog0 create
    /usr/sbin/tcpdump -lnettti pflog0 | /usr/bin/logger -t pf -p local2.info
    
  4. Crea un demonio de lanzamiento /Library/LaunchDaemons/org.user.pflog.plist con el contenido:

    <?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>KeepAlive</key>
        <true/>
        <key>Label</key>
        <string>org.user.pflog</string>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/local/bin/pflog.sh</string>
        </array>
        <key>Disabled</key>             
        <false/>
        <key>RunAtLoad</key>
        <true/>
    </dict>
    </plist>
    
  5. Detenga pfctl con sudo pfctl -d
  6. Modifique la línea drop drop en /private/etc/pf.anchors/org.user.block.out a:

    block drop out log (all) proto { tcp, udp } from any to any port $myports
    
  7. Cargue la lista del registrador:

    sudo launchctl load -w /Library/LaunchDaemons/org.user.pflog.plist
    
  8. Ahora vuelva a habilitar el firewall:

    sudo pfctl -f /etc/pf.conf -e
    
  9. Mira pf.log en Console.app!

Después de una actualización o actualización del sistema, algunos de los archivos originales anteriores pueden haber sido reemplazados y usted debe volver a aplicar todos los cambios.

    
respondido por el klanomath 29.03.2016 - 03:36
0

Básicamente, utiliza la misma estrategia que el artículo vinculado que publicaste pero de una manera ligeramente diferente.

Primero obtenga las direcciones IP de los sitios a los que desea acceder

La forma más sencilla es simplemente hacer ping desde Terminal, ping www.google.com . Registre la dirección IP. Si eso no te da una dirección IP, prueba nslookup nslookup www.google.com . Registre la dirección IP.

Desactiva tu DNS

Gire manualmente la configuración de su servidor DNS a nada. Si está utilizando DHCP, es posible que deba configurar una dirección IP estática en su Mac para lograr esto, o hacerlo en su enrutador / servidor DHCP y renovar su IP.

Permitir los sitios a los que desea acceder

Abra el archivo de hosts de la Terminal, vi /etc/hosts y agregue la dirección IP y los nombres DNS de los sitios a los que desea acceder

216.58.199.78    www.google.com
157.166.226.25   www.cnn.com

Agrégalos al final del archivo.

Cuando hayas terminado de ser productivo

Vuelve tu configuración de DNS a la normalidad. También es posible que desee comentar las líneas en el archivo hosts con un # .

#216.58.199.78    www.google.com
#157.166.226.25   www.cnn.com
    
respondido por el tyelford 29.03.2016 - 00:39

Lea otras preguntas en las etiquetas