0%
أمان خدمات Windows: دليل شامل

أمان خدمات Windows: دليل شامل

تعرّف على تقنيات تأمين خدمات Windows وأفضل الممارسات وأدوات الحماية.

I

InSkillCoach

· دقيقة

أمان خدمات Windows: دليل شامل

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

1. إدارة الخدمات

الإعداد الأساسي

# تعطيل الخدمات غير الأساسية
sc config RemoteRegistry start= disabled
sc config Telnet start= disabled
sc config TFTP start= disabled

# إعداد الأذونات
sc sdset RemoteRegistry D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)

الخدمات الحرجة

# تحديد الخدمات الحرجة
$criticalServices = @(
    "RemoteRegistry",
    "Telnet",
    "TFTP",
    "SNMP",
    "IISADMIN",
    "W3SVC"
)

# التعطيل الآمن
foreach ($service in $criticalServices) {
    if (Get-Service $service -ErrorAction SilentlyContinue) {
        Stop-Service $service
        Set-Service $service -StartupType Disabled
    }
}

2. تأمين الأذونات

إعداد قوائم ACL

# إعداد أذونات الخدمات
$servicePath = "C:\Windows\System32\services.exe"
$acl = Get-Acl $servicePath
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Administrators","FullControl","Allow")
$acl.SetAccessRule($rule)
Set-Acl $servicePath $acl

# حماية مجلدات الخدمات
$serviceFolders = @(
    "C:\Windows\System32\drivers",
    "C:\Windows\System32\config",
    "C:\Windows\ServiceProfiles"
)

foreach ($folder in $serviceFolders) {
    $acl = Get-Acl $folder
    $acl.SetAccessRuleProtection($true, $false)
    Set-Acl $folder $acl
}

إدارة الحقوق

# إعداد حقوق الخدمة
$serviceRights = @{
    "SeServiceLogonRight" = "SERVICE_LOGON"
    "SeAssignPrimaryTokenPrivilege" = "ASSIGN_PRIMARY_TOKEN"
    "SeIncreaseQuotaPrivilege" = "INCREASE_QUOTA"
}

# تطبيق الحقوق
foreach ($right in $serviceRights.GetEnumerator()) {
    $policy = New-Object System.Security.Principal.NTAccount("NT AUTHORITY\SYSTEM")
    $privilege = [System.Security.Principal.Privilege]::$($right.Value)
    $policy.AddPrivilege($privilege)
}

3. مراقبة الخدمات

المراقبة النشطة

# سكربت مراقبة الخدمات
function Monitor-Services {
    $services = Get-Service | Where-Object {$_.Status -eq "Running"}
    foreach ($service in $services) {
        $process = Get-Process -Name $service.Name -ErrorAction SilentlyContinue
        if ($process) {
            Write-Host "Service: $($service.Name) - PID: $($process.Id) - CPU: $($process.CPU) - Memory: $($process.WorkingSet64/1MB) MB"
        }
    }
}

اكتشاف الحالات الشاذة

# سكربت اكتشاف الحالات الشاذة
function Detect-ServiceAnomalies {
    $baseline = @{
        "svchost.exe" = @(100, 200)  # النطاق الطبيعي لمعرّفات PID
        "services.exe" = @(500, 600)
    }
    
    $current = Get-Process | Where-Object {$_.ProcessName -in $baseline.Keys}
    foreach ($proc in $current) {
        if ($proc.Id -lt $baseline[$proc.ProcessName][0] -or $proc.Id -gt $baseline[$proc.ProcessName][1]) {
            Write-Host "Anomalie détectée: $($proc.ProcessName) avec PID $($proc.Id)"
        }
    }
}

4. الحماية من الهجمات

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

# سكربت اكتشاف الخدمات الخبيثة
function Detect-MaliciousServices {
    $suspiciousPatterns = @(
        "cryptominer",
        "miner",
        "botnet",
        "backdoor"
    )
    
    $services = Get-Service
    foreach ($service in $services) {
        foreach ($pattern in $suspiciousPatterns) {
            if ($service.DisplayName -match $pattern -or $service.Name -match $pattern) {
                Write-Host "Service suspect détecté: $($service.Name)"
            }
        }
    }
}

الحماية من الحقن

