Ad Widget

Collapse

Защита от брута

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • jet_one
    Member
    • Jan 2017
    • 32

    #1

    Защита от брута

    Всем привет. Имеется элемент данных eventlog[Security,,,,4625], который собирает данные о неправильном вводе пароля на хосте.
    Имеется триггер eventlog[Security,,,,4625].nodata(60)}<>1, который ругается в течении минуты на неправильно введенный пароль.
    Хочется модернизировать, так чтоб когда неправильно введен пароль, в мониторинге писало на какую учетную запись не удалось войти.

    Если зайти в журнал безопасности, то там видно, что имя хранится в "TargetUserName".
    Как это запилить в триггер?
    Attached Files
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3405

    #2
    Смотрите мой ответ в этой ветке.

    Comment

    • jet_one
      Member
      • Jan 2017
      • 32

      #3
      Originally posted by kos
      Смотрите мой ответ в этой ветке.
      Originally posted by kos
      Ну, это смотря куда вывести.
      Если речь идёт о том, что вывести надо в уведомлении (например, том, которое отсылается по e-mail), то, начиная с версии 3.2, появилась такая возможность как функции макросов. Там можно, например, из последнего значения вырезать нужный кусочек по регулярному выражению.
      Это конечно здорово, но я не могу понять как работать с макросами...

      Comment

      • Kos
        Senior Member
        Zabbix Certified SpecialistZabbix Certified Professional
        • Aug 2015
        • 3405

        #4
        Originally posted by jet_one
        Это конечно здорово, но я не могу понять как работать с макросами...
        Ну, примерно так.
        Вы пишете, что у вас есть элемент данных с ключом eventlog[Security,,,,4625]. Допустим, что данные у вас собираются, и в веб-интерфейсе Monitoring -> Latest data видно, что значение одного элемента данных занимает около двух килобайт и состоит из трёх десятков строк. Вот всё это большое многострочное значение будет подставляться при использовании макроса {ITEM.VALUE}. В то же время, вы хотите, чтобы в уведомлениях, отсылаемых по e-mail, в поле Subject была видна наиболее важная информация - имя пользователя, про которого это уведомление сообщает.
        Тогда надо посмотреть, каким регулярным выражением имя пользователя можно вырезать из полного значения элемента данных, и вместо макроса {ITEM.VALUE} в шаблоне для отсылаемого уведомления (в настройках действия, в соответствии с которым это уведомление отсылается) использовать макрос {{ITEM.VALUE}.regsub("регулярное выражение","\1")}.
        Ну, конкретное регулярное выражение будет зависеть от того, что вы видите в качестве значения элемента данных в Latest data.
        Last edited by Kos; 01-02-2017, 13:23.

        Comment

        • jet_one
          Member
          • Jan 2017
          • 32

          #5
          Originally posted by kos
          и вместо макроса {item.value} в шаблоне для отсылаемого уведомления (в настройках действия, в соответствии с которым это уведомление отсылается) использовать макрос {{item.value}}.regsub("регулярное выражение","\1")}.
          Ну, конкретное регулярное выражение будет зависеть от того, что вы видите в качестве значения элемента данных в latest data.
          Спасибо. Но меня интересует, чтоб это поле(с именем учетной записи) выводилось в событии на самой ПАНЕЛИ мониторинга.
          Как например на скриншоте, но чтоб было: "Не верно ввели пароль на СИТ Сервер с "ИМЯ УЧЕТНОЙ ЗАПИСИ""
          Благодарю за помощь.
          Attached Files
          Last edited by jet_one; 01-02-2017, 04:12.

          Comment

          • Kos
            Senior Member
            Zabbix Certified SpecialistZabbix Certified Professional
            • Aug 2015
            • 3405

            #6
            Насколько я вижу в графе "Supported in" в таблицах из документации, функции макросов можно применять не только при формировании уведомлений, но также и в именах и описаниях триггеров.

            Т.е. называете свой триггер чем-то вроде:
            Code:
            Не верно ввели пароль на СИТ {HOST.NAME} с "{{ITEM.VALUE}.regsub("регулярное выражение","\1")}"
            При срабатывании триггера его имя должно быть сформировано динамически, используя эти макросы.
            Кстати, если это работает, то в уведомлении на это имя триггера можно ссылаться по простому макросу {TRIGGER.NAME} .

            Comment

            • jet_one
              Member
              • Jan 2017
              • 32

              #7
              Originally posted by kos
              Насколько я вижу в графе "supported in" в таблицах из документации, функции макросов можно применять не только при формировании уведомлений, но также и в именах и описаниях триггеров.

              Т.е. называете свой триггер чем-то вроде:
              Code:
              Не верно ввели пароль на СИТ {host.name} с "{{item.value}.regsub("регулярное выражение","\1")}"
              При срабатывании триггера его имя должно быть сформировано динамически, используя эти макросы.
              Кстати, если это работает, то в уведомлении на это имя триггера можно ссылаться по простому макросу {trigger.name} .
              Сделал как вы указали. В итоге получилось вот(скриншот №1)
              Как я понял {item.value} заменяется на значение самого журнала, он начинает выводить весь текст лога, однако нужная мне строка находится в середине.
              Attached Files
              Last edited by jet_one; 02-02-2017, 09:53.

              Comment

              • jet_one
                Member
                • Jan 2017
                • 32

                #8
                По regsub("регулярное выражение","\1"). Я как понял "регулярное выражение" это ключевые слова которые выбираются из журнала который получает заббикс от агента.(скриншот №2)
                Я сделал название триггера
                Code:
                Не верно ввели пароль на СИТ {host.name} с "{{item.value}.regsub("Имя учетной записи:","\1")}"
                Но ничего не работает...
                Attached Files

                Comment

                • jet_one
                  Member
                  • Jan 2017
                  • 32

                  #9
                  Есть кто разбирается?)

                  Comment

                  • Kos
                    Senior Member
                    Zabbix Certified SpecialistZabbix Certified Professional
                    • Aug 2015
                    • 3405

                    #10
                    Ну, у меня-то на "боевом" сервере версия 3.0 (которая lts), поэтому быстро проверить не могу.
                    Сейчас ставлю на тестовый версию 3.2, посмотрим. Подозреваю, что дело в регулярном выражении - я не вижу, как Вы его определили. Со строчкой "регулярное выражение" вместо него, конечно, ничего хорошего не найдётся :-)

                    Comment

                    • Kos
                      Senior Member
                      Zabbix Certified SpecialistZabbix Certified Professional
                      • Aug 2015
                      • 3405

                      #11
                      Ну, в общем, у меня получается с переменным успехом.

                      Во-первых, агент Zabbix посылает на сервер данные не в виде XML-а, а в виде уже сформатированного текста, примерно так, как это отображается при просмотре Windows Event Viewer-ом (см. скриншот).


                      При этом текст "Account Name:" в сообщении встречается дважды, первый раз - с именем компьютера (оно всегда заканчивается символом доллара), и лишь второй раз - с именем реального пользователя, которым неуспешно пытались войти (в данном примере - "User").
                      Так происходит и с относительно старым (v2.2.7), и с самым новым (3.2.0) агентом под Windows.

                      Во-вторых, чтобы вырезать именно ту строку, которая НЕ заканчивается на символ доллара, я придумал такое регулярное выражение:
                      Code:
                      Account Name:\s*(\S+[^$])[\n\r]
                      По идее, в группу (то, что в круглых скобках) должно попадать всё, что после фразы "Account Name:" и любого количества пробельных символов идёт до конца строки, но при этом не заканчивается долларом и непустое. Т.е. под такое условие должна подпадать только реальное имя пользователя из второй строки "Account Name:".

                      В итоге, название триггера получается таким:
                      Code:
                      Неверно введён пароль на {HOST.NAME} для {{ITEM.VALUE}.regsub("Account Name:\s*(\S+[^$])[\r\n]","\1")}
                      Наконец, в-третьих, что самое печальное, мне пока что не удалось добиться устойчивой работы такой конструкции.
                      В веб-интерфейсе (например, в списке открытых проблем или триггеров) далеко не всегда макрос в имени триггера раскрывается правильно (иногда остаётся старое значение, иногда - вообще пусто).
                      В оповещениях же (где в теме письма и далее в тексте используется значение макроса {TRIGGER.NAME}) подставляется верное значение, но почему-то при этом обрезается его последний символ.

                      Чувствую, что это перспективное направление, но ещё толком не доделанное; надо сообщать о проблемах разработчикам.
                      Attached Files
                      Last edited by Kos; 13-02-2017, 13:58. Reason: мелкие стилистические правки

                      Comment

                      • jet_one
                        Member
                        • Jan 2017
                        • 32

                        #12
                        Originally posted by Kos
                        Ну, в общем, у меня получается с переменным успехом.

                        Во-первых, агент Zabbix посылает на сервер данные не в виде XML-а, а в виде уже сформатированного текста, примерно так, как это отображается при просмотре Windows Event Viewer-ом (см. скриншот).


                        При этом текст "Account Name:" в сообщении встречается дважды, первый раз - с именем компьютера (оно всегда заканчивается символом доллара), и лишь второй раз - с именем реального пользователя, которым неуспешно пытались войти (в данном примере - "User").
                        Так происходит и с относительно старым (v2.2.7), и с самым новым (3.2.0) агентом под Windows.

                        Во-вторых, чтобы вырезать именно ту строку, которая НЕ заканчивается на символ доллара, я придумал такое регулярное выражение:
                        Code:
                        Account Name:\s*(\S+[^$])[\n\r]
                        По идее, в группу (то, что в круглых скобках) должно попадать всё, что после фразы "Account Name:" и любого количества пробельных символов идёт до конца строки, но при этом не заканчивается долларом и непустое. Т.е. под такое условие должна подпадать только реальное имя пользователя из второй строки "Account Name:".

                        В итоге, название триггера получается таким:
                        Code:
                        Неверно введён пароль на {HOST.NAME} для {{ITEM.VALUE}.regsub("Account Name:\s*(\S+[^$])[\r\n]","\1")}
                        Наконец, в-третьих, что самое печальное, мне пока что не удалось добиться устойчивой работы такой конструкции.
                        В веб-интерфейсе (например, в списке открытых проблем или триггеров) далеко не всегда макрос в имени триггера раскрывается правильно (иногда остаётся старое значение, иногда - вообще пусто).
                        В оповещениях же (где в теме письма и далее в тексте используется значение макроса {TRIGGER.NAME}) подставляется верное значение, но почему-то при этом обрезается его последний символ.

                        Чувствую, что это перспективное направление, но ещё толком не доделанное; надо сообщать о проблемах разработчикам.
                        Огромное спасибо за проделанную работу.
                        Но у меня все равно чучуть не получается.
                        У меня логи приходят на русском.
                        Название триггера сделал следующее:
                        Code:
                        Неверно введён пароль на {HOST.NAME} для {{ITEM.VALUE}.regsub("Имя учетной записи:\s*(\S+[^$])[\r\n]","\1")
                        Но он как то не правильно выводит. Чувствую что то надо еще сделать, о чем я не догадываюсь (см. скриншот)
                        И еще, у меня версия заббикса 3.0.
                        Attached Files
                        Last edited by jet_one; 14-02-2017, 03:49.

                        Comment

                        • Kos
                          Senior Member
                          Zabbix Certified SpecialistZabbix Certified Professional
                          • Aug 2015
                          • 3405

                          #13
                          Я же изначально писал:
                          Originally posted by kos
                          [...] начиная с версии 3.2, появилась такая возможность как функции макросов. Там можно, например, из последнего значения вырезать нужный кусочек по регулярному выражению.
                          И потом ещё раз упоминал:
                          Ну, у меня-то на "боевом" сервере версия 3.0 (которая lts), поэтому быстро проверить не могу.
                          Сейчас ставлю на тестовый версию 3.2, посмотрим.
                          Нет, не версии 3.0 это работать не будет.
                          Данный функционал появился только в версии 3.2; да, как видно, и там пока ещё местами сыроват.

                          Comment

                          • jet_one
                            Member
                            • Jan 2017
                            • 32

                            #14
                            Originally posted by kos
                            Я же изначально писал:

                            И потом ещё раз упоминал:


                            Нет, не версии 3.0 это работать не будет.
                            Данный функционал появился только в версии 3.2; да, как видно, и там пока ещё местами сыроват.
                            Вопрос: если я сервер обновлю до 3.2, то все агенты тоже придется обновлять? Агенты обновляются в ручную? Или этот процесс можно автоматизировать?

                            Comment

                            • Kos
                              Senior Member
                              Zabbix Certified SpecialistZabbix Certified Professional
                              • Aug 2015
                              • 3405

                              #15
                              Originally posted by jet_one
                              Вопрос: если я сервер обновлю до 3.2, то все агенты тоже придется обновлять? Агенты обновляются в ручную? Или этот процесс можно автоматизировать?
                              Обновлять агентов - желательно, но необязательно. Они совместимы между собой в достаточно широких пределах (у нас, например, до сих пор вместе с сервером 3.0.7 используются агенты 2.2.7). Конечно, нужно понимать, что в старых агентах не будет того функционала, который добавился лишь в новых версиях (например, шифрования трафика или элемента данных service.discovery, которые появились лишь в версии 3.0).

                              Как обновлять - это, к сожалению, больной вопрос, который каждый админ решает сам, поскольку встроенного механизма централизованных обновлений у агента нет. В общем случае ответ на этот вопрос - "так же, как вы изначально этих агентов устанавливали". Т.е. либо вручную, либо используя какие-то механизмы централизованной поддержки рабочих станций, если они в вашей организации есть.

                              Comment

                              Working...