Ceci est une ancienne révision du document !
Table des matières
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/interfaceset/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
- Un accès root
- Une distribution Linux basée sur Debian
- 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.
