<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-size:small">April King started a thread on Twitter about how to use SSH in the enterprise: Why aren't people using the SSH PKI, why do people roll their own key provisioning scripts knowing these are almost certain to be disaster areas?</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">At present, the Mesh is almost ready for release, I am just working on packaging up the service/host end. It passes all its unit tests (on a good day). 95% of the documentation is good.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">The current implementation does support management of SSH keys but only in a rudimentary, proof of concept fashion. The next step is going to be to work out how to make the best config possible without the user having to think because any security system which requires users to be thinking about security will fail.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">My threat model is much broader than most people's. I am very concerned about insider threats. Sure, an enterprise can set up an SSH PKI and make use of that. But what if Mallet is the administrator? Just how many of these big ransomware attacks involve an insider component is one of those questions that is probably not asked enough.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">Another irritation I have with open source security apps in general is that they all end up reducing key security to the lowest common denominator. The Windows platform has secure means of storing user keys. So does OSX. Linux has several. But the intersection of these schemes is storing private keys on disk unprotected unless the security conscious user wants to make their life miserable by adding a passphrase.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">The big concern for the enterprise is SSO but I interpret that differently, I read SSO as Single Sign Off. Single Sign On is a user convenience issue. The enterprise security concern is deactivating the user the minute they are called into the office for their termination interview. I would like to have a realtime dashboard that allows a privileged user to see exactly who logged in to every machine in the system. And I can use my Mesh threshold capabilities to limit potential for abuse. </div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">I have seen people describe various OAUTH approaches. No. no. no. Even if you could understand what OAUTH is doing (and you can't), the only reason to use OAUTH is so you can authenticate in a Web browser. Chrome is now six and a half trillion lines of code and thus presents an attack surface the size of Alaska. In a few more years, Chrome will become sentient and become an insider threat in its own right. What the hell are you thinking?</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">Yes, some of this can be done by deactivating accounts. But that doesn't always work. Sometimes a machine will be offline when it should be deleting the user.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">And of course we need a phased introduction. If I can produce a tool that solves 80% of the problem that is 100% backwards compatible with the legacy world and get 100K people to use it, I can probably get the protocol/application changes I need to get the other 20%.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">The 80% problem is provisioning, credentialing and revoking keys.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">I am not an SSH expert, I really need help here. But this is the sketch I have come up with to apply the Mesh to save the appearances.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">We have an enterprise '<a href="http://example.com">example.com</a>' and a set of the usual users Alice, Bob, Carol, Ingrid, etc. </div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">1) Create an SSH CA for each individual user with the signature key for the CA threshold shared between the user's device(s) and the service <a href="http://sshca.example.com">sshca.example.com</a>.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">2) Configure the SSH daemon on each machine to only accept logins for each of the users if and only if they are signed by the assigned CA.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">3) Design a small protocol that allows a user to obtain an SSH cert from <a href="http://sshca.example.com">sshca.example.com</a> from a device the user has connected to their personal Mesh. This functionality can be added into the line mode meshman tool.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">To onboard a user, we have to:<br></div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">1) Create a user account on each of the machines they are authorized to access</div><div class="gmail_default" style="font-size:small">2) configure the SSH daemon for the machine</div><div class="gmail_default" style="font-size:small">3) Add the config for the users CA to <a href="http://sshca.example.com">sshca.example.com</a>. </div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">[This process can also be thresholded so we can stop Insider threat Ingrid doing this after she is fired. We can also script it, etc.]</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">Each n days, Alice will:</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">1) Run meshman to create a new short lived cert and revocation token for the key on her device.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">To terminate a user we:</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">1) Tell <a href="http://sshca.example.com">sshca.example.com</a> not to issue any more certificates.</div><div class="gmail_default" style="font-size:small">2) Distribute the revocation token to all the endpoints.</div><div class="gmail_default" style="font-size:small">3) Tell each host to remove access to their account(s).</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">If I am able to insert code into the daemon, I can lock this down further so that the daemon is reporting all the active users on the machine in realtime to some service and will kick any user off if sent an authorized command.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">Comments? Ideas? Anything I missed? Is there an easier way to do this? Am I relying on features not widely supported?</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small"><br></div></div></div></div></div></div></div></div>