Portal Portal for ArcGIS zawiera narzędzie skryptowe języka Python o nazwie portalScan.py, które wykonuje skanowanie pod kątem często spotykanych zagrożeń bezpieczeństwa. Narzędzie to wykrywa problemy na podstawie dobrych praktyk dotyczących konfigurowania bezpiecznego środowiska portalu.. Analizuje ono wiele właściwości konfiguracyjnych i kryteriów oraz dzieli je na trzy poziomy istotności: krytyczne, ważne i polecane. Kryteria te zostały opisane poniżej:
ID | Ranga | Właściwość | Opis |
---|---|---|---|
PS01 | Krytyczne | Ograniczenia serwera proxy | Określa, czy możliwości serwera proxy portalu zostały ograniczone. Domyślnie serwer proxy portalu zezwala na każdy adres URL. Aby uchronić się przed skutkami potencjalnych ataków typu odmowa usług (DoS) lub złośliwe żądania po stronie serwera (SSRF), zaleca się ograniczenie możliwości serwera proxy portalu do obsługi jedynie zatwierdzonych adresów internetowych. |
PS02 | Krytyczne | Żądania tokena | Określa, czy jest obsługiwane generowanie żądań tokena z poświadczeniami w parametrach zapytań. Jeśli tak, wówczas podczas generowania tokenów poświadczenia użytkowników mogą być przekazywane jako część adresu URL i mogą zostać uwidocznione w historii przeglądarki albo w dziennikach sieci. Zaleca się wyłączenie tego elementu, chyba że jest wymagany przez inne aplikacje. |
PS03 | Ważne | Katalog usług portalu | Określa, czy katalog usług portalu jest dostępny z poziomu przeglądarki internetowej. Możliwość ta powinna być zablokowana, aby zmniejszyć prawdopodobieństwo przeglądania elementów, usług, map internetowych, grup i innych zasobów portalu, ich odnalezienia podczas wyszukiwania sieciowego lub tworzenia odnoszących się do nich zapytań za pomocą formularza HTML. |
PS04 | Ważne | Bezpieczna komunikacja | Określa, czy portal może się komunikować jedynie za pośrednictwem protokołu HTTPS. Aby zapobiec przechwyceniu jakiejkolwiek komunikacji w obrębie portalu, zalecane jest skonfigurowanie portalu i serwera internetowego hostującego aplikację Web Adaptor tak, aby wymuszały szyfrowanie SSL. |
PS05 | Polecane | Rejestracja wbudowanych kont | Określa, czy użytkownicy mogą kliknąć przycisk Utwórz konto na stronie rejestrowania portalu w celu utworzenia wbudowanego konta portalu. W przypadku używania kont specyficznych dla instytucji lub jeśli wszystkie konta mają być tworzone ręcznie, tę opcję należy zablokować. |
PS06 | Polecane | Dostęp anonimowy | Określa, czy dozwolony jest dostęp anonimowy. Aby zapobiec uzyskiwaniu dostępu do zasobów przez użytkowników bez wcześniejszego podania poświadczeń portalu, zalecane jest skonfigurowanie portalu tak, aby nie zezwalał na dostęp anonimowy. |
PS07 | Polecane | Magazyn tożsamości LDAP | Jeśli portal jest skonfigurowany z magazynem tożsamości LDAP, określa, czy używana jest komunikacja szyfrowana. Zaleca się użycie protokołu LDAPS we właściwościach ldapURLForUsers i ldapURLForRoles wymienionych w parametrach konfiguracji magazynu użytkowników i magazynu grup. |
PS08 | Polecane | Certyfikat SSL portalu | Decyduje o tym, czy w portalu jest używany certyfikat z podpisem własnym. Aby ograniczyć liczbę ostrzeżeń generowanych przez przeglądarki internetowe i inne nieoczekiwane działania aplikacji klienckich komunikujących się z portalem, zalecane jest zaimportowanie i używanie certyfikatu SSL wystawionego przez CA i powiązanego z portem 7443. |
PS09 | Polecane | Żądania międzydomenowe | Określa, czy żądania międzydomenowe (CORS) nie są ograniczane. Aby zmniejszyć ryzyko uzyskania dostępu do udostępnionego elementu portalu przez nieznaną aplikację, zaleca się ograniczyć żądania międzydomenowe wyłącznie do aplikacji hostowanych w zaufanych domenach. |
PS10 | Krytyczne | Administracyjny adres URL serwera sfederowanego | Określa, czy adres URL administratora serwera sfederowanego jest dostępny dla portalu i czy certyfikat SSL używany w tym adresie URL jest zaufany. Jeśli certyfikat jest niezaufany lub adres jest nieosiągalny, wiele funkcji i operacji w portalu kończy się niepowodzeniem. |
PS11 | Polecane | Adres URL usług serwera sfederowanego | Określa, czy adres URL usług serwera sfederowanego jest dostępny dla portalu i czy certyfikat SSL używany w tym adresie URL jest zaufany. Jeśli certyfikat jest niezaufany lub adres jest nieosiągalny, portal działa, ale niektóre operacje w portalu mogą kończyć się niepowodzeniem. |
PS12 | Polecane | Zasoby publiczne | Jeśli portal skonfigurowano w taki sposób, że jego członkowie nie mogą udostępniać zasobów publicznie, wyświetlona zostanie lista elementów, które są wciąż udostępniane wszystkim użytkownikom (ustawienie Wszyscy). |
PS13 | Ważne | Ustawienia konfiguracji SAML | Jeśli portal jest skonfigurowany do korzystania z uwierzytelniania SAML, ten element określa, czy włączone są szyfrowane potwierdzenia i podpisane żądania. Jeśli jest to obsługiwane przez dostawcę tożsamości, zaleca się skonfigurowanie portalu tak, aby wymagał zarówno szyfrowanych potwierdzeń, jak i podpisanych żądań. |
PS14 | Ważne | Status domyślnej usługi drukowania | Usługa drukowania, która jest domyślnie skonfigurowana w portalu, jest zazwyczaj zastępowana po sfederowaniu serwera ArcGIS Server. Zaleca się wyłączenie domyślnej usługi drukowania, jeśli nie jest ona używana. |
PS15 | Polecane | Status usługi legendy | Usługa legendy jest używana przez portal do pobierania ikon legendy ze starszych usług mapowych i obiektowych (przez SOAP). Jeśli nie uzyskuje się dostępu do starszych usług, które nie obsługują pobierania legendy przez REST, zaleca się wyłączenie tej usługi. |
PS16 | Polecane | Status usługi RSS | Usługa RSS jest wykorzystywana przez portal do komunikacji z kanałami GeoRSS. Jeśli za pośrednictwem map internetowych na portalu nie uzyskuje się dostępu do żadnych kanałów GeoRSS, zaleca się wyłączenie tej usługi. |
PS17 | Polecane | Status usługi KML | Usługa KML jest używana przez portal do komunikacji z punktami końcowymi KML. Jeśli za pośrednictwem map internetowych na portalu nie uzyskuje się dostępu do żadnych punktów końcowych KML, zaleca się wyłączenie tej usługi. |
Skrypt portalScan.py znajduje się w katalogu <Portal for ArcGIS installation location>/tools/security. Uruchom skrypt w powłoce, używając skryptu portalScan Bash, który znajduje się w tym samym katalogu. Dla tego skryptu można określić jeden lub kilka parametrów jego uruchamiania.
Parametry skryptu portalScan.py
W poniższej tabeli opisano parametry skryptu portalScan.py:
Parametr | Opis |
---|---|
-n | W pełni kwalifikowana nazwa domeny komputera, na którym jest zainstalowany portal (innymi słowy portalgis.domena.com). Domyślnie jest to nazwa hosta komputera, na którym działa skrypt. |
-u | Nazwa użytkownika konta administratora. |
-p | Hasło konta administratora. |
-o | Katalog, w którym będzie zapisywany raport skanowania bezpieczeństwa. Domyślnie jest to ten sam katalog, w którym został uruchomiony skrypt. |
-t | Może być wygenerowany token i używany zamiast nazwy użytkownika oraz hasła. Podczas generowania tokena w polu Webapp URL należy podać wartość portalScan. Po dostarczeniu tokena zastępuje on przekazaną nazwę użytkownika i hasło. |
--ignoressl | Wyłączenie weryfikacji certyfikatu SSL. Począwszy od wersji 10.7.1 skrypt będzie domyślnie próbował zweryfikować wszystkie certyfikaty SSL. Jeśli środowisko Python nie ufa wystawcy certyfikatów, wykonanie skryptu zakończy się niepowodzeniem. Jeśli to konieczne, można podać ten parametr, aby ignorować wszystkie certyfikaty. |
-h lub -? | Wyświetla listę dozwolonych parametrów uruchamianego skryptu. |
Przykład (plik wyjściowy zapisany w katalogu domowym użytkownika):./portalScan -n portal.domain.com -u admin -p my.password -o ~
Jeśli skrypt portalScan zostanie uruchomiony bez żadnych parametrów, pojawi się monit o wprowadzenie ich ręcznie lub wybranie wartości domyślnej. Jeśli ma być używany token, musi on być przekazany jako parametr przy uruchamianiu skryptu.
W wyniku skanowania jest generowany raport w formacie HTML zawierający listę znalezionych dla danego portalu problemów spośród przedstawionych wyżej.
Domyślnie raport jest zapisywany w tym samym folderze, w którym został uruchomiony skrypt i ma nazwę portalScanReport_[hostname]_[date].html.