Guide

Nouvelles mises à jour et améliorations de Roundfleet.

Avis important

Les exemples de code et scripts fournis dans ces tutoriels sont uniquement à des fins éducatives. Roundfleet n'est pas responsable des problèmes, dommages ou vulnérabilités de sécurité qui pourraient survenir lors de l'utilisation, modification ou implémentation de ces exemples. Toujours vérifier et tester le code dans un environnement sécurisé avant de l'utiliser dans des systèmes de production.

Sécurité de Verrouillage d'Écran d'Entreprise sur macOS

Implémentez des politiques de sécurité de verrouillage d'écran complètes sur vos appareils Roundfleet en utilisant l'automatisation AppleScript et des configurations de sécurité avancées. Ce tutoriel couvre l'application de mots de passe, la gestion de la sécurité de veille et les mécanismes de verrouillage de niveau entreprise.

Comprendre la Sécurité de Verrouillage d'Écran macOS

macOS fournit plusieurs couches de sécurité de verrouillage d'écran :

  • Mot de passe d'économiseur d'écran - Exige un mot de passe lors du retour de l'économiseur d'écran
  • Mot de passe de veille - Exige un mot de passe lors du réveil du mode veille
  • Verrouillage immédiat - Définit le délai d'exigence de mot de passe sur immédiat
  • Préférences de sécurité - Gestion de la configuration de sécurité au niveau système

Configuration de Base du Verrouillage d'Écran

Activer le Mot de Passe pour le Verrouillage d'Écran

#!/bin/bash

# Activation de base du mot de passe de verrouillage d'écran
enable_screen_lock_password() {
    echo "=== Activation du Mot de Passe de Verrouillage d'Écran ==="
    
    # Activer l'exigence de mot de passe pour le verrouillage d'écran avec AppleScript
    if osascript -e 'tell application "System Events" to set require password to wake of security preferences to true'; then
        echo "✅ Mot de passe de verrouillage d'écran activé avec succès"
        
        # Vérifier le paramètre
        local current_setting=$(osascript -e 'tell application "System Events" to get require password to wake of security preferences')
        if [[ "$current_setting" == "true" ]]; then
            echo "✅ Exigence de mot de passe vérifiée : activée"
        else
            echo "⚠️  Échec de vérification de l'exigence de mot de passe"
        fi
    else
        echo "❌ Échec d'activation du mot de passe de verrouillage d'écran"
        return 1
    fi
}

enable_screen_lock_password

Vérifier le Statut Actuel du Verrouillage d'Écran

#!/bin/bash

# Vérifier le statut actuel du mot de passe de verrouillage d'écran
check_screen_lock_status() {
    echo "=== Vérification du Statut de Verrouillage d'Écran ==="
    
    # Obtenir le statut actuel d'exigence de mot de passe
    local password_required=$(osascript -e 'tell application "System Events" to get require password to wake of security preferences' 2>/dev/null)
    
    if [[ "$password_required" == "true" ]]; then
        echo "✅ Mot de passe de verrouillage d'écran : ACTIVÉ"
    elif [[ "$password_required" == "false" ]]; then
        echo "❌ Mot de passe de verrouillage d'écran : DÉSACTIVÉ"
    else
        echo "⚠️  Statut du mot de passe de verrouillage d'écran : INCONNU"
    fi
    
    # Obtenir les paramètres de délai d'économiseur d'écran
    local saver_timeout=$(defaults read com.apple.screensaver idleTime 2>/dev/null || echo "Inconnu")
    echo "Délai d'économiseur d'écran : $saver_timeout secondes"
    
    # Obtenir le délai de veille d'affichage
    local display_sleep=$(pmset -g | grep displaysleep | awk '{print $2}')
    echo "Délai de veille d'affichage : $display_sleep minutes"
    
    # Obtenir le délai de veille système
    local system_sleep=$(pmset -g | grep sleep | grep -v displaysleep | awk '{print $2}')
    echo "Délai de veille système : $system_sleep minutes"
}

check_screen_lock_status

Configuration de Sécurité Avancée

Configuration Complète de Verrouillage d'Écran

#!/bin/bash

