this post was submitted on 10 Jun 2023
24 points (100.0% liked)

Linux

1259 readers
102 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

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

top 32 comments
sorted by: hot top controversial new old
[–] dragnucs@lemmy.ml 11 points 1 year ago (2 children)

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@sopuli.xyz 4 points 1 year ago (3 children)

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

[–] dragnucs@lemmy.ml 6 points 1 year ago (1 children)

Yes it is. I've been using it for more than a year now. Works reliably. Has pod support aswel.

[–] piezoelectron@sopuli.xyz 3 points 1 year ago (1 children)

Great. I don't know enough to use either but I think I'm going to try lean on podman from the get go. In any case, I know that all podman commands are exactly identical to Docker, such that you can replace, say, docker compose with podman compose and move on with ease.

[–] Guilvareux@feddit.uk 1 points 1 year ago

With the specific exception of podman compose I completely agree. I haven’t tested it for a while but podman compose has had issues with compose file syntax in my experience. Especially with network configs.

However, I have been using “docker-compose” with podman’s docker compatible socket implementation when necessary, with great success

[–] mosthated@lemmy.ml 1 points 1 year ago* (last edited 1 year ago) (2 children)

Related to this: can podman completely replace Docker? I.e., can it pull containers and build containers in addition to running them?

[–] piezoelectron@sopuli.xyz 2 points 1 year ago

I believe it can but don't take my word for it

[–] boo 1 points 1 year ago (3 children)

It can pull and build containers fine but last time I tried there were some differences. Mounts were not usable because user uid/gid behave quite differently. Tools like portainer dont work on podman containers. I havent tried out any networking or advanced stuff yet.

But i found that the considerations to write docker files are quite different for podman.

[–] dragnucs@lemmy.ml 3 points 1 year ago (1 children)

Differences you find could be related to containers being run rootless, or the host system having SELinux enforcesd. Both problems could be intended behavior and can be soled simply by using by adding correct labels to mount points like :z or :Z. This SELinux feature also affects Docker when setup.

Portaiers tries to connect to a docker sock path that is not the same with Podman. While podman is rootless and does not need a daemon, socks and stuff, it has support for them nevertheless. So you can simply adjust Portainer config to work with podman. I havnt tried it yet but I managed to do similar things for other software.

[–] boo 1 points 1 year ago

I dont have much idea about SELinux, apart from the name. But I think the problem I was having was specifically wrt uid, with docker I used to add user with the same uid/gid as the host user, as a developer this would help me with debugging. But this differs with the non root setup.

[–] mosthated@lemmy.ml 1 points 1 year ago

Gotcha. I use docker containers on computing clusters at the University, but because of security, I have to convert them to singularity containers. That is okay, but I was hoping that by running podman I could prevent this extra step.

[–] cyclohexane@lemmy.ml 0 points 1 year ago (1 children)

Podman supports dockerfile, right?

[–] Tiuku@sopuli.xyz 1 points 1 year ago

Unlike docker, podman doesn't try to do everything on it's own. There's a separate tool known as buildah which builds containers from dockerfiles just fine.

Ps. More generally, they're called containerfiles.

[–] cyclohexane@lemmy.ml 1 points 1 year ago

I've been using podman for almost a year now. It works very well and supports most Docker features.

[–] boo 3 points 1 year ago (1 children)

There can also be old images with e.g. old openssl versions being used. Its not a concern if they are updated frequently, but still manual.

[–] dragnucs@lemmy.ml 4 points 1 year ago (1 children)

This is a problem of the containerized program and the image itself. This problem affect, containers, VM, and baremetal aswel.

[–] boo 2 points 1 year ago (1 children)

I agree. But imo these usecases are more known and mature in traditional setups, we could apt update and restart a systemd service and its done.

Its not so obvious and there are no mechanisms for containers/images.

(I am not into devops/sysadmin, so this might also be my lack of exposure)

[–] dragnucs@lemmy.ml 2 points 1 year ago (1 children)

Most often, images are updated automatically and are managed by the developers themselves so images are usually up to date. If you don't know how to build images, it may be difficult for you to update the containerized software before the vendor does. But this situation is infrequent.

[–] agressivelyPassive@feddit.de 1 points 1 year ago

Many projects just pull in a bunch of images from wherever and never update them. Especially if it's that one obscure image that happens to package this over obscure app you absolutely need.

[–] steph@lemmy.clueware.org 11 points 1 year ago* (last edited 1 year ago) (1 children)

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@feddit.de 4 points 1 year ago (1 children)

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.

And LXC even more efficient in that regard.

Docker does load a bunch of stuff that most people don't need for their project.

I don't know why LXC is always the red-headed stepchild. It works wonderfully.

[–] Helix@feddit.de 10 points 1 year ago (2 children)

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@lemmy.ml 3 points 1 year ago (2 children)

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@feddit.de 5 points 1 year ago* (last edited 1 year ago)

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

[–] Helix@feddit.de 1 points 1 year ago

Try firejail and flatseal for that.

[–] BinaryEnthusiast 2 points 1 year ago (1 children)

How come no speakers? Is it to prevent your ears from being blasted just in case, or is there malware that can be transmitted through audio?

[–] Helix@feddit.de 3 points 1 year ago (1 children)
[–] BinaryEnthusiast 1 points 1 year ago

Dang, that's wild. there is some insane malware out there

[–] bishopolis@lemmy.ca 2 points 1 year ago

Docker has an additional issue, but not one unique to docker. Like flatpak, pip, composer, npm or even back to cpan and probably further, as a third-party source of installed software, it breaks single-source of truth when we want to examine the installed-state of applications on a given host.

I've seen iso27002/12.2.1f, I've seen supply-chain management in action to massive benefit for uptime, changes, validation and rollback, and it's simplified the work immensely.

    .1.3.6.1.2.1.25.6.3

If anyone remembers dependency hell - which is always self-inflicted - then this should be Old Hat.

HAVING SAID THAT, I've seen docker images loaded as the entire, sole running image, apparently over a razor-thin bmc-sized layer, on very small gear, to wondrous effect. But - and this is how VMware did it - a composed bare micro-image with Just Enough OS to load a single container on top, may not violate 27002 in that circumstance.

[–] PgSuper 2 points 1 year ago

Just to add to the already existing and much more comprehensive comments, here’s an interesting solution which Flatpak uses: https://wiki.archlinux.org/title/Bubblewrap

[–] nixfreak@sopuli.xyz 1 points 1 year ago

Try using LXD

load more comments
view more: next ›