Przeczytasz w 7 min.
Elementy konfiguracji serwera IIS dotyczące bezpieczeństwa
(Wersja nAxiom 1.14.8.3)
Podsumowanie:Platforma nAxiom przechodzi regularne skany bezpieczeństwa w celu eliminacji wszelkich luk i podatności. Elementem środowiska platformy jest serwer WWW, którego konfiguracja również ma znaczenie, jeśli chodzi o bezpieczeństwo. W tym artykule opisano kilka zagadnień związanych z konfiguracją serwera IIS dla wdrożeń opartych na systemach Microsoft Windows.
W tym temacie
Wstęp
Opisane poniżej elementy konfiguracji zostały wskazane jako potencjalne źródło problemów w ostatnim (maj/czerwiec 2025) skanie bezpieczeństwa nAxiom według wytycznych OWASP. Konfiguracja serwera WWW w zakresie działających na nim witryn pozostaje w kwestii organizacji, która tym serwerem administruje. Uwzględnienie zaleceń opisanych w tym artykule należy traktować jako sugestie „dobrych praktyk”. Nie mają one bezpośredniego wpływu na działanie witryny zbudowanej na platformie nAxiom.
Protokoły TLS i algorytmy szyfrujące
Niektóre z domyślnie obsługiwanych przez serwer WWW protokołów komunikacyjnych oraz standardów szyfrowania są obecnie uważane z niespełniające kryteriów bezpieczeństwa, dlatego wymagane jest ich wyłączenie. Ponieważ serwer IIS nie dysponuje interfejsem do łatwej zmiany tych ustawień, można użyć do tego celu bezpłatnego narzędzia IIS Crypto firmy Nartac Software.
Ilustracje poniżej przedstawiają zalecane wersje protokołów i pakietów szyfrujących.
Zamiast ręcznego ustawiania odpowiednich opcji można utworzyć plik szablonu i zaimportować do programu. Jest to plik XML z rozszerzeniem ictpl. Zawartość szablonu jest następująca:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?xml version="1.0" encoding="utf-8"?>
<iisCryptoTemplate version="3">
<header>
<name>nAxiom IIS</name>
<author>OPTeam S.A.</author>
<lastUpdated>2025-06-26T08:35:23.1875104Z</lastUpdated>
<description />
<builtIn>false</builtIn>
</header>
<schannel>
<clientProtocols>
<templateItem name="Multi-Protocol Unified Hello" value="0" />
<templateItem name="PCT 1.0" value="0" />
<templateItem name="SSL 2.0" value="0" />
<templateItem name="SSL 3.0" value="0" />
<templateItem name="TLS 1.0" value="0" />
<templateItem name="TLS 1.1" value="0" />
<templateItem name="TLS 1.2" value="1" />
<templateItem name="TLS 1.3" value="1" minimumOSVersion="Windows2022" />
</clientProtocols>
<serverProtocols>
<templateItem name="Multi-Protocol Unified Hello" value="0" />
<templateItem name="PCT 1.0" value="0" />
<templateItem name="SSL 2.0" value="0" />
<templateItem name="SSL 3.0" value="0" />
<templateItem name="TLS 1.0" value="0" />
<templateItem name="TLS 1.1" value="0" />
<templateItem name="TLS 1.2" value="1" />
<templateItem name="TLS 1.3" value="1" minimumOSVersion="Windows2022" />
</serverProtocols>
<ciphers>
<templateItem name="NULL" value="0" />
<templateItem name="DES 56/56" value="0" />
<templateItem name="RC2 40/128" value="0" />
<templateItem name="RC2 56/128" value="0" />
<templateItem name="RC2 128/128" value="0" />
<templateItem name="RC4 40/128" value="0" />
<templateItem name="RC4 56/128" value="0" />
<templateItem name="RC4 64/128" value="0" />
<templateItem name="RC4 128/128" value="0" />
<templateItem name="Triple DES 168" value="-1" />
<templateItem name="AES 128/128" value="-1" />
<templateItem name="AES 256/256" value="-1" />
</ciphers>
<hashes>
<templateItem name="MD5" value="-1" />
<templateItem name="SHA" value="-1" />
<templateItem name="SHA 256" value="-1" />
<templateItem name="SHA 384" value="-1" />
<templateItem name="SHA 512" value="-1" />
</hashes>
<keyExchanges>
<templateItem name="Diffie-Hellman" value="-1" />
<templateItem name="PKCS" value="-1" />
<templateItem name="ECDH" value="-1" />
</keyExchanges>
</schannel>
<advanced>
<templateItem name="DHE Minimum Key Length" value="2048" />
<templateItem name="FIPS Algorithm Policy" value="0" />
<templateItem name="Enable HTTP3" minimumOSVersion="Windows2022" />
<templateItem name="Enable AltSvc" minimumOSVersion="Windows2022" />
</advanced>
<cipherSuites>
<templateItem name="Configured Cipher Suites" value="TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256" />
</cipherSuites>
</iisCryptoTemplate>
Nagłówek strict-transport-protocol
Nagłówek strict-transport-security (HSTS) w odpowiedziach witryny informuje przeglądarkę, że od momentu nawiązania połączenia przez określony czas powinna używać wyłącznie połączeń szyfrowanych. W programie Menedżer IIS, od wersji 10, jest dostępny interfejs do konfigurowania tych ustawień dla indywidualnych witryn.
Po kliknięciu witryny w panelu Połączenia z lewej strony należy kliknąć polecenie HSTS... w panelu Akcje, sekcja Konfiguruj, z prawej strony i wyświetlonym polu dialogowym określić odpowiednie parametry.
Na końcu niniejszego artykułu zamieszczono skrypt PowerShell, który włącza nagłówek HSTS globalnie dla serwera IIS na danym hoście.
Wyliczanie krótkich nazw w ISS
IIS Short Name Enumeration to znana podatność serwera IIS polegająca na ujawnianiu skróconych nazw plików i folderów na serwerze. Jej eliminacja wymaga, aby klucz rejestru:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameCreation
miał wartość 1. Odpowiednią zmianę wykonuje skrypt PowerShell zamieszczony na końcu artykułu.
Nagłówek x-powered-by
Nagłówek x-powered-by zawiera informacje o technologiach wykorzystywanych przez daną witrynę/aplikację. Ujawnianie tych informacji traktuje się obecnie jako potencjalnie niebezpieczne. Aby wyłączyć dodawanie tego nagłówka w odpowiedziach HTTP, należy w Menedżerze IIS kliknąć dwukrotnie ikonę Nagłówki odpowiedzi HTTP i usunąć odpowiednią pozycję z wyświetlonej listy.
Skrypt PowerShell
Poniższy skrypt PowerShell włącza globalnie funkcję HSTS na serwerze IIS (wersja 10, czyli Windows Server 2019 lub nowszy) oraz wyłącza wyliczanie krótkich nazw plików.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Enable HSTS as default configuration for IIS 10.0
$iisInfo = Get-ItemProperty HKLM:\SOFTWARE\Microsoft\InetStp\
$version = [decimal]"$($iisInfo.MajorVersion).$($iisInfo.MinorVersion)"
if ($version -ge 10.0)
{
Import-Module WebAdministration
Reset-IISServerManager -Confirm:$false
Start-IISCommitDelay
\$sitesCollection = Get-IISConfigSection -SectionPath \"system.applicationHost/sites\" | Get-IISConfigCollection
$siteDefaultsElement = Get-IISConfigElement -ConfigElement $sitesCollection -ChildElementName "siteDefaults"
$hstsElement = Get-IISConfigElement -ConfigElement $siteDefaultsElement -ChildElementName "hsts"
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "enabled" -AttributeValue $true
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "max-age" -AttributeValue 31536000
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "includeSubDomains" -AttributeValue $true
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "redirectHttpToHttps" -AttributeValue $false
Stop-IISCommitDelay
Remove-Module IISAdministration
}
# Disable IIS Short name Enumeration
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name NtfsDisable8dot3NameCreation -Value 1