Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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.

smile

##########################################################################################################################

#!/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