Присылайте мне электронные письма, когда кто-то входит в систему через 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)
и отправка писем соответственно.