LINUX.ORG.RU

Обнаружение события ( например, авторизации ssh)

 ,


0

2

Здраствуйте, люди добрые! Как обнаружить событие (к примеру, по факту авторизации по ssh)

Feb 16 14:57:57 vmarch sshd[51842]: Accepted publickey for test from 192.168.0.173 port 61782 

journalctl по таймеру проверять? А если мне надо в прямом эфире отслеживать? Какой вообще общий подход?

P.S. «Забанься, дебил» - кун, не приходи в мой тред.

tail -f если скриптами, но в итоге изделие обрастёт костылями

а по-нормальному open(), lseek(SEEK_END), while(1) read() и парсишь там же

firkax ★★★★★
()

Ну можешь rsyslog настроить на отправку почты по событиям. И в Zabbix кажется есть тоже разные фичи для мониторинга такого.

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от anonymous

Если логи контролировать то можно по факту записи в файл лога запускать команду нужную, в том числе и парсящую этот лог

anonymous
()

Какой вообще общий подход?

Через хуки.

vvn_black ★★★★★
()

Кстати, хорошая тема. Хорошо бы отслеживать все такие события(от неудачных попыток ssh-логина, до появления ошибок в smart’е диска) и выдавать их через notify-send. Я именно про десктоп-использование linux

MaZy ★★★★★
()

Возьми fail2ban и посмотри какие оно там action умеет.

targitaj ★★★★★
()
Ответ на: комментарий от SpaceRanger

Да не, не хардкорное и не С++. Обычное на Си. Впрочем, аналог можно хоть на пхп сделать, будет fopen(), fseek() и fread().

firkax ★★★★★
()
Ответ на: комментарий от SpaceRanger

Уровень логирования настраивается,если пишет каждую секунду значит что то не то настроили

anonymous
()

man sd_login_monitor_new:

sd_login_monitor_new() may be used to monitor login sessions, users, seats, and virtual machines/containers. Via a monitor object a file descriptor can be integrated into an application defined event loop which is woken up each time a user logs in, logs out or a seat is added or removed, or a session, user, seat or virtual machine/container changes state otherwise.

debugger ★★★★★
()

Пропатчи ssh и добавь там создание события в системной шине (dbus или как её там…), в твоём приложении подключись и слушай.

Shushundr ★★★
()
Ответ на: комментарий от Shushundr

Пропатчи ssh и добавь там создание события в системной шине (dbus или как её там…), в твоём приложении подключись и слушай.

Всё уже пропатчено до нас. man org.freedesktop.login1

debugger ★★★★★
()

Есть системы мониторинга, как крупные так и мелкие, слежение за событиями это их основной функционал.

einhander ★★★★★
()
Ответ на: комментарий от PunkoIvan

в гугле пишут, что рач не поддерживается

SpaceRanger ★★
() автор топика
Ответ на: комментарий от SpaceRanger

Делаем так. /etc/rsyslog.d/monitor.conf

auth,authpriv.info |/path/to/your_monitor_script

И вон та ваша программа непрерывно читает лог, парсит, и вызывает нужные вам хуки.

Oleg_Iu
()
Последнее исправление: Oleg_Iu (всего исправлений: 1)
Ответ на: комментарий от SpaceRanger
  1. Понятия не имею.

  2. При чём тут системные вызовы? Ты, вроде, начал с того, что хотел отлавливать события (логин пользователя).

debugger ★★★★★
()

Как обнаружить событие

Занимаешь позицию в соседнем пивняке, заказываешь балтику 9 и сливаешься с толпой, следишь как демон. Собсно всё.

Psychosis
()
Ответ на: комментарий от debugger

Просто я начитался какой то дичи про auditd, и вот там написано было, что логин/логаут/изменение чего нибудь/и так далее, ловится по системным вызовам в ядре и вообще это тру путь. Вот и решил уточнить у знающих людей.

SpaceRanger ★★
() автор топика

P.S. «Забанься, дебил» - кун, не приходи в мой тред.

Сам всё понимаешь, одобряю. Следующий шаг - забаниться.

anonymous
()
Ответ на: комментарий от anonymous

не стоит быть столь жестоким к автору, он только ~10 лет назад начал использовать линух

anonymous
()
Ответ на: комментарий от SpaceRanger

Херня какая-то. Есть login manager, which is «keeping track of users and sessions, their processes and their idle state». Этот логин менеждер имеет несколько интерфейсов, через которые можно следить за его состоянием. Использование этих интерфейсов — самый прямой путь. Караулить системные вызовы, или записи в логе — это путь, которым идут нормальные герои (которые всегда идут в обход; идти в обход, понятно, не очень-то легко, не очень-то приятно и очень далеко).

Но надо сказать, что логин менеджер занимается юзерами и сессиями, поэтому отслеживать логин и логаут при помощи интерфейсов логин менеждера — то, что доктор прописал. Если ты под «изменением чего нибудь» имеешь ввиду, например, изменение файлов, то логин межеджер здесь не в кассу, на это есть inotify. Если «чего-нибудь» — это появление нового дивайса, то см. udev. И так далее, и так прочая. Возможно, что на твой «чего нибудь» действительно нет готового интерфейса…

Один мой умный знакомец всегда задавал вопрос: «А почему вы интересуетесь?» Потому что очень часто людям нужно одно, но спрашивают они совсем другое, и чтобы помочь человеку, нужно знать что ему реально требуется. Я не настолько заинтересован в решении твоих проблем, чтобы интересоваться «а почему вы спрашиваете?». Но логин/логаут проще всего мониторить через логин менеджер. Если только ты не системд-хейтер.

debugger ★★★★★
()
Ответ на: комментарий от debugger

Караулить системные вызовы, или записи в логе — это путь, которым идут нормальные герои

Логи - это единственное место, в котором можно считать fingerprint ssh ключа, серийный номер и id сертификата лица, который залогинился. В других местах этой информации нет.

Oleg_Iu
()

journalctl *** --follow и читай хоть до второго пришествия христа.

pfg ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.