Ask HN: How are credentials managed at your company?
How does your company deal with giving and managing access?
How does your company deal with giving and managing access?
For servers we use LDAP, so you just SSH to a machine and it creates an account if one doesn't exist. It authenticates against AD every time, so if an account is disabled there, their access to all servers is instantly revoked. You can still use SSH keys so you don't need your password every time.
Internal web applications (mainly Rails) are backed by LDAP too, but also support NTLM SSO for Windows uses (so they only need to enter their password once when they log-in to their machine). Not everyone uses Windows (or is part of the domain), so we use CAS on top of that to make switching between applications transparent for everyone.
We don't really use any external services that we need to share passwords for.
I assume that we could just run an OpenLDAP server or something, but Active Directory is the easiest way to get started with LDAP.
One idea I've had, but never got around to is a OpenID/OAuth service that could authenticate users via the AD.
1. Run the docker container (https://hub.docker.com/r/jboss/keycloak/)
2. Login to the web console
3. Create a "Realm"
4. Go to "User Federation" and add a "LDAP" provider
5. Go to "Clients" and configure keycloak to handle OpenID/SAML for your app
Disclaimer: I work for Red Hat, and Keycloak is one of our projects. If you want support, we recently released it as RH SSO.Seems a little overkill for my use case, but nice.
I've just implemented auth0 on a website that I run, solely because one of my sites/customers wanted to have the service I provide be available via single sign-on to their staff and their customers.
They store all of their staff in Active Directory, and their users in an SAP store.
auth0 gives me a simple OAuth API, and I just point to my customers' configured auth0 client, and they can configure their auth0 account to use Active Directory and SAP.
I actually liked the integration, wasn't hard to achieve and solved a hard problem.
Given that auth0 is free for up to 7k users signing in within a month, I may make this available to other customers.
However my customer needs vary, some of them will be good with just the auth0 free plans, some will choose the paid plans... some do not need it at all. The one who did need it found the price well within their estimate for it (they had a figure in mind for paying for the feature to be added which amounts to about 3+ years of auth0 service).
I've tried and failed to change this culture. Why have full-disk encryption if it's secured with companyname/companyname? Why encrypt backups if the password is 12345? Apparently, it's so we can show we've fulfilled our data-protection obligations.
I've seen this at every company, large and small, including a defence contractor, I've ever worked at. It's an unwinnable battle.
At another workplace, I took Bruce Schneier's advice about writing down passwords (i.e, not a bad idea, so long as you keep the note safe) and gave credit-card sized, laminated cards to everyone with their unique and random password on it. Strict instructions to keep it in their wallet or purse. So these things turned up all over the place, stuck to desks, keyboards, and furniture next to desks. So much for that one. Unless people are getting fired for this kind of thing, they don't care.
I offered to crack my boss's email account to show how insecure our systems were, but he didn't act on it when I succeeded. But I did get the blame for hacking his email account a year after I left the company. Obviously, it was me (they reasoned) since "he's done it before!"
twitches
I've given up trying to change the culture at these places, and just make sure that I'm not part of the problem, and that my objection has been noted (for "I told you so" purposes, later on).
My main client base is Blue Chip, so that means a majority of Windows based services, and a smattering of Linux, and even mainframe. Most companies have totally disconnected systems requiring manual user creation on multiple systems, with the user having to remember several sets of credentials just to do their daily job. This may be archaic compared to the proliferation of oAuth across the web, but large Corporates are rarely up to the curve, and in many cases are completely unaware the curve even exists. This is where I come in.
The main component of any credential management is an identity hub; I mostly work with Microsoft Identity Manager, but there are other options, such as IBM Tivoli Identity Manager and Cisco Identity Services Engine (to name but two). The identity hub takes data from [multiple] Authoritative Sources (HR, SAP etc.) and compiles a meta-identity of each user which is then forwarded as user attributes onto target systems. If the target system doesn’t need or care about ‘Job Title’ for example, that can be excluded from the forwarded data. Any user changes in the Authoritative Source are then replicated automatically to any target system on a regular schedule.
Once you have a Single Identity, it is then a case of leveraging SAML, oAuth, or plain old Kerberos/NTLM for login authentication. In an ideal scenario all systems will be able to support a compatible logon provider service but that isn’t always the case. Getting users down to a single id/password is always the end goal though.
Of course this also all scales out to the Cloud, with direct support for AWS, Azure etc.
If you want to know more, hit me up with some questions!
My email address info is in my profile.
Having joined a mega-corp in 2010, around 250,000 people, there was a big migration of 1000s of disparate systems to 'Single Signon', a slogan displayed under a login button. It was an ongoing process, and when that little slogan appeared under the login for nth intranet app, it was a small sigh of relief.
So thank you.
And an interesting description of how simple it seems to do given the other system plays nice. What do you do with things like SharePoint where users at any levels can add fields to profiles, and these fields can be changing all the time? Just have a massive profile template constantly adding fields?
The certificate on the SmartCard is encrypted by a passphrase.
The OS has been modified to support the SmartCard reader and use our individual certificates to authenticate and authorize us.
All our applications have been modified to authenticate and authorize us based on the decrypted SmartCard certificate and the roles we are in.
We can order roles through a centralized self-service web application. When a request is created, we get an automated e-mail with the request identifier, which acts as a file handle in the C programming language. The request then goes into the local security officer's queue, where it is either rejected or approved; if approved, it then moves into the role owner's approval queue. The outcome of the decision process is e-mailed to us automatically by the system. If approved, the access to the system or application in question is instantaneous.
Even SSH has been modified to use the SmartCards or soft token certificates for technical user accounts. It took us years working with Oracle to get their PKI fixed, since their in-house experts never saw a SmartCard reader, but eventually we got to the point where even the Oracle database uses the certificate on the SmartCard for authentication and authorization. Authorization from the web self-service application is translated into Oracle roles inside of the databases.
Even our source code management system uses SmartCards.
We run our own certificate authority. All of our relevant software is preloaded with the certificate authority's certificate by the respective engineering teams (component owners), so that the entire chain of trust can be verified. Our certificates use 4096-bit keys.
We do not use logins or passwords anywhere.
Nobody, including 2nd level UNIX support, has or knows what the root password is.
If there is an emergency, the sysadmins can temporarily generate a root password, which is then automatically reset with random garbage after a few hours, so nobody will know what it is after that.
How do your software components authenticate to each other? With client certificates?
I use Google Apps OAuth for everything possible. This makes it pretty easy. You can also use SAML or any other SSO mechanism.
You should absolutely create new users when that is an option. Then, when someone leaves, it's easy to remove access without having to worry about things.
We use Lastpass to store all company passwords, and there are some shares done through it as well, but we don't share unless we have to.
If you are sharing an account with someone you should change the password for that account when they leave the company. If you're using something like Lastpass or similar this is easier to do than distributing the password another way.
it costs a lot and hasn't got functionality that couldn't be replicated by something open source, but for now it's that.
https://thycotic.com/products/secret-server/
Additionally:
A centrally managed daily rotating EFS (windows) volume which gets called by some powershell scripts when you want to look up the daily rotated admin password for a machine.
For when machines inevitably get knocked off the domain.
I think it's custom.
EDIT: it's from SANS.org
http://cyber-defense.sans.org/blog/2013/08/01/reset-local-ad...
Them being Microsoft everything was in-house, though I did work on a team that did use some external resources - we traded passwords on an ad-hoc basis - "trusted" SharePoint pages or shared OneNote documents mostly - but this was never anything sensitive - think: accounts for sites like HackerRank or Lynda.
All of the startups I've been at use LastPass Enterprise, it works well.
My favorites (I'm in DevOps) include LDAP (as long as I don't have to maintain it personally) and orchestrated keys. Anything that makes it easy to go to one place, change a file, deploy, and someone is created or erased. I used to love 2FA, but the cost for misplacing your token for a day is too high. I haven't come up with a good alternative for that, though.
A number of things are much safer to talk about once it isn't tied back to you, your family or your job in any obvious way.
Still agree that even on top of that, great care should be taken. (E.g. in case someone suddenly figure out and blurts out: "you must be x from y, aren't you?".)
The only thing that bothers me (and can't be circumvented because of browserdesign) is the ability to get plaintext passwords from autocompleted forms. So if an employee wants to write down a password, there's nothing stopping them.
For access to our servers we require everyone to use SSH keys.
It's less slick than commercial solutions like LastPass, but it's cheaper, and outside of proper authorisation models in web applications, which Facebook does well, it's all just copy-pasting passwords with more obfuscation.
You'd think that with so many engineers and so much love for brands Twitter could at least develop a proper concept of shared accounts, so I wouldn't have to venture into some deep dark settings menu to tweet from a company account instead of my personal one.
[1]: http://rattic.org/
Giving and managing access:
Have a very clear flowchart for when someone joins/leave a role what their privileges are. Ensure all departments sign up to this understanding.
Write in all department SOP/flowcharts/guidelines what to do when someone joins/leaves a role. This is your field, and by using their server they're running on it. So ensure they comply.
Audit:
Run monthly checks to the above have been done. Above should be approved by all dept. heads so just get whoever's in control approval of policy.
Use SOX404 style checking of access/other access. This just means taking samples of actions that could be taken, and checking them. 10-15% should be OK, depending on process/function.
These are all non-technical checks. Do check in with your compliance/legal function for their perspective of what's needed (and what to avoid keeping on disk - just disregard). They will likely have a lot of insights which are both technical and non-technical.
(e.g. "news.ycombinator.com/username" vs "Hacker News" vs "news.ycombinator.com" vs "Hacker News/username" vs etc.)
For the work network, different teams have different strategies, but generally a password safe. No shared creds.
The company I'm at now is using LastPass shares (which the creds can easily be obtained as others here have mentioned) and for a lot of other services there is a default username and password based on your name.
I'm trying to change the security culture at my current company, but it's hard since a lot of "security" is more of a pain in the ass. Example, "Why do I need to put in this code if I already put in my username and password?"
I've had LDAP authentication to servers but it's always been with passwords.
Does this support multiple sshPublicKey attributes or just one per user?
Any performance issues with constantly hitting LDAP?
I haven't seen performance issues, but it's a relatively small deployment in the scheme of things. There are also existing solutions for caching here. NSCD seems to be the go-to for caching LDAP query results directly. Alternately, you could cache credentials at the PAM level with pam-ccreds (Debian package name).
I used NSS-PAM-LDAPD [1], and openssh-ldap-publickey [2] with OpenLDAP
If you want more info about the setup ping me (email in my profile).
1: https://arthurdejong.org/nss-pam-ldapd/ 2: https://github.com/AndriiGrytsenko/openssh-ldap-publickey
It's fiiiiiiiiine... :)
About a week ago Excel decided to change ... (3 dots) in one of my password to one Unicode char. About an hour lost.
although it clearly takes some know-how to get set up with something like this.
For external things we can't integrate into that we use a password manager (self-made). People get dropped into the categories they're supposed to access, and done.
They were having 'admin123@companyName' in case that password doesn't work they generate SHA and then put in the database field 'password'
external stuff is managed via Teampass (on premise shared pw manager), which supports shared credentials and user-only credentials
although teampass is a bit wonky at times, it works pretty well for us
Access to specific applications is usually controlled by group membership.
Here we start with not writing our policy on public websites.
It narrows down the interesting target(s) quite a bit for malicious script kiddy or hacker.
And regarding not knowing the company, you and quite a few others here, link quite a bit in your profile page, and leave a huge footprint on the internet with all sorts of information to use. So it's quite easy to make a profile of you, determine where you work, where you live, what you look like, and then knowing where your company stores the interesting bits... well its going to be a lot easier then going into something blind.
But what do i know, i'm not good at 'Hustling and exerting confidence.'
;)
There probably also is a sticker on your frontdoor that says spare-key under the 2nd fake rock? Because any disgruntled visitor or family member you had might post that on Facebook anyway? Same principle applies, there is no benefit in having the public know this. Though when you did have a fight or disagreement with that visitor or family member you have chance to relocate the spare-key before that information is disclosed on their Facebook page.
So besides the negative effects i described, what good could come from posting your company (not yours to decide to share anyway) policy regarding login credentials?
Also i'd advice to check up on your contract what it says about sharing company policies and or secrets to 3rd parties (this site for example), before doing so. Because chances are somebodies' boss considers the credential policy as something that should be kept in-house and not public and made a point of this in his/her contract. No matter what you or i think about it, if they can argue you 'potentially hurt' the company you are screwed.
Also very appreciated is the fact that many of you brilliant uberhaxors link to your company websites!
There is already a lot of valuable information available from the various "I am using an online service for all passwords"- discussions.
I guess the next step will be:
ASK HN - what are your top ten favorite passwords you use for your company infrastructure?
Best value generated by these threads: spot the brightest minds in the "Hacker" News community quickly! Do not forget to ask for the HN handle on every new business contact!