1 Kontrola dostępu
Przegląd
Ta sekcja zawiera najlepsze praktyki dotyczące bezpiecznej konfiguracji kontroli dostępu.
Zasada najmniejszych uprawnień
Konta użytkowników powinny przez cały czas działać z możliwie najmniejszą liczbą uprawnień. Oznacza to, że konta użytkowników w frontendzie Zabbix, użytkownicy bazy danych lub użytkownik dla procesów serwera/proxy/agent Zabbix powinni mieć tylko te uprawnienia, które są niezbędne do wykonywania zamierzonych funkcji.
Przyznanie dodatkowych uprawnień użytkownikowi 'zabbix' umożliwi mu dostęp do plików konfiguracyjnych i wykonywanie operacji, które mogą zagrozić bezpieczeństwu infrastruktury.
Podczas konfigurowania uprawnień kont użytkowników należy uwzględnić typy użytkowników frontend Zabbix. Należy pamiętać, że chociaż typ użytkownika Admin ma mniej uprawnień niż typ użytkownika Super Admin, nadal może zarządzać konfiguracją i wykonywać niestandardowe skrypty.
Niektóre informacje są dostępne nawet dla użytkowników bez uprawnień. Na przykład, chociaż Alerts → Scripts jest dostępne tylko dla użytkowników Super Admin, skrypty można również pobrać za pośrednictwem Zabbix API. W takim przypadku ograniczenie uprawnień do skryptów i wykluczenie poufnych informacji ze skryptów (na przykład danych dostępowych) może pomóc uniknąć ujawnienia poufnych informacji dostępnych w globalnych skryptach.
Bezpieczny użytkownik dla agenta Zabbix
Domyślnie procesy serwera Zabbix, proxy i agenta (lub agent 2) współdzielą jednego użytkownika zabbix.
Aby zapobiec temu, by agent Zabbix/agent 2 (uruchomiony na tym samym komputerze co serwer/proxy) uzyskiwał dostęp do poufnych danych w konfiguracji serwera/proxy (na przykład poświadczeń bazy danych), agent powinien być uruchamiany pod innym użytkownikiem:
Dla agenta Zabbix:
- Utwórz bezpieczną grupę i użytkownika (np.
zabbix-agent). - Ustaw tego użytkownika w parametrze User w pliku konfiguracyjnym agenta.
- Uruchom ponownie agenta, aby zrzucić uprawnienia do nowego użytkownika.
Dla Zabbix agent 2 konfiguracja musi zostać zastosowana na poziomie usługi, ponieważ plik konfiguracyjny agenta 2 nie obsługuje parametru User.
Przykład: ZBX-26442.
Odebranie dostępu do zapisu do konfiguracji SSL (Windows)
Jeśli skompilowano agent Zabbixa w systemie Windows z OpenSSL znajdującym się w niezabezpieczonym katalogu (np. C:\zabbix, c:\openssl-64bit, C:\OpenSSL-Win64-111-static lub C:\dev\openssl), upewnij się, że użytkownicy niebędący administratorami nie mają prawa zapisu do tego katalogu.
W przeciwnym razie agent wczytuje ustawienia SSL ze ścieżki, którą mogą modyfikować użytkownicy bez uprawnień, co prowadzi do potencjalnej luki bezpieczeństwa.
Utwardzanie bezpieczeństwa komponentów Zabbix
Niektóre funkcje można wyłączyć, aby zwiększyć bezpieczeństwo komponentów Zabbix:
- Globalne wykonywanie skryptów na serwerze Zabbix można wyłączyć, ustawiając
EnableGlobalScripts=0w konfiguracji serwera. - Globalne wykonywanie skryptów na proxy Zabbix jest domyślnie wyłączone (można je włączyć, ustawiając
EnableRemoteCommands=1w konfiguracji proxy). - Globalne wykonywanie skryptów na agentach Zabbix jest domyślnie wyłączone (można je włączyć, dodając parametr
AllowKey=system.run[<command>,*]dla każdego dozwolonego polecenia w konfiguracji agenta). - Uwierzytelnianie HTTP użytkownika można wyłączyć, ustawiając
$ALLOW_HTTP_AUTH=falsew pliku konfiguracyjnym frontend (zabbix.conf.php). Należy pamiętać, że ponowna instalacja frontend (uruchomieniesetup.php) spowoduje usunięcie tego parametru.
Dostęp do ścieżek UNC w systemie Windows przez agent Zabbix
Agenty Zabbix w systemie Windows obsługują ścieżki UNC (udziały SMB, takie jak \\server\share\file.txt) w pozycjach takich jak vfs.file.*, vfs.dir.*, modbus.get i perf_counter*. W niektórych kontekstach może to stanowić zagrożenie bezpieczeństwa.
Gdy system Windows otrzymuje żądanie dostępu do ścieżki UNC, próbuje uwierzytelnić się na tym serwerze. Oznacza to, że złośliwe żądanie do agenta Zabbix może ujawnić hash NTLM serwerowi wysyłającemu żądanie. Użytkownicy mogą ograniczyć to ryzyko za pomocą parametrów konfiguracyjnych AllowKey i DenyKey, jeśli jest to potrzebne.