Мониторинг ssh логинов в zabbix

Заголовок немного кривоватый получился, не придумал, как правильно сформулировать. Суть в том, что я хочу мониторить с помощью zabbix удаленные подключения к серверам по ssh. Заббикс будет хранить у себя записи лога с информацией о ssh подключении, а в случае необходимости, отправлять об успешных входах оповещения.

Онлайн-курс по устройству компьютерных сетей

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Введение

Все будет сделано очень просто. Я буду мониторить системный log файл, который содержит информацию о ssh подключениях. В rpm дистрибутивах, в частности, в Centos это /var/log/secure. В deb дистрибутивах Debian/Ubuntu это /var/log/auth.log.

Вначале у меня была идея хранить полностью этот лог в zabbix для разбора каких-то инцидентов на сервере. Это может быть актуально, если у вас нет централизованного сбора логов в каком-то отдельном месте. Потом передумал, так как если у вас используется стандартный ssh порт 22, то лог подключений по ssh будет огромного размера. Хранить его полностью в zabbix - забивать понапрасну базу данных. В итоге решил хранить только информацию об успешных авторизациях.

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

Все будет сделано с использованием штатного функционала zabbix. На хостах не нужно ничего настраивать, кроме выдачи прав на чтение к лог-файлу группе zabbix. Так что придется немного пожертвовать локальной политикой безопасности. По-умолчанию, системный лог не может читать никто, кроме рута. Исправляем это в Centos:

# chgrp zabbix /var/log/secure
# chmod 640 /var/log/secure

и то же самое делаем в Debian/Ubuntu

# chgrp zabbix /var/log/auth.log
# chmod 640 /var/log/auth.log

На хосте все готово. Все остальное делаем на сервере мониторинга.

Если у вас еще нет своего сервера для мониторинга, то рекомендую материалы на эту тему. Для тех, кто предпочитает систему CentOS:

  1. Установка CentOS 8.
  2. Настройка CentOS 8.
  3. Установка и настройка zabbix сервера.

То же самое на Debian 10, если предпочитаете его:

  1. Установка Debian 10.
  2. Базовая настройка Debian.
  3. Установка и настройка zabbix на debian.

Шаблон для мониторинга за SSH подключениями

