SSH "Вход в систему" для Linux - PullRequest
       42

SSH "Вход в систему" для Linux

7 голосов
/ 13 января 2009

Я пытаюсь написать скрипт, который информирует пользователя, когда кто-то вошел в систему через ssh.

Моя текущая идея состоит в том, чтобы анализировать выходные данные "w", используя grep в интервалах.

Но это ни изящно, ни перформативно. Кто-нибудь получил лучшую идею, как реализовать такую ​​программу?

Любая помощь будет принята с благодарностью!

Ответы [ 6 ]

13 голосов
/ 13 января 2009

Пол Томблин имеет правильное предложение.

Настройте вход в ваш sshd_config так, чтобы он указывал на средство системного журнала, которое вы можете регистрировать отдельно:

=> см. В системном журнале man 3 дополнительные возможности. Выберите один, например,

# Logging
SyslogFacility local5
LogLevel INFO

Затем настройте свой syslog.conf следующим образом:

local5.info    |/var/run/mysshwatcher.pipe

Добавьте скрипт, который вы собираетесь написать, в / etc / inittab, чтобы он продолжал работать:

sw0:2345:respawn:/usr/local/bin/mysshwatcher.sh

затем напишите свой скрипт:

#!/bin/sh

P=/var/run/mysshwatcher.pipe
test -p $P || mkfifo $P

while read x <$P; do
  # ... whatever, e.g.:
  echo "ssh info: $x" | wall
done;

Наконец, перезапустите ваш syslogd и загрузите ваш inittab (init q), и он должен работать. Если используются другие варианты этих служб, вам необходимо соответствующим образом настроить их (например, newsyslogd => /etc/newsyslog.conf; Ubuntu: /etc/event.d isntead of inittab)

Это очень элементарно и не хватает, но должно быть достаточно, чтобы вы начали ...

дополнительная информация: man sshd_config для получения дополнительных параметров ведения журнала / подробности.

9 голосов
/ 13 января 2009

В Ubuntu (и я предполагаю, что все другие дистрибутивы Debian, если не все Linuces), файл /var/log/auth.log записывает успешные (и неудачные) попытки входа в систему:

sshd[XXX]: pam_unix(sshd:session): session opened for user XXX

Вы можете настроить очень простой монитор с помощью этой команды (обратите внимание, что вы должны быть пользователем root, чтобы увидеть журнал авторизации):

sudo tail -F /var/log/auth.log | grep sshd
5 голосов
/ 18 января 2009

Если вам все равно, как они вошли в систему (telnet / ssh), «последняя» утилита командной строки Unix покажет вам несколько последних входов в систему. Удаленные пользователи будут показывать IP-адрес

[root @ ex02 www] # последний foo pts / 1 81.31.x.y Sun 18 янв. 07:25 еще вошли в систему
foo pts / 0 81.31.x.y Sun 18 января 01:51 все еще вошли в систему
foo pts / 0 81.31.x.y сб 17 января 03:51 - 07:52 (04:00)
bar pts / 5 199.146.x.y пт 16 января 08:57 - 13:29 (04: 32

4 голосов
/ 13 января 2009

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

Перенаправление файла журнала выполняется в файле конфигурации в / etc /, имя которого ускользает от меня прямо сейчас. /etc/syslog.conf, я думаю.

2 голосов
/ 07 марта 2013

Я создал программу (которую я называю Монитор аутентификации), которая решает задачу, описанную в вопросе.

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

Вы можете найти Монитор аутентификации в свободном доступе здесь: http://bwyan.dk/?p=1744

0 голосов
/ 22 мая 2015

У нас была такая же проблема, поэтому мы написали наш собственный скрипт. Его можно скачать с github .

Надеюсь, это поможет:)

ура! Иван

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...