# Configuration de sécurité de verrouillage d'écran avancée
configure_advanced_screen_lock() {
    local timeout_minutes="${1:-5}"
    local grace_period="${2:-0}"
    
    echo "=== Configuration Avancée de Verrouillage d'Écran ==="
    echo "Délai : $timeout_minutes minutes"
    echo "Période de grâce : $grace_period secondes"
    
    # Activer l'exigence de mot de passe pour le verrouillage d'écran
    echo "Activation de l'exigence de mot de passe..."
    if osascript -e 'tell application "System Events" to set require password to wake of security preferences to true'; then
        echo "✅ Exigence de mot de passe activée"
    else
        echo "❌ Échec d'activation de l'exigence de mot de passe"
        return 1
    fi
    
    # Définir le délai de mot de passe (période de grâce)
    echo "Définition du délai de mot de passe..."
    if osascript -e "tell application \"System Events\" to set delay interval of security preferences to $grace_period"; then
        echo "✅ Délai de mot de passe défini à $grace_period secondes"
    else
        echo "⚠️  Le paramétrage du délai de mot de passe peut avoir échoué"
    fi
    
    # Configurer le délai d'économiseur d'écran
    echo "Configuration du délai d'économiseur d'écran..."
    local timeout_seconds=$((timeout_minutes * 60))
    defaults write com.apple.screensaver idleTime -int $timeout_seconds
    
    # Activer le mot de passe d'économiseur d'écran immédiatement
    defaults write com.apple.screensaver askForPassword -int 1
    defaults write com.apple.screensaver askForPasswordDelay -int $grace_period
    
    # Configurer les paramètres de veille système
    echo "Configuration de la gestion d'énergie..."
    sudo pmset -a displaysleep $timeout_minutes
    sudo pmset -a sleep $((timeout_minutes + 5))
    
    # Appliquer les coins actifs pour le verrouillage immédiat (optionnel)
    configure_hot_corners
    
    echo "✅ Configuration avancée de verrouillage d'écran terminée"
}

# Configurer les coins actifs pour la sécurité
configure_hot_corners() {
    echo "Configuration des coins actifs de sécurité..."
    
    # Coin inférieur droit : Démarrer l'économiseur d'écran
    defaults write com.apple.dock wvous-br-corner -int 5
    defaults write com.apple.dock wvous-br-modifier -int 0
    
    # Coin supérieur droit : Mettre l'affichage en veille
    defaults write com.apple.dock wvous-tr-corner -int 10
    defaults write com.apple.dock wvous-tr-modifier -int 0
    
    # Redémarrer le Dock pour appliquer les changements
    killall Dock
    
    echo "✅ Coins actifs configurés pour une sécurité renforcée"
}

# Usage : configure_advanced_screen_lock 3 0
configure_advanced_screen_lock

Application des Politiques de Sécurité

#!/bin/bash

# Appliquer les politiques de sécurité d'entreprise
enforce_security_policies() {
    echo "=== Application des Politiques de Sécurité ==="
    
    # Désactiver la connexion automatique
    echo "Désactivation de la connexion automatique..."
    sudo defaults delete /Library/Preferences/com.apple.loginwindow autoLoginUser 2>/dev/null || true
    
    # Activer le menu de commutation utilisateur rapide
    echo "Configuration de la commutation utilisateur..."
    sudo defaults write /Library/Preferences/.GlobalPreferences MultipleSessionEnabled -bool YES
    defaults write .GlobalPreferences userMenuExtraStyle -int 2
    
    # Désactiver le compte invité
    echo "Désactivation du compte invité..."
    sudo defaults write /Library/Preferences/com.apple.loginwindow GuestEnabled -bool NO
    
    # Définir la fenêtre de connexion pour afficher les champs nom et mot de passe
    sudo defaults write /Library/Preferences/com.apple.loginwindow SHOWFULLNAME -bool YES
    
    # Masquer les utilisateurs administrateurs de la fenêtre de connexion
    sudo defaults write /Library/Preferences/com.apple.loginwindow Hide500Users -bool YES
    
    # Désactiver les indices de mot de passe
    sudo defaults write /Library/Preferences/com.apple.loginwindow RetriesUntilHint -int 0
    
    # Activer la mémoire virtuelle sécurisée
    sudo defaults write /Library/Preferences/com.apple.virtualMemory UseEncryptedSwap -bool YES
    
    echo "✅ Politiques de sécurité appliquées"
}

enforce_security_policies

Gestion de l'Économiseur d'Écran et du Verrouillage

Configuration de l'Économiseur d'Écran

#!/bin/bash

