Jak skonfigurować serwer webowy z wykorzystaniem hardeningu IIS dla Comarch B2B?

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).

Uwaga
Przed rozpoczęciem pracy, należy pobrać przygotowany przez nas skrypt – Pobierz skrypt
Wskazówka
Zalecamy zapoznać się z dokumentem opisującym wytyczne dotyczące ustalenia bezpiecznej konfiguracji dla Microsoft IIS 10 – Pobierz dokument.

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ład
    Przykł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ład
    Przykł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).
Uwaga
Jeż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ć skrypt

Uwaga
Zalecamy 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

Czy ten artykuł był pomocny?