Присылайте мне электронные письма, когда кто-то входит в систему через SSH

Есть ли способ настроить sshd так, чтобы он отправлял мне электронное письмо всякий раз, когда кто-то входит в систему через SSH?

3 ответа

Sshd сам не сделает этого за вас, но вы, вероятно, можете выполнить то, что вы хотите, используя pam_exec модуль (при условии, что у вас есть SSH, используя PAM). Нечто подобное может работать (в /etc/pam.d/sshd):

session optional pam_exec.so /path/to/your/script

Вы также можете посмотреть /var/log/secure (или ваш локальный эквивалент) для сообщений sshd регистрирует, когда кто-то входит в систему, и запускает и отправляет по электронной почте на основании этого.

Вы также можете, вероятно, взломать что-то вместе, используя ForceCommand вариант в сшд. Вам придется ForceCommand запустить скрипт, который будет отправлять электронную почту, а затем использовать SSH_ORIGINAL_COMMAND переменная окружения для запуска оболочки пользователя (или любой другой команды, которую они пытались запустить). Я упоминаю об этом только потому, что это может сработать, а не потому, что я думаю, что это хорошая идея.

Вы можете добавить это в конец /etc/profile

/bin/bash -c 'HN=`/bin/hostname`; IP=`/bin/hostname -i`; /bin/bash -c "/bin/hostname -i; /bin/hostname; echo; /usr/bin/who --ips; echo; /usr/bin/who --all" | /usr/bin/mailx -s "LOGIN ALERT - $HN ($IP)" root'

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

Вы можете использовать Swatch (который предназначен для просмотра файлов журналов и отправки электронных писем с линиями, соответствующими регулярным выражениям) для мониторинга /var/log/secure (или везде, где ваша ОС регистрирует логины ssh), ища строки вроде

sshd[xxxxx]: pam_unix(sshd:session): session opened for user foo by (uid=0)

и отправка писем соответственно.

Другие вопросы по тегам