freedomofpress / securedrop

GitHub repository for the SecureDrop whistleblower platform. Do not submit tips here!
https://securedrop.org/
Other
3.62k stars 686 forks source link

Evaluate alternatives to Ubuntu LTS as server OS #5517

Open eloquence opened 4 years ago

eloquence commented 4 years ago

After the transition to Ubuntu 20.04 as the server OS (#4768), we will have bought ourselves some breathing room to carefully consider long-term alternatives.

Properties we'll want to consider will likely include:

As part of this evaluation, we'll also need to revisit whether or not to use or support containerization or virtualization in some form on the server, e.g., to obtain the security benefits described in #2890.

We'll likely evaluate these properties from the perspective of minimizing the maintenance burden for administrators, and simplifying OS-level updates.

See previous issues:

See architecture discussion during Xenial migration: https://github.com/freedomofpress/securedrop/wiki/Architecture-Meetings-2018-06-14

zklosko commented 3 years ago

I have a crazy idea, but it's so crazy it just might work. (Also, new to the project so take this with a grain of salt.)

For security reasons, it might be best to have an immutable OS, similar to if we provided Docker images. For even more security reasons, it looks like a good focus to keep SD on a separate, isolated system. Possibly even a disposable system...

So what if, in addition to Ubuntu dev, we look into dev for Raspbian or OSes that run in RAM instead of installing to disk (such as SmartOS)? This would require us to release an image which could be flashed onto an SD card/USB drive and then could be booted from and would run in a live environment, just like Tails. Sure, Debian has an inconsistent release schedule, but using an immutable OS might allow us to move at more of our own pace because the OS resets on reboot.

This automatically brings up the issue of losing all of your settings and data upon reboot. What if one SD card/USB stick was used for the OS + applications and the data was stored on a second SD card/USB stick? Or having a partition for persistence on the one SD card/USB stick with the remainder of the card/stick/drive for a live/immutable OS? Something small and easily destroy-able to protect the data on it. (Movie plot idea: a journalist needs to communicate something private with a whistleblower, so they whip out a Raspberry Pi Zero W and transfer the information over an ad-hoc WiFi network. The feds begin to close in. The journalist casually breaks the Pi Zero in half and tosses it into the water while they slip the microSD card into the sewer.)

Again, I'm new here (I spend most of my time working on the Libretime project), so take all this with a grain of salt. I just think with the advancements of ways to invade our privacy, we need to make advancements in ways to protect our privacy.

Sincerely, -Zack

ageis commented 3 years ago

My vote is for Alpine.

We used Alpine with a grsecurity RBAC to perform the Zcash parameter generation ceremony. It could only run a Rust executable and nothing else. NCC Group was not able to even dump the memory.

legoktm commented 2 months ago

We're coming up on the focal EOL so we want to get this discussion started again; also in the context of what we'll need for future SecureDrop Protocol work.

I re-read just about all the previous discussion that I could find, so here are my personal, rough requirements for what we're looking for:

must have

nice to have:

candidates

Here are the candidates that I've seen mentioned/heard, I kind of want to turn the above list into a matrix against the below:

traditional linux OS

non-traditional / misc

My intuition is that we shouldn't be adopting anything non-traditional for stability and longevity purposes, but also find that projects like ostree do align better with the properties we want we want.

huertanix commented 2 months ago

Relatively long-term stable base

Dang, I guess that takes Hannah Montana Linux out of the running.

Bush-era jokes aside, Debian seems mostly ok?

Alpine's tiny install base and makes it really compelling, but it's a relatively new distro, and I'm not familiar enough with it to really chime in, but I'd love to hear from folks who are; Seems like a cool distro.