# إعداد الحماية من الحقن
$protectionSettings = @{
    "EnableLUA" = 1
    "EnableVirtualization" = 1
    "EnableInstallerDetection" = 1
}

foreach ($setting in $protectionSettings.GetEnumerator()) {
    Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name $setting.Key -Value $setting.Value
}

5. التدقيق والتسجيل

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

# تفعيل تدقيق الخدمات
auditpol /set /category:"System" /success:enable /failure:enable
auditpol /set /category:"Security" /success:enable /failure:enable

# إعداد السجلات
wevtutil sl System /maxsize:4294967296 /retention:true
wevtutil sl Security /maxsize:4294967296 /retention:true

تحليل السجلات

# سكربت تحليل سجلات الخدمات
function Analyze-ServiceLogs {
    $events = Get-EventLog -LogName System -Source "Service Control Manager" -After (Get-Date).AddHours(-24)
    foreach ($event in $events) {
        if ($event.EntryType -eq "Error" -or $event.EntryType -eq "Warning") {
            Write-Host "Problème détecté: $($event.TimeGenerated) - $($event.Message)"
        }
    }
}

6. الصيانة والتحديثات

إدارة التحديثات

# سكربت تحديث الخدمات
function Update-Services {
    # التحقق من تحديثات Windows
    $updateSession = New-Object -ComObject Microsoft.Update.Session
    $searcher = $updateSession.CreateUpdateSearcher()
    $searchResult = $searcher.Search("IsInstalled=0")
    
    if ($searchResult.Updates.Count -gt 0) {
        $installer = $updateSession.CreateUpdateInstaller()
        foreach ($update in $searchResult.Updates) {
            $installer.Updates.Add($update)
        }
        $installer.Install()
    }
}

تنظيف الخدمات

# سكربت تنظيف الخدمات
function Cleanup-Services {
    # حذف الخدمات اليتيمة
    $orphanedServices = Get-Service | Where-Object {
        $servicePath = (Get-WmiObject Win32_Service -Filter "Name='$($_.Name)'").PathName
        -not (Test-Path $servicePath)
    }
    
    foreach ($service in $orphanedServices) {
        Stop-Service $service.Name
        sc delete $service.Name
    }
}

7. سكربتات الأمان

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

# سكربت التحقق من أمان الخدمات
function Test-ServiceSecurity {
    $issues = @()
    
    # التحقق من الخدمات الحرجة
    $criticalServices = @("RemoteRegistry", "Telnet", "TFTP")
    foreach ($service in $criticalServices) {
        if ((Get-Service $service -ErrorAction SilentlyContinue).Status -eq "Running") {
            $issues += "Service critique $service est en cours d'exécution"
        }
    }
    
    # التحقق من الأذونات
    $servicePath = "C:\Windows\System32\services.exe"
    $acl = Get-Acl $servicePath
    if (-not ($acl.Access | Where-Object {$_.IdentityReference -eq "NT AUTHORITY\SYSTEM"})) {
        $issues += "Permissions incorrectes sur services.exe"
    }
    
    return $issues
}

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

# سكربت صيانة الخدمات
function Update-ServiceSecurity {
    # تعطيل الخدمات غير الأساسية
    $nonEssentialServices = @(
        "RemoteRegistry",
        "Telnet",
        "TFTP",
        "SNMP"
    )
    
    foreach ($service in $nonEssentialServices) {
        if (Get-Service $service -ErrorAction SilentlyContinue) {
            Stop-Service $service
            Set-Service $service -StartupType Disabled
        }
    }
    
    # تحديث الأذونات
    $serviceFolders = @(
        "C:\Windows\System32\drivers",
        "C:\Windows\System32\config"
    )
    
    foreach ($folder in $serviceFolders) {
        $acl = Get-Acl $folder
        $acl.SetAccessRuleProtection($true, $false)
        Set-Acl $folder $acl
    }
}

الخلاصة

يتطلب تأمين خدمات Windows ما يلي:

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

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

  • تعطيل الخدمات غير الأساسية
  • الإبقاء على الحد الأدنى من الأذونات
  • مراقبة الحالات الشاذة
  • إجراء عمليات تدقيق منتظمة
  • اتباع أفضل ممارسات الأمان
InSkillCoach

نبذة عن InSkillCoach

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

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

الشهادات:

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

التعليقات

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

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

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