This report is the result of a paid 10-hour security audit of EncFS. It has been posted to the EncFS mailing list, so check there for follow-up. I feel that full disclosure is the best approach for disclosing these vulnerabilities, since some of the issues have already been disclosed but haven't been fixed, and by disclosing them, users can immediately re-evaluate their use of EncFS.
Thanks to Igor Sviridov for funding this audit.
Note: The severity ratings are subjective and not representative of an actual user's risk, since they do not account for the probability of being exploited (thanks @solardiz). Users should decide based on their own usage of EncFS. I have removed them to preemptively avoid confusion. This was my mistake, and I apologize.
Introduction
Sovereign is a set of Ansible playbooks that you can use to build and maintain your own personal cloud (I know I know). It’s based entirely on open source software, so you’re in control.
If you’ve never used Ansible before, you a) are in for a treat and b) might find these playbooks useful to learn from, since they show off a fair bit of what the tool can do.
Background/Motivations
I had been a paying Google Apps customer for personal and corporate use since the service was in beta. Until several weeks ago, that is. I was about to set up another Google Apps account for a new project when I stopped to consider what I would be funding with my USD $50 per user per year:
A seriously questionable privacy track record.
A dwindling commitment to open standards.
A lack of long-term commitment to products.
Development of Google+: a cynical and unimaginative Facebook ripoff that’s intruding into progressively more Google products.
To each her/his own, but personally I saw little reason to continue participating in the Google ecosystem. It had been years since I last ran my own server for email and such, but it’s only gotten cheaper and easier to do so. Plus, none of the commercial alternatives I looked at provided all the services I was looking for.
Rather than writing up a long and hard-to-follow set of instructions, I decided to share my server setup in a format that you can more or less just clone, configure, and run. Ansible seemed like the most appropriate way to do that: it’s simple, straightforward, and easy to pick up.
I’ve been using this setup for about a month now and it’s been great. It’s also replaced a couple of non-Google services I used, saving me money and making me feel like I’ve got a little more privacy.
The backbone of this was inspired by this post by Drew Crawford. Unlike him, my goal is not “NSA-proofing” my email, just providing a reasonable alternative to Google Apps that isn’t wildly insecure. My view is that if the NSA or any other motivated party really wants to pwn me, they’re gonna, simple as that, no matter where I host my email.
Services Provided
What do you get if you point this thing at a VPS? All kinds of good stuff!
IMAP over SSL via Dovecot, complete with full text search provided by Solr.
SMTP over SSL via Postfix, including a nice set of DNSBLs to discard spam before it ever hits your filters.
Virtual domains for your email, backed by MySQL.
Secure on-disk storage for email and more via EncFS.
Spam fighting via DSPAM and Postgrey.
Mail server verification via OpenDKIM, so folks know you’re legit.
CalDAV and CardDAV to keep your calendars and contacts in sync, via ownCloud.
Your own private Dropbox, also via ownCloud.
Your own VPN server via OpenVPN.
An IRC bouncer via ZNC.
Monit to keep everything running smoothly (and alert you when it’s not).
Web hosting (ex: for your blog) via Apache.
Firewall management via ferm.
Intrusion prevention via fail2ban and rootkit detection via rkhunter.
Nightly backups to Tarsnap.
A bunch of nice-to-have tools like mosh and htop that make life with a server a little easier.
No setup is perfect, but the general idea is to provide a bunch of useful services while being reasonably secure and low-maintenance. Set it up, SSH in every couple weeks, but mostly forget about it.
Don’t want one or more of the above services? Comment out the relevant role in site.yml. Or get more granular and comment out the associated include: directive in one of the playbooks.