From a5d53aed33ed4711190dd4beb50adef5d2198203 Mon Sep 17 00:00:00 2001 From: StormyDusk <159055227+StormyDusk@users.noreply.github.com> Date: Fri, 25 Oct 2024 09:26:35 +0200 Subject: [PATCH 1/2] Add files via upload --- Scripting_V6.zip | Bin 0 -> 8314 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Scripting_V6.zip diff --git a/Scripting_V6.zip b/Scripting_V6.zip new file mode 100644 index 0000000000000000000000000000000000000000..8ef0a6e196e6ee1eee9ea6b5f213c9c7f74c767a GIT binary patch literal 8314 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 literal 0 HcmV?d00001 From ae6e8c8f62d523ed8c06985f8754e633197a568e Mon Sep 17 00:00:00 2001 From: StormyDusk <159055227+StormyDusk@users.noreply.github.com> Date: Fri, 25 Oct 2024 09:30:12 +0200 Subject: [PATCH 2/2] Add files via upload --- Scripting_V6/config/CONFIG_FILE.sh | 63 +++++++++++++++ Scripting_V6/fonctions/BONUS.sh | 31 +++++++ Scripting_V6/fonctions/MAJ.sh | 15 ++++ Scripting_V6/fonctions/PERSONNALISATION.sh | 33 ++++++++ .../fonctions/SSH_config_hardenning.sh | 67 ++++++++++++++++ .../fonctions/SSH_keys_registration.sh | 80 +++++++++++++++++++ .../fonctions/UFW_config_hardenning.sh | 20 +++++ Scripting_V6/main_script.sh | 72 +++++++++++++++++ 8 files changed, 381 insertions(+) create mode 100644 Scripting_V6/config/CONFIG_FILE.sh create mode 100644 Scripting_V6/fonctions/BONUS.sh create mode 100644 Scripting_V6/fonctions/MAJ.sh create mode 100644 Scripting_V6/fonctions/PERSONNALISATION.sh create mode 100644 Scripting_V6/fonctions/SSH_config_hardenning.sh create mode 100644 Scripting_V6/fonctions/SSH_keys_registration.sh create mode 100644 Scripting_V6/fonctions/UFW_config_hardenning.sh create mode 100644 Scripting_V6/main_script.sh diff --git a/Scripting_V6/config/CONFIG_FILE.sh b/Scripting_V6/config/CONFIG_FILE.sh new file mode 100644 index 0000000..2370593 --- /dev/null +++ b/Scripting_V6/config/CONFIG_FILE.sh @@ -0,0 +1,63 @@ +#!/bin/bash + +CONFIG_FILE(){ + + + + + #Variables de SSH_config_hardenning + + #Tant que le format IP est faux renvoyer une demande de saisie + echo "" + read -p " Entrez les adresses IPs autorisee pour la connection SSH ( xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx ... ) : " ALLOWED_IPS + while [[ ! "$ALLOWED_IPS" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; do + echo " Erreur : Adresse IP non valide " + read -p " Veuillez entrer une adresse IP valide : " ALLOWED_IPS + done + echo " Les IP en White List : $ALLOWED_IPS " + # while done Boucle conditionnelle itérative Tant que + # [[ ... ]] Permet les operateur logique interne et les espaces et metacaractere + # ! Invers la condition + # =~ Faire correspondre a une chaine de caractere + # ^ Debut de la chaine + # [0-9] Un chiffre entre 0 et 9 + # + Lindiquation precedente peut se repeter plusieur fois + # $ Fin de la chaine + # \. Represente un point litteral + # do Precede les commandes a executer si la condition est fausse + + + + #Variables de SSH_keys_registration + + #Choix du chemin du fichier de configuration SSH + echo "" + read -p " Entrez le chemin du fichier de configuration SSH ( par defaut /etc/ssh/sshd_config ) :" SSH_CONFIG + SSH_CONFIG=${SSH_CONFIG:-/etc/ssh/sshd_config} + echo " Le chemin configure du fichier de configuration SSH : $SSH_CONFIG " + # Chemin absolu et non pas relatif + + #Choix des utilisateurs autorises + echo "" + read -p " Entrez les utilisateur autorise ( "user1" "user2" ...) : " ALLOWED_USERS + ALLOWED_USERS=${ALLOWED_USERS:-User1} + echo " Les utlisateurs autorises : $ALLOWED_USERS " + + + + #Variables de MAJ.sh + + #Demander la mise a jour ou non de lhote + echo "" + while [[ "$MAJ_ANS" != "o" && "$MAJ_ANS" != "n" ]]; do + read -p " Souhaitez-vous mettre à jour la machine Debian ? ( Par defaut o ; Sinon : o/n) : " MAJ_ANS + MAJ_ANS=${MAJ_ANS:-o} + done + echo " Etat de la demande de mise a jour de lhote : $MAJ_ANS " + # != Different de + # && Opérateur ET logique les deux conditions doivent etre vraie + + + + +} diff --git a/Scripting_V6/fonctions/BONUS.sh b/Scripting_V6/fonctions/BONUS.sh new file mode 100644 index 0000000..4e26653 --- /dev/null +++ b/Scripting_V6/fonctions/BONUS.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +bonus(){ + + # Si fail2ban est deja installe, sinon ... + if dpkg -l | grep -qw fail2ban; then + echo "Fail2ban est déjà installé." + else + echo "Installation de Fail2ban..." + apt install -y fail2ban + fi + # dpkg Gere les paquets du systeme + # -l Cherche tous les paquets du systeme + # q Mode Silencieux + # w Fait correspondre le mot entier + + + + # Création de son répertoire de configuration sil nexiste pas + #if [ ! -d /etc/fail2ban/jail.d ]; then + # mkdir -p /etc/fail2ban/jail.d + #fi + # + #echo "" > /etc/fail2ban/jail.d/ssh.conf + + # Se renseigner sur les parametres + + + + +} \ No newline at end of file diff --git a/Scripting_V6/fonctions/MAJ.sh b/Scripting_V6/fonctions/MAJ.sh new file mode 100644 index 0000000..480b3b0 --- /dev/null +++ b/Scripting_V6/fonctions/MAJ.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +update_upgrade(){ + + #Mise a jour de lhote + echo "" + if [[ "$MAJ_ANS" == "o" ]]; then + apt update && apt upgrade -y + fi + # apt Gestionnaire de paquets de Debian + # update Met a jour la liste des paquets disponibles a partir des depots existant + # upgrade Met a jour tous les paquets installes + # -y Repond automatiquement oui a toutes les invitations interactives de la commande + +} diff --git a/Scripting_V6/fonctions/PERSONNALISATION.sh b/Scripting_V6/fonctions/PERSONNALISATION.sh new file mode 100644 index 0000000..d57a3a5 --- /dev/null +++ b/Scripting_V6/fonctions/PERSONNALISATION.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +set -e + +PERSONNALISATION() { + + + + # Alias pour la mise à jour + if ! grep -q "alias upd=" ~/.bashrc; then + echo "Création de l'alias 'upd' " + echo "alias upd='sudo apt update && sudo apt upgrade -y'" >> ~/.bashrc + else + echo "L'alias 'upd' existe déjà. " + fi + + # Personnalisation du prompt + PROMPT='PS1="\[\033[1;32m\]\u@\h\[\033[0m\]:\[\033[1;34m\]\w\[\033[0m\] \$(if [ \$? -eq 0 ]; then echo -e \":)\"; else echo -e \":(\"; fi) \[\033[0m\]\$ "' + + # Verifie si elle existe deja + if grep -Fxq "$PROMPT" ~/.bashrc; then + echo "Le prompt est déjà personnalisé de la sorte." + else + echo "$PROMPT" >> ~/.bashrc + echo "Le prompt personnalisé a été ajouté dans ~/.bashrc" + fi + + # Appliquer les changements + source ~/.bashrc + + + +} \ No newline at end of file diff --git a/Scripting_V6/fonctions/SSH_config_hardenning.sh b/Scripting_V6/fonctions/SSH_config_hardenning.sh new file mode 100644 index 0000000..d9e8447 --- /dev/null +++ b/Scripting_V6/fonctions/SSH_config_hardenning.sh @@ -0,0 +1,67 @@ +#!/bin/bash + +SSH_config_hardenning(){ + + #Desactivation de lauthentification par MDP + #Si PasswordAuthentication existe dans $SSH_CONFIG la modifier par PasswordAuthentication no + echo "" + if grep -q "^PasswordAuthentication" $SSH_CONFIG; then + sed -i 's/^PasswordAuthentication.*/PasswordAuthentication no/' $SSH_CONFIG + fi + echo "L'authentification par mot de passe a ete desactivee." + # Grep Cherche une chaine de caractere dans la variable + # -q Retourne un code 0 si la chaine de caractere est trouvee sinon code erreur 1 + # ^ Pour chercher une ligne qui commence par PasswordAuthentication + # sed Permet a la boucle de modifier le contenu du fichier automatiquement + # -i Modification dans le fichier existant + # S/.../... Remplace les premiers ... par les deuxiemes ... dans la variable designee + # .* Quelques soit la suite + + #Definition des utilisateurs autorises + #Si ^AllowUsers.* existe dans $SSH_CONFIG la modifier par AllowUsers suivi du contenu de $ALLOWED_USERS + #Sinon ajouter une ligne AllowUsers $ALLOWED_USERS dans $SSH_CONFIG + echo "" + if grep -q "^AllowUsers" $SSH_CONFIG; then + sed -i "s/^AllowUsers.*/AllowUsers $ALLOWED_USERS/" $SSH_CONFIG + else + echo "AllowUsers $ALLOWED_USERS" >> $SSH_CONFIG + fi + echo "L'acces en ssh a ete accorde aux utilisateurs : $ALLOWED_USERS. Profitez bien ;)" + # AllowUsers $ALLOWED_USERS Ajoute le contenu de $ALLOWED_USERS après AllowUsers le tout dans la varibale designee + # else Permet lajout de reponses au test de la condition a la boucle + # >> Ajout de caractere dans la variable en concervant ceux deja existant + + #Desactivation de lauthentification SSH root + #Si ^PermitRootLogin.* existe dans $SSH_CONFIG la modifier par PermitRootLogin no + #Sinon ajouter une ligne PermitRootLogin no dans $SSH_CONFIG + echo "" + if grep -q "^PermitRootLogin" $SSH_CONFIG; then + sed -i 's/^PermitRootLogin.*/PermitRootLogin no/' $SSH_CONFIG + else + echo "PermitRootLogin no" >> $SSH_CONFIG + fi + echo "L'acces de l'utilisateur root en ssh a ete desactive" + + #Definition des IP autorisees + #Pour toute les IP dans ALLOWED_IPS les ajouter dans $SSH_CONFIG + echo "" + for ip in "${ALLOWED_IPS[@]}"; do + echo "Match Address $ip" >> $SSH_CONFIG + done + # for done Boucle d'itération for + # ip Variable allant stocker les valeur de ALLOWED_IPS + # in Literation aura lieu dans ALLOWED_IPS + # [@] Donne lacces aux valeurs de ALLOWED_IPS + # do Precede les commandes a executer apres avoir parcouru les valeurs + + #Redemarrer le service SSH afin dappliquer les changements effectues + echo "" + systemctl restart sshd + systemctl restart ssh + echo "Liste blanche des IP et utilisateur configuree avec succes." + echo "Service SSH redemarre avec succes." + # systemctl Etilisé pour démarrer arrêter redémarrer vérifier le statut ou activer et désactiver les services système + # restart Defini sur redémarrer + # sshd & ssh Pour des soucis de compatibilite entre les differentes distributions linux + +} diff --git a/Scripting_V6/fonctions/SSH_keys_registration.sh b/Scripting_V6/fonctions/SSH_keys_registration.sh new file mode 100644 index 0000000..e108ac4 --- /dev/null +++ b/Scripting_V6/fonctions/SSH_keys_registration.sh @@ -0,0 +1,80 @@ +#!/bin/bash + +SSH_keys_registration(){ + + + # PEUT ETRE SUPPR EVAL ET &>/dev/null + + #Verifier lexistance de lutilisateur sinon le creer generee sa clee et ses repertoir associe si necessaire + #Parcourir les valeurs de $ALLOWED_USERS et les mettre dans la variable temporaire de boucle user + for user in $ALLOWED_USERS; do + + #Si lutilisateur dans $user existe id renvera son identifiant sinon rien + echo "" + if ! id "$user" &>/dev/null; then + echo "Si l'utilisateur $user n'existe pas, pensez à le créer et déplacer les clées généré ultérieurement. Elles sont à la racine du script." + # &>/dev/null Desencombre le shell en mettant les sortie dans le fichier /dev/null + fi + #Definion du repertoire home de lutilisateur + USER_HOME=$(eval echo ~$user) + # eval Obtient dabord le contenu de la commande avant de lexecuter + # ~$user Renvoi le repertoir de lutilisateur + # On genere ou nouvelle variable interne a cet boucle + + #Definion du repertoire SSH de lutilisateur + SSH_DIR="$USER_HOME/.ssh" + # /.ssh Ajouter ce repertoire dans le home + + #Si le repertoire .ssh nexiste pas le creer + echo "" + if [ ! -d "$SSH_DIR" ]; then + echo "Creation du repertoire SSH de $user" + mkdir -p "$SSH_DIR" + chown $user:$user "$SSH_DIR" + chmod 700 "$SSH_DIR" + fi + # -d Vraie si le repertoir existe + # chmod Gere les permission repertoir et fichier + # 7 Tous pour le proprietaire du repertoire + # 0 Rien pour les membres du groupe de lutilisaeur + # 0 Rien pour les autres utilisateurs + + #Definition du repertoir des clee RSA + KEY_FILE="$SSH_DIR/id_rsa" + + #Generer une paire de cles SSH ( privee et public ) + echo "" + echo "Generation des clee rsa de $user" + ssh-keygen -t rsa -b 2048 -f "$KEY_FILE" -q -N "" + # ssh-keygen Outil de generation de clee SSH + # -t Choisir le type de clee genere ici type rsa + # -b Specifie la taille de la clee ici 2048 bits + # -f Specifi le chemin et nom du fichier ici dans la variable KEY_PATH + # -N Specifie une phrase de pass qui protege la clee privee ( ici null car pas de valeur apres N ) + + #Deplacer la cle publique dans authorized_keys + echo "" + echo "Ajout de la cle publique dans authorized_keys pour $user" + cat "$KEY_FILE.pub" >> "$SSH_DIR/authorized_keys" + chown $user:$user "$SSH_DIR/authorized_keys" + chmod 600 "$SSH_DIR/authorized_keys" + # cat Renvoi le contenu dun fichier + # chown Gere lappartenance des repertoire et fichier + # $user:$user Utilisateur:Groupe:Autres + # 6 Lecture et ecriture + + #Gestion privileges sur les clees rsa + chown $user:$user "$KEY_FILE" + chmod 600 "$KEY_FILE" + # Les utilisateurs ne sont pas admin pas besoin des plein droits sur les clees + + echo "Clees RSA generee pour $user" + + done + + echo "Gestion des clees RSA pour lacces SSH termine ." + + + + +} diff --git a/Scripting_V6/fonctions/UFW_config_hardenning.sh b/Scripting_V6/fonctions/UFW_config_hardenning.sh new file mode 100644 index 0000000..ca36b72 --- /dev/null +++ b/Scripting_V6/fonctions/UFW_config_hardenning.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +UFW_config_hardenning(){ + + #Si ufw n'est pas installer, l'installer + if ! command -v ufw > /dev/null; then + sudo apt install -y ufw; + fi + # command Execute la commande. + # v Vérifie si la commande existe + + # Activation du pare feu + ufw default deny incoming + ufw default allow outgoing + + ufw allow ssh + ufw enable + +} + diff --git a/Scripting_V6/main_script.sh b/Scripting_V6/main_script.sh new file mode 100644 index 0000000..fbe8ea2 --- /dev/null +++ b/Scripting_V6/main_script.sh @@ -0,0 +1,72 @@ +#!/bin/bash +#Definit au systeme quon utilise Bash + +#La gestion des erreurs du script se fait ici et pas dans les fonctions pour ameliorer leur portabilite +trace(){ + echo "# $*" + "$@" +} + # Non_de_la_fonction(){ Contenu de la fonction } Les parenthese indique que cest une fonction + # echo Affiche des chaines de caracteres + # ; Peut remplacer lindentation pour tout mettre sur une linge + # # Applique un aspect visuel aux commandes renvoyees dans le shell + # $* Permer de retourner les argument utilise par les fonctions du script + # s@ Represente les arguments des fonctions ( ici valeur des variables ) + # Les guillementspPreserve les espace dans les arguments + # La derniere ligne definit donc le format de renvoi des arguments utilises par la fonction + +set -e + # set Active ou desactive les otpions du shell + # - Activation ( + desactivation ) + # x Enonciation des commandes avant execution + # e Arret du script en cas de code erreur + + +#Sourcage du fichier des variables +source ./config/CONFIG_FILE.sh || { echo "Erreur : Impossible de sourcer CONFIG_FILE.sh."; exit 1; } + # source Execute au prealable les fonctions du fichier pour les rendre accessible a posteriorie + # Chemin relatif et pas absolue + # Double pie est un oOperateur logique Si lexecution reussi passer a la commande suivante sinon renvoyer le code erreur + # { ... ; ... } Groupage de commandes qui permet dexecuter plusieurs commandes pour une meme sortie booleenne + # exit 1 est un code de sortie qui indique une erreur ( en opposition à 0 ) + +#Sourcage des fichiers de fonctions +source ./fonctions/PERSONNALISATION.sh || { echo "Erreur : Impossible de sourcer PERSONNALISATION.sh "; exit 1; } +source ./fonctions/MAJ.sh || { echo "Erreur : Impossible de sourcer MAJ.sh"; exit 1; } +source ./fonctions/SSH_keys_registration.sh || { echo " Erreur : Impossible de sourcer SSH_keys_registration.sh "; exit 1; } +source ./fonctions/SSH_config_hardenning.sh || { echo " Erreur : Impossible de sourcer SSH_config_hardenning.sh "; exit 1; } +source ./fonctions/UFW_config_hardenning.sh || { echo " Erreur : Impossible de sourcer UFW_config_hardenning.sh "; exit 1; } +source ./fonctions/BONUS.sh || { echo " Erreur : Impossible de sourcer BOnUS.sh "; exit 1; } + +#Definition de la fonction dexecution du script +main(){ + + echo "Demarrage du script..." + + #Organisation de lexecution des fonctions presentent dans les fichiers sources + CONFIG_FILE || { echo " Erreur : echec de l'execution de CONFIG_FILE. "; exit 1; } + PERSONNALISATION || { echo " Erreur : echec de l'execution de PERSONNALISATION. "; exit 1; } + update_upgrade || { echo " Erreur : echec de l'execution de update_upgrade. "; exit 1; } + SSH_keys_registration || { echo " Erreur : echec de l'execution de SSH_keys_registration. "; exit 1; } + SSH_config_hardenning || { echo " Erreur : echec de l'execution de SSH_config_hardenning. "; exit 1; } + UFW_config_hardenning || { echo " Erreur : echec de l'execution de UFW_config_hardenning. "; exit 1; } + bonus || { echo " Erreur : echec de l'execution de bonus. "; exit 1; } + + echo "Script termine." +} + +#Si il est vraie que lutilisateur na pas les privileges root retourner une erreur +if [ "$(id -u)" -ne 0 ]; then + echo " Erreur : Vous n'avez pas les privileges necessaire ( Commande debian : su ) pour executer ce script. " + exit 1 +fi + # if fi Boucle conditionnelle if + # [ ... ] La condition a tester + # $( ... ) Execute la commande interne au parenthese puis la remplace par le resultat de cette derniere + # id -u Retourne lidentifiant de lutilisateur + # -ne Different de + # 0 Droit root + # then Precede les commandes a executer si la condition est vraie + +#Execution du script +main