back
84 comments
Guide should probably mention automatically updated Chrome extensions. There have been multiple cases where the owner of a popular extension sold it to a 3rd party that pushed out malicious updates. Tab Manager is the most recent instance that comes to mind: http://security.stackexchange.com/a/130600

Chrome does disable extensions when an update requires new permissions, but that won't catch malicious updates to extensions that require extensive permissions for basic functionality.

All my Chrome extensions are Git repositories in my home directory. Works really well and I can take a look at the changelog after pulling.

Requires the extensions to be open source, of course.

And means that Chrome will nag you about your "developer mode extensions" every time it starts up. I know why they do that, but it's still annoying. :(
This is similar to how Android warns me every single time I reboot that an unknown entity can observe my network traffic. The unknown entity, of course, is me (I've installed a certificate for my Streisand server). But still, it flashes a warning every single time.

Of course, this means that if anyone ever does install a malicious certificate on my phone, I'll be none the wiser. Thanks Google!

Chrome Dev and Chromium don't do that, however.
I like reading guides like this, and they're useful in a sort of encyclopedic sense, but the problem with them is that they're really a "practical guide to doing every conceivable security thing you could do" with macOS, which is in fact not the best way to secure your operating system. For instance: it's probably not the world's greatest idea to go out of your way to install Adium for secure messaging on a locked-down Mac.

The cryptographic advice in this particular guide is not especially great. You can, for instance, safely ignore what it says about randomness (and, in particular, about how it interacts with FileVault's XTS block crypto). Its advice about password management is needlessly complex (if you trust Keychain, use Keychain Assistant to generate passwords, not OpenSSL --- but most of the cool kids just use 1Password, and they're right to do that).

I suggest pass [1]. It's just gpg with git. If you don't like the command line very much you can use a front end for desktop [2], Android [3] or iOS[4]. There are scripts to migrate from others password managers.

[1] https://www.passwordstore.org/

[2] https://qtpass.org/

[3] https://github.com/zeapo/Android-Password-Store/

[4] https://github.com/davidjb/pass-ios

I am using pass on Mac and all other computers for over a year. The only thing missing is proper dmenu alternative for Mac but I modified https://github.com/oNaiPs/dmenu-mac to work with pass and paste username/password to the clipboard. If I get time I will publish this code because it makes pass fly.
> most of the cool kids just use 1Password

Do you have a view on 1Password versus LastPass?

I do, I've been a heavy user of both for 4+ years, but I'm not a security expert of any kind.

LastPass has been exploited a few times in ways that could have given up passwords. Their UX and server infrastructure seems to be a mess of php scripts, that itself doesn't have to be insecure but is a code smell. Their commercial support looks unmaintained. Both platforms support "cloud" based syncing but since 1Password's is pretty new I can't speak to it.

1Password does local encryption outside of the browser, LastPass will encrypt locally in the browser.

1Password can leverage other file transports to sync passwords, iCloud, DropBox, or any shared directory. LastPass does it all with their servers.

LastPass's web interface if compromised can have you give away the password to all your passwords. 1Password has a much smaller risk of this and would probably have to include a malicious software update.

1Password Families/Teams exists and I'm not familiar with it but it probably has a similar attack vector to LastPass's web interfaces.

You know, they both offer end to end encryption with similar attacks. Overall these companies are big targets and I'd rather keep my passwords offline or synced via side channels in a standalone app like 1Password.

PS I'd be amiss if I didn't mention dashlane https://www.dashlane.com/ I hear good things and it's passed review at a few companies who know their stuff, but that's all I know.

A friend recently introduced me to Keepass[1], it seems to be an open source 1Password. I'd be interested in opinions on that, especially @tptacek's.

[1] http://keepass.info/

Friends don't let friends use LastPass.

Use 1Password.

Yes: use 1Password.
1Password doesn't seem to support Linux, so that's a big dealbreaker...
This guide lost me (a noob) at "Create a threat model".

I don't even know what questions to ask. Much less choose the appropriate options.

And I'd have very different answers for my work and home gear.

I think you might be over thinking it, though I can understand how it's a daunting question.

I believe the intent is to ensure that it's understood the list isn't a requirement, but rather the varying options and levels of secure you can have based on your wants/needs.

When asking someone to create a threat model, you can begin with a simple question: "What are you afraid someone will do to your computer?" From this, you can then begin to piece through the list and look for items that address that.

Just care about malware? Look at the scanning tools.

Fearful that some bored teens in eastern europe are goofing around with hacking shit? Look at the security and notification tools

Think Putin is sending the new FSB/KGB after you for your exfiltrated борщ recipe? Look at the disk encryption section. (and perhaps professional help)

Maybe it could use some clarification, but I think the author's intent here was to convey that the list isn't a laundry list of "do this or your computer is going to be attacked", but more that you get what is required for your needs. Many of these tools require that you adopt different computing habits than traditional computing, and not all are applicable to every single use case.

Be careful. Some of these tools do not include any way to reverse their settings. A friend followed one of these guides and we had to reinstall the OS to get some wireless tech working again (Might have been AirDrop).
AirDrop is pretty finicky anyways. Is there any further detail you can provide here?
I find really amusing the author does want to hide the installation from Apple, but recommends using Google DNS and Chrome for everything else.
Nice resource.

But what I miss most, is a deeper analysis of the different launchd services and agents. - Especially which ones can be disabled and what features will be impacted.

It is quite opaque, especially considering the verbose descriptions of Windows Services out of the box.

I want to disable all these, for me, useless features: handoff, geo, maps, icloud, push, commCenter, spotlight web, siri, social integration, diagnostics reporting, and many more.

It has been a very annoying experience of seemingly unrelated parts of the OS breaking when Disabling anything, - and log spamming of unsuccessful attempts of using it.

The parts of the OS you are describing were not designed in a modular way. It seems to me like you are using the wrong operating system if you want this level of control.
Ah, I'm holding it wrong. :P I use FreeBSD, Linux and Windows. I like macOS, I want to use it, but not under a facist rule of the one holy way.

It is a tool and should not push policy through arbitrary limitations. But it seems we are caught in a war of lock-in ecosystem providers. Kind of a more realistic version of the much used picture of corporation-states or societies in sci-fi.

Apart from this, hypothetically I might not only an end-user but also an admin who has to implement certain policies. The argument is never sound, there is always an economic or practical tradeoff and you are stuck somewhere and have to make it work and yours.

> The parts of the OS you are describing were not designed in a modular way

On what basis are you saying that?

I really want a wiki for OSX processes & apple urls, integrated with little snitch & other app/network analyzers too.

That way we can find out what is gamed, or passd, or what the hell is pancake.apple.com for.

They should all have man pages already. (That's Game Center and Passbook/Wallet though.)
"Is your adversary a three letter agency (if so, you may want to consider using OpenBSD instead)"

If your adversary is a 3 letter agency you'd better use no computer at all. If they can't subvert the OS (witch I doubt) they'll subvert the hardware (hello Intel ME).

I used to follow the changes a lot on this repo. Lots of great discussion in the issues of balancing practicality and security. Like @ents mentioned though, there are some un-reversible changes if you do everything they recommend. Although it'll make you more secure.

I don't do most of this. I'm waiting until I decide to wipe my Mac and have plenty of time to play with it. (which is going to be when exactly? Not sure.)

> I'm waiting until I decide to wipe my Mac and have plenty of time to play with it.

Clone a copy of your drive (use something like super duper) and then simply boot from the cloned drive. The clone drive can be another physical drive (attached via USB) or just use disk utility to create a separate partition and clone a copy there.

Yea I guess I could do that. Play around with it and see how it feels and then I can wipe it over again if I want to.
How often you find yourself locked out of your house obeys Murphy's Law, add lots of security and you will find yourself annoyingly locked out for silly reasons all the time. Have just the one simple lock on the door and you probably will not end up locked out, particularly given there is a key under the mat.

I had a laptop of mine retrieved by the police from a big rubbish bin. The screen was broken, it did boot up though. Another time I had the broken screen after being hit by a car. These things happen and I am always sure I can get in even if keyboard/screen/mouse isn't an option. It is more useful for me to be able to somehow access my machine even if broken, I imagine there will be circumstances of that.

When the police retrieved my laptop I wasn't exactly worried about my obvious login password or whether I had locked down that mysql port sufficiently. The thief wasn't even literate so those extreme security measures wouldn't have helped.

Is there some way to have some faith from what you're getting from brew? In other words, can I verify installations from brew somehow?
Yes, brew automatically checks that hashes of downloads match what was specified in the formula. This does mean you're trusting the formula maintainer(s), but anyone using brew is already doing that anyway.

http://stackoverflow.com/a/25750690

Frankly, I am starting to have serious reservations about brew itself. It seems to now be forcing a self-update on every package installation, and that update somehow (I'm not a good enough *nix hacker to sort it out) gets some kind of elevated in the process privs: I've tried setting some of its component ruby scripts read-only and even changing ownership, and they still get force-updated on package installation.
>http://brew.sh/ the home site shows a simple wget example for homebrew formulae

the chain of trust is solid up until make and configure happen, at that point any number of things could happen so it's a question of whether or not you trust whatever scripts its running.

unless homebrew has some sort of enforcement on what that script can do it could do anything. This is why its a really good thing that homebrew does not require root.

> unless homebrew has some sort of enforcement on what that script can do

Anything from our Homebrew/core (i.e. wget) uses the macOS sandbox to prevent writes outside of permitted locations.

Was curious what would happen if you set the firmware to only boot from the startup disk and it crashed ...

Seems like MacOS does the reasonable thing and prompts for the firmware password if you use a different disk.

https://support.apple.com/en-ca/HT204455

Any thoughts on doing work in virtual machines?
I have a MBP as my primary machine, and I do all of my development work in a VirtualBox VM running Ubuntu. MacOS seems a lot more stable without 40gb of development stuff installed.
Is there a similar guide but for Windows?

Google mostly shows you guides from merchants trying to get you buy AV licenses.

I quite enjoy this script called make_windows10_great_again.bat https://gist.github.com/IntergalacticApps/675339c2b805b4c9c6...

Keep in mind this is a very rigorous script and modifies Windows10 beyond recognition. Infact it kind of makes Win10 appear and function more like Windows8

I'd gladly use one - if anyone have some links, please share.

The one I've found: http://hardenwindows10forsecurity.com/index.html

Wow, and people laughed at all the Windows 10 antispy tools/script packs. Turns out this is the state of personal computing in 2016, nothing is decent out of the box anymore :(
Very nice. Thank you for this! :)
Step one: Don't use macOS
You're probably being downvoted because you didn't elaborate, but I agree with your implied premise: proprietary software is inherently insecure.
> proprietary software is inherently insecure

Unlike widely used and security-critical open source projects, right? Like, say, OpenSSL?

("All hardware sucks. All software sucks." This is at least as true these days as it was back on alt.sysadmin.recovery in the '90s)