0%
أمان سجل Windows: دليل شامل

أمان سجل Windows: دليل شامل

تعرّف على كيفية تأمين سجل Windows، وإدارة الأذونات، وحماية المفاتيح الحساسة.

I

InSkillCoach

· دقيقة

أمان سجل Windows: دليل شامل

يُعدّ سجل Windows قاعدة بيانات بالغة الأهمية تتطلب حماية خاصة. يوضح لك هذا الدليل كيفية تأمين السجل وإدارته بفعالية.

1. إدارة الأذونات

إعداد ACLs

# Afficher les permissions d'une clé
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /s

# Modifier les permissions d'une clé
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "ProgramName" /t REG_SZ /d "C:\Program\Path" /f

# Supprimer une clé
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "ProgramName" /f

حماية المفاتيح الحساسة

# Script de protection des clés sensibles
function Protect-RegistryKeys {
    $sensitiveKeys = @(
        "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run",
        "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce",
        "HKLM:\SYSTEM\CurrentControlSet\Services"
    )
    
    foreach ($key in $sensitiveKeys) {
        $acl = Get-Acl $key
        $acl.SetAccessRuleProtection($true, $false)
        Set-Acl $key $acl
    }
}

2. مراقبة السجل

اكتشاف التعديلات

# Script de surveillance du registre
function Monitor-RegistryChanges {
    param (
        [string]$RegistryPath,
        [string]$OutputFile
    )
    
    $watcher = New-Object System.IO.FileSystemWatcher
    $watcher.Path = $RegistryPath
    $watcher.NotifyFilter = [System.IO.NotifyFilters]::LastWrite
    $watcher.EnableRaisingEvents = $true
    
    $action = {
        $path = $Event.SourceEventArgs.FullPath
        $changeType = $Event.SourceEventArgs.ChangeType
        $timestamp = (Get-Date).ToString()
        Add-Content $OutputFile "$timestamp - $changeType - $path"
    }
    
    Register-ObjectEvent $watcher "Changed" -Action $action
}

تدقيق التعديلات

# Configuration de l'audit du registre
auditpol /set /category:"Registry" /success:enable /failure:enable

# Script d'analyse des logs
function Analyze-RegistryLogs {
    $events = Get-EventLog -LogName Security -Source "Security" -After (Get-Date).AddHours(-24)
    $registryEvents = $events | Where-Object {$_.EventID -eq 4656 -or $_.EventID -eq 4657}
    
    foreach ($event in $registryEvents) {
        Write-Host "Modification du registre détectée: $($event.TimeGenerated) - $($event.Message)"
    }
}

3. الحماية من البرمجيات الخبيثة

اكتشاف التعديلات الخبيثة

# Script de détection des modifications malveillantes
function Detect-MaliciousRegistryChanges {
    $suspiciousPatterns = @(
        ".*\.exe$",
        ".*\.dll$",
        ".*\.bat$",
        ".*\.cmd$"
    )
    
    $startupKeys = @(
        "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run",
        "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce",
        "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
    )
    
    foreach ($key in $startupKeys) {
        $values = Get-ItemProperty $key
        foreach ($value in $values.PSObject.Properties) {
            foreach ($pattern in $suspiciousPatterns) {
                if ($value.Value -match $pattern) {
                    Write-Host "Valeur suspecte détectée dans $key : $($value.Name)"
                }
            }
        }
    }
}

تنظيف السجل

# Script de nettoyage du registre
function Cleanup-Registry {
    # Suppression des clés orphelines
    $orphanedKeys = Get-ChildItem "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" | 
        Where-Object { -not (Test-Path $_.PSPath) }
    
    foreach ($key in $orphanedKeys) {
        Remove-Item $key.PSPath -Force
    }
    
    # Nettoyage des entrées de démarrage
    $startupKeys = @(
        "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run",
        "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
    )
    
    foreach ($key in $startupKeys) {
        $values = Get-ItemProperty $key
        foreach ($value in $values.PSObject.Properties) {
            if (-not (Test-Path $value.Value)) {
                Remove-ItemProperty $key -Name $value.Name
            }
        }
    }
}

