Я хотел бы получать уведомления о каждом 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/
.