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
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?
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:
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. :)
Adrian “Vizzdoom” Michalczyk
A czy są takie programiki/skrypty dla Apache’a/nginxa?
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).
Odwołuję się również do innego Quick Tipa – http://sekurak.pl/quick-tip-mozilla-ssl-configuration-generator/.
Czyli to samo, tylko że dla Apache, Nginx oraz HAProxy :-)