Обложка канала

ServerAdmin.ru

12437 @srv_admin

Авторская информация о системном администрировании.

ServerAdmin.ru

4 года назад
Открыть в
​​Вчера рассказал, как с помощью log-user-session можно логировать все действия. Сегодня хочу затронуть ещё одну полезную тему - оповещение о логине по SSH. Я настраиваю это почти везде, где подразумевается не только моё подключение к серверам. Это сильно упрощает контроль за инфраструктурой. Если что-то сломалось и ты видишь, что накануне кто-то подключался к серверу, путь к решению лежит на поверхности. Надо сразу написать и спросить, что делали на сервере, а параллельно посмотреть лог действий пользователя. Вариантов решения этой задачи может быть много. Есть настроен Zabbix Server, то я делаю через него. Для меня это самое простое. Надо добавить айтем с анализом лог файла авторизаций и сделать триггер, срабатывающий на определённые строки. Если мониторинг развёрнут, то достаточно добавить готовый шаблон и дать Zabbix Agent доступ на чтение соответствующего лога. Обычно это /var/log/auth.log или /var/log/secure. Пример подобного мониторинга можно посмотреть у меня в статье. Она довольно старая, а сам я использую другой шаблон, но идея такая же. Каждый уже сам может доработать под себя. Если используется система сбора логов, то логично настроить анализ и оповещения через неё. Zabbix не очень приспособлен для работы с логами, но в случае отсутствия централизованной системы сбора, для данной задачи он подойдёт. Не надо только очень сильно его нагружать этими логами и хранить их долго. Они будут лежать в обычной SQL базе. Если системы мониторинга или сборов логов нет, то можно обойтись возможностями самой ОС. Достаточно установить postfix, настроить отправку почты через какой-то почтовый сервис, чтобы письма не улетали в спам. Настройка легко гуглится, есть и у меня на сайте. Затем добавляем пользователям в .bash_profile небольшой код. Набросал и проверил прямо сейчас, по ходу написания заметки: if [ -n "$SSH_CLIENT" ]; then EMAIL="SSH login to $(hostname)\n \nDATE: $(date)\n \nUSER: ${USER} from $(echo $SSH_CLIENT | awk '{print $1}')" echo -e $EMAIL | mail -s "SSH login to ${USER}@$(hostname) from $(echo $SSH_CLIENT | awk '{print $1}')" [email protected] fi Пример вывода скрипта в итогом письме можно посмотреть во вложении к посту. Теперь при каждом логине в систему будет срабатывать этот код и отправлять уведомление. Если надо добавить сразу всем пользователям этот код и убрать у всех, кроме root, возможность его изменить, добавьте в файл /etc/profile. #linux #ssh #security