Я подготовил простой шаблон, который состоит из:

  1. Элемента данных SSH auth, с ключом log[/var/log/secure,"^.*sshd.*(Accepted|closed).*",,,,,] и типом данных - Журнал (лог) Итем для парсинга лога ssh
  2. Триггера с условием {SSH Auth:log[/var/log/secure,"^.*sshd.*(Accepted|closed).*",,,,,].str(Accepted,#1)}=1, который ищет в элементе данных строку Accepted и срабатывает, если ее находит. Триггер для отправки уведомлений о ssh подключении
Не забудьте проверить, где у вас в системе находится лог с информацией о ssh авторизациях, и заменить этот путь в элементе данных.

На практике это все выглядит так. Когда вы подключаетесь по ssh на сервер, в zabbix приходит следующая информация.

Мониторинг за лог файлом ssh подключений

Если включен триггер, то на почту получите уведомление, где сразу в тексте уведомления будет видно пользователя и адрес, с которого он подключился к серверу. Это удобно.

Оповещение о подключении к серверу

После того, как пользователь завершит свой сеанс, получите еще одно уведомление.

Уведомление об отключении от сервера

Данный шаблон просто небольшая заготовка. Условия триггеров, собираемые элементы лога вы можете сами настраивать так, как вам хочется. Можно по аналогии мониторить другие логи.

Скачиваем шаблон для версии 3.4 тут ssh-auth.xml. С другими версиями не проверял.

Заключение

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

Пару слов о мониторинге логов. Для парсинга лога используется регулярное выражение. В данном случае такое: ^.*sshd.*(Accepted|closed).* В это условие попадают все строки, где присутствует слово sshd и обязательно одно из Aceepted или closed. Если будете менять условия парсинга, или возьмете вообще другой лог, то нужно будет подготовить другое регулярное выражение.

Онлайн-курс по устройству компьютерных сетей.

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

77 комментариев

  1. Аноним

    Попробовал ваш способ, работает, но сделал свой велосипед. Добавил ssh элемент данных в котором выполняется скрипт "if w | grep '{$USERLOGIN.NAME}' > /dev/null ; then echo '1'; else echo '0'; fi". Из плюсов - в базе хранится меньше информации только 0 или 1; из минусов - реагирует только на конкретного юзера (но мне это и надо было), тулза w обрезает вывод и имя пользователя может быть неполное.

  2. Если в ключе используется регулярка, то от агента прилетает только строка которая совпадает с ключом, и в базу ложится тоже только она?
    Т.е. фильтрация журнала происходит на стороне агента?

    • В базу ложится только то, что по регулярке проходит. А вот где происходит фильтрация строк, на агенте или на сервере, не знаю. Не проверял никогда. Логично было бы предположить, что на агенте.

  3. Андрей

    Как если не секрет можно отключить ssh -сеессию по срабатыванию триггера?

    • Запросто. Сделайте bash скрипт, который будет сбрасывать соединения или банально перезапускать демон sshd. Либо можно через правила iptables блокировать подключившегося. И запускайте этот скрипт при срабатывании триггера. Это в Zabbix, в действиях можно настроить.

  4. Сергей

    Хм... странно. Элемент данных после добавления имеет статус как "Не поддерживается" Accessible only as active check.
    Триггер имеет статус Неизвестно... Версия Zabbix 4.4.3
    Ubuntu, файл указал верно /var/log/auth.log, права zabbix пользователю дал.
    Сам файл при авторизации обновляется.
    Zabbix что ли не поддерживает данное выражение? Zabbix-agent на наблюдаемом узле пашет.

    • Мониторинг лог файлов возможен только при проверках типа Zabbix Agent Active. Ошибка как раз об этом и говорит - Accessible only as active check. То есть нужно указать активную проверку, а не обычную.

      • Сергей

        Хорошо. Я изменил Zabbix agent на Zabbix agent Active, в целом у всего узла и конкретно у данного шаблона на авторизацию, так же в конфиге у zabbix-agent добавил ServerActive, сам агент ребутнул. Посмотрел доку https://www.zabbix.com/documentation/current/ru/manual/appendix/config/zabbix_agentd , в принципе, так оно и включается в конфиге. А запись так и висит "Accessible only as active check"

        • Думается в узле сети нужно прописать второй "Интерфейсы агента" на порт 10051. ;)

  5. This template only worked on one server (Zabbix localhost), other Linux servers did not work, could not read Secure Log (Centos 7)
    Zabbix V5.0
    Please help me

  6. hi there,
    I know that this is a russian post but i really liked the template, i tried to import it but im getting this issue

    Invalid key "
    log[/var/log/secure,"^.*sshd.*(Accepted|closed).*"]
    " for item "SSH auth" on "SSH Auth": incorrect syntax near "
    log[/var/log/secure,"^.*sshd.*(Accepted|closed).* ...".

    Thank you

  7. На основе этого шаблона добавил новые элементы и триггеры https://diyit.ru/viewtopic.php?f=72&t=142
    Настроено множественное срабатывание т.е при новом пользователе открывается новый триггер
    Закрывается при условии что совпадают теги выхода выхода берутся из скобок пример[8133]
    Не проверено как ведет себя при перезагрузке например если там было 3 пользователя и перезагрузили по идее должно закрыть все сессии триггеры По тегу который идет опять же из регулярки по строке Received

    Настроено действие выкидывать пользователей спустя 12 часов если триггер висит
    Следующей командой who -u|egrep '(tty.*|pts.*)'|sed -e 's/.*. \(.*\) (.*/\1/p'|xargs -n 1 kill -9
    работает там где агент от root запущен от пользователя заббикс может не отработать

    Так же сделал шаблон для логов в SSH Auth journalctl Alt Linux из systemd
    https://diyit.ru/viewtopic.php?f=72&t=140
    Тут есть свои сложности в том что элемент запрашивается раз 1 минуту последнюю строку. В этот момент может произойти входы и выходы одновременные и возьмется один последний и один повиснет либо не сработает. Получать сразу несколько последних строк сказывается на основную работу триггеров. Получит нормальную работу в логе где есть ip подключившегося не вышло так как нет закрытий сессий точнее есть но редко.
    нужно наверное как то сформулировать условия по закрытию триггера по дате например больше 1 дня но в тот же момент должно быть совпадение тегов иначе на закроется.
    А так в целом все работает. У кого будут предложения как сделать более правильно будет не плохо)

    • Спасибо, полезные дополнения, особенно по ssh. Мне откровенно было лень делать отдельный триггер на каждого пользователя. Большой надобности не было, а простого решения сходу не придумал.

      • Не за что)

        • Посмотрел на форуме общий дашборд grafana для обзора сервера и уже на 2 часа залип, переделывая его под себя :) Этими дашбордами можно вечно заниматься :)

          • Это из последней Графаны которая была 26.05.2020 на презентации?

            • Я не знаю из какой версии. Вот отсюда взял дашборд https://diyit.ru/viewtopic.php?f=5&t=103 и переделал под себя. У меня шаблоны английские, плюс метрики некоторые другие. В общем, сделал как мне надо :) Добавил сразу выбор датасорса, чтобы быстро можно было для разных серверов рисовать дашборд. Получилось ничего. Хотя этих дашбордов у меня и так полно. Толку от них особо нет. Просто нравится их делать.

              Вот так получилось:

              • А все понял) там под англ шаблон была дефолтная версия) у меня просто шаблоны на русском что бы было все удобнее более понятно, особенно кто просто смотри из его разряда проблема или нет не вникая в сам заббикс. Поэтому я сидел переделывал связку на русский. Да дашбортов всяких хватает если много наделать за всеми не уследишь, если мало ли какие изменения. Но так прикольные бывают думаешь почему бы и себе не сделать)))
                Я просто сперва подумал про вот это Пятый доклад митапа Meetup2020.Александр Зобнин.Grafana 7.0 и Zabbix плагин - обзор нововведений https://youtu.be/E87C5RTNmeQ
                Как раз пару дней назад было.

  8. Будет небольшая путаница если пользователь откроет несколько консолей на сервере.

    • Это да. Такие ситуации просто не обыграть на стороне заббикса через регулярки. Я вносил некоторые изменения по месту, когдо подобный мониторинг настраивал, чтобы было удобнее и понятнее, но уже не помню, попали ли эти изменения в статью.

      Мне обычно достаточно знать факт, что кто-то подключался к серверу. А сколько раз не принципиально. Главное, что в zabbix лог всех подключений остается. Если что, можно все подробности выяснить.

  9. Возможно кому-то понадобиться, такой же функционал для windows-серверов (русскоязычных):

    Элемент данных:
    Ключ: eventlog[Microsoft-Windows-TerminalServices-LocalSessionManager/Operational,,"Information",,21|23|24|25]
    Тип информации: Журнал (лог)

    Триггер:
    Имя: RDP auth {HOST.NAME1} {{ITEM.VALUE}.iregsub("Пользователь: (.*)[\s].*[\s]Адрес сети источника: (.*)", " user \1 from \2")}
    Выражение: {RDP auth:eventlog[Microsoft-Windows-TerminalServices-LocalSessionManager/Operational,,"Information",,21|23|24|25].str(Успешное переподключение сеанса,#1)}=1 or {RDP auth:eventlog[Microsoft-Windows-TerminalServices-LocalSessionManager/Operational,,"Information",,21|23|24|25].str(Успешный вход в систему,#1)}=1

    На выходе получим сообщение: RDP auth WinSrv user WinSrv\Администратор from 1xx.2xx.1xx.2xx

    Данный триггер срабатывает на вход и переподключение ЛЮБЫХ пользователей по RDP, если Вам необходимо, чтобы триггер срабатывал на определенного пользователя необходимо исправить выражение триггера заменив текст:
    {RDP auth:eventlog[Microsoft-Windows-TerminalServices-LocalSessionManager/Operational,,"Information",,21|23|24|25].str(ИМЯ_ПОЛЬЗОВАТЕЛЯ,#1)}=1

    При копировании проверяйте кавычки.

  10. Аноним

    Годная статья, спасибо!

  11. Дополнение к статье. Если у вас какие-то скрипты регулярно подключаются по ssh, или вы сами и вы не хотите, чтобы триггер срабатывал на эти заходы по ssh, то добавьте дополнительное условие в срабатывание триггера. Например, вот так:

    {SSH Auth:log[/var/log/secure,"^.*sshd.*(Accepted|closed).*"].str(Accepted,#1)}=1 and {SSH Auth:log[/var/log/secure,"^.*sshd.*(Accepted|closed).*"].str(195.86.113.132,#1)}=0

    То есть, чтобы триггер сработал, надо, чтобы в исследуемой строке не было ip адреса 195.86.113.132. Таким образом, вы можете исключить либо отдельные ip адрес, либо отпечатки ключей.

    p.s. Статья и шаблон рабочие. Настроил на днях на версии 4.0.

  12. А в действиях вы создавали новое действие, у меня не отображается ip того кто покдлючился по SSH

    • Точно не помню, но можно для тестов и отдельное действие сделать. Возможно у вас в действии в шаблоне не указан ключ с информацией о значении в итеме, поэтому нет информации из итема.

  13. Здравствуйте, сделал по вашей статье на версии zabbix 4.0.7, т.е. ключ log[/var/log/auth.log,"^.*sshd.*(Accepted|closed).*"] и в триггере {SSH Auth:log[/var/log/auth.log,"^.*sshd.*(Accepted|closed).*"].str(Accepted,#1)}=1. Проблема в следующем, на сервер не приходит лог, просто в последних значениях пусто. Агент активный и со стороны агента ошибок нету. Прошу вас помочь, спасибо.

    • Проверьте в первую очередь, что у zabbix агента есть доступ к лог файлу. Дальше посмотрите лог самого zabbix сервера. Может там будут подсказки.

  14. Аноним

    Изменил имя триггера

    Данные Mar 11 13:35:24 pverayon sshd[20641]: Accepted password for root from 192.168.10.50 port 45244 ssh2
    Имя триггера SSH auth {HOST.NAME1} {{ITEM.VALUE}.iregsub("Accepted password for (.*)port", "\1")}
    Что вышло SSH auth proxmox03 root from 192.168.10.50

    Сделал 2 шаблона
    Один для /var/log/auth.log
    Второй для /var/log/secure

    • Отличная идея, спасибо. Это удобно. Мне даже в голову не пришло, что в имени триггера такие штуки поддерживаются. Сейчас проверю у себя.

    • Проверил, хорошо работает. Тем, кто будет копировать, не забудьте кавычки потом поправить.

      • Муратхан

        Подскажите какие именно ковычки подправить чет не понял=)

        • Сейчас, по идее, всё верно указано. Раньше на сайте с кавычками какие-то проблемы в отображении были.

          • Муратхан

            Странно у меня не дает инфы не какой нормально ладно поковыряемся еще. Спасибо

  15. Добавьте qiwi для перевода денег

  16. Спасибо за статью :) настроил всё заработал, всё ОК. Однако более интересно мне кажется узнать, о количество неудачных попытках пользователей при подключений, а также добовление нового пользователя. или пользователи, которые были забанены, как думаете можно такое реализовать, если переделать ваш template?

    • Не вижу никаких проблем. Меняйте регулярку в ключе для парсинга лог файла и фиксируйте те события, что вам интересны.

      • Спосибо, что ответили :) к сожелению регулярки мой минус пытался, изхменить не получился, теперь у меня к вам будет 2 вопроса?

        1) В Интернете Я нашёл статьи где показывают как можно через терминал вывести то, что нужно из лог файла SSH, можно ли использовать эти команды, а команды состоят из регулярных выражений

        2) Можете посоветовать книгу по регулярным выражениям? Да в Интернете их много, но Вы наверное сталкивались с эти раньше как решили этот недостаток ?

        3) Может быть python начать изучить ?

        • 1. Не знаю, надо смотреть о чем речь. Вряд ли получится просто взять и использовать.
          2. Я сам не силен в них. Когда мне надо что-то написать, я начинаю гуглить, открываю онлайн сервис по проверке регулярных выражений и начиню напрягать мозг. Всегда в итоге получается сделать так, как надо. Если не получается, спрашиваю в чате, мне помогают.
          3. Конечно надо. Но я сам так и не выучил, нет времени.

  17. Добрый день, А Вы тестировали данный функционал на Zabbix 4? У меня Zabbix 4.0.1 и клиент и сервер. xml скачан и установлен. Но в логе постоянно вот такая ошибка:

    18258:20181109:124233.094 active check "log[/var/log/secure,"^.*sshd.*(Accepted|closed).*"]" is not supported: Cannot open file "/var/log/secure": [13] Permission denied
     18258:20181109:125633.345 active check "log[/var/log/secure,"^.*sshd.*(Accepted|closed).*"]" is not supported: Cannot open file "/var/log/secure": [13] Permission denied
     18258:20181109:131033.594 active check "log[/var/log/secure,"^.*sshd.*(Accepted|closed).*"]" is not supported: Cannot open file "/var/log/secure": [13] Permission denied
     18258:20181109:132433.844 active check "log[/var/log/secure,"^.*sshd.*(Accepted|closed).*"]" is not supported: Cannot open file "/var/log/secure": [13] Permission denied
     18258:20181109:133833.101 active check "log[/var/log/secure,"^.*sshd.*(Accepted|closed).*"]" is not supported: Cannot open file "/var/log/secure": [13] Permission denied
     18258:20181109:135233.360 active check "log[/var/log/secure,"^.*sshd.*(Accepted|closed).*"]" is not supported: Cannot open file "/var/log/secure": [13] Permission denied
    Группа Zabbix, права 640, хотя уже пробовал и 644 - ничего не изменилось! (-rw-r-----. 1 root   zabbix    27554 ноя  9 13:59 secure)

    Есть идеи?

    • В логе четко написано, что у zabbix агента не хватает прав на чтение файла. Надо разбираться, почему.

      • В debug = 5 лог следующий:
        9712:20181110:143247.865 __zbx_zbx_setproctitle() title:'active checks #1 [getting list of active checks]'
        9712:20181110:143247.865 In refresh_active_checks() host:'127.0.0.1' port:10051
        9712:20181110:143247.867 sending [{"request":"active checks","host":"srv"}]
        9712:20181110:143247.868 before read
        9712:20181110:143247.878 got [{"response":"success","data":[{"key":"log[/var/log/secure,\"^.*sshd.*(Accepted|closed).*\"]","delay":60,"lastlogsize":0,"mtime":0}]}]
        9712:20181110:143247.878 In parse_list_of_checks()
        9712:20181110:143247.879 In add_check() key:'log[/var/log/secure,"^.*sshd.*(Accepted|closed).*"]' refresh:60 lastlogsize:0 mtime:0
        9712:20181110:143247.879 End of add_check()
        9712:20181110:143247.879 End of parse_list_of_checks():SUCCEED
        9712:20181110:143247.880 End of refresh_active_checks():SUCCEED
        9712:20181110:143247.880 __zbx_zbx_setproctitle() title:'active checks #1 [processing active checks]'
        9712:20181110:143247.880 In process_active_checks() server:'127.0.0.1' port:10051
        9712:20181110:143247.881 In process_logrt() flags:0x06 filename:'/var/log/secure' lastlogsize:0 mtime:0
        9712:20181110:143247.881 In add_logfile() filename:'/var/log/secure' mtime:1541849429 size:35450
        9712:20181110:143247.881 add_logfile() logfiles:0x55bebcc45b00 logfiles_alloc:64
        9712:20181110:143247.881 End of add_logfile()
        9712:20181110:143247.882 End of process_logrt():FAIL
        9712:20181110:143247.882 active check "log[/var/log/secure,"^.*sshd.*(Accepted|closed).*"]" is not supported: Cannot open file "/var/log/secure": [13] Permission denied
        9712:20181110:143247.882 In process_value() key:'srv:log[/var/log/secure,"^.*sshd.*(Accepted|closed).*"]' value:'Cannot open file "/var/log/secure": [13] Permission denied'
        9712:20181110:143247.883 In send_buffer() host:'127.0.0.1' port:10051 entries:0/100
        9712:20181110:143247.883 End of send_buffer():SUCCEED
        9712:20181110:143247.883 buffer: new element 0
        9712:20181110:143247.884 End of process_value():SUCCEED
        9712:20181110:143247.884 End of process_active_checks()
        9712:20181110:143247.884 In get_min_nextcheck()
        9712:20181110:143247.884 End of get_min_nextcheck():-1
        9712:20181110:143247.885 __zbx_zbx_setproctitle() title:'active checks #1 [idle 1 sec]'
        9708:20181110:143248.138 __zbx_zbx_setproctitle() title:'collector [processing data]'
        9708:20181110:143248.139 In update_cpustats()
        9708:20181110:143248.139 End of update_cpustats()
        9708:20181110:143248.140 __zbx_zbx_setproctitle() title:'collector [idle 1 sec]'
        9709:20181110:143248.230 __zbx_zbx_setproctitle() title:'listener #1 [processing request]'
        9709:20181110:143248.231 Requested [vfs.fs.size[/boot,used]]
        9709:20181110:143248.231 In zbx_execute_threaded_metric() key:'vfs.fs.size'
        12197:20181110:143248.234 executing in data process for key:'vfs.fs.size'
        9709:20181110:143248.240 End of zbx_execute_threaded_metric():SYSINFO_SUCCEED ''
        9709:20181110:143248.240 Sending back [258117632]
        9709:20181110:143248.240 __zbx_zbx_setproctitle() title:'listener #1 [waiting for connection]'
        9712:20181110:143248.885 In send_buffer() host:'127.0.0.1' port:10051 entries:1/100
        9712:20181110:143248.886 JSON before sending [{"request":"agent data","session":"e5652652057c9fb7810286f25e91ca49","data":[{"host":"srv","key":"log[/var/log/secure,\"^.*sshd.*(Accepted|closed).
        *\"]","value":"Cannot open file \"/var/log/secure\": [13] Permission denied","state":1,"id":2,"clock":1541849567,"ns":883980887}],"clock":1541849568,"ns":886882096}]
        9712:20181110:143248.888 JSON back [{"response":"success","info":"processed: 1; failed: 0; total: 1; seconds spent: 0.000418"}]
        9712:20181110:143248.888 In check_response() response:'{"response":"success","info":"processed: 1; failed: 0; total: 1; seconds spent: 0.000418"}'
        9712:20181110:143248.889 info from server: 'processed: 1; failed: 0; total: 1; seconds spent: 0.000418'

        Может SeLinux всему виной?

        • Проблема была в SeLinux, вылечилось так:
          # cat /var/log/audit/audit.log | grep zabbix_agentd | grep denied | audit2allow -M zabbix_agent_secure
          # semodule -i zabbix_agent_secure.pp
          # systemctl restart zabbix-agent.service

          После этого письма приходят. Все работает. Только почему-то не такие как у Вас:

          Problem started at 21:36:27 on 2018.11.10
          Problem name: SSH authentication on server
          Host: server
          Severity: Information

          Original problem ID: 546

          Problem has been resolved at 21:37:27 on 2018.11.10
          Problem name: SSH authentication on server
          Host: server
          Severity: Information

          Original problem ID: 546

          Подскажите, что-то может не так настроил в скрипте или в Zabbix?

  18. Привет! есть проблема, после выхода система видимо пишет в файл и меняет права на root/root и снова нет прав на файл, есть идеи как решить проблему?

  19. Аноним

    Не хотели бы дополнить статью мониторингом логов из journalctl? Раньше аналогично вашей статье мониторил логи на центосе, сейчас перешли на дистрибутив где логи хранятся в journalctl - было бы интересно почитать как там это организовать.

  20. Андрей

    Добрый день. Сделал как вы описали. Мне пишет в Zabbix: Not supported by Zabbix Agent Что я могу пропустить или сделать не правильно? Я экспортировал ваш файлик с настройками, результат тот же.

    • В веб интерфейсе или в логе сервера можно посмотреть ошибку из-за которой итем становится неподдерживаемым. Либо путь неправильный к логу указан, либо прав на чтение у заббикса нет. Других вариантов я не вижу.

      • Андрей

        Это все что мне показывают логи
        1296:20180822:094445.315 item "router:log[/var/log/auth.log,»^.*sshd.*(Accepted|closed).*»,,,,,]" became not supported: Not supported by Zabbix Agent
        1297:20180822:094446.318 item "router_kharkov:log[/var/log/auth.log,»^.*sshd.*(Accepted|closed).*»,,,,,]" became not supported: Not supported by Zabbix Agent
        1295:20180822:100852.237 item "router:log[/var/log/auth.log,"^.*sshd.*(Accepted|closed).*",,,,,]" became not supported: Not supported by Zabbix Agent
        1297:20180822:100854.239 item "router_kharkov:log[/var/log/auth.log,"^.*sshd.*(Accepted|closed).*",,,,,]" became not supported: Not supported by Zabbix Agent

        • А через web интерфейс, если нажать в списке итемов на сообщение с ошибкой, показано описание ошибки. Я сталкивался с ошибкой "too many arguments". В этом случае я просто убирал все запятые после регулярного выражения в ключе итема. Он становился таким:
          log[/var/log/secure,»^.*sshd.*(Accepted|closed).*»]

          • Андрей

            Нет, описания нет. Пишет только: "Not supported by Zabbix Agent".Интересно то, что на zabbix сервере все работает. Непонятно толь потому что там Centos а на другом сервере Debian, толи потому что zabbix сам себя мониторит.

          • Привет! У меня точно такая же проблема «too many arguments» , Я заново редактировал все свои шаблоны, у меня Ubuntu редактировал вот так " log[/var/log/auth.log,»^.*sshd.*(Accepted|closed).*»] " . а дальше ни какой информация не собирается, хотя ошибка «too many arguments» исчезнет.

            Может быть покажете свой изменённый шаблон :)

            • А это все изменения и есть. Буквально на днях настраивал на пачке серверов мониторинг ssh. Залил свой шаблон и на половине серверов увидел как раз такую же ошибку. Не стал разбираться, с чем связано, просто убрал все запятые в настройке итема. Стало вот так:

              log[/var/log/secure,"^.*sshd.*(Accepted|closed).*"]

              После этого все заработало.

              • Да :) из-за кавычек не работало, всё решил! Спасибо.

                Я потом настроил телеграмм "смс", в котором приходит в основном, информация о том, что:

                Subj: Problem: SSH authentication on OpenVPN-srv
                Message:Problem started at 11:54:09 on 2018.10.03
                Problem name: SSH authentication on OpenVPN-srv
                Host: OpenVPN-srv
                Severity: Information

                тут же не плохо было бы сделать так, чтобы на телеграмм пришла ещё и имя user, который вошёл в систему, ну конечно эта в самом Zabbix есть, но в телеграмм....

  21. Аноним

    Спалил свой ssh порт для брутфорса :D

    • Вообще, он у меня везде разный. Тут в логе не тот порт, что нужен. Это локальный у исходящего подключения.

  22. Есть еще один путь, это используя файл в самой ssh sshrc, в нём указываешь скрипт который будет запускаться во время логина юзера по ssh. У меня например используется ссылка на скрипт баша /etc/ssh/scripts/ssh_notif в котором идёт разборка.
    "
    #!/bin/bash
    usr=$USER
    ip_con="$SSH_CONNECTION"
    ip_con_it="sed 's/\(.*\) \(.*\) \(.*\) \(.*\)' $ip_con"
    echo "$usr"
    echo "$ip_con_it"
    "

    • Не очень понял, как все это работает? Скрипт запускается во время логина пользователя, а дальше что?

      • Дмитрий

        ну это не тот скрипт который в работе тот который в работе отправляет смс на админов о подключении.

    • Аноним

      Я вот подумал а ведь если нужно то можно сделать проверку по разрешенному IP и/или количеству сессий и отключать если что то не так.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar