From dbb63a3b1e0b3f70d72f0d372cf8b6a4be1de149 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=CE=BBmix?= <94485066+Gapoly@users.noreply.github.com> Date: Fri, 25 Oct 2024 09:18:08 +0200 Subject: [PATCH 1/8] Create main_script.sh --- TPLinux/main_script.sh | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 TPLinux/main_script.sh diff --git a/TPLinux/main_script.sh b/TPLinux/main_script.sh new file mode 100644 index 0000000..8f7818d --- /dev/null +++ b/TPLinux/main_script.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +# Arrête le script s'il y a une erreur +set -e + +source ./config/config.sh || { echo "Erreur : Impossible de charger le fichier de configuration"; exit 1; } +source ./fonction/durcissement.sh || { echo "Erreur : Impossible de sourcer durcissement.sh"; exit 1; } +source ./fonction/ufw.sh || { echo "Erreur : Impossible de sourcer ufw.sh"; exit 1; } +source ./fonction/IP.sh || { echo "Erreur : Impossible de sourcer IP.sh"; exit 1; } +source ./fonction/otp.sh || { echo "Erreur : Impossible de sourcer otp.sh"; exit 1; } +source ./fonction/shell.sh || { echo "Erreur : Impossible de sourcer shell.sh"; exit 1; } +source ./fonction/auto.sh || { echo "Erreur : Impossible de sourcer shell.sh"; exit 1; } + +main() { + + echo "Démarrage du processus d'automatisation et de durcissement..." + + # Lancer les différents scripts + + config || { echo "Erreur : échec de l'exécution de CONFIG_FILE."; exit 1; } + durcissement || { echo "Erreur : échec de l'exécution de durcissement.sh"; exit 1; } + IP || { echo "Erreur : échec de l'exécution de IP.sh"; exit 1; } + ufw || { echo "Erreur : échec de l'exécution de ufw.sh"; exit 1; } + otp || { echo "Erreur : échec de l'exécution de otp.sh"; exit 1; } + auto || { echo "Erreur : échec de l'exécution de shell.sh"; exit 1; } + shell || { echo "Erreur : échec de l'exécution de shell.sh"; exit 1; } + + echo "Processus terminé avec succès." +} + +# Appel de la fonction principale +main From 858f4630e5392aaddf47ea18cd432e4eeef3190f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=CE=BBmix?= <94485066+Gapoly@users.noreply.github.com> Date: Fri, 25 Oct 2024 09:18:31 +0200 Subject: [PATCH 2/8] Create config.sh --- TPLinux/config/config.sh | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 TPLinux/config/config.sh diff --git a/TPLinux/config/config.sh b/TPLinux/config/config.sh new file mode 100644 index 0000000..bef2687 --- /dev/null +++ b/TPLinux/config/config.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +config(){ + + sudo apt-get update > /dev/null 2>&1 + sudo apt-get install openssh-server ufw libpam-google-authenticator unattended-upgrades -y > /dev/null 2>&1 + +# Création du répertoire .ssh s'il n'existe pas + if [ ! -d "$HOME/.ssh" ]; then + echo "Création du répertoire ~/.ssh..." + mkdir -p "$HOME/.ssh" + chmod 700 "$HOME/.ssh" + fi + +} From f895ade0f1efba8fb52edb73aa80ea0edc1fcb9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=CE=BBmix?= <94485066+Gapoly@users.noreply.github.com> Date: Fri, 25 Oct 2024 09:19:01 +0200 Subject: [PATCH 3/8] Create durcissement.sh --- TPLinux/fonctions/durcissement.sh | 38 +++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 TPLinux/fonctions/durcissement.sh diff --git a/TPLinux/fonctions/durcissement.sh b/TPLinux/fonctions/durcissement.sh new file mode 100644 index 0000000..9a641b9 --- /dev/null +++ b/TPLinux/fonctions/durcissement.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +durcissement() { + + # Définition des variables + SSH_DIR="$HOME/.ssh" + AUTH_KEYS="$SSH_DIR/authorized_keys" + + # Générer la clé SSH + ssh-keygen -b 4096 -t rsa -f "$SSH_DIR/id_rsa" -N "" -q + if [ $? -ne 0 ]; then + echo "Erreur lors de la génération de la clé SSH." + return 1 # Retourne un code d'erreur + fi + + # Accès clé privée réservé à l'utilisateur + sudo chmod 600 $SSH_DIR/id_rsa + + # Création du groupe + sudo groupadd ssh_login + + # Met l'utilisateur dans le groupe autorisé à faire du SSH + sudo usermod -aG ssh_login $USER + + # Vérifier si la clé publique a bien été générée + if [ -f "$SSH_DIR/id_rsa.pub" ]; then + echo "Clé SSH générée avec succès." + else + echo "Erreur : la clé SSH n'a pas été générée." + return 1 # Retourne un code d'erreur + fi + + # Configuration SSH + sudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config + sudo sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/' /etc/ssh/sshd_config + sudo sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin no/' /etc/ssh/sshd_config + sudo sed -i '$ a AllowGroups ssh_login' /etc/ssh/sshd_config +} From b451ebf69b5e092d6753a078ab15e8cfdafd8922 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=CE=BBmix?= <94485066+Gapoly@users.noreply.github.com> Date: Fri, 25 Oct 2024 09:25:01 +0200 Subject: [PATCH 4/8] Create ufw.sh --- TPLinux/fonctions/ufw.sh | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 TPLinux/fonctions/ufw.sh diff --git a/TPLinux/fonctions/ufw.sh b/TPLinux/fonctions/ufw.sh new file mode 100644 index 0000000..b8ec713 --- /dev/null +++ b/TPLinux/fonctions/ufw.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +ufw(){ + sudo ufw default deny incoming + sudo ufw default allow outgoing + sudo ufw allow ssh + sudo ufw enable +} From 19174d08d9022d65777d34a32f50a0a7fb2ce6a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=CE=BBmix?= <94485066+Gapoly@users.noreply.github.com> Date: Fri, 25 Oct 2024 09:25:19 +0200 Subject: [PATCH 5/8] Create shell.sh --- TPLinux/fonctions/shell.sh | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 TPLinux/fonctions/shell.sh diff --git a/TPLinux/fonctions/shell.sh b/TPLinux/fonctions/shell.sh new file mode 100644 index 0000000..a8851ca --- /dev/null +++ b/TPLinux/fonctions/shell.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +shell() { + sed -i '$ a \ +\ +if [ $(id -u) -eq 0 ]; then\n\ + PS1='\''\\[\\033[01;31m\\]\\u@\\h\\[\\033[01;34m\\] \\w \\$\\[\\033[00m\\] '\''\n\ +else\n\ + PS1='\''\\[\\033[01;35m\\]\\u@\\h\\[\\033[01;34m\\] \\w \\$\\[\\033[00m\\] '\''\n\ +fi\n\ +' $HOME/.bashrc + + sudo sed -i '$ a alias update="sudo apt update"' ~/.bashrc + sudo sed -i '$ a alias upgrade="sudo apt update && sudo apt upgrade -y"' ~/.bashrc + sudo sed -i '$ a alias gs="git status"' ~/.bashrc # Affiche le statut du dépôt Git (fichiers modifiés, non suivis, etc.) + sudo sed -i '$ a alias ga="git add"' ~/.bashrc # Ajoute les fichiers au suivi pour le prochain commit + sudo sed -i '$ a alias gc="git commit -m"' ~/.bashrc # Effectue un commit avec un message (à spécifier après -m) + sudo sed -i '$ a alias gp="git push"' ~/.bashrc # Envoie les commits locaux vers le dépôt distant (push) + sudo sed -i '$ a alias gl="git log --oneline --graph --decorate --all"' ~/.bashrc # Affiche un journal compact des commits avec un graphe et des décorations + sudo sed -i '$ a alias gco="git checkout"' ~/.bashrc # Change de branche ou de commit (checkout d'une branche ou d'un commit spécifique) + sudo sed -i '$ a alias gd="git diff"' ~/.bashrc # Affiche les différences entre les fichiers modifiés et leur état dans le dernier commit + + exec bash +} From 9aef527a50b570c3340a641965fe305579110563 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=CE=BBmix?= <94485066+Gapoly@users.noreply.github.com> Date: Fri, 25 Oct 2024 09:25:43 +0200 Subject: [PATCH 6/8] Create otp.sh --- TPLinux/fonctions/otp.sh | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 TPLinux/fonctions/otp.sh diff --git a/TPLinux/fonctions/otp.sh b/TPLinux/fonctions/otp.sh new file mode 100644 index 0000000..a126eed --- /dev/null +++ b/TPLinux/fonctions/otp.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +otp(){ + sudo sed -i 's/KbdInteractiveAuthentication no/KbdInteractiveAuthentication yes/' /etc/ssh/sshd_config + sudo sed -i 's/@include common-auth/#@include common-auth/' /etc/pam.d/sshd + sudo sed -i '$ a auth required pam_google_authenticator.so' /etc/pam.d/sshd + sudo systemctl restart ssh + + # Configuration de Google Authenticator pour la 2FA avec TOTP. + # -t : Codes basés sur le temps. + # -d : Interdiction de réutiliser le même code. + # -f : Forcer la configuration sans confirmation. + # -r 3 : Limite à 3 tentatives avant blocage. + # -R 15 : Attente de 10 secondes entre tentatives échouées. + # -W : Désactive les avertissements de limitation. + google-authenticator -t -d -f -r 3 -R 15 -W +} From f70404ac9d07296039b6d240fb2b884b67156afa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=CE=BBmix?= <94485066+Gapoly@users.noreply.github.com> Date: Fri, 25 Oct 2024 09:25:58 +0200 Subject: [PATCH 7/8] Create IP.sh --- TPLinux/fonctions/IP.sh | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 TPLinux/fonctions/IP.sh diff --git a/TPLinux/fonctions/IP.sh b/TPLinux/fonctions/IP.sh new file mode 100644 index 0000000..064c652 --- /dev/null +++ b/TPLinux/fonctions/IP.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +IP(){ + while true; do + echo "Entrez une adresse IPv4 autorisez à faire du SSH" + read ipv4 + + if [[ "$ipv4" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then + break + else + echo "Ceci n'est pas une adresse IPv4" + fi + done + + # Récupère l'adresse IP et le masque CIDR de l'interface réseau active + CIDR=$(ip -o -f inet addr show | awk '/scope global/ {print $4}') + NETWORK=$(echo "$CIDR" | sed 's/\([0-9]*\.[0-9]*\.[0-9]*\.\)[0-9]*\/\([0-9]*\)/\10\/\2/') + + sudo sed -i '$ a sshd: ALL : deny' /etc/hosts.deny + sudo sed -i '$ a sshd: '$ipv4','$NETWORK' : allow' /etc/hosts.allow +} From 118afae43f58e5d9682a5f8c62c9f1270227c397 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=CE=BBmix?= <94485066+Gapoly@users.noreply.github.com> Date: Fri, 25 Oct 2024 09:26:18 +0200 Subject: [PATCH 8/8] Create auto.sh --- TPLinux/fonctions/auto.sh | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 TPLinux/fonctions/auto.sh diff --git a/TPLinux/fonctions/auto.sh b/TPLinux/fonctions/auto.sh new file mode 100644 index 0000000..85b6a3d --- /dev/null +++ b/TPLinux/fonctions/auto.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +auto(){ + # Modification du fichier 50unattended-upgrades pour mettre à jour uniquement les paquets de sécurité + echo "Configuration des mises à jour automatiques de sécurité..." + + # Ajoute les nouvelles lignes de configuration pour la mise à jour quotidienne + + sudo touch /etc/apt/apt.conf.d/20auto-upgrades + + sudo chmod 777 /etc/apt/apt.conf.d/20auto-upgrades + echo "APT::Periodic::Update-Package-Lists "1";" >> /etc/apt/apt.conf.d/20auto-upgrades + echo "APT::Periodic::Unattended-Upgrade "1";" >> /etc/apt/apt.conf.d/20auto-upgrades + sudo chmod 644 /etc/apt/apt.conf.d/20auto-upgrades + + # Redémarrage des services pour appliquer les changements + echo "Activation et démarrage du service unattended-upgrades..." + sudo systemctl enable unattended-upgrades + sudo systemctl restart unattended-upgrades + + # Confirmation + echo "La configuration pour les mises à jour automatiques de sécurité est terminée." + + sudo systemctl restart ssh +}