#1 Le 17/02/2013, à 21:25
- skad
Script de gestion d'utilisateurs (compte local / clef rsa / certifica)
Bonsoir
Je viens de créer un petit script pour automatiser et faciliter la gestion des utilisateurs sur un serveur.
Besoin :
Disposant d'un vpn et de quelques utilisateurs à droite et à gauche j'ai écrit ce petit script pour m'en faciliter l'ajout / suppretion car j'en avait mare de tout refaire à la main à chaque fois et de chercher sur le net les commandes nécessaires.
il permet :
- ajouter / gerer un utilisateur:
- créer dans le système
- créer une combinaison clef publique/privé
- générer un requête pour un certificat pour un vpn (csr)
- signer une requête (csr)
- supprimer un utilisateur et révoquer l’éventuel certificat
Il est certainement à adapter pour votre configuration et pourquoi pas ajouter des fonctionnalités.
Toute remarque est la bienvenue
et je pense qu'il pourrais aider beaucoup de personnes.
##########################################################################################################################
#!/bin/bash
name=""
function sortie {
echo "Fin de l'execution"
exit 0
}
function remove_user {
cert_source
echo "Revocation du certificat du client"
./revoke-full $name
echo "Suppretion du client"
userdel -r $name
echo "Mise à jour du fichier CRL"
cp -f /home/machine/Certificats/keys/crl.pem /home/machine/keys/crl.pem
sortie
}
function add_user {
echo "Creation de l'utilisteur $name"
useradd -m $name
echo "Déplacement dans le dossier utilisateur"
cd /home/$name
echo "Création dossier ssh"
mkdir .ssh
chown $name:$name .ssh
chmod 700 .ssh
}
function cert_source {
echo "Déplacement dans le dossier de creation des certificats"
cd /home/machine/Certificats
echo "Alimentation avec source"
source ./vars
}
function gen_crt_user {
echo "Le fichier $name.csr doit etre dans le dossier /home/$name/.ssh"
cert_source
echo "Signature et création du certificat"
openssl ca -days 3650 -out $KEY_DIR/$name.crt -in /home/$name/.ssh/$name.csr -config $KEY_CONFIG
echo "Déplacement des clefs et certificats"
cp $KEY_DIR/$name.crt /home/$name/.ssh/
cp $KEY_DIR/ca.crt /home/$name/.ssh/
echo "Suppretion du fichier requete"
rm /home/$name/.ssh/$name.csr
}
function gen_csr_user {
echo "Le fichier $name.key doit etre dans le dossier /home/$name/.ssh"
cert_source
echo "Generation de la requete du certificat"
openssl req -days 3650 -nodes -new -key /home/$name/.ssh/$name.key -out /home/$name/.ssh/$name.csr -config $KEY_CONFIG
}
function gen_key_user {
echo "L'utilisateur doit etre enregistré dans le syteme"
echo "Déplacement dans le dossier .ssh"
cd .ssh
echo "Creation de la clef ssh"
ssh-keygen -t rsa -f $name
mv $name $name.key
}
function read_name {
echo "Quel est le nom de l'utilisateur ?"
read name
}
function add_user_menu {
echo "1 Créer l'utilisateur $name sur la machine"
echo "2 Gènerer une paire de clef privé / publique"
echo "3 Gènerer un CSR pour $name"
echo "4 Signer le CSR de $name"
echo "5 pour sortir"
read choice
case $choice in
1)
add_user;;
2)
gen_key_user;;
3)
gen_csr_user;;
4)
gen_crt_user;;
5)
sortie;;
esac
add_user_menu
}
#script start
# Make sure only root can run our script
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root"
exit 1
fi
#
#run
echo "1 Ajouter /gerer un utilisateur"
echo "2 Supprimer un utilisateur"
read choice
read_name
case $choice in
1)
add_user_menu;;
2)
remove_user;;
esac
sortie
#
Hors ligne