8 Commits

Author SHA1 Message Date
Clemens Schwaighofer
ba0d122979 Add more server list descriptions 2024-09-25 12:14:50 +09:00
Clemens Schwaighofer
f9ac606682 Update readme file, add server list sample file 2024-09-25 12:11:49 +09:00
Clemens Schwaighofer
a27ca6a455 Merge branch 'development' of github-omc:TBWA-EGPlus-Japan/Internal-Projects.ssh-rotate-keys into development 2024-09-25 12:03:23 +09:00
Clemens Schwaighofer
a5ad684585 Update the readme file with ssh key name scheme description 2024-09-25 12:03:19 +09:00
Stephane Tranchemer
00d378bf9c fix description 2024-09-25 11:58:24 +09:00
Stephane Tranchemer
147c256cac fix description 2024-09-25 11:58:03 +09:00
Stephane Tranchemer
10245e4ab1 fix line break 2024-09-25 11:57:31 +09:00
Stephane Tranchemer
4bd7e38f1f Fixing the readme file 2024-09-25 11:55:03 +09:00
3 changed files with 48 additions and 14 deletions

View File

@@ -1,54 +1,79 @@
# Rotate all ssh keys on servers for certain users
These scripts are run locally on your operation Workstation.
These scripts are mainly destinated to rotate the SSH key, a set of scripts is for admin users, the other is for normal users.
- create new key with name scheme
- Name consits out of the server location (`awsN-REGION_server name_user name`)
- the `awsN-REGION_server name_` is the hostname in the `server_list.csv` file
- the `user name` is the username in the `server_list.csv` file
- copy to server to
- $ADMIN/.ssh (to be ended for admin user)
- $ADMIN/.ssh (this usage is to be ended for admin user, only if such key already exist)
- /etc/ssh/authorized_keys--master
- /etc/ssh/authorized_keys/$USER
Then remove old key
Then remove old key (with the remove script)
Store ssh key name for current period
Stores the public ssh key name for current period in the local `ssh-public-keys/admin-current/` folder
## Settings files
### `settings.ini`
Sample file: `settings.sample.ini`
```ini
[Settings]
key_age=90
server_list=server_list.csv
# if start with ~/ it will be replaced with $HOME
server_pem_folder=~/folder/to/admin/pems/
server_pem_archive_folder=~/tolder/for/archive/pems/
server_pem_archive_folder=~/folder/for/archive/pems/
```
- key_age is in days, default is 90
- server_lust is the file name where the servers and info is stored
- server_list is the file name where the servers and info is stored
- server_pem_folder is the location for the PEM files, eg in a ~/.ssh/ sub folder
- server_pem_archive_folder is thge location for the archive files, a sub folder will be created there
- server_pem_archive_folder is the location for the archive files, a sub folder will be created there
### server_list fiel
### `server_list.csv` file
This file is semicolon ';' separated and not ',' as usual. The reason is that the authorization key settings block is comma separated
Sample file: `server_list.sample.csv`
- Sever: server name as to which to connect to
- Username: the username to use to connect
This file is not kept in the repository for security purpose. <<< to specify >>>
This file is semicolon ';' separated and not ',' as usual. The reason is that the authorization key settings block is comma separated.
- Server: server name as to which to connect to
- Username: the username to use to connect (and actually rotate the key)
- Flag: currently not used
- Auth Key Settings: Optional settings block for the public key entry in the auth file
- Auth Key Settings: Optional settings block for the public key entry in the auth file (IP restriction, commands allowed, etc )
The list has to be filled with all hosts for which the admin keys or where user keys should be changed.
The hostname list depends on the hostnames set in the `.ssh/config` file and the username depends on the OS installed
| OS | Username |
| - | - |
| Debian | admin |
| Ubuntu | ubuntu |
| Amazon Linux | ec2-user |
## Scripts
### `admin-rotate-ssh-keys.sh`
Will create a new key and deploy on the server and move the PEM part to the
local SSH folder
Will create a new key and deploy on the server and move the PEM part to the local SSH folder as defined in the `settings.ini` file `server_pem_folder` config setting and store the public keys in the `ssh-public-keys/admin-current` .
Previous keys are moved to the`server_pem_archive_folder`
The old public keys are moved to the `ssh-public-keys/admin-previous` folder
Must have -g flag set to run
### `admin-remove-old-ssh-keys.sh`
Will check in the previous ssh public key folder and remove this entry from the remote server
Will check in the previous ssh public key folder `ssh-public-keys/admin-previous` and remove this entry from the remote server
Must have -g flag set to run
@@ -74,6 +99,10 @@ Options are
### `user-add-ssh-key.sh`
This script does not create a new private/public key set, you need to provide a public key
The public key must be put into the `ssh-public-keys/user-current` folder
Add a user public key to the admin user on a server
- -h override single host name
@@ -84,6 +113,8 @@ Add a user public key to the admin user on a server
### `user-remove-ssh-key.sh`
To removed public keys must be located in the `ssh-public-keys/user-previous` folder
Remove a user public key from the admin user on a server
- -h override single host name

1
config/.gitignore vendored
View File

@@ -1,3 +1,4 @@
*
!.gitignore
!settings.sample.ini
!server_list.sample.csv

View File

@@ -0,0 +1,2 @@
Server,Username,Flag,Auth Key Settings
server ssh connect name,ssh connect admin name,NOT USED,ssh authorized file settings string
1 Server Username Flag Auth Key Settings
2 server ssh connect name ssh connect admin name NOT USED ssh authorized file settings string