2 votes

Pare-feu transparent utilisant MacOS pf

J'essaie de configurer un pare-feu transparent avec un Mac mini fonctionnant sous MacOS Sierra. En gros, j'essaie de faire ceci (uniquement avec MacOS) : Un pare-feu transparent utilisant OpenBSD

Voici la configuration de mon réseau :

Internet <-ethernet-> Router <-ethernet->en0 Mac mini en4<-ethernet-> AppleTV

Le routeur se connecte également à plusieurs autres appareils via Wifi.

Voici ce que j'ai fait sur le Mac mini pour en faire un pare-feu transparent :

  1. J'ai configuré le pont via ces commandes :

    sudo ifconfig bridge1 create
    sudo ifconfig bridge1 addm en0 addm en4
    sudo ifconfig bridge1 up

Du point de vue de l'AppleTV, c'est maintenant comme si le Mac mini n'existait pas.

  1. J'ai configuré pf en ajoutant ceci à /etc/pf.conf :

    anchor "org.user"
    load anchor "org.user" from "/etc/pf.anchors/org.user"

    et a créé /etc/pf.anchors/org.user avec ce contenu :

    # skip lo0
    set skip on lo0
    
    # options
    set block-policy drop
    
    # rules
    block on en4 all

    Puis j'ai "redémarré" pf avec les nouvelles règles :

    sudo pfctl -f /etc/pf.conf
    sudo pfctl -e

Maintenant, je m'attends à ce qu'aucun trafic de l'AppleTV ne sorte sur le réseau. Mais AppleTV fonctionne toujours comme si je n'avais jamais configuré ces règles pf.

Qu'est-ce que je rate ?

PS : Voici la sortie de ifconfig :

MacMini:~ Daniel$ ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
    options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>
    inet 127.0.0.1 netmask 0xff000000 
    inet6 ::1 prefixlen 128 
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 
    nd6 options=201<PERFORMNUD,DAD>
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
en0: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
    options=10b<RXCSUM,TXCSUM,VLAN_HWTAGGING,AV>
    ether a8:20:66:1e:9a:62 
    inet6 fe80::1cca:5c4b:64a7:7350%en0 prefixlen 64 secured scopeid 0x4 
    inet6 2a02:8070:a89:8f00:181c:12bc:a98c:7229 prefixlen 64 autoconf secured 
    inet6 2a02:8070:a89:8f00:d489:89da:9083:17d8 prefixlen 64 autoconf temporary 
    inet6 2a02:8070:a89:8f00::9 prefixlen 64 dynamic 
    inet 192.168.0.137 netmask 0xffffff00 broadcast 192.168.0.255
    nd6 options=201<PERFORMNUD,DAD>
    media: autoselect (1000baseT <full-duplex,flow-control,energy-efficient-ethernet>)
    status: active
en4: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
    options=b<RXCSUM,TXCSUM,VLAN_HWTAGGING>
    ether 00:23:56:1c:82:26 
    inet6 fe80::223:56ff:fe1c:8226%en4 prefixlen 64 scopeid 0x5 
    nd6 options=201<PERFORMNUD,DAD>
    media: autoselect (100baseTX <full-duplex>)
    status: active
en1: flags=8823<UP,BROADCAST,SMART,SIMPLEX,MULTICAST> mtu 1500
    ether 20:c9:d0:93:5e:f1 
    nd6 options=201<PERFORMNUD,DAD>
    media: autoselect (<unknown type>)
    status: inactive
fw0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 4078
    lladdr 00:3e:e1:ff:fe:b3:04:08 
    nd6 options=201<PERFORMNUD,DAD>
    media: autoselect <full-duplex>
    status: inactive
en3: flags=963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX> mtu 1500
    options=60<TSO4,TSO6>
    ether 32:00:1b:30:40:80 
    media: autoselect <full-duplex>
    status: inactive
bridge0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=63<RXCSUM,TXCSUM,TSO4,TSO6>
    ether 32:00:1b:30:40:80 
    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: en3 flags=3<LEARNING,DISCOVER>
            ifmaxaddr 0 port 8 priority 0 path cost 0
    nd6 options=201<PERFORMNUD,DAD>
    media: <unknown type>
    status: inactive
p2p0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 2304
    ether 02:c9:d0:93:5e:f1 
    media: autoselect
    status: inactive
awdl0: flags=8902<BROADCAST,PROMISC,SIMPLEX,MULTICAST> mtu 1484
    ether 8e:36:65:e0:9a:1e 
    nd6 options=201<PERFORMNUD,DAD>
    media: autoselect
    status: inactive
utun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 2000
    inet6 fe80::9a58:4bd5:9f77:f77a%utun0 prefixlen 64 scopeid 0xc 
    nd6 options=201<PERFORMNUD,DAD>
utun1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1380
    inet6 fe80::1e34:cc36:613b:1ee6%utun1 prefixlen 64 scopeid 0xf 
    nd6 options=201<PERFORMNUD,DAD>
ppp0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1280
    inet 10.0.1.16 --> 1.0.0.1 netmask 0xffffff00 
bridge1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=3<RXCSUM,TXCSUM>
    ether aa:20:66:e1:cb:01 
    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: en0 flags=3<LEARNING,DISCOVER>
            ifmaxaddr 0 port 4 priority 0 path cost 0
    member: en4 flags=3<LEARNING,DISCOVER>
            ifmaxaddr 0 port 5 priority 0 path cost 0
    media: autoselect
    status: active
MacMini:~ Daniel$

0voto

klanomath Points 63400

Je doute vraiment que vous puissiez le faire fonctionner avec les outils du système. Et bien que je ne sois pas familier avec OpenBSD, je doute également que l'exemple lié fonctionne sans modifications supplémentaires, à une exception près : le filtrage par adresses MAC après avoir activé le marquage des paquets par le pont.

Dans OS X, le balisage des paquets de pont (c'est à dire ifconfig bridge1 rule pass in on en4 src 00:17:f2:f8:1a:3d tag APPLETV ) n'est cependant pas possible.

pf dans OS X est un filtre de paquets de couche 3. Il s'appuie sur les adresses IP et ne fonctionne pas vraiment avec les noms d'interface ou les adresses MAC. Ainsi, l'utilisation d'un nom d'interface dans une règle (par ex. block on en4 all ) est traduit en interne en block on <IP of en4> all et dans votre cas block nothing car en4 n'a pas d'adresse IP.

Même après avoir assigné une IP à en4, vous ne serez pas en mesure de bloquer le trafic de l'AppleTV vers le monde extérieur car ces paquets IP ne contiennent pas <IP of en4> comme adresse source ou comme adresse de destination.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X