Hi all, I’ve gotten a Brother machine (DCP series) that can do wifi printing/scanning over their proprietary app. However, I’d like to lock it down from my network, because having it on the same LAN as my other devices and the ability to phone out to the internet seem like room for mischievious activities.

For context, I have OpenWRT on my router, and my clients can access the Brother using their iPrint&Scan app and AirPrint on wifi, as well as the traditional USB port. But I’m not good in networking. In my research, I drafted out the following solutions:

  1. Create a firewall rule to block the printer itself from making outbound requests. Seems simple, but I’m not sure if this can persist after IP changes or not.
  2. Create a VLAN for “IoT devices” that cannot send outbound requests to my normal VLAN nor the internet. Inspiration from this video, I’d need to manage a new SSID but it may come in handy for more IoT devices later.
  3. Hook the Brother up to a Raspberry Pi via USB, and install CUPS + SANE on the Pi. Assuming the Pi cannot “phone home” on behalf of the printer, this makes it a local-only “print+scan service” on my normal network and doesn’t require an extra VLAN.

I’d like to ask: which solution above is best for “neutering” the Brother? Or are there any alternatives/details I might’ve missed? I’m not sure if blocking outbound requests this way is enough of a security hardening for an untrusted device, and if there are any usability issues I’ve overlooked so far.

