I often read that (docker) containers are not good for security. What are secure methods of creating secure isolated environments to run questionable programs in?

I've read that standard containers are optimized for developer productivity and not security, which makes sense.

But then what would be ideal to use for security? Suppose I want to isolate environments from each other for security purposes, to run questionable programs or reduce attack surface. What are some secure solutions?

Something without the performance hit of VMs

dragnucs,

It is the application Docker that is not secure. Containers are. In fact Docker runs a daemon as root to wich you communicate from a client. This is what makes it less secure; running under root power. It also has a few shortcomings of privileged containers. This can be easily solved by using podman and SELinux. If you can manage to run Docker rootless, then you are magnitudes higher in security.

piezoelectron,
@piezoelectron@sopuli.xyz avatar

Do you think Podman is ready to take over Docker? My understanding is that Podman is Docker without the root requirement.

steph,

All recent CPUs have native virtualization support, so there's close to no performance hit on VMs.

That being said, even a VM is subject to exploits and malicious code could break out of the VM down to its hypervisor.

The only secure way of running suspicious programs starts with an air-gaped machine, a cheap hdd/ssd that will go straight under the hammer as soon as testing is complete. And I'd be wondering even after that if maybe the BIOS might have been compromised.

On a lower level of paranoia and/or threat, a VM on an up-to-date hypervisor with a snapshot taken before doing anything questionable should be enough. You'd then only have to fear a zero day exploit of said hypervisor.

agressivelyPassive,

Each VM needs a complete OS, though. Even at 100% efficiency, that's still a whole kernel+userspace just idling around and a bunch of caches, loaded libraries, etc. Docker is much more efficient in that regard.

shockwave,

The kernel is shared with the host OS, IIRC. Userspace isn't, but of you are doing it right, you should have the bare minimum userspace.

Helix,

Where did you read that and which arguments did the authors make?

Many times, the configuration of Docker is the issue, e.g. mounting stuff like files from /etc/ or the Docker socket from the outside, using insecure file permissions or running the application as root user.

If you use rootless Docker or Podman, you already eliminated one of the security risks. The same goes for the other mentioned things.

What exactly do you mean by "questionable programs"? If you want to run malware, you shouldn't do so in an environment where it can break out of anything. There's the possibility of hardware virtualisation which prevents many of the outbreaks possible, but even then, exploits have been found.

You're really only secure if you run questionable software on an airgapped computer with no speakers and never run anything else on it.

What would be your use case?

cyclohexane,

There are multiple use cases I have in mind, but one of them is running proprietary software I don't outright trust. For example, zoom video conferencing for work, or steam for games.

Letus, (edited )

Docker isnt build to run these type of Programms. You should look into sandbox environments to test these apps.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • linux@lemmy.ml
  • DreamBathrooms
  • mdbf
  • ethstaker
  • magazineikmin
  • cubers
  • rosin
  • thenastyranch
  • Youngstown
  • osvaldo12
  • slotface
  • khanakhh
  • kavyap
  • InstantRegret
  • Durango
  • JUstTest
  • everett
  • tacticalgear
  • modclub
  • anitta
  • cisconetworking
  • tester
  • ngwrru68w68
  • GTA5RPClips
  • normalnudes
  • megavids
  • Leos
  • provamag3
  • lostlight
  • All magazines