4. النسخ الاحتياطي والاستعادة

النسخ الاحتياطي للسجل

# Script de sauvegarde du registre
function Backup-Registry {
    $backupPath = "C:\RegistryBackup"
    if (-not (Test-Path $backupPath)) {
        New-Item -ItemType Directory -Path $backupPath
    }
    
    $timestamp = (Get-Date).ToString("yyyyMMdd_HHmmss")
    $backupFile = Join-Path $backupPath "registry_backup_$timestamp.reg"
    
    # Sauvegarde des clés importantes
    $importantKeys = @(
        "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run",
        "HKLM\SYSTEM\CurrentControlSet\Services",
        "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
    )
    
    foreach ($key in $importantKeys) {
        reg export $key "$backupFile" /y
    }
}

استعادة السجل

# Script de restauration du registre
function Restore-Registry {
    param (
        [Parameter(Mandatory=$true)]
        [string]$BackupFile
    )
    
    if (Test-Path $BackupFile) {
        reg import $BackupFile
        Write-Host "Restauration du registre effectuée avec succès"
    } else {
        Write-Host "Fichier de sauvegarde non trouvé"
    }
}

5. أفضل الممارسات

التحقق الأمني

# Script de vérification de sécurité du registre
function Test-RegistrySecurity {
    $issues = @()
    
    # Vérification des permissions
    $sensitiveKeys = @(
        "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run",
        "HKLM:\SYSTEM\CurrentControlSet\Services"
    )
    
    foreach ($key in $sensitiveKeys) {
        $acl = Get-Acl $key
        if (-not ($acl.Access | Where-Object {$_.IdentityReference -eq "NT AUTHORITY\SYSTEM"})) {
            $issues += "Permissions incorrectes sur $key"
        }
    }
    
    # Vérification des valeurs suspectes
    $startupKeys = @(
        "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run",
        "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
    )
    
    foreach ($key in $startupKeys) {
        $values = Get-ItemProperty $key
        foreach ($value in $values.PSObject.Properties) {
            if ($value.Value -match "\.(exe|dll|bat|cmd)$") {
                $issues += "Valeur suspecte dans $key : $($value.Name)"
            }
        }
    }
    
    return $issues
}

الصيانة التلقائية

# Script de maintenance du registre
function Update-RegistrySecurity {
    # Protection des clés sensibles
    Protect-RegistryKeys
    
    # Nettoyage des entrées orphelines
    Cleanup-Registry
    
    # Sauvegarde du registre
    Backup-Registry
    
    # Vérification de sécurité
    $issues = Test-RegistrySecurity
    foreach ($issue in $issues) {
        Write-Host "Problème détecté : $issue"
    }
}

الخلاصة

يتطلب تأمين سجل Windows ما يلي:

  • إدارة صارمة للأذونات
  • مراقبة مستمرة
  • نسخًا احتياطية منتظمة
  • توثيقًا دقيقًا

النقاط الأساسية التي ينبغي تذكّرها:

  • حماية المفاتيح الحساسة
  • مراقبة التعديلات
  • التنظيف بانتظام
  • الاحتفاظ بنسخ احتياطية
  • اتباع أفضل الممارسات
InSkillCoach

نبذة عن InSkillCoach

خبير في التدريب والتقنيات

مدرّب متخصص في التقنيات المتقدمة والذكاء الاصطناعي، تدعمه شركة GNeurone Inc.

الشهادات:

  • AWS Certified Solutions Architect – Professional
  • شهادات Google Cloud
  • Microsoft Certified: DevOps Engineer Expert
  • Certified Kubernetes Administrator (CKA)
  • CompTIA Security+
1.2k
120

التعليقات

التعليقات مدعومة عبر GitHub Discussions

سجّل الدخول باستخدام GitHub للمشاركة في النقاش

تم نسخ الرابط!