Actualiser system_hardening_optimized.sh
This commit is contained in:
parent
6b97ae54e2
commit
66d39d943f
|
|
@ -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'
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue