One reviewable file per rule id with a Danish header: what and why, thresholds with config keys and defaults, severity, required rights (never local administrator), supported versions, collector file and member, and the evaluation in plain Danish. The Windows rules use no SQL: their exact CIM/WQL queries, event log XPath and a read-only PowerShell snippet to verify them are in a comment block. SQLI-SYN-001/002 carry the exact SQL a SQL check runs (session settings, transaction that is always rolled back, SELECT 1). A test checks every server and check rule has its file. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
39 lines
2 KiB
SQL
39 lines
2 KiB
SQL
/*
|
||
SQLI-SYN-003 – TLS-certifikatet udløber snart
|
||
==============================================
|
||
|
||
Hvad og hvorfor
|
||
Når certifikatet på en HTTPS-adresse udløber, afviser browsere og integrationer forbindelsen (eller viser en
|
||
sikkerhedsadvarsel), og siden er i praksis nede. Udløbsdatoen læses ved hvert HTTPS-tjek – også når certifikatet
|
||
afvises (fx selvsigneret).
|
||
|
||
Tærskler (agentens appsettings.json)
|
||
SQLInsight:SyntheticChecks:CertificateWarningDays standard 21 (fund når certifikatet udløber inden for så mange dage)
|
||
SQLInsight:SyntheticChecks:CertificateCriticalDays standard 7 (Høj inden for så mange dage)
|
||
|
||
Alvor
|
||
Middel; Høj inden for CertificateCriticalDays; Kritisk når det er udløbet.
|
||
|
||
Rettigheder
|
||
Ingen ud over netværksadgang fra agentens server til adressen.
|
||
|
||
Understøttede versioner
|
||
Alle HTTPS-servere (TLS 1.2 og nyere fra agentens server).
|
||
|
||
Collector
|
||
src/SQLInsight.Servers/Synthetic/SyntheticCheckRunner.cs – HttpAsync (RemoteCertificateValidationCallback gemmer
|
||
certifikatets NotAfter og Subject), fra src/SQLInsight.Agent/Servers/SyntheticCheckService.cs – RunCheckAsync.
|
||
Regel
|
||
src/SQLInsight.Rules/Servers/SyntheticCheckRules.cs – CertificateExpiryRule
|
||
|
||
Evaluering
|
||
Kun HTTP-tjek med https://. Den nyeste kørsel, der har set et certifikat, bruges: dage til udløb = NotAfter − nu.
|
||
Uden set certifikat endnu: "ikke målbar". Andre tjek: "ikke relevant".
|
||
|
||
Reglen bruger ikke SQL. Tjekket er en HTTPS GET; filen indeholder kun kommentarer og ændrer intet.
|
||
|
||
Efterprøv med PowerShell (skrivebeskyttet; kør på agentens server):
|
||
$c = New-Object System.Net.Sockets.TcpClient('ep.firma.local', 443)
|
||
$s = New-Object System.Net.Security.SslStream($c.GetStream(), $false, { $true })
|
||
$s.AuthenticateAsClient('ep.firma.local'); $s.RemoteCertificate.GetExpirationDateString(); $c.Close()
|
||
*/
|