Outils pour utilisateurs

Outils du site


projets:scriptdeconfigurationlinux

Ceci est une ancienne révision du document !


Script de Configuration et Sécurisation d’un Serveur Linux

Ce script Bash permet d’automatiser plusieurs tâches essentielles pour la configuration et la sécurisation d’un serveur Linux. Il s'assure que l'utilisateur exécutant le script est root, met en place une configuration réseau statique, régénère les certificats SSH, modifie les mots de passe des utilisateurs spécifiés et effectue un nettoyage du système avant de le redémarrer.

Fonctionnalités

  • Vérification des privilèges root
  • Régénération des certificats SSH
  • Configuration réseau statique
    • Sélection de l'interface réseau
    • Définition de l’adresse IP, du masque de sous-réseau, de la passerelle et des serveurs DNS
    • Mise à jour des fichiers /etc/network/interfaces et /etc/resolv.conf
  • Changement du nom de la machine (hostname)
  • Modification des mots de passe pour les utilisateurs root et npoirier
  • Suppression optionnelle du script après exécution
  • Nettoyage des journaux et de l’historique système
  • Redémarrage du serveur

Pré-requis

  1. Un accès root
  2. Une distribution Linux basée sur Debian
  3. Une connexion stable au serveur

Installation et Utilisation

Téléchargez et exécutez le script avec les commandes suivantes :

chmod +x confserv.sh
sudo ./confserv.sh

Suivez les instructions fournies par le script pour entrer les informations réseau et autres configurations requises. À la fin, le système redémarrera automatiquement.

Explication du Code

Vérification des droits root

Le script s'assure qu'il est exécuté en tant que root avant de poursuivre.

if [ "$EUID" -ne 0 ]; then
    echo "Ce script doit être exécuté en tant que root."
    exit 1
fi

Validation des adresses IP

Une fonction validate_ip() permet de s’assurer que les entrées de l’utilisateur sont bien des adresses IP valides.

validate_ip() {
    local ip=$1
    local IFS=.
    local -a octets=($ip)
 
    if [[ ${#octets[@]} -ne 4 ]]; then
        return 1
    fi
 
    for octet in "${octets[@]}"; do
        if ! [[ "$octet" =~ ^[0-9]+$ ]]; then
            return 1
        fi
        if ((octet < 0 || octet > 255)); then
            return 1
        fi
    done
    return 0
}

Régénération des certificats SSH

Le script supprime et recrée les certificats SSH pour renforcer la sécurité.

systemctl stop ssh
rm -f /etc/ssh/ssh_host_*
ssh-keygen -A
systemctl restart ssh

Configuration réseau

L'utilisateur doit fournir une adresse IP, un masque de sous-réseau, une passerelle et des serveurs DNS. Le fichier /etc/network/interfaces est mis à jour en conséquence.

cat > /etc/network/interfaces <<EOF
auto $NET_INTERFACE
iface $NET_INTERFACE inet static
    address $IP_ADDR
    netmask $NETMASK
    gateway $GATEWAY
    dns-nameservers $DNS1 $DNS2 $DNS3
    dns-search $DOMAIN
EOF

Changement du nom de la machine

Le nouveau nom de la machine est défini dans /etc/hostname.

echo "$NEW_HOSTNAME" > /etc/hostname
hostnamectl set-hostname "$NEW_HOSTNAME"

Modification des mots de passe

Le script demande un nouveau mot de passe pour les utilisateurs root et npoirier.

echo "$user:$PASS1" | chpasswd

Nettoyage et Redémarrage

Tous les logs et fichiers temporaires sont supprimés avant le redémarrage du serveur.

rm -rf /var/log/*
rm -rf /var/cache/apt/*
reboot

Sécurité et Bonnes Pratiques

  • Sauvegarder les fichiers de configuration avant toute modification.
  • S’assurer que l’adresse IP et les paramètres réseau sont corrects pour éviter toute perte de connexion.
projets/scriptdeconfigurationlinux.1739224560.txt.gz · Dernière modification : de nicolaspoirier