Niniejszy artykuł opisuje korzystanie ze skryptu PowerShell dla aplikacji Comarch B2B w celu sprawdzenia i ewentualnego ustawienia parametrów serwera Microsoft IIS 10 wpływających na jego zabezpieczenie przed niepowołanym dostępem (wynikającym z błędów konfiguracyjnych).
Opisane poniżej zalecenia są zgodne z CIS Benchmark: https://www.cisecurity.org/benchmark/microsoft_iis
Wymagania
- Windows Server 2016 lub wyższy
- IIS 8.5 lub wyższy
- Uprawnienia administratora do serwera
Skrypt zabezpieczający
1. Zmienne PowerShell
Na początku skryptu znajdują się zmienne konfiguracyjne:
- $skip_config – domyślnie pusta lista (uwzględniamy wszystkie testy).
Oznacza listę testów, które chcemy pominąć podczas ustawiania konfiguracji.
PrzykładPrzykładowa konfiguracja, gdy chcemy pominąć test 1.1 i 1.7:
$skip_config = @(1.1, 1.7)- $check_only – domyślnie pusta lista (uwzględniane są wszystkie grupy testów).
Lista grup testów, które chcemy uwzględnić podczas sprawdzania i ewentualnego ustawiania konfiguracji.
PrzykładPrzykładowa konfiguracja, gdy chcemy uwzględnić tylko grupę 1 i 3:
$ check_only = @(1, 3)- $configurate – domyślnie $false.
Oznacza, czy przeprowadzić tylko skanowanie ($false) czy również wprowadzić zmiany w konfiguracji ($true).- $skip_stopped_sites – domyślnie $true.
Oznacza, czy pomijać sprawdzanie stron zatrzymanych ($true) czy sprawdzać również strony zatrzymane ($false).UwagaJeżeli aplikacja Comarch B2B została uruchomiona bez szyfrowanego protokołu HTTPS, należy w zmiennej $skip_config wprowadzić numery dwóch testów: 2.3 oraz 7.1.2. Zmienne IIS
- $MAX_ALLOWED_CONTENT [30000000] – max rozmiar żądania [bajty] (test 4.1)
- $MAX_URL [4096] – max długość URL [bajty] (test 4.2)
- $MAX_QUERY_STRING [2048] – max długość ciągu zapytania [bajty] (test 4.3)
- $MAX_CONCURRENT_REQUESTS [5] – liczba żądań w danym okresie (test 4.11)
- $LOGS_DIR [I:\inetpub\logs\LogFiles] – folder, który zawiera logi (test 5.1)
- $CIPHER_SUITE_ORDERED [‘TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_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_CBC_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256’] – kolejność zestawów szyfrów (test 7.12)
- $HSTS_MAX_AGE [480] – zalecany max-age dla HSTS (test 7.1)
3. Uruchomienie skryptu
1. Uruchomić PowerShell w trybie administratora
2. Przejść do katalogu gdzie znajduje się plik ze skryptem
3. Wywołać skryptUwagaZalecamy najpierw uruchomić skrypt z domyślnymi ustawienia zmiennych i sprawdzić, które testy nie spełniają zaleceń CIS Benchmark.Wyniki testów
Możliwe są trzy typy wyników:
1. “Correct configuration” – oznacza, że konfiguracja spełnia zalecenia CIS Benchmark
2. “Found Error in configuration” – oznacza, że konfiguracja nie spełnia zaleceń CIS Benchmark
3. “Found Error in configuration (…) Changing…” – wynik, podobny do powyższego ale dodatkowo jest informacja o zmianie ustawień (występuje gdy zmienna $configurate była ustawiona na $true)
Wskazówka - $check_only – domyślnie pusta lista (uwzględniane są wszystkie grupy testów).