I currently manage a server at RackSpace for my company, and am planing on switching to Linode in the next month or so, for a better server and to save some money.
In the process of switching, I am going to rebuild our entire system image to incorporate a lot more security, and being more conforming to new users, as we will soon be expanding, and will need to be able to add lots of people to the server.
I am currently writing a script for the server which will generate directories for the user, setup their groups, permissions, etc..
What I am currently facing, is how to securely set up SSH. My current setup is not secure at all, operating on the default port, with plain-text system passwords, even for root users, my account it the only one with a pubkey.
What I want to setup on the server is a higher measure of security in that all users will require a pub key to connect, however, I want all pub keys to have a pass-phrase associated with them, so that in the event the key becomes compromised if they decide to transfer it to multiple systems, there will still be a slim line of defense before the key can be replaced.
Is there any way to force a pass-phrase encrypted security key in RSA keys? Would it be bad practice to generate pub/private keys on the server and distribute them to my staff? What would be the best means of security here?
I am going to have permissions setup so that each user will only have limited access on the server, however I would still like to keep it all as secure as possible, as being a software company, a compromised pub key could lead to the unauthorized access of our git repositories, and everything that keeps us in business. Or am I just being to paranoid?
Any and all suggestions are greatly appreciated.