Mac OSX Firewall-Tool pf

Discussion in 'macOS' started by JackCarver, Jun 4, 2014.

  1. JackCarver

    JackCarver Junior Member

    Es werden bei den Regeln für das lokale Netzwerk eigentlich alle Ports und alle Protokolle geöffnet, da sollte Bonjour mit bei sein. Macht es denn nen Unterschied wenn du explizit diesen UDP Port auf en0 öffnest?
     
  2. Ghost

    Ghost Junior Member

    Ja, es macht einen Unterschied.

    Das NAS und andere Netzwerkgeräte erscheinen im Finder (Freigaben) und das Drucken mit dem Netzwerkdrucker funktioniert wieder.
     
  3. JackCarver

    JackCarver Junior Member

    Mach mal das Schlüsselwort all dahinter, ich guck mir das auch nochmal an.
     
  4. Ghost

    Ghost Junior Member

    Hey, da steht bereits "all"

    pass in on lo0 all
    pass out on lo0 all

    Für little Snitch gibt es eine ähnliche Vorgehensweise für den IP-Leak Schutz, da wird alles verboten bis auf:

    Broadcast-Adressen
    Multicast-Adressen
    Bonjoure-Adressen
    lokales Netzwerk
    VPN-Verbindung
     
  5. JackCarver

    JackCarver Junior Member

    Nein, nicht beim localhost Interface, sondern bei den Regeln für den WLAN Adapter en0. Dort n all dahinter. Es sollte ja so sein, dass alles im lokalen Netzwerk erlaubt ist und man da nicht extra Ports für bestimmte Dienste freischalten muss. LAN ist ja Safe
     
  6. Ghost

    Ghost Junior Member

    Sorry, wo soll ich das machen?

    Aktuell schaut es so aus:

    block all
    pass in on lo0 all
    pass out on lo0 all
    pass out on en0 proto udp to any port {1151,150,151,149,1149,1150,53,5353} keep state
    pass out on en0 proto tcp to any port {1152,152} keep state
    pass out on en0 to 192.168.178.0/24
    pass in on en0 from 192.168.178.0/24
    pass out on tun0 all keep state
     
  7. JackCarver

    JackCarver Junior Member

    pass out on en0 to 192.168.178.0/24 all pass in on en0 from 192.168.178.0/24 all
     
  8. JackCarver

    JackCarver Junior Member

    Und mach diese Regeln mal direkt unter den Regeln für lo. Evtl spuckt da die Reihenfolge in die Suppe. Es macht ja kein Sinn, wenn man möchte, dass alles im LAN erlaubt ist dann für bestimmte Ports noch Ausnahmen fürs LAN zu definieren.
     
  9. Ghost

    Ghost Junior Member

    Jack, das verursacht einen Syntax Error

    XXXs-Mac-mini:~ xxx$ sudo pfctl -f /Users/xxx/Documents/vpn2.rules
    pfctl: Use of -f option, could result in flushing of rules
    present in the main ruleset added by the system at startup.
    See /etc/pf.conf for further details.

    No ALTQ support in kernel
    ALTQ related functions disabled
    /Users/xxx/Documents/vpn2.rules:4: syntax error
    /Users/xxx/Documents/vpn2.rules:5: syntax error
    pfctl: Syntax error in config file: pf rules not loaded
     
  10. JackCarver

    JackCarver Junior Member

    Ich guck mir das Morgen mal an, es ist wie gesagt sonderbar, dass dein Mac hier ne Extrawurst für nen Port möchte, obwohl eigentlich das LAN komplett frei sein sollte.
     
  11. Ghost

    Ghost Junior Member

    OK Jack, bin gespannt was raus kommt.

    Bis dann
     
  12. JackCarver

    JackCarver Junior Member

    @Ghost:

    Wie versprochen hab ich mir das ganze nochmal angesehen und ich kann deine Beobachtungen bestätigen, mangels NAS zumindest was das Drucken übers Netzwerk anbelangt. Die Ergebnisse lassen eigentlich nur den Schluss zu, dass der Drucker nur dann übers WLAN angesprochen werden kann, wenn der UDP Port 5353 gegen das Internet geöffnet wird, warum auch immer.


    Regeln 1:

    Code:
      [FONT=Helvetica][SIZE=14px]set skip on lo0[/SIZE][/FONT]
      [FONT=Helvetica][SIZE=14px]block all[/SIZE][/FONT]
      [FONT=Helvetica][SIZE=14px]pass out on en0 to 192.168.2.0/24[/SIZE][/FONT]
      [FONT=Helvetica][SIZE=14px]pass in on en0 from 192.168.2.0/24[/SIZE][/FONT]
      [FONT=Helvetica][SIZE=14px]pass out on en0 proto udp to 192.168.2.0/24 port 5353 keep state    #(1)[/SIZE][/FONT]
      [FONT=Helvetica][SIZE=14px]#pass out on en0 proto udp to any port {1151,150,151,149,1149,1150,53,5353} keep state[/SIZE][/FONT]
      [FONT=Helvetica][SIZE=14px]pass out on en0 proto tcp to any port {1152,152} keep state[/SIZE][/FONT]
      [FONT=Helvetica][SIZE=14px]pass out on tun0 all keep state[/SIZE][/FONT]
      
    Regeln 2:

    Code:
      [FONT=Helvetica][SIZE=14px]set skip on lo0[/SIZE][/FONT]
      [FONT=Helvetica][SIZE=14px]block all[/SIZE][/FONT]
      [FONT=Helvetica][SIZE=14px]pass out on en0 to 192.168.2.0/24[/SIZE][/FONT]
      [FONT=Helvetica][SIZE=14px]pass in on en0 from 192.168.2.0/24[/SIZE][/FONT]
      [FONT=Helvetica][SIZE=14px]#pass out on en0 proto udp to 192.168.2.0/24 port 5353 keep state[/SIZE][/FONT]
      [FONT=Helvetica][SIZE=14px]pass out on en0 proto udp to any port {1151,150,151,149,1149,1150,53,5353} keep state    #(2)[/SIZE][/FONT]
      [FONT=Helvetica][SIZE=14px]pass out on en0 proto tcp to any port {1152,152} keep state[/SIZE][/FONT]
      [FONT=Helvetica][SIZE=14px]pass out on tun0 all keep state[/SIZE][/FONT]
      

    Nur mit den Regeln 2 klappte der Netzwerkdrucker...Der Unterschied zwischen diesen 2 Regelwerken ist einfach nur, dass bei Regelwerk 1 der UDP Port 5353 gegen das LAN geöffnet wird, wie du an (1) sehen kannst. Bei Regelwerk 2 wird dagegen der UDP Port 5353 gegen das Internet geöffnet.

    Da der Netzwerkdrucker natürlich eine LAN IP haben muss um ihn überhaupt ansprechen zu können, war es mir schleierhaft, wieso das Drucken nicht geht, wenn ich das gesamte LAN rein und rausgehend für en0 öffne...

    Ich hab also mal im Netz gegoogelt und es gibt da einige Parallelen zb bei Apple-TV ist es nicht möglich Inhalte vom Mac auf Apple TV zu streamen wenn die beiden isoliert im LAN verbunden sind, auch hier brauchts Internet:

    https://discussions.apple.com/message/23283028#23283028

    Da das ganze in gewisser Weise unlogisch ist, konnte ich es erst nicht glauben, ist aber tatsächlich wirklich so.
     
  13. JackCarver

    JackCarver Junior Member

    Ich werde das mal in die Regeln vom Anfang mit einfließen lassen.
     
  14. Ghost

    Ghost Junior Member

    Hey Jack,

    danke für die Überprüfung und die Anpassung der Regeln.

    Gemeinsam sind wir stark :cool:
     
  15. M

    Maximilian Junior Member

    Hallo Jack,

    erstmal danke für die super Anleitung; für mich als Mac-Nutzer eine längst überfällige Sache :)

    Da ich in diesen Dingen nicht so bewandert bin, habe ich noch ein kleines Problem. In Deinem Script, in den Zeilen 6 & 7 benutzt Du für Dein Lan die Adressen 192.168.2.0. Ich denke mal, dass es bei meiner Fritz-Box die 192.168.178.1 sein sollte. Wenn ich jetzt Dein Script dahingehend ändere, also 192.168.178.1/24 schreibe und abspeichere und es dann einlade und aktiviere bekomme ich mit sudo pfctl -sr aber nur 192.168.178.0 angezeigt. Hat das vielleicht was mit der /24 am Ende zu tun?

    Wahrscheinlich ist es etwas triviales und ich bin einfach zu blöd :)
     
  16. Ghost

    Ghost Junior Member

    @Maxi

    block all
    pass in on lo0 all
    pass out on lo0 all
    pass out on en0 proto udp to any port {1151,150,151,149,1149,1150,53,5353} keep state
    pass out on en0 proto tcp to any port {1152,152} keep state
    pass out on en0 to 192.168.178.0/24
    pass in on en0 from 192.168.178.0/24
    pass out on tun0 all keep state
     
  17. JackCarver

    JackCarver Junior Member

    Genau mach es so wie Ghost das gezeigt hat, 192.168.178.1/24 macht kein Sinn, da das vorne keine Netzwerkadresse ist sondern ne Hostadresse, nämlich die von deiner Fritzbox. Mit 192.168.178.0/24 ist dein komplettes LAN abgedeckt, auch die Fritz.
     
  18. M

    Maximilian Junior Member

    Hallo,

    vielen Dank für die schnellen Antworten.

    Ich habe es jetzt so eingetragen, wie von Ghost beschrieben. Aktiviere ich die Regeln, geht nichts mehr rein oder raus; soweit so gut. Wenn ich dann den OpenVPN anwerfe sollte es ja eigentlich wieder gehen, aber leider bleibt auch dann alles gesperrt. Erst nachdem ich die Regeln wieder deaktiviert habe geht alles wieder, sowohl mit als auch ohne OpenVPN. Wie gesagt, die Fritzbox ist auf 192.168.178.1. Mit 192.168.178.0/24 sollte alles von 192.168.178.0 bis 192.168.178.24 abgedeckt sein, richtig? Noch ne Idee woran es liegen könnte? Vielleicht an en0 oder so?
     
  19. JackCarver

    JackCarver Junior Member

    Kannst du OpenVPN connecten? Wenn ja werf mal das Terminal an und poste hier die Ausgabe von ifconfig mit laufenden OpenVPN. Abgedeckt ist alles von 192.168.178.1-192.168.178.254, also dein gesamtes LAN.
     
  20. M

    Maximilian Junior Member

    Hallo Jack,

    ja, ohne aktiviertes Script kann ich OpenVPN connecten.

    Hier die Ausgabe mit connected OpenVPN, aber ohne aktiviertes Script:

    lo0: flags=8049 mtu 16384
    options=3
    inet6 ::1 prefixlen 128
    inet 127.0.0.1 netmask 0xff000000
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
    nd6 options=1
    gif0: flags=8010 mtu 1280
    stf0: flags=0 mtu 1280
    en0: flags=8863 mtu 1500
    options=10b
    ether 3c:07:54:74:7c:12
    inet6 fe80::3e07:54ff:fe74:7c12%en0 prefixlen 64 scopeid 0x4
    inet 192.168.178.53 netmask 0xffffff00 broadcast 192.168.178.255
    nd6 options=1
    media: autoselect (100baseTX )
    status: active
    en1: flags=8863 mtu 1500
    ether 68:a8:6d:50:fd:a2
    inet6 fe80::6aa8:6dff:fe50:fda2%en1 prefixlen 64 scopeid 0x5
    inet 192.168.178.44 netmask 0xffffff00 broadcast 192.168.178.255
    nd6 options=1
    media: autoselect
    status: active
    fw0: flags=8863 mtu 4078
    lladdr 3c:07:54:ff:fe:b3:8e:7a
    nd6 options=1
    media: autoselect
    status: inactive
    en4: flags=8963 mtu 1500
    options=60
    ether d2:00:1b:38:e7:a0
    media: autoselect
    status: inactive
    bridge0: flags=8863 mtu 1500
    options=63
    ether 3e:07:54:47:d5:00
    Configuration:
    id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
    maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
    root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
    ipfilter disabled flags 0x2
    member: en4 flags=3
    ifmaxaddr 0 port 7 priority 0 path cost 0
    nd6 options=1
    media:
    status: inactive
    p2p0: flags=8843 mtu 2304
    ether 0a:a8:6d:50:fd:a2
    media: autoselect
    status: inactive
    utun0: flags=8051 mtu 1500
    inet 10.29.12.139 --> 10.29.12.139 netmask 0xffffff80

    Hier dann mit aktiviertem Script:

    lo0: flags=8049 mtu 16384
    options=3
    inet6 ::1 prefixlen 128
    inet 127.0.0.1 netmask 0xff000000
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
    nd6 options=1
    gif0: flags=8010 mtu 1280
    stf0: flags=0 mtu 1280
    en0: flags=8863 mtu 1500
    options=10b
    ether 3c:07:54:74:7c:12
    inet6 fe80::3e07:54ff:fe74:7c12%en0 prefixlen 64 scopeid 0x4
    inet 192.168.178.53 netmask 0xffffff00 broadcast 192.168.178.255
    nd6 options=1
    media: autoselect (100baseTX )
    status: active
    en1: flags=8863 mtu 1500
    ether 68:a8:6d:50:fd:a2
    inet6 fe80::6aa8:6dff:fe50:fda2%en1 prefixlen 64 scopeid 0x5
    inet 192.168.178.44 netmask 0xffffff00 broadcast 192.168.178.255
    nd6 options=1
    media: autoselect
    status: active
    fw0: flags=8863 mtu 4078
    lladdr 3c:07:54:ff:fe:b3:8e:7a
    nd6 options=1
    media: autoselect
    status: inactive
    en4: flags=8963 mtu 1500
    options=60
    ether d2:00:1b:38:e7:a0
    media: autoselect
    status: inactive
    bridge0: flags=8863 mtu 1500
    options=63
    ether 3e:07:54:47:d5:00
    Configuration:
    id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
    maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
    root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
    ipfilter disabled flags 0x2
    member: en4 flags=3
    ifmaxaddr 0 port 7 priority 0 path cost 0
    nd6 options=1
    media:
    status: inactive
    p2p0: flags=8843 mtu 2304
    ether 0a:a8:6d:50:fd:a2
    media: autoselect
    status: inactive
    utun0: flags=8051 mtu 1500
    inet 10.29.12.139 --> 10.29.12.139 netmask 0xffffff80

    Scriptausgabe via sudo pfctl -sr:

    No ALTQ support in kernel
    ALTQ related functions disabled
    block drop all
    pass out on en0 proto udp from any to any port = 1151 keep state
    pass out on en0 proto udp from any to any port = 150 keep state
    pass out on en0 proto udp from any to any port = 151 keep state
    pass out on en0 proto udp from any to any port = 149 keep state
    pass out on en0 proto udp from any to any port = 1149 keep state
    pass out on en0 proto udp from any to any port = 1150 keep state
    pass out on en0 proto udp from any to any port = 53 keep state
    pass out on en0 proto udp from any to any port = 5353 keep state
    pass out on lo0 all flags S/SA keep state
    pass in on lo0 all flags S/SA keep state
    pass out on en0 proto tcp from any to any port = 1152 flags S/SA keep state
    pass out on en0 proto tcp from any to any port = 152 flags S/SA keep state
    pass out on en0 inet from any to 192.168.178.0/24 flags S/SA keep state
    pass in on en0 inet from 192.168.178.0/24 to any flags S/SA keep state
    pass out on tun0 all flags S/SA keep state
     
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice