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 MacFleet 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 MacFleet. 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 MacFleet
# Application et surveillance complètes des politiques de sécurité
# Configuration
SECURITY_CONFIG_FILE="/etc/macfleet/screen_lock_config.conf"
LOG_FILE="/var/log/macfleet_screen_lock.log"
STATUS_FILE="/var/log/macfleet_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/macfleet_security_report_$(date +%Y%m%d_%H%M%S).txt"
{
echo "Rapport de Sécurité de Verrouillage d'Écran MacFleet"
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 MacFleet 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 MacFleet 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/macfleet"
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 MacFleet
# 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 MacFleet. 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 MacFleet
#!/bin/bash
# Intégration de sécurité de verrouillage d'écran MacFleet
macfleet_security_integration() {
echo "=== Intégration de Sécurité de Verrouillage d'Écran MacFleet ==="
# 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 MacFleet
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 MacFleet"
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"
}
macfleet_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