# Configurer l'économiseur d'écran avec les paramètres de sécurité
configure_secure_screensaver() {
    local module_name="${1:-Flurry}"
    local timeout_minutes="${2:-5}"
    
    echo "=== Configuration d'Économiseur d'Écran Sécurisé ==="
    echo "Module : $module_name"
    echo "Délai : $timeout_minutes minutes"
    
    # Définir le module d'économiseur d'écran
    defaults -currentHost write com.apple.screensaver moduleDict -dict \
        moduleName "$module_name" \
        path "/System/Library/Screen Savers/$module_name.saver" \
        type 0
    
    # Définir le délai
    local timeout_seconds=$((timeout_minutes * 60))
    defaults write com.apple.screensaver idleTime -int $timeout_seconds
    
    # Activer le mot de passe immédiatement
    defaults write com.apple.screensaver askForPassword -int 1
    defaults write com.apple.screensaver askForPasswordDelay -int 0
    
    # Désactiver l'aperçu de l'économiseur d'écran
    defaults write com.apple.screensaver showClock -bool NO
    
    # Définir un message sur l'écran de verrouillage (optionnel)
    set_lock_screen_message
    
    echo "✅ Économiseur d'écran sécurisé configuré"
}

# Définir un message d'écran de verrouillage personnalisé
set_lock_screen_message() {
    local message="${1:-Cet appareil est géré par Roundfleet. L'accès non autorisé est interdit.}"
    
    echo "Définition du message d'écran de verrouillage..."
    defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText "$message"
    
    echo "✅ Message d'écran de verrouillage défini"
}

# Usage : configure_secure_screensaver "Flurry" 3
configure_secure_screensaver

Mécanismes de Verrouillage Manuel

#!/bin/bash

# Mécanismes de verrouillage immédiat
immediate_lock_functions() {
    echo "=== Mécanismes de Verrouillage Immédiat ==="
    
    # Méthode 1 : Utiliser pmset pour mettre l'affichage en veille
    lock_display_pmset() {
        echo "Verrouillage de l'affichage avec pmset..."
        pmset displaysleepnow
    }
    
    # Méthode 2 : Utiliser osascript pour activer l'économiseur d'écran
    lock_screensaver() {
        echo "Activation du verrouillage d'économiseur d'écran..."
        osascript -e 'tell application "System Events" to start current screen saver'
    }
    
    # Méthode 3 : Utiliser CGSession pour la commutation utilisateur rapide
    lock_fast_user_switch() {
        echo "Basculement vers la fenêtre de connexion..."
        /System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend
    }
    
    # Méthode 4 : Utiliser la commande open avec l'économiseur d'écran
    lock_open_screensaver() {
        echo "Ouverture du module d'économiseur d'écran..."
        open -a ScreenSaverEngine
    }
    
    # Méthode de verrouillage par défaut
    lock_display_pmset
}

immediate_lock_functions

Système de Gestion de Verrouillage d'Entreprise

#!/bin/bash

# Système de Gestion de Verrouillage d'Écran d'Entreprise Roundfleet
# Application et surveillance complètes des politiques de sécurité

# Configuration
SECURITY_CONFIG_FILE="/etc/roundfleet/screen_lock_config.conf"
LOG_FILE="/var/log/roundfleet_screen_lock.log"
STATUS_FILE="/var/log/roundfleet_security_status.json"

# Paramètres de sécurité par défaut
DEFAULT_SCREEN_TIMEOUT=300    # 5 minutes
DEFAULT_GRACE_PERIOD=0        # Immédiat
DEFAULT_DISPLAY_SLEEP=5       # 5 minutes
DEFAULT_SYSTEM_SLEEP=10       # 10 minutes

# Fonction de journalisation
log_action() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE"
}

# Charger la configuration de sécurité
load_security_config() {
    if [[ -f "$SECURITY_CONFIG_FILE" ]]; then
        source "$SECURITY_CONFIG_FILE"
        log_action "Configuration de sécurité chargée depuis $SECURITY_CONFIG_FILE"
    else
        log_action "Utilisation de la configuration de sécurité par défaut"
    fi
}