Thanks for any advice, and please share any printer/scanner setup you have in your networks as well. So hopefully I can get more inspiration!

  • fonix232@fedia.io
    link
    fedilink
    arrow-up
    2
    ·
    6 hours ago

    VLANs. You create an IoT VLAN, set it to be accessible the specific way you want, and you’re done.

    If you want to be extra secure you can fire up a Docker container that sits on this VLAN + your regular network, and proxies printer requests between the two, so you have perfect control over what happens and when.

    Fair note, none of the apps (e.g. AirPrint) will work this way. They use Brother’s cloud to connect to the printer.

  • rmuk@feddit.uk
    link
    fedilink
    English
    arrow-up
    2
    ·
    11 hours ago

    FWIW, I use the VLAN approach. I have a VLAN (101) specifically for IoT shit. The firewall allows devices on other VLANs - general purpose (104), infrastructure (102) and servers (103) to connect in to 101, but nothing can reach out. Works seamlessly. The only issue you might bump into is that some devices use UPnP/mDNS for discovery, but OpenWRT has a proxy module you can install to facilitate that.

    You may be wondering why the tags I use for my VLANs are so odd. I also wonder that sometimes.

    • njordomir@lemmy.world
      link
      fedilink
      English
      arrow-up
      6
      ·
      18 hours ago

      Too true. I’ve spent more late nights arguing with CUPS than everyone I’ve dated in my whole life.

      • robojeb@lemmy.world
        link
        fedilink
        English
        arrow-up
        1
        ·
        3 minutes ago

        At this point when I start mumbling expletives at the computer my wife just asks “Printer?”

  • Taasz/Woof@lemmy.blahaj.zone
    link
    fedilink
    English
    arrow-up
    7
    ·
    1 day ago

    If you just want to stop it from having internet access then a firewall rule set to block from its source IP, and dest !=LAN would do it.

    For IP changes you just need to make that lease static in OpenWRT and it will be fixed to that IP going forward.

  • DetachablePianist@lemmy.ml
    link
    fedilink
    English
    arrow-up
    19
    ·
    1 day ago

    FWIW, I have a networked Brother laser printer hard-wired to my LAN. To prevent it from calling home or pulling unfriendly firmware “upgrades”, I just configured it with a static LAN IP & subnet, but no gateway address. Been running that way for years now. So far so good…

  • spaghettiwestern@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    10
    ·
    edit-2
    7 hours ago

    You’re overthinking this with 2 & 3. All you need is to block all Brother Internet traffic.

    Set up a static DHCP IP for the printer in Openwrt and create firewall rules to drop all WAN packets to/from that IP.

    If you want to see evidence those packets are being dropped in real time use tcpdump. When watching LAN traffic you will see the printer sending packets to the WAN interface (they won’t get there) but will never see a response directed back to the printer.

    I have a Brother printer (plus cameras & TVs) and an Openwrt router set up that way and have had zero issues.

    • i_am_not_a_robot@discuss.tchncs.de
      link
      fedilink
      English
      arrow-up
      4
      ·
      1 day ago

      1 is enough if the hardware manufacturer is currently trustworthy at the time you put the firewall rules in place. Brother is AFAIK trustworthy. I have a Brother printer which is on my main network with no special firewall rules, but my printer is old enough to drink. It never connected to any cloud services and could never update itself to introduce new anti-features.

      For both 2 and 3 you probably want a Raspberry Pi or other server to make the printer accessible to devices on your main network. Unless it’s a Facebook or Amazon or LG printer or something you should be fine with just 1.

      • spaghettiwestern@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        1
        ·
        22 hours ago

        What’s your concern with a new printer? In case 1, once set up and working how is a company going to introduce malicious features when the printer has absolutely no Internet access?

        • i_am_not_a_robot@discuss.tchncs.de
          link
          fedilink
          English
          arrow-up
          1
          ·
          31 minutes ago

          New printers can be okay. I don’t know of any specific problems with new printers except those ones with the ink subscription services. I’m saying my printer is old because it’s from another time. The only reason you’d isolate your networked printer in 2005 would be if you didn’t want other people to access your printer. Devices in your home automatically, deliberately making themselves worse on command from a cloud service was not a thing. The biggest danger with devices this old is that they probably have unpatched security vulnerabilities exploitable by anything else that gets on your network.

          I have a VR headset from Facebook that is on its own VLAN because it defaults to randomizing its MAC address by default and this allowed it to bypass the firewall, phone home, and nonconsensually install new anti-features after being blocked because the setting got reset back to random when changing something. Recent LG TVs and other devices with worse preinstalled malware have been known to make requests to other devices on your network, but I’ve never heard of them using those other devices to get around network restrictions, at least not directly.

  • ChunkMcHorkle@lemmy.world
    link
    fedilink
    English
    arrow-up
    5
    ·
    1 day ago

    For myself, I use a static IP on all peripheral devices, like printers and scanners, in combination with a whitelist on the router because my devices don’t change very often and I can add new ones individually as they are acquired. We never print or scan from phones so it works well, and freely allows home network use while blocking external network access.

    Beware any built-in home router solution like “parental block” for isolating devices because on mine at least, it only blocks IPv4 and anything using IPv6 sails right past it.

    Also, you probably already do this, but always test, and keep a backup of your router/whitelist/exception settings.

  • jet@hackertalks.com
    link
    fedilink
    English
    arrow-up
    3
    ·
    edit-2
    1 day ago

    Do your policy enforcement at the port level, connect the printer with a physical cable, that way even if the printer gets compromised and changes it’s Mac your rules still apply.

    Also setup your network alert system to notify you when a a new driver is available and the printer is behind so you can manually apply security updates.

    1 is fine from the port level

    2 is great, but more brittle

    2.5 only allow incoming connections to the vlan on printer ports, and outgoing mdns

    Depending on your threat model, you might need 3, if the printer is malicious, and printer drivers are also malicious, they can proxy information from the printer through a client device to the internet.

  • Mordikan@kbin.earth
    link
    fedilink
    arrow-up
    3
    ·
    1 day ago

    I use VLANs for this as others have mentioned. You can create VLANs for the logical grouping of devices (ex. Home, Work, IoT, etc), then you create firewall rules to block specific traffic sourced from the IoT VLAN to the other VLANs or out the WAN interface. This still allows traffic originating from the Home/Work VLANs to talk to the printer but doesn’t let devices from that VLAN scan the network.

  • Possibly linux@lemmy.zip
    link
    fedilink
    English
    arrow-up
    8
    arrow-down
    1
    ·
    1 day ago

    I wouldn’t recommend isolating it as it will make it a pain to print.

    You don’t need their proprietary app. Brother printers support driverless printing so it will work on all major platforms

    • fuckwit_mcbumcrumble@lemmy.dbzer0.com
      link
      fedilink
      English
      arrow-up
      4
      ·
      1 day ago

      If the point of connecting it to WiFi is to make it easier to print then why would you isolate it only to make it harder to print?

      If you want 100% no sneaky stuff connect it to some PC and set up a cups server on it.

  • TheButtonJustSpins@infosec.pub
    link
    fedilink
    English
    arrow-up
    10
    ·
    1 day ago

    Long term, 2 is best, but 1 is a great immediate fix. Also, you should be able to assign a static IP based on the printers MAC address, which will keep the IP stable.

  • non_burglar@lemmy.world
    link
    fedilink
    English
    arrow-up
    5
    ·
    1 day ago

    It basically depends on whether you want to rely on mdns, like printing from your phone.

    The standard lock down by making a vlan and subnet and then adding filtering works fine if you can reach the printer reliably by IPP or jetdirect.

    Once you need to connect two disparate broadcast domains, things get weird. It was the same story for Chromecast devices for me, their functionality and convenience are based on a relatively flat network and a single broadcast domain.

  • flueterflam@lemmy.world
    link
    fedilink
    English
    arrow-up
    5
    ·
    1 day ago

    I did #2 and it works perfectly. I have an IoT VLAN and my Brother printer/scanner is on it. I pivoted to the Ubiquiti/Unifi network infrastructure several years ago due to mostly seemless integration with the routers/switches/APs. But have used OpenWRT in the past (but didn’t set up VLANs then). Not sure the steps and if it requires manual firewall rules for the VLAN in OpenWRT.

    In case there identical/similar options to Unifi, however, I’ll just mention it’s pretty simple. Create the VLAN (new subnet vs the default network, e.g. 10.0.0.0/24 vs 10.1.0.0/24), deselect the “allow internet access” option, and make sure to select “network isolation” option (which blocks it from speaking to other VLANs/subnets). That’s it. (For conveniences, I also created another Wifi network call “XYZ_IOT” and then connected the printer to it. The network is fixed to that new IoT VLAN).

    Technically, those options are effectively convenient shortcuts for firewall rules that will get removed or created, accordingly, for that specific VLAN.

    Takes longer when you’re uncomfortable or struggling through it, but the complete setup time took maybe 15-20mins. If OpenWRT doesn’t have those convenience shortcuts, might take a bit longer to search for example firewall rule configs online and then make them.

  • lemmyvore@feddit.nl
    link
    fedilink
    English
    arrow-up
    5
    ·
    edit-2
    1 day ago

    If it’s a networked printer it needs to be able to broadcast to the LAN if you want IPP to work – which you probably do, since it’s well supported by all OS and lets you autodiscover the printer and print directly from most of your devices.

    This means you can’t isolate it fully from the LAN, so solution 2 is out.

    Solution 1 is good if you can trust the thing not to change or disguise its MAC address. I’ve heard of devices that have a 3rd dynamic MAC in addition to the wifi and ethernet MACs, that they use to bypass such restrictions. 🤪

    In order to do (1) properly you should create a firewall zone specifically for the printer, and allow that zone access to LAN but deny access to WAN. Then associate that zone with either a wifi access point created specifically for the printer, or with a specific switch plug if connected via Ethernet. This way the printer can’t bypass the restriction because it comes packaged with the only way it has of getting any connectivity.

    However OpenWRT firewall zones also have issues with cross-zone broadcast, but can be bypassed I think by installing and using Avahi on the router. Don’t quote me on that.

    Solution 3 seems best if you want to fully isolate it as well as retain IPP capability. That’s what I did with my printer, I connected it with USB to the server and I run CUPS + Avahi in a docker container that uses an ipvlan network to broadcast.

    • flueterflam@lemmy.world
      link
      fedilink
      English
      arrow-up
      5
      ·
      edit-2
      1 day ago

      Your comment about #2 is not true. VLANs can be fully isolated from other subnets on the LAN - sure. But they can also NOT be isolated. I have one fully isolated VLAN, and the rest are not isolated.

      With a savvy user, you can also tehnically isolate VLANs form only specific other VLANs. I’ve never needed to do this, but know it’s possible.

      Edit: for reference, I looked up details and found a helpful link and example:

      5. Firewall zones for VLANs

      config zone
          option name 'lan'
          option input 'ACCEPT'
          option output 'ACCEPT'
          option forward 'ACCEPT'     <-- This line allows intra-zone (inter-subnet) routing
          list network 'lan'
          list network 'your_new_vlan' <-- Adding your new VLAN here stops it from being isolated
      
    • rearview@lemmy.zipOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      1 day ago

      Damn, I didn’t know devices do these dynamic MACs, but yeah it’s not a trusted field to begin with.

      By IPP autodiscovery, do you mean mDNS? If so, does the router needs to install avahi as well for single-network discovery to work? Or just the client?

      Avahi on the router for multi VLAN discovery seem to be a nice idea, I’ll look into it and maybe try to hook it up to solution 2. I’ve thought users could just manually input the IP addresses (and the non-tech users will just simply be onboarded by me anyways), but having it advertised by default may just be less of a hassle for them.

      • lemmyvore@feddit.nl
        link
        fedilink
        English
        arrow-up
        3
        ·
        1 day ago

        IPP is a universal printer protocol aka “print anywhere”. Some printers support it natively, some need some help from a PC. If that PC runs Linux the most likely method is to run CUPS and connect it to the printer over USB.

        By IPP autodiscovery, do you mean mDNS? If so, does the router needs to install avahi as well for single-network discovery to work? Or just the client?

        Yes the autodiscovery is done with mDNS, which on Linux is done with Avahi.

        Typically Avahi is needed if you consume services over mDNS or provide them.

        So the Linux clients need Avahi. But the router only needs Avahi if the printer is connected to it, or to propagate broadcasts across zones.

        I’ve thought users could just manually input the IP addresses

        You can, but it’s really nice to have the printer available automagically (on any OS).

        BTW one extra potential benefit of solution 3 might be that the “printer” would always appear to be present on the network and accept print jobs, even if the actual printer is off, because the Pi running the print server would actually be on. Otherwise if the printer itself is providing the connectivity and announcement it will not appear in the list when it’s off. Whether you consider this a plus or not depends on how you handle your printers, I turn mine off when not in use, but some people let it go into powersaving mode so it’s always ready to print.