Creazione di whitelist di pochi siti Web da Terminal

3

Voglio bloccare tutti i siti Web tranne uno o due siti web (white list) mentre lavoro per scopi di 'produttività' (quando sto lavorando solo). So come bloccare i singoli siti web come mostrato qui link ma Voglio bloccare tutto tranne uno o due (cioè, creare una lista bianca).

Può essere fatto dal terminale? (come il blocco delle app come nel link)

Preferirei farlo senza installare app di produttività.

    
posta Umar 28.03.2016 - 21:04
fonte

2 risposte

1

Per bloccare permanentemente il traffico in uscita verso tutti i domini tranne alcuni, devi creare un nuovo file di ancoraggio e aggiungerlo a pf.conf e abilitare il firewall pf incluso.

  1. Crea un file di ancoraggio org.user.block.out in /private/etc/pf.anchors

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

    con il seguente contenuto e una riga vuota finale

    #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
    

    L'indirizzo IP aggiuntivo in mygoodhosts è solo un esempio di come aggiungere ulteriori elementi alla whitelist. Lo stesso vale per la porta 8080 in myports.

    Per consentire l'accesso completo a stackexchange.com devi aggiungere altri domini perché alcuni elementi (ad esempio javascript) sono caricati da domini di terze parti come ajax.googleapis.com.

  2. Modifica il file /private/etc/pf.conf ma mantieni una riga vuota finale

    file originale:

    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. Analizza e verifica il tuo file di ancoraggio per assicurarti che non vi siano errori:

    sudo pfctl -vnf /etc/pf.anchors/org.user.block.out
    
  4. Ora abilita il firewall:

    sudo pfctl -f /etc/pf.conf -e
    
  5. Per disabilitare pf più tardi (dopo aver terminato il lavoro produttivo) inserisci semplicemente:

    sudo pfctl -d
    

I primi due passaggi devono essere eseguiti una sola volta. Se si desidera aggiungere o rimuovere un dominio nella whitelist, arrestare il firewall, modificare org.user.block.out , analizzare il file di ancoraggio e riattivare il firewall.

Per abilitare la registrazione è necessario modificare diversi file e aggiungere uno script di daemon / shell di avvio (tutti i file creati / modificati probabilmente hanno bisogno di una riga vuota finale):

  1. Crea un file di registro:

    sudo touch /etc/log/pf.log
    
  2. Modifica syslog.conf aggiungendo una riga:

    local2.*                        /var/log/pf.log
    
  3. Aggiungi uno script di shell in /usr/local/bin/pflog.sh con il contenuto:

    #!/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 daemon di lancio /Library/LaunchDaemons/org.user.pflog.plist con il contenuto:

    <?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. Interrompi pfctl con sudo pfctl -d
  6. Modifica la riga blocca blocco in /private/etc/pf.anchors/org.user.block.out a:

    block drop out log (all) proto { tcp, udp } from any to any port $myports
    
  7. Carica il plogger:

    sudo launchctl load -w /Library/LaunchDaemons/org.user.pflog.plist
    
  8. Ora riattiva il firewall:

    sudo pfctl -f /etc/pf.conf -e
    
  9. Guarda pf.log in Console.app!

Dopo un aggiornamento del sistema o l'aggiornamento di alcuni dei file originali di cui sopra potrebbe essere stato sostituito e devi riapplicare tutte le modifiche.

    
risposta data 29.03.2016 - 03:36
fonte
0

Sostanzialmente si utilizza la stessa strategia dell'articolo collegato che hai pubblicato, ma in un modo leggermente diverso.

Prima Ottieni gli indirizzi IP dei siti a cui vuoi accedere

Il modo più semplice è quello di eseguire il ping da terminale, ping www.google.com . Registra l'indirizzo IP. Se questo non ti dà un indirizzo IP, prova nslookup nslookup www.google.com . Registra l'indirizzo IP.

Disattiva il DNS

Trasforma manualmente le impostazioni del server DNS su nulla. Se stai usando DHCP potresti aver bisogno di impostare un indirizzo IP statico sul tuo Mac per farlo, oppure farlo sul tuo router / server DHCP e rinnovare il tuo IP.

Consenti ai siti a cui vuoi accedere

Apri il file host di Terminal, vi /etc/hosts e aggiungi l'indirizzo IP e i nomi DNS dei siti a cui desideri accedere

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

Aggiungi questi alla fine del file.

Quando hai finito di essere produttivi

Ripristina le impostazioni DNS sulla normalità. Potresti anche voler commentare le righe nel file hosts con # .

#216.58.199.78    www.google.com
#157.166.226.25   www.cnn.com
    
risposta data 29.03.2016 - 00:39
fonte

Leggi altre domande sui tag