أمان خدمات 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
خبير في التدريب والتقنيات
مدرّب متخصص في التقنيات المتقدمة والذكاء الاصطناعي، تدعمه شركة 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 للمشاركة في النقاش