Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book

Quick Tip: IIS – hardening protokołów kryptograficznych SSL/TLS

07 marca 2014, 09:31 | Teksty | komentarze 3
Zapewnienie bezpieczeństwa komunikacji ruchu HTTP nie wymaga wyłącznie zakupu certyfikatu w odpowiedniej firmie, ale również szczegółowej konfiguracji serwera aplikacji oraz samego systemu operacyjnego. Jest to nie lada wyzwanie, w szczególności jeśli decydujemy się na hostowanie aplikacji na stosie Windows + IIS. Mimo tego że domyślne ustawienia związane z kryptografią systemów takich jak Windows Server 2012 (i nowszych) stoją na bardzo dobrym poziomie, to jednak warto zadbać o to, aby szyfrowanie ruchu, nie było szyfrowaniem tylko z nazwy.

 

Wdrożenie i testowanie SSL

Załóżmy, że mamy aplikacje internetową obsługiwaną przez serwer IIS. Załóżmy też, że wykupiliśmy odpowiedni certyfikat od firmy, która cieszy się bardzo dobrą opinią. Certyfikat został poprawnie zainstalowany w serwerze aplikacji i strona internetowa z powodzeniem ładuje się przy użyciu schematu HTTPS.

Jako że jesteśmy perfekcjonistami, oczywiście chcemy zweryfikować, czy wdrożona architektura bezpiecznej komunikacji działa zgodnie z założeniami. Weryfikację ustawień HTTPS w prosty sposób można wykonać posługując się m.in:

  • usługą SSL Test firmy Qualys (testowanie wyłącznie domen publicznie dostępnych),
  • programem sslyze (umożliwia testowania również „domen prywatnych”).

Jeśli nie jest to problemem, bardzo dobrym pomysłem jest użycie skanera online firmy Qualys, gdyż oprócz szczegółowych informacji odnośnie konfiguracji SSL dla danej witryny, otrzymujemy również informacje o błędach i niebezpiecznych wartościach. Dzięki temu łatwo poprawimy swoją konfigurację.

No właśnie, jak wygląda zmiana takiej konfiguracji w systemach Microsoft Windows?

 

Żmudny hardening kryptografii dla IIS

Bezpieczna konfiguracja usług kryptograficznych wykorzystywanych przez serwer IIS jest bardzo żmudna i niewygodna, w szczególności jeśli proces ten chcemy zautomatyzować między kolejnymi wdrożeniami. Oprócz wykupienia i instalacji odpowiednio bezpiecznego certyfikatu musimy pamiętać również o wyłączeniu słabych protokołów kryptograficznych, o wybraniu odpowiednich list parametrów kryptograficznych (cipher suites), zastanowić się nad wyłączeniem kompresji i nad wieloma, wieloma innymi sprawami.

Oczywiście sam wybór odpowiednich protokołów, algorytmów i ich opcji wymaga bardzo dużej wiedzy z dziedziny kryptografii, sieci i bezpieczeństwa. Na szczęści istnieje kilka organizacji, które udostępniają wskazówki pomagające dobrać bezpieczne wartości w taki sposób, aby skonfigurować niezwykle bezpieczne kryptosystemy. Jedną z organizacji, która tworzy takiego rodzaju zalecenia, jest CIS – Center for Internet Security.

Sprawdźmy, jak wygląda benchmark CIS dotyczący hardeningu IIS 8. Dokument „utwardzania” serwera aplikacji dla Windows dostępny jest za darmo i zawiera niemalże 50 grup zmian w konfiguracji, które znacznie zwiększają bezpieczeństwo IIS.

Dokładniejsza analiza spisu treści benchmarku IIS szybko doprowadzi nas do zagadnień związanych z kryptografią, które opisane są między innymi w następujących zaleceniach:

  • 1.1.9 Use Only Strong Encryption Protocols (Scored),
  • 1.1.10 Disable Weak Cipher Suites (Scored).

Wdrożenie powyższych wytycznych wymaga tylko podstawowej wiedzy o kryptografii, dzięki czemu najtrudniejsza część hardeningu za nami. W obu wyżej wymienionych punktach CIS opisuje, dlaczego należy rezygnować z konkretnych ustawień na rzecz proponowanych przez nich wartości, jak sprawdzić aktualną wartość ustawioną w systemie oraz jak ją zmienić. Większość zmian polega na zmianach w rejestrze systemu Windows, np. w węzłach:

  • HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\PCT 1.0\Server\Enabled
  • HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server\Enabled
  • HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC2 56/128\Enabled
  • HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\AES 256/256\Enabled

i tak dalej, i tak dalej…

Oczywiście wyklikiwanie wszystkich wartości w edytorze rejestru nie jest zbyt poręczne. Same zmiany można łatwo zautomatyzować, chociażby z pomocą konsolowego narzędzia reg, jednak problemem takiej automatyzacji jest to, że konfiguracja tych wartości nieznacznie różni się w zależności od wersji systemu Windows. Między każdą wersją systemu Microsoftu (zarówno w wersjach serwerowych, jak i biurkowych) istnieją różnice w konfiguracji – a to dotyczące wspieranych algorytmów, ścieżek konfiguracji w rejestrze, domyślnych wartości itp.

Miało być łatwo i szybko, a jak na razie na nic takiego się nie zapowiada. Jak poradzić sobie z tym problemem i nie stracić przy tym kilkunastu godzin?

Przykład "wygodnych" szablonów administracyjnych w kontekście ustawień SSL systemu Windows.

Przykład „wygodnych” szablonów administracyjnych w kontekście ustawień SSL systemu Windows.

 

Szybki i bezbolesny hardening kryptografii – IISCrypto

Z „opresji” uratuje nas prosty (i co najważniejsze – darmowy) program o nazwie IIS Crypto, który za pomocą paru kliknięć ustawia wszystkie wartości w zakamarkach systemu Windows.

Program wygląda następująco:

Przykładowe ustawienia IIS Crypto.

Przykładowe ustawienia IIS Crypto.

Po wybraniu odpowiednich checkboxów i zatwierdzeniu zmian przyciskiem Apply, należy zresetować system… i już można cieszyć się nową, bezpieczniejszą konfiguracją. Aby jeszcze bardziej ułatwić proces „utwardzania” kryptografii systemu Windows, IIS Crypto umożliwia użycie wstępnie przygotowanych szablonów, które skonfigurują nasz system zgodnie z wymaganiami popularnych dokumentów audytowych, takich jak PCI lub FIPS 140-2. Wszystko przez jedno kliknięcie w odpowiedni przycisk.

Mimo że konfiguracja Windows kojarzy się głównie z klikaniem, twórcy programu zadbali również o bardziej zaawansowanych użytkowników, którzy chcieliby jak najbardziej zautomatyzować proces hardeningu systemu. Na stronie programu istnieje możliwość ściągnięcia narzędzia nie tylko w wersji GUI , ale również w wersji konsolowej. Niestety konsolowy IIS Crypto jest ubogi w opcje, jednak z pewnością wielu osobom i tak przypadnie do gustu.

Wywołanie IISCryptoCli wygląda następująco:

C:\>IISCryptoCli40.exe

IIS Crypto Command Line version 1.4 build 5

Created by Nartac Software - www.nartac.com

Copyright (c) 2011-2013 Nartac Software Inc.

Usage:

  /default    Restore the computer back to the default settings
  /pci        Set the cipher suite for PCI compliance
  /fips140    Set the cipher suite for FIPS140-2 compliance
  /best       Set the cipher suite order to best practices

 

Podsumowanie

Mogłoby się wydawać, że konfiguracja ustawień kryptograficznych dla serwera IIS to droga przez mękę. Okazuje się jednak, że znając wyłącznie podstawy kryptografii i posługując się darmowym programem IISCrypto, można w bardzo szybki sposób zadbać o to, aby szyfrowanie ruchu HTTPS naprawdę zabezpieczało tor komunikacyjny między naszym serwerem i przeglądarkami użytkowników, a nie tylko sprawiało wrażenie bezpiecznego. :)

Dobry certyfikat, kilka kliknięć w IIS Crypto, restart serwera... i już możemy czuć się wyróżnieni w rankingu Qualys SSL Labs. :)

Dobry certyfikat, kilka kliknięć w IIS Crypto, restart serwera… i już możemy czuć się wyróżnieni w rankingu Qualys SSL Labs. :)

 

Adrian “Vizzdoom” Michalczyk

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. John

    A czy są takie programiki/skrypty dla Apache’a/nginxa?

    Odpowiedz
    • Z nimi na Linuksie jest dużo łatwiej – skonfigurujesz raz, zapiszesz sobie config i później go wdrożysz jeszcze raz (ewentualnie przy minimalnych zmianach).

      A tutaj (na Windowsie, IISach) aż tak ciekawie nie jest – tzn. idzie, ale są spore różnice między samym Windows/IIS i jest to bardzo męczące (przynajmniej dla mnie).

      Odpowiedz
    • Odpowiedz

Odpowiedz