The money in ransomware isn't in consumer, it is in enterprise. They have money and insurance. So do not assume these malware will be unsophisticated and unaware of common enterprise storage features. They are designed to circumvent anti-malware protections. By running enterprise hardware in a homelab, you basically makes yourself a collateral damage of an attack not designed for you.
Building barriers between machines that have no reason to talk to each others on the same network is the one way I could have made this less painful.
Usability vs security

.
I could also use something like Qubes OS but to be honest I typically prefer a Debian-base (be it Debian or Ubuntu). Also KVM instead of Xen (Qubes OS uses Xen Hypervisor).
I think that would very easily get very complex though, let alone it will explode the Disk Space usage if you need a full VM for every Application.
On Desktop I use
firejail but the most it does (IMHO) is to limit the access your sandbox Application has to the Folders. Like all of them have access to my
/home/<user>/Downloads Folder, but only a few have access to more.
Bubblewrap would be way better but it's more complex to configure.
Running everything inside containers would also be unpractical although, if you run them as separate Users (using
podman), you would effectively ensure isolation from one app to the other, in case one gets compromised.
I'm not doing that right now, but seeing e.g. cryptominers making their way into Docker Images (or e.g. React Apps in general), highlights to me that that is another Thread Vector that needs to be considered.
That's something to be mindful ... on my Container Server where I run around 40 Containers as a
podman User (rootless), you already have the benefit of running rootless in case anything gets compromised.
However, since Volumes are a PITA to deal with and Filesystem Permissions using
subuid/
subgid can be a PITA in their own right, I mostly run every container as
podman User too, so one container getting compromised can compromise all other containers.
Possible Solutions (I'm currently evaluating the latter) include:
- Different unprivileged Users for each Application in one KVM Virtual Machine
- Different unprivileged LXC Containers with one podman User (unprivileged LXC + unprivileged podman)