Guide: Separera IoT enheter på separat Wifi (Asus router med Merlin firmware)

Permalänk
Medlem

Guide: Separera IoT enheter på separat Wifi (Asus router med Merlin firmware)

Här följer en guide för dem som vill separera sina IoT-enheter på ett sparat Wifi som är skiljt från ditt vanliga LAN.

Anledningen att man vill skilja på dem är för att minimera risken för att obehöriga skall kunna komma åt ditt interna LAN.
Jag har kategoriserat t.ex. min Apple-TV, Chromecast, Google-home och Skrivare som IoT. Alltså enheter som du inte har kontroll över och kan logga in på t.ex. via ssh eller in i ett operativsystem.

Guide:

  1. Förberedelser:

    • Se till så du har senaste tillgängliga version av AsusWRT Merlin installerad på din router och att du har jffs-partitionen aktiverad.

    • Skapa sedan ett nytt gästnätverk via webgränsnittet som du t.ex döper till xxx_IOT. (Har du en router med både 2 GHz. samt 5 GHz. så namge dem xxx_IOT1, xxx_IOT2 etz. så du kan särskilja dem senare när du vill använda dem. Se till så att rutan för tillgång till LAN är ibockad samt att du ställer in ett nytt lösen för dessa WLAN. Observera att de nya näten för wl0.1 samt wl1.1 som namn om du inte redan har tidigare gästnät aktiverade för då får de nya namn så som wl0.x wl1.x wl2.x m.m.

    • Under: LAN/IPTV bocka sedan i att IGMP proxy är aktiverad (standard), detta behövs för att Apples Airplay skall fungera över subnäten samt VLANen. Ställ också in att IGMP snooping används (Nyare enheter HND-platform har ej denna funktion)

    • Under: Administration/System aktiverar du sedan SSH login och logga sedan in via en terminal (t.ex Putty (Windows), Terminal (Mac)).

  2. SSH: Nu börjar det roliga att skapa alla script som skall köras för att få önskade inställningar:

    • Skapa config: /jffs/configs/dnsmasq.conf.add genom att skriva: vi /jffs/configs/dnsmasq.conf.add här lägger vi in alla parametrar vi vill att vår dhcp-server skall få ta till sig. I nuläget vill vi skapa ett nytt subnät för våra IOT-enheter på brygga "br2"

      interface=br2 dhcp-range=br2,192.168.11.10,192.168.11.100,255.255.255.0,86400s dhcp-option=br2,3,192.168.11.1 dhcp-option=br2,6,192.168.11.1

      denna konfiguration läggs till efter standard config-filen.

    • Nu ska vi skapa en ny configuration för Avahi-daemon (en tjänst under linux som hjälper till att distribuera Bonjour-protokoll över nätverk. Denna tjänst är normalt aktiverad på din router men den tillåter inte standard att distribuera över olika VLAN samt subnät. Här vill vi att enheter på IOT skall synas på ditt interna LAN för t.ex. att Casta till chromecast eller sända via Airplay. Börja med att kopiera din urpsprungliga config: /tmp/avahi/avahi-daemon.conf Min såg ut såhär:

      [Server] host-name=RT-AC3200-90A0 aliases=RT-AC3200 aliases_llmnr=RT-AC3200 use-ipv4=yes use-ipv6=no allow-interfaces=br0,br2,eth1,eth2,eth3 ratelimit-interval-usec=1000000 ratelimit-burst=1000 [publish] publish-a-on-ipv6=no publish-aaaa-on-ipv4=no [wide-area] enable-wide-area=yes [rlimits] rlimit-core=0 rlimit-data=4194304 rlimit-fsize=0 rlimit-nofile=768 rlimit-stack=4194304 rlimit-nproc=3

      skapa sedan: /jffs/configs/avahi-daemon.conf och lägg till fetmarkerad text:

      [Server] host-name=RT-AC3200-90A0 aliases=RT-AC3200 aliases_llmnr=RT-AC3200 use-ipv4=yes use-ipv6=no allow-interfaces=br0,br2,eth1,eth2,eth3 ratelimit-interval-usec=1000000 ratelimit-burst=1000 [publish] publish-a-on-ipv6=no publish-aaaa-on-ipv4=no [reflector] enable-reflector=yes [wide-area] enable-wide-area=yes [rlimits] rlimit-core=0 rlimit-data=4194304 rlimit-fsize=0 rlimit-nofile=768 rlimit-stack=4194304 rlimit-nproc=3

    • Vi gör samma sak för vår IGMP-proxy där vi säller in att "br0" ditt LAN skall distribuera multicast till ditt IOT "br2" skapa: /jffs/configs/igmpproxy.conf

      phyint br0 upstream ratelimit 0 threshold 1 altnet 0.0.0.0/0 phyint br2 downstream ratelimit 0 threshold 1

    • (Redigerat) Nu skapar vi lite script som skall köras när routern startas. Dessa filer ligger under /jffs/scripts och måste vara exeverbara för att köras automatiskt samt börja med frasen: #!/bin/sh
      Dessa inställningar fungerar för mig med en Asus RT-AC3200 då portmappningen är:

      1. Fysisk Port 1: > 4

      2. Fysisk Port 2: > 3

      3. Fysisk Port 3: > 2

      4. Fysisk Port 4: > 1

      5. WAN-porten: > 0

      Dubbelkolla gärna innan med:

      robocfg show

      för att säkerhetsställa så du skriver in rätt portangivelser i scriptet.
      Skapa nu: /jffs/scripts/wan-start

      #!/bin/sh # Set port 4 on router to listen to vlan 11 IOT devices /usr/sbin/robocfg vlan 1 ports "2u 3u 4u 5t" /usr/sbin/robocfg vlan 11 ports "1u 5t" /sbin/vconfig add eth0 11

      Detta script gör så att du kan få din port 4 att ligga på samma nät som dina IOT "om du vill kunna nå IOT via nätverkskabel t.ex om du har en Apple TV ansluten via RJ45" Annars hoppar du över detta sciptet. port 5 i scriptet hänvisar till processron/hårdvaran och ska inte blandas ihop med en port.

    • Skapa sedan: /jffs/scripts/nat-start

      #!/bin/sh # Create bridge Br2 for IOT and move devices brctl delif br0 wl0.1 brctl delif br0 wl1.1 brctl delif br0 wl2.1 brctl addbr br2 brctl addif br2 vlan11 brctl addif br2 wl0.1 brctl addif br2 wl1.1 brctl addif br2 wl2.1

      detta script flyttar dina nät från standard br0 till det nya br2

    • Skapa sedan: /jffs/scripts/firewall-start

      #!/bin/sh # Set ip to br2 IOT network /sbin/ifconfig br2 192.168.11.1 netmask 255.255.255.0 # Bring up vlan11 to bind port 4 to IOT network /sbin/ifconfig vlan11 up # Adding firewall rules to IOT allowing internet and router, blocking connection to LAN except already established and allow LAN to IOT iptables -N IOTINPUT iptables -I INPUT -i br2 -j IOTINPUT iptables -N IOT2LAN iptables -I FORWARD -i br2 -o br0 -j IOT2LAN iptables -N LAN2IOT iptables -I FORWARD -i br0 -o br2 -j LAN2IOT iptables -I IOTINPUT -d 224.0.0.0/4 -p udp -m udp ! --dport 1900 -j ACCEPT iptables -I IOTINPUT -m udp -p udp -m state --state NEW --dport 67:68 -j ACCEPT iptables -I IOTINPUT -m udp -p udp -m state --state NEW --dport 53 -j ACCEPT iptables -I IOTINPUT -p icmp -j ACCEPT iptables -A IOTINPUT -j DROP iptables -I LAN2IOT -j ACCEPT iptables -I FORWARD -i br2 -o eth0 -m state --state NEW -j ACCEPT iptables -I IOT2LAN -d 172.19.0.0/22 -p tcp -m tcp --dport 49152:65535 -m state --state NEW -j ACCEPT iptables -I IOT2LAN -d 172.19.0.0/22 -p udp -m udp --dport 49152:65535 -m state --state NEW -j ACCEPT iptables -I IOT2LAN -d 224.0.0.0/4 -p udp -j ACCEPT iptables -I IOT2LAN -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A IOT2LAN -j DROP # Configure virtual wireless interface to join br2 IOT WIFI nvram set lan_ifnames="vlan1 eth2 eth1 eth3" nvram set lan2_ifnames="vlan11 wl0.1 wl1.1 wl2.1" nvram set lan2_ifname="br2" killall eapd eapd

      detta script lägger in brandväggsregler som tillåter alla anslutningar från LAN>IOT fast bara redan aktiva anlutningar samt redan relaterade anslutngar från IOT>LAN plus att vi tillåter anslutningar tcp/udp på port: 49152-65535 för att säkerhetsställa att Airplay fungerar då den använder en tillfällig port i det intervallet för varje tillfälle. Vi tillåter också multicasttrafik i båda riktningar. För anslutningar till routern tillåter vi DHCP samt DNS samt ping. Den sista biten så ställer vi in i nvram att de virtuella WLANen skall tillhöra lan2 (br2) samt startar om eapd för att de trådlösa klienterna skall kunna identifiera sig med lösen till det nya WLANen.

    • kör nu: chmod a+x /jffs/script/* för att göra alla script exekverbara

  3. Nu är det bara att starta om routern och hoppas på det bästa!

Ha också i åtanke att min router innehåller 2st. separata 5 GHz. trådlösa nät. Därav eth3 samt wl2.1 som enheter. Ta bort dessa om du endast har ett 5 GHz-nät.

/csoM

Permalänk

Fin guide!

Jag skulle vilja ha ett eget VLAN (wifi och trådburet) för IOT-enheter som inte ska ha internetaccess. Typiskt nätverkskameror eller andra enheter som inte bedöms som pålitliga.

Dessa enheter vill jag kunna komma åt från ordinarie LAN men de ska alltså inte kunna kommunicera ut självmant

Någon som har sett någon dylik konfiguration?