Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions TPLinux/config/config.sh
Original file line number Diff line number Diff line change
@@ -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

}
21 changes: 21 additions & 0 deletions TPLinux/fonctions/IP.sh
Original file line number Diff line number Diff line change
@@ -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
}
25 changes: 25 additions & 0 deletions TPLinux/fonctions/auto.sh
Original file line number Diff line number Diff line change
@@ -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
}
38 changes: 38 additions & 0 deletions TPLinux/fonctions/durcissement.sh
Original file line number Diff line number Diff line change
@@ -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
}
17 changes: 17 additions & 0 deletions TPLinux/fonctions/otp.sh
Original file line number Diff line number Diff line change
@@ -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
}
24 changes: 24 additions & 0 deletions TPLinux/fonctions/shell.sh
Original file line number Diff line number Diff line change
@@ -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
}
8 changes: 8 additions & 0 deletions TPLinux/fonctions/ufw.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/bin/bash

ufw(){
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw enable
}
32 changes: 32 additions & 0 deletions TPLinux/main_script.sh
Original file line number Diff line number Diff line change
@@ -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