Несколько недель назад я думал, что это будет хорошая идея записать сценарий, который должен послать мне электронное письмо каждый раз, когда некоторый пользователь вошел бы в систему в мой сервер.
Таким образом, я пришел к совершенно рабочему сценарию notifyLogin.sh
, затем я решил назвать его от каждого пользователя .bash_login
сценарий.
Так долго столь хороший, но сегодня я обнаруживал, что кто-то мог войти в систему в моем использовании сервера ssh
клиент -t
опция, выбирающая таким образом доступную оболочку. Например:
ssh user@myserver -t sh
Сюда, .bash_login
не выполняйтесь, ни один /etc/profile
.
Мой вопрос: действительно ли там кто-либо "универсален" (который означает, что идентификатор не имеет значения, какая оболочка используется), сценарий, который выполняется каждый раз, когда пользователь входит в систему?
Другой возможностью является использование pam. Украдено со страницы , найденной в google:
session optional pam_exec.so /path/to/your/script/or/executable
Подробности см. в pam_exec(8) man page. Преимущество в том, что для этого не нужно разбирать лог-файлы - для этого используется стандартный механизм подключаемых сессий. В зависимости от того, куда вы его поместили, вы можете использовать его для отправки всякий раз, когда пользователь создает новую сессию, или только когда он подключается по SSH.
.альтернатива: вы можете запустить фильтрацию безопасного журнала в фоновом режиме для извлечения интересных событий, например:
tail -n 0 -f /var/log/secure | grep --line-buffered "sshd:session): session opened" > /var/log/sec-filtered
и иметь периодическую задачу, которая проверяет размер отфильтрованного выходного файла, чтобы отправить его по электронной почте и перезапустить фильтрацию по защищенному журналу.