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

Уведомление по электронной почте о каждом SSH-подключении к серверу Linux

Я хотел бы получать уведомления о каждом SSH-подключении к серверу Linux (Debian).

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

Как лучше всего делать такие сквозные уведомления о соединениях SSH?

Поскольку вы пояснили, что хотите по электронной почте для каждого успешный аутентификация, pam_notify - отличный кандидат для этого.

Добавить как session required линия в конце вашего /etc/pam.d/sshd или аналогичный файл.

Лучшая практика - не делайте этого, если вы ДЕЙСТВИТЕЛЬНО должны (безопасность этой машины ТАК критична).

если ты ДЕЙСТВИТЕЛЬНО вам не нужно возиться с файлами оболочки .rc, которые люди могут изменять - это недоработанное решение.

Правильный путь - это, вероятно, использовать встроенные в Linux средства аудита (см. Справочные страницы для auditd, и его файл конфигурации auditd.conf), но у меня очень ограниченный опыт работы со средствами аудита в Linux (в частности, я не уверен, что подсистема аудита упрощает отправку электронных писем - хотя я знаю, что во FreeBSD это можно сделать без особых проблем).

Менее правильным, но все же приличным способом было бы использовать модуль PAM, который всегда работает успешно и отправляет электронное письмо, в котором говорится, что кто пытался войти в систему.

Наименее правильный, но, по крайней мере, ваш почтовый ящик не заполнен, - это собрать ваши auth.log файл или аналог и отправляйте его кому-нибудь по электронной почте каждую ночь. Если все, что вам нужно, это базовая запись, это будет мой выбор: объем электронной почты, сгенерированный из других моих предложений, будет ужасным в системе с большой активностью.

вы можете периодически контролировать свой /var/log/auth.log или, что еще лучше, сделать его удаленным журналом, чтобы злоумышленник не мог стереть след успешного входа в систему.

Поскольку этот вопрос был доставлен из хранилищ, я хотел бы сбежать образец против /var/log/auth.log (или соответствующий файл конфигурации вашего дистрибутива / системного журнала) и настройте его для ответа по электронной почте на каждое появление sshd.*Accepted.*, поскольку это должно перехватывать входы как на основе пароля, так и на основе ключа:

Feb 21 10:06:44 lory sshd[24414]: Accepted publickey for username from ::1 port 39197 ssh2
Feb 21 10:08:16 bill sshd[20643]: Accepted password for username from ::1 port 46835 ssh2

что вы могли бы сделать с конфигурационным файлом, например,

watchfor /sshd.*Accepted.*/
               mail address=you@example.com,subject="SSH login on host foo"

и например swatch -c /the/above/file /var/log/auth.

We do it by creating a file /etc/profile.d/notify.sh with the following content:

#!/bin/sh

sender="hostname@example.com"
recepient="admingroup@example.com"
subject="Privileged Account logon used"
message="`env`"
    echo "$message" | mail -s "$subject" -r "$sender" -S smtp=mail.example.com "$recepient"

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

Я называю это Authentication Monitor, и вы можете найти больше информации о нем здесь: http://bwyan.dk/?p=1744

Я надеюсь, это может быть то, что вы ищете.

Я опубликовал bash скрипт на Github Gist, который делает то, что вы ищете. Он будет отправлять электронное письмо системному администратору каждый раз, когда пользователь входит в систему с нового IP-адреса. Я использую сценарий для тщательной проверки логинов в наших жестко контролируемых производственных системах. Если логин скомпрометирован, мы получим уведомление о необычном месте входа в систему и сможем заблокировать их доступ к системе, прежде чем они нанесут серьезный ущерб.

Чтобы установить сценарий, просто обновите его, указав адрес электронной почты системного администратора, и скопируйте его в /etc/profile.d/.