Headers of SQLI-WIN-001/006/007/008/009/010/012/013 and SQLI-SYN-001 follow the rule changes (not measurable instead of passed, caps and summary findings, hourly 24-hour counts, per-user and updater tasks, neutral check titles); SQLI-WIN-010's severity gains Low when the event log cannot be read (also in README.md). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
54 lines
4.4 KiB
SQL
54 lines
4.4 KiB
SQL
-- ===================================================================================================================
|
||
-- SQLI-WIN-007: En tjeneste, der skal starte automatisk, kører ikke
|
||
-- ===================================================================================================================
|
||
-- Regel-id: SQLI-WIN-007
|
||
-- Titel: En tjeneste, der skal starte automatisk, kører ikke
|
||
-- Alvor: Medium.
|
||
-- Versioner: Windows Server 2008 R2 og nyere (DelayedAutoStart læses fra Windows Server 2012; før det uden).
|
||
--
|
||
-- Hvad tjekkes, og hvorfor:
|
||
-- En tjeneste med starttypen Automatisk står ikke som kørende. Det, tjenesten gør, sker ikke, og en automatisk
|
||
-- tjeneste, der er stoppet, er oftest gået ned. SQLInsight starter aldrig selv tjenester.
|
||
--
|
||
-- Vurdering (sker i C# ud fra de indsamlede data, ikke på den overvågede server):
|
||
-- Et fund pr. tjeneste med StartMode = 'Auto' og State <> 'Running', som hverken står på den indbyggede liste, i
|
||
-- Ignore, i serverens ignoreringsliste eller i serverens liste over overvågede tjenester. Listerne matcher tjenestens
|
||
-- navn eller visningsnavn, præcist eller med præfiks* – på samme måde som SQLI-WIN-008. Højst MaxFindings fund (efter
|
||
-- tjenestenavn); resten nævnes i ét samlet fund. Inden for StartupGraceMinutes efter LastBootUpTime er reglen
|
||
-- "ikke målbar" (åbne fund forbliver åbne i stedet for at blive løst og genåbnet ved hver genstart). Viser serveren
|
||
-- slet ingen tjenester, er området "ikke målbar" (manglende læseret på Service Control Manager).
|
||
--
|
||
-- Grænseværdier (agentens appsettings.json og serverens indstillinger i SQLInsight Web):
|
||
-- SQLInsight:Servers:Services:Ignore ekstra tjenester, der må være stoppet (navn, visningsnavn eller præfiks*)
|
||
-- SQLInsight:Servers:Services:StartupGraceMinutes standard 15 (ikke målbar de første minutter efter en genstart)
|
||
-- SQLInsight:Servers:Services:MaxFindings standard 15 (1–100; fund pr. tjeneste, resten i ét samlet fund)
|
||
-- Indbygget liste over automatiske tjenester, der stopper af sig selv (StoppedAutomaticServiceRule.StopByDesign),
|
||
-- fx sppsvc, gupdate, edgeupdate, MapsBroker, RemoteRegistry, clr_optimization_*, CDPUserSvc_*.
|
||
-- Pr. server: "Tjenester der ignoreres" (insight.WindowsServers.IgnoredServices). Overvågede tjenester (SQLI-WIN-008)
|
||
-- rapporteres dér og ikke her.
|
||
--
|
||
-- Rettigheder på den overvågede server (db/permissions/grant-windows-server.ps1, aldrig lokal administrator):
|
||
-- WMI Enable Account/Remote Enable på root\cimv2 + læseret (CC LC RP RC) på Service Control Manager
|
||
-- (over netværket må ellers kun administratorer liste tjenester).
|
||
-- WS-Man: Remote Management Users · DCOM: Distributed COM Users
|
||
--
|
||
-- Data kommer fra (collector, fil – medlemmer, interval):
|
||
-- src/SQLInsight.Servers/CimWindowsServerSource.cs – Session.GetServicesAsync (CimQueries.ServiceQuery, ellers
|
||
-- CimQueries.ServiceQueryWithoutDelayed), hvert 5. minut (SQLInsight:Servers:Intervals:services) fra
|
||
-- src/SQLInsight.Agent/Servers/ServerMonitor.cs – CollectServicesAsync.
|
||
-- Regelkode: src/SQLInsight.Rules/Servers/WindowsServerRules.cs : StoppedAutomaticServiceRule
|
||
--
|
||
-- Read-only: Ja. Reglen sender ingen SQL. Agenten læser kun fra Windows: CIM/WQL-forespørgsler (SELECT),
|
||
-- hændelsesloggen og for planlagte opgaver Task Schedulers skrivebeskyttede GetInfo. Den starter, stopper
|
||
-- eller ændrer intet på serveren. Filen indeholder kun kommentarer; forespørgslerne mod Windows står herunder.
|
||
-- ===================================================================================================================
|
||
|
||
-- Reglen bruger ikke SQL. Forespørgslerne mod Windows står herunder; filen indeholder kun kommentarer og ændrer intet.
|
||
--
|
||
-- CIM/WQL (namespace root\cimv2):
|
||
-- SELECT Name, DisplayName, State, StartMode, DelayedAutoStart, ExitCode FROM Win32_Service
|
||
-- SELECT Name, DisplayName, State, StartMode, ExitCode FROM Win32_Service (før Windows Server 2012)
|
||
--
|
||
-- Efterprøv med PowerShell (skrivebeskyttet; kør på agentens server som agentens konto):
|
||
-- Get-CimInstance -ComputerName SERVER -Query "SELECT Name, DisplayName, State, StartMode, DelayedAutoStart, ExitCode FROM Win32_Service" |
|
||
-- Where-Object { $_.StartMode -eq 'Auto' -and $_.State -ne 'Running' } | Select-Object Name, DisplayName, State, ExitCode
|