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