Actualiser system_hardening_optimized.sh

This commit is contained in:
Johnny 2026-01-05 16:14:42 +00:00
parent 48bcbd8a0e
commit b038d8af80
1 changed files with 135 additions and 6 deletions

View File

@ -46,7 +46,7 @@ readonly DEFAULT_UMASK="027"
: "${AUTO_CLEANUP_SSH:=no}"
: "${AUTO_CHANGE_ROOT_PWD:=yes}"
TOTAL_STEPS=33
TOTAL_STEPS=32
CURRENT_STEP=1
# Variables de contrôle
@ -573,7 +573,7 @@ show_help() {
echo " $0 --yes"
echo ""
echo " # Mode autonome sans certains composants"
echo " AUTO_ENABLE_CLAMAV=no AUTO_ENABLE_AIDE=no $0 --unattended"
echo " AUTO_ENABLE_CLAMAV=yes AUTO_ENABLE_AIDE=yes $0 --unattended"
echo ""
echo -e "${RED}⚠ AVERTISSEMENT:${NC}"
echo " En mode autonome, le script prend des décisions automatiques."
@ -1193,14 +1193,143 @@ configure_clamav() {
print_step "Configuration de ClamAV"
print_info "Mise à jour de la base de données ClamAV..."
# Créer les répertoires nécessaires avec les bonnes permissions
print_info "Création des répertoires ClamAV..."
mkdir -p /var/log/clamav
mkdir -p /var/lib/clamav
mkdir -p /run/clamav
# Vérifier si l'utilisateur clamav existe, sinon le créer
if ! id -u clamav >/dev/null 2>&1; then
print_info "Création de l'utilisateur clamav..."
useradd -r -M -d /var/lib/clamav -s /bin/false -c "Clam AntiVirus" clamav 2>/dev/null || true
fi
# Définir les permissions correctes
chown -R clamav:clamav /var/log/clamav 2>/dev/null || true
chown -R clamav:clamav /var/lib/clamav 2>/dev/null || true
chown -R clamav:clamav /run/clamav 2>/dev/null || true
chmod 755 /var/log/clamav 2>/dev/null || true
chmod 755 /var/lib/clamav 2>/dev/null || true
chmod 755 /run/clamav 2>/dev/null || true
# Créer les fichiers de log avec les bonnes permissions
touch /var/log/clamav/freshclam.log 2>/dev/null || true
touch /var/log/clamav/clamav.log 2>/dev/null || true
chown clamav:clamav /var/log/clamav/freshclam.log 2>/dev/null || true
chown clamav:clamav /var/log/clamav/clamav.log 2>/dev/null || true
chmod 640 /var/log/clamav/freshclam.log 2>/dev/null || true
chmod 640 /var/log/clamav/clamav.log 2>/dev/null || true
# Configuration de freshclam
if [[ -f /etc/clamav/freshclam.conf ]]; then
backup_file "/etc/clamav/freshclam.conf"
# S'assurer que le fichier de log est bien configuré
sed -i 's|^#UpdateLogFile.*|UpdateLogFile /var/log/clamav/freshclam.log|' /etc/clamav/freshclam.conf
sed -i 's|^UpdateLogFile.*|UpdateLogFile /var/log/clamav/freshclam.log|' /etc/clamav/freshclam.conf
# S'assurer que DatabaseOwner est défini
if ! grep -q "^DatabaseOwner" /etc/clamav/freshclam.conf; then
echo "DatabaseOwner clamav" >> /etc/clamav/freshclam.conf
fi
fi
# Configuration de clamd
if [[ -f /etc/clamav/clamd.conf ]]; then
backup_file "/etc/clamav/clamd.conf"
# S'assurer que le fichier de log est bien configuré
sed -i 's|^#LogFile.*|LogFile /var/log/clamav/clamav.log|' /etc/clamav/clamd.conf
sed -i 's|^LogFile.*|LogFile /var/log/clamav/clamav.log|' /etc/clamav/clamd.conf
fi
# Arrêter les services avant la mise à jour
print_info "Arrêt temporaire des services ClamAV..."
systemctl stop clamav-freshclam 2>/dev/null || true
freshclam --quiet 2>/dev/null || print_warning "Échec mise à jour ClamAV"
systemctl stop clamav-daemon 2>/dev/null || true
# Attendre que les processus se terminent
sleep 2
# Mise à jour de la base de données
print_info "Mise à jour de la base de données ClamAV..."
# Tenter la mise à jour avec freshclam en tant qu'utilisateur clamav
if su - clamav -s /bin/bash -c "freshclam --quiet" 2>&1 | tee -a "$LOG_FILE"; then
print_success "Base de données ClamAV mise à jour"
else
# Si ça échoue, essayer en root avec les bonnes permissions
print_warning "Tentative de mise à jour en root..."
if freshclam --user=clamav --quiet 2>&1 | tee -a "$LOG_FILE"; then
print_success "Base de données ClamAV mise à jour"
else
print_warning "Échec mise à jour ClamAV - les services démarreront avec l'ancienne base"
fi
fi
# Vérifier que les fichiers de base de données existent
if [[ ! -f /var/lib/clamav/main.cvd ]] && [[ ! -f /var/lib/clamav/main.cld ]]; then
print_warning "Base de données principale ClamAV manquante"
print_info "Tentative de téléchargement manuel..."
cd /var/lib/clamav
wget -q http://database.clamav.net/main.cvd 2>/dev/null || \
print_warning "Impossible de télécharger la base principale"
wget -q http://database.clamav.net/daily.cvd 2>/dev/null || \
print_warning "Impossible de télécharger la base quotidienne"
wget -q http://database.clamav.net/bytecode.cvd 2>/dev/null || \
print_warning "Impossible de télécharger la base bytecode"
chown clamav:clamav /var/lib/clamav/*.cvd 2>/dev/null || true
cd - > /dev/null
fi
# Activer et démarrer les services
print_info "Démarrage des services ClamAV..."
systemctl enable clamav-freshclam 2>/dev/null || true
systemctl start clamav-freshclam 2>/dev/null || true
systemctl enable clamav-daemon 2>/dev/null || true
systemctl start clamav-daemon 2>/dev/null || true
if systemctl start clamav-freshclam 2>&1 | tee -a "$LOG_FILE"; then
print_success "Service freshclam démarré"
else
print_warning "Service freshclam non démarré"
fi
# Attendre un peu avant de démarrer le daemon
sleep 3
if systemctl start clamav-daemon 2>&1 | tee -a "$LOG_FILE"; then
print_success "Service clamav-daemon démarré"
else
print_warning "Service clamav-daemon non démarré"
fi
# Vérification du statut
echo ""
print_info "Vérification des services ClamAV..."
if systemctl is-active --quiet clamav-freshclam 2>/dev/null; then
echo " ✓ freshclam: actif"
else
echo " ⚠ freshclam: inactif"
fi
if systemctl is-active --quiet clamav-daemon 2>/dev/null; then
echo " ✓ clamav-daemon: actif"
else
echo " ⚠ clamav-daemon: inactif"
fi
# Afficher la version de la base de données
if command -v sigtool > /dev/null 2>&1; then
local db_version=$(sigtool --info /var/lib/clamav/main.cvd 2>/dev/null | grep "Version" | head -1)
[[ -n "$db_version" ]] && echo " • Base de données: $db_version"
fi
print_success "ClamAV configuré"
mark_step_done "$step_name"