3 votos

Creación de una lista blanca de pocos sitios web desde el Terminal

Quiero bloquear todos los sitios web excepto uno o dos (lista blanca) mientras trabajo por motivos de "productividad" (cuando sólo estoy trabajando). Sé cómo bloquear sitios web individuales como se muestra aquí http://www.wikihow.com/Block-and-Unblock-Internet-Sites-(On-a-Mac) pero quiero bloquear todos excepto uno o dos (es decir, crear una lista blanca).

¿Se puede hacer desde el Terminal? (como el bloqueo de aplicaciones como en el enlace)

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

2voto

klanomath Puntos 19587

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

  1. Crear 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 sólo un ejemplo de cómo añadir elementos adicionales a la lista blanca. Lo mismo ocurre con el puerto 8080 en myports.

    Para permitir el acceso completo a stackexchange.com hay que añadir 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 hay errores:

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

    sudo pfctl -f /etc/pf.conf -e
  5. Para desactivar pf más tarde (cuando haya terminado con el trabajo productivo) simplemente entre:

    sudo pfctl -d

Los dos primeros pasos sólo hay que hacerlos una vez. Si desea añadir o eliminar un dominio en la lista blanca, detenga el cortafuegos, modifique org.user.block.out , analice el archivo de anclaje y vuelva a activar el cortafuegos.


Para habilitar el registro hay que modificar varios archivos y añadir un demonio/shell de lanzamiento script (todos los archivos creados/modificados probablemente necesitan una línea vacía al final):

  1. Crear un archivo de registro:

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

    local2.*                        /var/log/pf.log
  3. Añade un shell script en /usr/local/bin/pflog.sh con 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. Crear 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. Detener pfctl con sudo pfctl -d

  6. Modificar el caída en bloque línea 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 el plist del registrador:

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

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


Después de una actualización del sistema, algunos de los archivos originales anteriores pueden haber sido sustituidos y hay que volver a aplicar todos los cambios.

0voto

tyelford Puntos 346

Básicamente utilizando la misma estrategia que el artículo enlazado que has publicado pero de una manera ligeramente diferente.

En primer lugar, obtenga las direcciones IP de los sitios a los que desea acceder

La forma más fácil es hacer un ping desde el Terminal, ping www.google.com . Registra la dirección IP. Si eso no te da una dirección IP, prueba con nslookup nslookup www.google.com . Registre la dirección IP.

Desactive su DNS

Cambia manualmente la configuración de tu servidor DNS a nada. Si usted está usando DHCP es posible que tenga que establecer una dirección IP estática en su Mac para lograr esto, o hacerlo en su router / servidor DHCP y renovar su IP.

Permitir el acceso a los sitios que desee

Abra su archivo de hosts desde el Terminal, vi /etc/hosts y añada 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

Añade esto al final del archivo.

Cuando termines de ser productivo

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

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

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