# Appliquer les politiques de verrouillage d'écran d'entreprise
apply_enterprise_policies() {
    log_action "Application des politiques de verrouillage d'écran d'entreprise"
    
    # Activer l'exigence de mot de passe pour le verrouillage d'écran
    log_action "Activation de l'exigence de mot de passe de verrouillage d'écran"
    if osascript -e 'tell application "System Events" to set require password to wake of security preferences to true'; then
        log_action "✅ Exigence de mot de passe de verrouillage d'écran activée"
    else
        log_action "❌ Échec d'activation de l'exigence de mot de passe de verrouillage d'écran"
        return 1
    fi
    
    # Définir le délai de mot de passe
    local grace_period="${GRACE_PERIOD:-$DEFAULT_GRACE_PERIOD}"
    log_action "Définition de la période de grâce de mot de passe à $grace_period secondes"
    osascript -e "tell application \"System Events\" to set delay interval of security preferences to $grace_period" 2>/dev/null
    
    # Configurer les paramètres d'économiseur d'écran
    local screen_timeout="${SCREEN_TIMEOUT:-$DEFAULT_SCREEN_TIMEOUT}"
    log_action "Définition du délai d'économiseur d'écran à $screen_timeout secondes"
    defaults write com.apple.screensaver idleTime -int $screen_timeout
    defaults write com.apple.screensaver askForPassword -int 1
    defaults write com.apple.screensaver askForPasswordDelay -int $grace_period
    
    # Configurer la gestion d'énergie
    local display_sleep="${DISPLAY_SLEEP:-$DEFAULT_DISPLAY_SLEEP}"
    local system_sleep="${SYSTEM_SLEEP:-$DEFAULT_SYSTEM_SLEEP}"
    
    log_action "Configuration de la gestion d'énergie : affichage=$display_sleep min, système=$system_sleep min"
    sudo pmset -a displaysleep $display_sleep
    sudo pmset -a sleep $system_sleep
    sudo pmset -a halfdim 1
    
    # Appliquer des paramètres de sécurité supplémentaires
    apply_additional_security_settings
    
    log_action "Politiques de verrouillage d'écran d'entreprise appliquées avec succès"
}

# Appliquer des paramètres de sécurité supplémentaires
apply_additional_security_settings() {
    log_action "Application de paramètres de sécurité supplémentaires"
    
    # Désactiver la connexion automatique
    sudo defaults delete /Library/Preferences/com.apple.loginwindow autoLoginUser 2>/dev/null || true
    
    # Désactiver le compte invité
    sudo defaults write /Library/Preferences/com.apple.loginwindow GuestEnabled -bool NO
    
    # Définir la fenêtre de connexion pour afficher les champs nom et mot de passe
    sudo defaults write /Library/Preferences/com.apple.loginwindow SHOWFULLNAME -bool YES
    
    # Masquer les utilisateurs administrateurs de la fenêtre de connexion
    sudo defaults write /Library/Preferences/com.apple.loginwindow Hide500Users -bool YES
    
    # Désactiver les indices de mot de passe
    sudo defaults write /Library/Preferences/com.apple.loginwindow RetriesUntilHint -int 0
    
    # Activer la mémoire virtuelle sécurisée
    sudo defaults write /Library/Preferences/com.apple.virtualMemory UseEncryptedSwap -bool YES
    
    # Définir le message d'écran de verrouillage si configuré
    if [[ -n "${LOCK_SCREEN_MESSAGE}" ]]; then
        defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText "$LOCK_SCREEN_MESSAGE"
        log_action "Message d'écran de verrouillage défini"
    fi
    
    log_action "Paramètres de sécurité supplémentaires appliqués"
}

