Come posso rilasciare i pacchetti in uscita su host / porta specifici?

7

Voglio testare qualcosa a livello locale. Per questo, mi piacerebbe essere in grado di rilasciare i pacchetti in uscita inviati a uno specifico host / porta. Ho provato a fare casino con le regole pf usando Murus (la versione non libera), ma non ho avuto successo.

Mi trovo a mio agio nel terminale, ma non sono sicuro dove apportare modifiche e come applicarle. Conosco iptables su linux.

Posso ottenere indicazioni su come ottenere questo risultato?

    
posta Ovesh 08.03.2016 - 09:42
fonte

2 risposte

9

Per bloccare in modo permanente il traffico in uscita verso domini e / o porte specifici, devi creare un nuovo file di ancoraggio e aggiungerlo a pf.conf.

  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

    mybadtcphosts = "{ www.domain.com, domain.com, 135.0.9.17, 10.0.0.17 }"
    mybadtcpports = "{ 443, 80 }"
    mybadudphosts = "{ www.domain3.com, domain3.com, 27.134.89.124, 192.168.5.37 }"
    mybadudpports = "{ 53, 5353 }"
    
    block drop out proto tcp from any to $mybadtcphosts port $mybadtcpports
    block drop out proto udp from any to $mybadudphosts port $mybadudpports
    

    I nomi di dominio / gli indirizzi IP aggiuntivi negli host mybad * sono solo un esempio su come aggiungere domini aggiuntivi. Lo stesso vale per le porte 80/5353 nelle porte mybad *.

    Una soluzione semplice ma meno flessibile è:

    block drop out proto tcp from any to domain.com port 80
    
  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 modifica /System/Library/LaunchDaemons/com.apple.pfctl.plist da

    <array>
        <string>pfctl</string>
        <string>-f</string>
        <string>/etc/pf.conf</string>
    </array>
    

    a

    <array>
        <string>pfctl</string>
        <string>-e</string>
        <string>-f</string>
        <string>/etc/pf.conf</string>
    </array>
    

    Devi disabilitare System Integrity Protection se El Capitan è installato per fare ciò. Dopo aver modificato il file riattivabile SIP. Dopo aver riavviato il tuo Mac pf sarà abilitato (è l'opzione -e).

    In alternativa puoi creare il tuo demone di lancio simile alla risposta qui: Utilizzo del server 5.0.15 per condividere internet SENZA condivisione Internet .

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.

Murus:

Apri Murus. Fai clic sull'ingranaggio nel pannello di configurazione per creare una regola personalizzata:

Inseriscituttiidettaglinecessari:

PremiilpulsantebluAggiungiregolaPFpersonalizzataeavviaPFnell'angoloinaltoadestraconlafrecciadestra(oilpulsante"Riproduci").

    
risposta data 10.03.2016 - 22:51
fonte
9

Potresti usare il firewall PF:

Aggiungi questa riga a /etc/pf.conf per eliminare tutti i pacchetti sull'ip: port

block drop out quick proto tcp  to 192.168.1.103 port 80

Dopo aver cambiato pf.conf, dovresti ricaricarlo con

sudo pfctl -f /etc/pf.conf

Alla fine dovrai abilitarlo con

sudo pfctl -e
    
risposta data 10.03.2016 - 22:27
fonte

Leggi altre domande sui tag