diff --git a/system_hardening_optimized.sh b/system_hardening_optimized.sh index 350c452..3e071d2 100644 --- a/system_hardening_optimized.sh +++ b/system_hardening_optimized.sh @@ -44,7 +44,7 @@ readonly DEFAULT_UMASK="027" : "${AUTO_SKIP_LYNIS:=no}" : "${AUTO_YES:=no}" : "${AUTO_CLEANUP_SSH:=no}" -: "${AUTO_CHANGE_ROOT_PWD:=no}" +: "${AUTO_CHANGE_ROOT_PWD:=yes}" TOTAL_STEPS=32 CURRENT_STEP=1 @@ -690,7 +690,7 @@ change_root_password() { return 0 fi - print_step "Changement du mot de passe root avec mot de passe aléatoire" + print_step "Changement du mot de passe root" # Ne rien faire en conteneur LXC/Docker if detect_container; then @@ -701,11 +701,11 @@ change_root_password() { # Vérifier si on doit changer le mot de passe if [[ "$AUTO_CHANGE_ROOT_PWD" != "yes" ]] && ! auto_confirm; then - echo -e "${YELLOW}╔══════════════════════════════════════════════════════════════╗${NC}" + echo -e "${YELLOW}╔══════════════════════════════════════════════════════════╗${NC}" echo -e "${YELLOW}║ CHANGEMENT MOT DE PASSE ROOT ║${NC}" - echo -e "${YELLOW}╚══════════════════════════════════════════════════════════════╝${NC}" + echo -e "${YELLOW}╚══════════════════════════════════════════════════════════╝${NC}" echo "" - echo -e "${RED}⚠ Cette action va changer le mot de passe root de ce système.${NC}" + echo -e "${RED}⚠ Cette action va changer le mot de passe root de ce système.${NC}" echo "Le nouveau mot de passe sera sauvegardé dans un fichier sécurisé." echo "" echo -e "${YELLOW}Conseils:${NC}" @@ -738,31 +738,24 @@ change_root_password() { return 0 fi - # Générer un mot de passe aléatoire sécurisé - print_info "Génération d'un mot de passe aléatoire sécurisé..." + # ============================================================ + # MODIFICATION ICI : Utiliser le mot de passe par défaut + # ============================================================ + print_info "Utilisation du mot de passe par défaut défini..." - # Méthode 1: Utiliser openssl (préféré) - if command -v openssl > /dev/null 2>&1; then - NEW_ROOT_PASSWORD=$(openssl rand -base64 32 | tr -dc 'A-Za-z0-9!@#$%^&*()_+-=' | head -c 24) - # Méthode 2: Utiliser /dev/urandom - elif [[ -e /dev/urandom ]]; then - NEW_ROOT_PASSWORD=$(tr -dc 'A-Za-z0-9!@#$%^&*()_+-=' < /dev/urandom | head -c 24) - # Méthode 3: Alternative - else - NEW_ROOT_PASSWORD=$(date +%s | sha256sum | base64 | head -c 24) - fi + # Mot de passe par défaut + NEW_ROOT_PASSWORD="1H6\$06%@o*iEle" # Fichier pour sauvegarder le mot de passe local PWD_FILE="/root/root_password_$(date +%Y%m%d_%H%M%S).txt" - local PWD_FILE_ENCRYPTED="/root/root_password_$(date +%Y%m%d_%H%M%S).gpg" - # Sauvegarder le mot de passe en clair (avec permissions restreintes) + # Sauvegarder le mot de passe (avec permissions restreintes) cat > "$PWD_FILE" << EOF === MOT DE PASSE ROOT - $(hostname) - $(date) === -Nouveau mot de passe root: $NEW_ROOT_PASSWORD +Mot de passe root par défaut: $NEW_ROOT_PASSWORD -⚠ CONSERVEZ CE FICHIER EN LIEU SÛR ⚠ -• Ce mot de passe a été généré automatiquement +⚠ CONSERVEZ CE FICHIER EN LIEU SÛR ⚠ +• Ce mot de passe a été défini par défaut dans le script • Il est nécessaire pour les connexions root locales • Utilisez des clés SSH pour les connexions distantes • Vous ne serez PAS obligé de changer ce mot de passe à la première connexion @@ -775,19 +768,6 @@ EOF chmod 600 "$PWD_FILE" chown root:root "$PWD_FILE" - # Essayer de chiffrer le fichier avec GPG si disponible - if command -v gpg > /dev/null 2>&1; then - print_info "Chiffrement du mot de passe avec GPG..." - if echo "$NEW_ROOT_PASSWORD" | gpg --symmetric --cipher-algo AES256 --output "$PWD_FILE_ENCRYPTED" 2>/dev/null; then - # Supprimer le fichier en clair - shred -u "$PWD_FILE" 2>/dev/null || rm -f "$PWD_FILE" - PWD_FILE="$PWD_FILE_ENCRYPTED" - print_info "Mot de passe chiffré avec succès" - else - print_warning "Échec du chiffrement GPG - conservation en clair" - fi - fi - # Changer le mot de passe root SANS forcer le changement print_info "Changement du mot de passe root..." @@ -795,8 +775,7 @@ EOF if echo "root:$NEW_ROOT_PASSWORD" | chpasswd -c SHA512 2>/dev/null; then print_success "Mot de passe root changé avec succès" - # NE PAS forcer l'expiration immédiate (c'est ce qui cause le problème) - # On met seulement à jour la date du dernier changement + # NE PAS forcer l'expiration immédiate chage -d $(date +%Y-%m-%d) root 2>/dev/null || true # Appliquer la politique d'expiration normale (90 jours) @@ -804,10 +783,11 @@ EOF # Afficher les informations de sécurité echo "" - echo -e "${GREEN}╔══════════════════════════════════════════════════════════════╗${NC}" + echo -e "${GREEN}╔══════════════════════════════════════════════════════════╗${NC}" echo -e "${GREEN}║ MOT DE PASSE ROOT MODIFIÉ ║${NC}" - echo -e "${GREEN}╚══════════════════════════════════════════════════════════════╝${NC}" + echo -e "${GREEN}╚══════════════════════════════════════════════════════════╝${NC}" echo "" + echo -e "${YELLOW}Mot de passe défini:${NC} $NEW_ROOT_PASSWORD" echo -e "${YELLOW}Fichier de sauvegarde:${NC} $PWD_FILE" echo -e "${YELLOW}Permissions:${NC} $(stat -c %A "$PWD_FILE" 2>/dev/null || echo "N/A")" echo "" @@ -820,29 +800,6 @@ EOF echo " • Expiration: $expires" echo "" - # Vérifier la sécurité du mot de passe - print_info "Vérification de la force du mot de passe..." - local pwd_length=${#NEW_ROOT_PASSWORD} - local has_upper=$(echo "$NEW_ROOT_PASSWORD" | grep -q '[A-Z]' && echo 1 || echo 0) - local has_lower=$(echo "$NEW_ROOT_PASSWORD" | grep -q '[a-z]' && echo 1 || echo 0) - local has_digit=$(echo "$NEW_ROOT_PASSWORD" | grep -q '[0-9]' && echo 1 || echo 0) - local has_special=$(echo "$NEW_ROOT_PASSWORD" | grep -q '[!@#$%^&*()_+-=]' && echo 1 || echo 0) - - local score=0 - [[ $pwd_length -ge 12 ]] && score=$((score + 2)) - [[ $has_upper -eq 1 ]] && score=$((score + 1)) - [[ $has_lower -eq 1 ]] && score=$((score + 1)) - [[ $has_digit -eq 1 ]] && score=$((score + 1)) - [[ $has_special -eq 1 ]] && score=$((score + 1)) - - if [[ $score -ge 5 ]]; then - echo -e "${GREEN}✓ Force du mot de passe: Excellente${NC}" - elif [[ $score -ge 4 ]]; then - echo -e "${YELLOW}✓ Force du mot de passe: Bonne${NC}" - else - echo -e "${RED}⚠ Force du mot de passe: Moyenne${NC}" - fi - # Conseils de sécurité echo "" echo -e "${YELLOW}🔒 CONSEILS DE SÉCURITÉ:${NC}" @@ -863,20 +820,20 @@ EOF else print_error "Échec du changement de mot de passe root" - rm -f "$PWD_FILE" "$PWD_FILE_ENCRYPTED" 2>/dev/null + rm -f "$PWD_FILE" 2>/dev/null return 1 fi # Vérifier les accès SSH print_info "Vérification de la configuration SSH..." if grep -q "^PermitRootLogin.*yes" /etc/ssh/sshd_config 2>/dev/null; then - echo -e "${YELLOW}⚠ Connexion root SSH activée${NC}" + echo -e "${YELLOW}⚠ Connexion root SSH activée${NC}" echo " • Considérez la désactivation avec: PermitRootLogin prohibit-password" echo "" fi # Journaliser l'action - log_message "Mot de passe root changé - Fichier: $PWD_FILE" "SECURITY" + log_message "Mot de passe root changé (mot de passe par défaut) - Fichier: $PWD_FILE" "SECURITY" mark_step_done "$step_name" } @@ -1484,6 +1441,7 @@ configure_firewall_ports() { fi # Ports essentiels (toujours autorisés) + ufw allow 22/tcp comment 'SSH' ufw allow 53/udp comment 'DNS' ufw allow 123/udp comment 'NTP'