# Surveiller la conformité du verrouillage d'écran
monitor_screen_lock_compliance() {
    log_action "Surveillance de la conformité du verrouillage d'écran"
    
    local compliance_issues=0
    local timestamp=$(date -u +%Y-%m-%dT%H:%M:%SZ)
    
    # Vérifier l'exigence de mot de passe
    local password_required=$(osascript -e 'tell application "System Events" to get require password to wake of security preferences' 2>/dev/null)
    local password_compliant=false
    
    if [[ "$password_required" == "true" ]]; then
        password_compliant=true
        log_action "✅ Exigence de mot de passe : conforme"
    else
        ((compliance_issues++))
        log_action "❌ Exigence de mot de passe : non conforme"
    fi
    
    # Vérifier le délai d'économiseur d'écran
    local current_timeout=$(defaults read com.apple.screensaver idleTime 2>/dev/null || echo "0")
    local timeout_compliant=false
    local max_allowed_timeout="${MAX_SCREEN_TIMEOUT:-600}"  # 10 minutes par défaut
    
    if [[ "$current_timeout" -le "$max_allowed_timeout" && "$current_timeout" -gt 0 ]]; then
        timeout_compliant=true
        log_action "✅ Délai d'économiseur d'écran : conforme ($current_timeout secondes)"
    else
        ((compliance_issues++))
        log_action "❌ Délai d'économiseur d'écran : non conforme ($current_timeout secondes)"
    fi
    
    # Vérifier le délai de mot de passe
    local password_delay=$(defaults read com.apple.screensaver askForPasswordDelay 2>/dev/null || echo "300")
    local delay_compliant=false
    local max_allowed_delay="${MAX_PASSWORD_DELAY:-60}"  # 1 minute par défaut
    
    if [[ "$password_delay" -le "$max_allowed_delay" ]]; then
        delay_compliant=true
        log_action "✅ Délai de mot de passe : conforme ($password_delay secondes)"
    else
        ((compliance_issues++))
        log_action "❌ Délai de mot de passe : non conforme ($password_delay secondes)"
    fi
    
    # Vérifier le statut du compte invité
    local guest_enabled=$(sudo defaults read /Library/Preferences/com.apple.loginwindow GuestEnabled 2>/dev/null || echo "true")
    local guest_compliant=false
    
    if [[ "$guest_enabled" == "0" || "$guest_enabled" == "false" ]]; then
        guest_compliant=true
        log_action "✅ Compte invité : désactivé (conforme)"
    else
        ((compliance_issues++))
        log_action "❌ Compte invité : activé (non conforme)"
    fi
    
    # Générer le rapport de conformité
    local compliance_status='{
        "timestamp": "'$timestamp'",
        "device_id": "'$(system_profiler SPHardwareDataType | grep "Hardware UUID" | awk '{print $3}')'",
        "hostname": "'$(hostname)'",
        "compliance_score": '$((4 - compliance_issues))'/4,
        "total_issues": '$compliance_issues',
        "checks": {
            "password_required": '$password_compliant',
            "timeout_compliant": '$timeout_compliant',
            "delay_compliant": '$delay_compliant',
            "guest_disabled": '$guest_compliant'
        },
        "settings": {
            "current_timeout": '$current_timeout',
            "current_delay": '$password_delay',
            "guest_account": "'$guest_enabled'"
        }
    }'
    
    # Sauvegarder le statut de conformité
    echo "$compliance_status" | jq . > "$STATUS_FILE"
    
    if [[ $compliance_issues -eq 0 ]]; then
        log_action "✅ Vérification de conformité du verrouillage d'écran réussie (4/4)"
    else
        log_action "⚠️  Problèmes de conformité du verrouillage d'écran trouvés : $compliance_issues/4"
    fi
    
    return $compliance_issues
}

# Remédiation automatique des problèmes de conformité
auto_remediate_compliance() {
    log_action "Démarrage de la remédiation automatique pour les problèmes de conformité"
    
    # Vérifier la conformité actuelle
    monitor_screen_lock_compliance
    local issues=$?
    
    if [[ $issues -eq 0 ]]; then
        log_action "Aucun problème de conformité trouvé, saut de la remédiation"
        return 0
    fi
    
    log_action "Trouvé $issues problèmes de conformité, tentative de remédiation"
    
    # Réappliquer les politiques d'entreprise
    apply_enterprise_policies
    
    # Attendre et revérifier la conformité
    sleep 5
    monitor_screen_lock_compliance
    local remaining_issues=$?
    
    if [[ $remaining_issues -lt $issues ]]; then
        log_action "✅ Remédiation réussie : réduction des problèmes de $issues à $remaining_issues"
    else
        log_action "⚠️  Remédiation incomplète : $remaining_issues problèmes restent"
    fi
    
    return $remaining_issues
}

