Входы Выходы Пользователей SSH auth.log Debian Ubuntu

Вход Выход пользователей из системы Windows Linux
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 220
Зарегистрирован: Вс фев 17, 2019 17:47
Репутация: 4
Откуда: Вологодская область
Контактная информация:

Входы Выходы Пользователей SSH auth.log Debian Ubuntu

Сообщение Артём Мамзиков » Чт май 28, 2020 12:28 #1

Изначально шаблон был взят с данного ресурса Мониторинг ssh логинов в zabbix

Шаблон для Входы Выходы Пользователей SSH Auth journalctl Alt Linux

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

Делая шаблон для Входы Выходы Пользователей SSH Auth journalctl Alt Linux и более подробно разобравшись в логах.

Пришел к такому выводу если создавать множество триггеров и закрывать их по совпадению тегов т.е. номерам их сессий то нужно использовать ключ log[/var/log/auth.log,"^.*systemd-logind.*(New|Removed).*"] тут выходит следующий триггер с номером сессии SSH auth Zabbix server session 37641 of user root. не так красиво как с IP откуда было подключение, но зато для тегов есть постоянные номера сессий открытия и закрытия.

Для ключа log[/var/log/auth.log,"^.*sshd.*(Accepted|Disconnected|disconnect).*"] более информационный триггер с IP но беда в том что очень редко а лог пишутся строки для закрытия триггеров тегами например
sshd[8133]: Disconnected from 192.168.90.151 port 42130 или sshd[8133]: Received disconnect from 192.168.90.151 port 42130:11: Normal Shutdown
В основном пишется строка sshd[29522]: pam_unix(sshd:session): session closed for user root но данная строка не содержит индификатора и закроет все проблемы если ссылаться на ее для закрытия проблемы.

А что если брать значения для тегов из [8133]: Accepted а это идея закрытие же [8133]: pam_unix(sshd:session): session closed
И так например есть у нас следующие полные данные
Показать
Входы открытие сессий
sshd[8133]: Accepted password for root from 192.168.60.111 port 42130 ssh2
sshd[8133]: pam_unix(sshd:session): session opened for user root by (uid=0)
systemd-logind[446]: New session 37507 of user root.

Выходы закрытии сессий
sshd[8133]: Received disconnect from 192.168.60.111 port 42130:11: Normal Shutdown не всегда есть
sshd[8133]: Disconnected from 192.168.60.111 port 42130 не всегда есть
sshd[8133]: pam_unix(sshd:session): session closed for user root есть всегда!
systemd-logind[446]: Removed session 37507. есть всегда!

Искать строку для входа можем по следующим регуляркам или содержанием строки Accepted ; opened ; New
Искать строку для выхода можем по следующим регуляркам или содержанием строки closed ; Removed и не совсем подходит disconnect ; Disconnected
Поиск 2 значения для поиска еще до значения в скобках
Показать
Запущенные сессии
sshd[8133]: Accepted password for root from 192.168.90.151 port 42130 ssh2 Accepted есть from
sshd[8133]: pam_unix(sshd:session): session opened for user root by (uid=0) session opened есть session
systemd-logind[446]: New session 37507 of user root. New session есть session
CRON[25217]: pam_unix(cron:session): session opened for user root by (uid=0) session opened есть session


