Home » Zabbix » Мониторинг ssh логинов в zabbix

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

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

Введение

Все будет сделано очень просто. Я буду мониторить системный 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 7.
  2. Настройка CentOS 7.
  3. Установка и настройка zabbix сервера.

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

  1. Установка Debian 9.
  2. Базовая настройка Debian 9.
  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. Если будете менять условия парсинга, или возьмете вообще другой лог, то нужно будет подготовить другое регулярное выражение.

Помогла статья? Есть возможность отблагодарить автора

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

  1. Есть еще один путь, это используя файл в самой 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»
    «

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

      • Дмитрий

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

  2. Аноним

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

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

  3. Андрей

    Добрый день. Сделал как вы описали. Мне пишет в 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 сам себя мониторит.

  4. Аноним

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

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

Ваш e-mail не будет опубликован.

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.