# Générer un rapport de sécurité
generate_security_report() {
    log_action "Génération d'un rapport de sécurité complet"
    
    local report_file="/var/log/roundfleet_security_report_$(date +%Y%m%d_%H%M%S).txt"
    
    {
        echo "Rapport de Sécurité de Verrouillage d'Écran Roundfleet"
        echo "Généré : $(date)"
        echo "Appareil : $(hostname)"
        echo "UUID Matériel : $(system_profiler SPHardwareDataType | grep "Hardware UUID" | awk '{print $3}')"
        echo "Version macOS : $(sw_vers -productVersion)"
        echo "====================================="
        echo ""
        
        echo "Configuration de Verrouillage d'Écran :"
        echo "Mot de Passe Requis : $(osascript -e 'tell application "System Events" to get require password to wake of security preferences' 2>/dev/null || echo 'Inconnu')"
        echo "Délai d'Économiseur d'Écran : $(defaults read com.apple.screensaver idleTime 2>/dev/null || echo 'Non défini') secondes"
        echo "Délai de Mot de Passe : $(defaults read com.apple.screensaver askForPasswordDelay 2>/dev/null || echo 'Non défini') secondes"
        echo ""
        
        echo "Paramètres de Gestion d'Énergie :"
        pmset -g | grep -E "(sleep|displaysleep|halfdim)"
        echo ""
        
        echo "Sécurité de la Fenêtre de Connexion :"
        echo "Compte Invité : $(sudo defaults read /Library/Preferences/com.apple.loginwindow GuestEnabled 2>/dev/null || echo 'Inconnu')"
        echo "Afficher Nom Complet : $(sudo defaults read /Library/Preferences/com.apple.loginwindow SHOWFULLNAME 2>/dev/null || echo 'Inconnu')"
        echo "Masquer Utilisateurs Admin : $(sudo defaults read /Library/Preferences/com.apple.loginwindow Hide500Users 2>/dev/null || echo 'Inconnu')"
        echo ""
        
        echo "Statut de Conformité de Sécurité :"
        if [[ -f "$STATUS_FILE" ]]; then
            cat "$STATUS_FILE"
        else
            echo "Aucune donnée de conformité disponible"
        fi
        
    } > "$report_file"
    
    log_action "Rapport de sécurité sauvegardé dans : $report_file"
}

# Fonction de verrouillage d'urgence
emergency_lock() {
    log_action "Verrouillage d'urgence initié"
    
    # Méthode 1 : Veille immédiate de l'affichage
    pmset displaysleepnow
    
    # Méthode 2 : Activer l'économiseur d'écran
    osascript -e 'tell application "System Events" to start current screen saver' 2>/dev/null
    
    # Méthode 3 : Basculer vers la fenêtre de connexion
    /System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend 2>/dev/null
    
    log_action "Verrouillage d'urgence terminé"
}

# Fonction principale de gestion du verrouillage d'écran
main() {
    local action="${1:-apply}"
    
    log_action "=== Gestion de Verrouillage d'Écran Roundfleet Démarrée ==="
    
    case "$action" in
        "apply")
            load_security_config
            apply_enterprise_policies
            ;;
        "monitor")
            monitor_screen_lock_compliance
            ;;
        "remediate")
            auto_remediate_compliance
            ;;
        "report")
            generate_security_report
            ;;
        "lock")
            emergency_lock
            ;;
        "status")
            monitor_screen_lock_compliance
            ;;
        *)
            echo "Usage : $0 [apply|monitor|remediate|report|lock|status]"
            echo "  apply     - Appliquer les politiques de verrouillage d'écran d'entreprise (défaut)"
            echo "  monitor   - Surveiller le statut de conformité"
            echo "  remediate - Remédiation automatique des problèmes de conformité"
            echo "  report    - Générer un rapport de sécurité complet"
            echo "  lock      - Verrouillage d'urgence de l'appareil immédiatement"
            echo "  status    - Vérifier le statut de conformité actuel"
            exit 1
            ;;
    esac
    
    log_action "=== Gestion de Verrouillage d'Écran Roundfleet Terminée ==="
}

# Exécuter la fonction principale
main "$@"

Fichier de Configuration de Sécurité

Créer un fichier de configuration pour les politiques de sécurité d'entreprise :

#!/bin/bash

