Назад | Перейти на главную страницу

Общий сценарий входа в систему

Несколько недель назад я подумал, что было бы неплохо написать сценарий, который будет отправлять мне электронное письмо всякий раз, когда какой-либо пользователь входит на мой сервер.

Так я пришел к отлично работающему сценарию 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

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