Завершенные сессии
sshd[8133]: Received disconnect from 192.168.90.151 port 42130:11: Normal Shutdown Received disconnect есть from не всегда есть данная строка (
sshd[8133]: Disconnected from 192.168.90.151 port 42130 Disconnected есть from не всегда есть данная строка (
sshd[8133]: pam_unix(sshd:session): session closed for user root session closed есть session
systemd-logind[446]: Removed session 37507. Removed session есть session
CRON[4509]: pam_unix(cron:session): session closed for user root session closed есть session

log[/var/log/auth.log,"^.*sshd.*(Accepted|opened|New|Disconnected|closed|disconnect|Removed).*"]
Получаем Тег session-Deb.Ubu-{{ITEM.VALUE}.iregsub("\[(.*)\]:", "\1")} где \обратная черта экранирует [ ] в которых нужное нам значение для сравнений сессий))
Функции в основном применяемые в данных триггерах
Показать
regexp (шаблон,<сек|#кол-во>)
Проверка, совпадает ли последне (самое новое) значение с регулярным выражением.
iregexp (<шаблон>,<сек|#кол-во>)
Функция нечувствительный к регистру аналог функции regexp().
str (шаблон,<сек|#кол-во>)
Поиск строки в последнем (самом новом) значении. шаблон - требуемая строка
сек или #кол-во - период вычисления в секундах или в последних собранных значениях (начинается с решетки). В этом случае, может быть обработано более одного значения. Поддерживаемые типы значений: str, text, log

Результат:
1 - найдено
0 - в противном случае
Если обрабатывается более одного значения, '1' возвращается, если имеется по крайней мере одно совпадающее значение.
Эта функция является чувствительной к регистру.
Ищем в логе что взять после перезапуска для закрытия триггеров сессий сброса
Показать
May 28 18:39:24 ZABBIXSERVER systemd-logind[391]: Watching system buttons on /dev/input/event3 (Power Button)
May 28 18:39:24 ZABBIXSERVER systemd-logind[391]: Watching system buttons on /dev/input/event4 (Sleep Button)
May 28 18:39:24 ZABBIXSERVER systemd-logind[391]: Watching system buttons on /dev/input/event5 (Video Bus)
May 28 18:39:30 ZABBIXSERVER sshd[473]: Server listening on 0.0.0.0 port 22.
May 28 18:39:30 ZABBIXSERVER sshd[473]: Server listening on :: port 22.
May 28 18:39:38 ZABBIXSERVER sshd[473]: Received SIGHUP; restarting.
May 28 18:39:40 ZABBIXSERVER sshd[473]: Server listening on 0.0.0.0 port 22.
May 28 18:39:40 ZABBIXSERVER sshd[473]: Server listening on :: port 22.

May 28 19:09:01 ZABBIXSERVER CRON[1985]: pam_unix(cron:session): session opened for user root by (uid=0)
May 28 19:09:01 ZABBIXSERVER CRON[1985]: pam_unix(cron:session): session closed for user root
АВТОРИЗАЦИЯ
May 28 19:12:47 ZABBIXSERVER sshd[2086]: Accepted password for root from 192.168.175.8 port 65129 ssh2
May 28 19:12:47 ZABBIXSERVER sshd[2086]: pam_unix(sshd:session): session opened for user root by (uid=0)
May 28 19:12:47 ZABBIXSERVER systemd-logind[391]: New session 2 of user root.
May 28 19:12:47 ZABBIXSERVER systemd: pam_unix(systemd-user:session): session opened for user root by (uid=0)

shutdown -r now -Перезагрузка
May 28 19:16:10 ZABBIXSERVER sshd[2086]: Exiting on signal 15
May 28 19:16:10 ZABBIXSERVER sshd[2086]: pam_unix(sshd:session): session closed for user root
May 28 19:16:10 ZABBIXSERVER sshd[473]: Received signal 15; terminating.
May 28 19:16:55 ZABBIXSERVER systemd-logind[394]: New seat seat0.
May 28 19:16:55 ZABBIXSERVER systemd-logind[394]: Watching system buttons on /dev/input/event3 (Power Button)
May 28 19:16:55 ZABBIXSERVER systemd-logind[394]: Watching system buttons on /dev/input/event4 (Sleep Button)
May 28 19:16:55 ZABBIXSERVER systemd-logind[394]: Watching system buttons on /dev/input/event5 (Video Bus)
May 28 19:16:59 ZABBIXSERVER sshd[464]: Server listening on 0.0.0.0 port 22.
May 28 19:16:59 ZABBIXSERVER sshd[464]: Server listening on :: port 22.
May 28 19:17:02 ZABBIXSERVER CRON[508]: pam_unix(cron:session): session opened for user root by (uid=0)
May 28 19:17:02 ZABBIXSERVER CRON[508]: pam_unix(cron:session): session closed for user root
May 28 19:17:03 ZABBIXSERVER sshd[464]: Received SIGHUP; restarting.
May 28 19:17:03 ZABBIXSERVER sshd[464]: Server listening on 0.0.0.0 port 22.
May 28 19:17:03 ZABBIXSERVER sshd[464]: Server listening on :: port 22.
АВТОРИЗАЦИЯ
May 28 19:23:33 ZABBIXSERVER sshd[1557]: Accepted password for root from 192.168.175.8 port 65229 ssh2
May 28 19:23:33 ZABBIXSERVER sshd[1557]: pam_unix(sshd:session): session opened for user root by (uid=0)
May 28 19:23:33 ZABBIXSERVER systemd-logind[394]: New session 2 of user root.
May 28 19:23:33 ZABBIXSERVER systemd: pam_unix(systemd-user:session): session opened for user root by (uid=0)

shutdown -h now - выключение
May 28 19:31:23 ZABBIXSERVER systemd-logind[405]: New seat seat0.
May 28 19:31:23 ZABBIXSERVER systemd-logind[405]: Watching system buttons on /dev/input/event3 (Power Button)
May 28 19:31:23 ZABBIXSERVER systemd-logind[405]: Watching system buttons on /dev/input/event4 (Sleep Button)
May 28 19:31:23 ZABBIXSERVER systemd-logind[405]: Watching system buttons on /dev/input/event5 (Video Bus)
May 28 19:31:27 ZABBIXSERVER sshd[457]: Server listening on 0.0.0.0 port 22.
May 28 19:31:27 ZABBIXSERVER sshd[457]: Server listening on :: port 22.
May 28 19:31:31 ZABBIXSERVER sshd[457]: Received SIGHUP; restarting.
May 28 19:31:32 ZABBIXSERVER sshd[457]: Server listening on 0.0.0.0 port 22.
May 28 19:31:32 ZABBIXSERVER sshd[457]: Server listening on :: port 22.
АВТОРИЗАЦИЯ
May 28 19:34:26 ZABBIXSERVER sshd[1496]: Accepted password for root from 192.168.175.8 port 65425 ssh2
May 28 19:34:26 ZABBIXSERVER sshd[1496]: pam_unix(sshd:session): session opened for user root by (uid=0)
May 28 19:34:26 ZABBIXSERVER systemd-logind[405]: New session 1 of user root.
May 28 19:34:26 ZABBIXSERVER systemd: pam_unix(systemd-user:session): session opened for user root by (uid=0)
Если выполнена перезагрузка или случилось выключение и был выполнен вход пользователей нужно как то закрыть триггеры так как сами они уже не закроются
В логе после перезапуска есть строка содержащая Button или Received если строка обнаружена закрываем все триггеры
Делаем тег {{ITEM.VALUE}.iregsub("(Received .*)", "\1")}

Элемент данных получаем
Ключ log[/var/log/auth.log,"^.*sshd.*(Accepted|closed|Received).*"]
SSH auth.log Debian Ubuntu Элемент данных Accepted.jpg
SSH auth.log Debian Ubuntu Элемент данных Accepted.jpg
Триггер
Имя SSH auth {HOST.NAME1} {{ITEM.VALUE}.iregsub("Accepted password for (.*)port", "\1")}
Важность Информационная

Выражение проблемы (строка содержит Accepted и значение новое) срабатывает триггер
{SSH Auth:log[/var/log/auth.log,"^.*sshd.*(Accepted|closed|Received).*"].str(Accepted,#1)}=1 and
{SSH Auth:log[/var/log/auth.log,"^.*sshd.*(Accepted|closed|Received).*"].diff(0)}=1

Генерация ОК событий Выражение восстановления

Выражение восстановления (если новое значение содержит closed закрывает триггер или Button Received для закрытия всех триггеров после перезапуска)
{SSH Auth:log[/var/log/auth.log,"^.*sshd.*(Accepted|closed|Received).*"].str(closed,#1)}=1 or
{SSH Auth:log[/var/log/auth.log,"^.*sshd.*(Accepted|closed|Received).*"].str(Received,#1)}=1

Режим генерации событий ПРОБЛЕМА Множественный для каждой отдельной сессии (пользователя) создаем новый триггер
Тег совпадения session-Deb.Ubu-{{ITEM.VALUE}.iregsub("\[(.*)\]:", "\1")}{{ITEM.VALUE}.iregsub("(Received .*)", "\1")}

определяем код сессии {{ITEM.VALUE}.iregsub("\[(.*)\]:", "\1")} для открытия и закрытия триггера определенного пользователя
Для закрытия всех триггеров если был перезапуск {{ITEM.VALUE}.iregsub("(Received .*)", "\1")}
SSH auth.log Debian Ubuntu Триггер данных Accepted.jpg
SSH auth.log Debian Ubuntu Триггер данных Accepted.jpg
Теги Триггера в ячейке имя
session-Deb.Ubu-{{ITEM.VALUE}.iregsub("\[(.*)\]:", "\1")}
{{ITEM.VALUE}.iregsub("(Received .*)", "\1")}
SSH auth.log Debian Ubuntu Триггер Теги данных Accepted.jpg
SSH auth.log Debian Ubuntu Триггер Теги данных Accepted.jp
Так же есть второй вариант без определения IP
systemd-logind[446]: New session 37507 of user root.
systemd-logind[446]: Removed session 37507

Ключ log[/var/log/auth.log,"^.*systemd-logind.*(New|Removed|Button).*"]
Выбираем строкиначинающиеся с systemd-logind и содержащие New вход новая сессия |Removed-Выход завершения сессии|Button - перезагрузка закрыть все сесии.
SSH auth.log Debian Ubuntu Элемент данных systemd-logind.jpg
SSH auth.log Debian Ubuntu Элемент данных systemd-logind
Триггер
Имя SSH auth {HOST.NAME1} {{ITEM.VALUE}.iregsub("(session .*)", "\1")}
Важность Информационная
Выражение проблемы
{SSH Auth:log[/var/log/auth.log,"^.*systemd-logind.*(New|Removed|Button).*"].str(New session,#1)}=1 and
{SSH Auth:log[/var/log/auth.log,"^.*systemd-logind.*(New|Removed|Button).*"].diff(0)}=1

Генерация ОК событий Выражение восстановления
Выражение восстановления
{SSH Auth:log[/var/log/auth.log,"^.*systemd-logind.*(New|Removed|Button).*"].str(Removed session,#1)}=1 or
{SSH Auth:log[/var/log/auth.log,"^.*systemd-logind.*(New|Removed|Button).*"].str(Button,#1)}=1

Режим генерации событий ПРОБЛЕМА Множественный
ОК событие закрывает Все проблемы если значения тегов совпадают

Теги для совпадения session-Deb.Ubu{{ITEM.VALUE}.iregsub("session ([0-9]+)( of|.)", "\1")}{{ITEM.VALUE}.iregsub("^.*(Button).*", "\1")}
SSH auth.log Debian Ubuntu Триггер systemd-logind.jpg
SSH auth.log Debian Ubuntu Триггер systemd-logind.jpg
Теги в ячейке Имя
session-Deb.Ubu{{ITEM.VALUE}.iregsub("session ([0-9]+)( of|.)", "\1")}
{{ITEM.VALUE}.iregsub("^.*(Button).*", "\1")}
SSH auth.log Debian Ubuntu Триггер теги systemd-logind.jpg
SSH auth.log Debian Ubuntu Триггер теги systemd-logind
Скачать
SSH auth.log Debian Ubuntu.zip
SSH auth.log Debian Ubuntu.zip
(1.84 КБ) 10 скачиваний
Настройка Хоста если не идут данные из лога
мониторить системный log файл, который содержит информацию о ssh подключениях.
В rpm дистрибутивах, в частности, в Centos это /var/log/secure. В deb дистрибутивах Debian/Ubuntu это /var/log/auth.log.
Все будет сделано с использованием штатного функционала zabbix.
На хостах не нужно ничего настраивать, кроме выдачи прав на чтение к лог-файлу группе zabbix.
# chgrp zabbix /var/log/secure
# chmod 640 /var/log/secure
в Debian/Ubuntu
# chgrp zabbix /var/log/auth.log
# chmod 640 /var/log/auth.log
# chmod g+r /var/log/auth.log
Перезапустить агент
Шаблон тестов и экспериметов
Показать
Элементы ключи
log[/var/log/auth.log,"^.*sshd.*(Accepted|closed|Received).*"]

log[/var/log/auth.log,"^.*systemd-logind.*(New|Removed|Button).*"]

log[/var/log/auth.log,"^.*sshd.*(Accepted|Disconnected|disconnect).*"]

log[/var/log/auth.log,"^.*(Accepted|opened|New|Disconnected|closed|disconnect|Removed|Button|Received).*"]
test-SSH auth.log Debian Ubuntu Элементы.jpg
test-SSH auth.log Debian Ubuntu Элементы.jpg
Триггеры
1
Проблема: {testSSH Auth:log[/var/log/auth.log,"^.*sshd.*(Accepted|closed|Received).*"].str(Accepted,#1)}=1 and {testSSH Auth:log[/var/log/auth.log,"^.*sshd.*(Accepted|closed|Received).*"].diff(0)}=1

Восстановление: {testSSH Auth:log[/var/log/auth.log,"^.*sshd.*(Accepted|closed|Received).*"].str(closed,#1)}=1 or {testSSH Auth:log[/var/log/auth.log,"^.*sshd.*(Accepted|closed|Received).*"].str(Button,#1)}=1

2
Проблема: {testSSH Auth:log[/var/log/auth.log,"^.*systemd-logind.*(New|Removed|Button).*"].str(New session,#1)}=1 and {testSSH Auth:log[/var/log/auth.log,"^.*systemd-logind.*(New|Removed|Button).*"].diff(0)}=1

Восстановление: {testSSH Auth:log[/var/log/auth.log,"^.*systemd-logind.*(New|Removed|Button).*"].str(Removed session,#1)}=1 or {testSSH Auth:log[/var/log/auth.log,"^.*systemd-logind.*(New|Removed|Button).*"].str(Login Service,#1)}=1

3
Проблема: {testSSH Auth:log[/var/log/auth.log,"^.*(Accepted|opened|New|Disconnected|closed|disconnect|Removed|Button|Received).*"].iregexp(^.*New session)}=1 or {testSSH Auth:log[/var/log/auth.log,"^.*(Accepted|opened|New|Disconnected|closed|disconnect|Removed|Button|Received).*"].iregexp(^.*Accepted)}=1 or {testSSH Auth:log[/var/log/auth.log,"^.*(Accepted|opened|New|Disconnected|closed|disconnect|Removed|Button|Received).*"].iregexp(^.*opened)}=1 and {testSSH Auth:log[/var/log/auth.log,"^.*(Accepted|opened|New|Disconnected|closed|disconnect|Removed|Button|Received).*"].diff(0)}=1
Восстановление: {testSSH Auth:log[/var/log/auth.log,"^.*(Accepted|opened|New|Disconnected|closed|disconnect|Removed|Button|Received).*"].iregexp(^.*New session)}=0 or {testSSH Auth:log[/var/log/auth.log,"^.*(Accepted|opened|New|Disconnected|closed|disconnect|Removed|Button|Received).*"].iregexp(^.*Accepted)}=0 or {testSSH Auth:log[/var/log/auth.log,"^.*(Accepted|opened|New|Disconnected|closed|disconnect|Removed|Button|Received).*"].iregexp(^.*opened)}=0 and {testSSH Auth:log[/var/log/auth.log,"^.*(Accepted|opened|New|Disconnected|closed|disconnect|Removed|Button|Received).*"].iregexp(^.*Disconnected)}=1 or {testSSH Auth:log[/var/log/auth.log,"^.*(Accepted|opened|New|Disconnected|closed|disconnect|Removed|Button|Received).*"].iregexp(^.*disconnect)}=1 or {testSSH Auth:log[/var/log/auth.log,"^.*(Accepted|opened|New|Disconnected|closed|disconnect|Removed|Button|Received).*"].iregexp(^.*closed)}=1 or {testSSH Auth:log[/var/log/auth.log,"^.*(Accepted|opened|New|Disconnected|closed|disconnect|Removed|Button|Received).*"].iregexp(^.*Removed)}=1

4
Проблема: {testSSH Auth:log[/var/log/auth.log,"^.*sshd.*(Accepted|Disconnected|disconnect).*"].iregexp(^.*Accepted)}=1 and {testSSH Auth:log[/var/log/auth.log,"^.*sshd.*(Accepted|Disconnected|disconnect).*"].diff(0)}=1
Восстановление: {testSSH Auth:log[/var/log/auth.log,"^.*sshd.*(Accepted|Disconnected|disconnect).*"].iregexp(^.*Accepted)}=0 and {testSSH Auth:log[/var/log/auth.log,"^.*sshd.*(Accepted|Disconnected|disconnect).*"].iregexp(^.*Disconnected)}=1 or {testSSH Auth:log[/var/log/auth.log,"^.*sshd.*(Accepted|Disconnected|disconnect).*"].iregexp(^.*disconnect)}=1

5
{testSSH Auth:log[/var/log/auth.log,"^.*sshd.*(Accepted|closed|Received).*"].str(Accepted,#1)}=1
test-SSH auth.log Debian Ubuntu Триггеры.jpg
test-SSH auth.log Debian Ubuntu Триггеры.jpg

Скачать
test-SSH auth.log Debian Ubuntu.zip
test-SSH auth.log Debian Ubuntu.zip
(2.29 КБ) 2 скачивания

Обычный не переделывал не начем тестировать думаю можно по аналогии как на debian только путь на файл лога поменять
Скачать
SSH Auth secure Centos.zip
SSH Auth secure Centos.zip
(1.49 КБ) 4 скачивания

Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 220
Зарегистрирован: Вс фев 17, 2019 17:47
Репутация: 4
Откуда: Вологодская область
Контактная информация:

Входы Выходы Пользователей SSH auth.log Debian Ubuntu

Сообщение Артём Мамзиков » Пт май 29, 2020 14:22 #2

Действие Завершение Сеанса Пользователей Linux дольше 12 часов сессия

Читаем тут

Ответить Вложения 11

Вернуться в «Мрниторинг Сессий Пользователей в OS»