# Créer un fichier de configuration de sécurité de verrouillage d'écran
create_security_config() {
    local config_dir="/etc/roundfleet"
    local config_file="$config_dir/screen_lock_config.conf"
    
    # Créer le répertoire s'il n'existe pas
    sudo mkdir -p "$config_dir"
    
    # Créer le fichier de configuration
    sudo tee "$config_file" > /dev/null << 'EOF'
# Configuration de Sécurité de Verrouillage d'Écran Roundfleet
# Toutes les valeurs de délai sont en secondes sauf indication contraire

# Délai d'économiseur d'écran (défaut : 300 secondes = 5 minutes)
SCREEN_TIMEOUT=300

# Période de grâce de mot de passe après verrouillage d'écran (défaut : 0 = immédiat)
GRACE_PERIOD=0

# Délai de veille d'affichage en minutes (défaut : 5 minutes)
DISPLAY_SLEEP=5

# Délai de veille système en minutes (défaut : 10 minutes)
SYSTEM_SLEEP=10

# Délai d'écran maximum autorisé pour la conformité (défaut : 600 secondes = 10 minutes)
MAX_SCREEN_TIMEOUT=600

# Délai de mot de passe maximum autorisé pour la conformité (défaut : 60 secondes)
MAX_PASSWORD_DELAY=60

# Message d'écran de verrouillage (optionnel)
LOCK_SCREEN_MESSAGE="Cet appareil est géré par Roundfleet. L'accès non autorisé est interdit."

# Configuration des coins actifs (optionnel)
ENABLE_HOT_CORNERS=true
HOT_CORNER_BR=5    # Coin inférieur droit : Démarrer l'économiseur d'écran
HOT_CORNER_TR=10   # Coin supérieur droit : Mettre l'affichage en veille

# Options d'application de sécurité
DISABLE_GUEST_ACCOUNT=true
DISABLE_AUTO_LOGIN=true
HIDE_ADMIN_USERS=true
DISABLE_PASSWORD_HINTS=true
ENABLE_SECURE_VM=true

# Paramètres de surveillance
COMPLIANCE_CHECK_INTERVAL=3600  # 1 heure
AUTO_REMEDIATION=true
GENERATE_REPORTS=true
EOF

    echo "Configuration de sécurité de verrouillage d'écran créée dans : $config_file"
    echo "Veuillez réviser et modifier les paramètres selon vos politiques de sécurité"
}

create_security_config

Intégration avec la Gestion Roundfleet

#!/bin/bash

# Intégration de sécurité de verrouillage d'écran Roundfleet
roundfleet_security_integration() {
    echo "=== Intégration de Sécurité de Verrouillage d'Écran Roundfleet ==="
    
    # Informations de l'appareil
    local device_id=$(system_profiler SPHardwareDataType | grep "Hardware UUID" | awk '{print $3}')
    local hostname=$(hostname)
    local macos_version=$(sw_vers -productVersion)
    
    # Obtenir le statut de sécurité actuel
    local password_required=$(osascript -e 'tell application "System Events" to get require password to wake of security preferences' 2>/dev/null || echo "inconnu")
    local screen_timeout=$(defaults read com.apple.screensaver idleTime 2>/dev/null || echo "0")
    local password_delay=$(defaults read com.apple.screensaver askForPasswordDelay 2>/dev/null || echo "inconnu")
    
    # Évaluation de la conformité de sécurité
    local compliance_score=0
    local total_checks=4
    
    [[ "$password_required" == "true" ]] && ((compliance_score++))
    [[ "$screen_timeout" -le 600 && "$screen_timeout" -gt 0 ]] && ((compliance_score++))
    [[ "$password_delay" -le 60 ]] && ((compliance_score++))
    
    local guest_disabled=$(sudo defaults read /Library/Preferences/com.apple.loginwindow GuestEnabled 2>/dev/null || echo "true")
    [[ "$guest_disabled" == "0" || "$guest_disabled" == "false" ]] && ((compliance_score++))
    
    # Rapporter à l'API Roundfleet
    local api_data='{
        "device_id": "'$device_id'",
        "hostname": "'$hostname'",
        "timestamp": "'$(date -u +%Y-%m-%dT%H:%M:%SZ)'",
        "macos_version": "'$macos_version'",
        "screen_lock_security": {
            "password_required": "'$password_required'",
            "screen_timeout": '$screen_timeout',
            "password_delay": "'$password_delay'",
            "guest_account_disabled": "'$guest_disabled'",
            "compliance_score": '$compliance_score'/'$total_checks'
        },
        "security_management_status": "actif"
    }'
    
    echo "Statut de sécurité de verrouillage d'écran rapporté au système de gestion Roundfleet"
    echo "ID Appareil : $device_id"
    echo "Score de Conformité : $compliance_score/$total_checks"
    echo "Mot de Passe Requis : $password_required"
    echo "Délai d'Écran : $screen_timeout secondes"
}

roundfleet_security_integration

Compatibilité des Versions macOS

Considérations Spécifiques aux Versions

#!/bin/bash

# Vérifier la compatibilité des versions macOS
check_macos_compatibility() {
    local macos_version=$(sw_vers -productVersion)
    local major_version=$(echo "$macos_version" | cut -d. -f1)
    local minor_version=$(echo "$macos_version" | cut -d. -f2)
    
    echo "=== Vérification de Compatibilité macOS ==="
    echo "Version macOS actuelle : $macos_version"
    
    # Vérifier si la version est prise en charge (10.12 à 12.7)
    if [[ $major_version -eq 10 && $minor_version -ge 12 ]] || [[ $major_version -ge 11 && $major_version -le 12 ]]; then
        echo "✅ Version macOS prise en charge"
        return 0
    elif [[ $major_version -ge 13 ]]; then
        echo "⚠️  Version macOS peut avoir un support limité (test recommandé)"
        return 1
    else
        echo "❌ Version macOS non prise en charge"
        return 2
    fi
}

check_macos_compatibility

Notes de Sécurité Importantes

Bonnes Pratiques

  • Tester sur des appareils pilotes avant le déploiement à l'échelle de la flotte
  • Surveillance régulière de la conformité pour assurer l'adhésion aux politiques
  • Sauvegarder les paramètres actuels avant d'appliquer de nouvelles politiques
  • Documenter les changements de politique pour l'audit et le dépannage

Considérations de Sécurité

  • Exigence de mot de passe immédiat fournit la sécurité la plus forte
  • Délai d'économiseur d'écran doit équilibrer sécurité et utilisabilité
  • Compte invité désactivé empêche l'accès non autorisé
  • Messages d'écran de verrouillage fournissent des informations de contact et des avis légaux

Dépannage

  • Actualisation des Préférences Système peut être nécessaire pour que les changements apparaissent
  • Privilèges administrateur nécessaires pour les paramètres de sécurité au niveau système
  • Redémarrage peut être requis pour certains changements de gestion d'énergie
  • Tester les commandes AppleScript individuellement en cas de problèmes

Related Tutorials

Gestion à Distance d'Entreprise et Contrôle d'Accès Sécurisé sur macOS

Configuration complète de la gestion à distance, contrôle d'accès sécurisé, support multi-protocoles et cadres de conformité d'entreprise pour les appareils macOS avec surveillance de sécurité avancée et application automatisée des politiques.

7 juil. 2025

Gestion de Sécurité et Conformité Find My Mac

Surveillez et gérez le statut Find My Mac sur les appareils d'entreprise avec des vérifications de conformité sécurisée automatisées, vérification Apple ID, et audit de sécurité de flotte complet.

7 juil. 2025

Gestion des Jetons Sécurisés sur macOS

Apprenez à gérer et accorder des jetons sécurisés aux utilisateurs sur les appareils macOS en utilisant sysadminctl pour la sécurité d'entreprise, la gestion FileVault et l'authentification des opérations cryptographiques.

7 juil. 2025

Effacement Sécurisé de Données sur macOS

Apprenez à effacer de manière sécurisée l'espace libre et gérer la confidentialité des données sur les appareils macOS en utilisant des outils d'effacement sécurisé avancés avec surveillance de conformité, protection de la vie privée et capacités de sécurité des données à l'échelle de la flotte.

7 juil. 2025

Gestion Sécurisée d'Archives sur macOS

Apprenez à créer, gérer et sécuriser des archives sur les appareils macOS en utilisant des fichiers ZIP protégés par mot de passe avec sécurité de niveau entreprise, opérations par lots, suivi de conformité et capacités de gestion d'archives à l'échelle de la flotte.

7 juil. 2025

Gestion des Mots de Passe d'Entreprise sur macOS

Gérez les mots de passe utilisateur, implémentez des politiques de mots de passe et contrôlez les mécanismes d'authentification sur les appareils macOS en utilisant dscl, sysadminctl et les frameworks de gestion de mots de passe d'entreprise pour la sécurité de flotte.

7 juil. 2025

Gestion Entreprise de Création Utilisateur sur macOS

Guide complet pour le provisioning utilisateur et gestion du cycle de vie en entreprise sur les appareils Roundfleet avec workflows automatisés, contrôles de sécurité et processus standardisés de création utilisateur.

7 juil. 2025

Gestion des Comptes Utilisateurs sur macOS

Apprenez à créer, gérer et configurer les comptes utilisateurs sur les appareils macOS en utilisant les outils en ligne de commande. Guide complet pour la création d'utilisateurs administrateurs et standards, politiques de mots de passe et gestion d'utilisateurs en entreprise.

7 juil. 2025