Почта, когда root входит в систему, но не с локального хоста

Я следовал этим инструкциям

Как получить Root и User SSH Логин Email-оповещения

Вы должны добавить этот код в.bashrc

`echo 'ALERT - Root Shell Access (ServerName) on:' `date` `who` | mail -s "Alert: Root Access from `who | cut -d'(' -f2 | cut -d')' -f1`" your@yourdomain.com`

Я получаю уведомления, но я также получаю уведомления, которые, по-видимому, исходят также от localhost (каждые пару минут). Могу ли я исключить уведомления localhost или есть лучший способ получать почту только тогда, когда кто-то входит в систему удаленно?

2 ответа

Решение

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

Поэтому не рекомендуется разрешать прямой вход с правами root через сеанс SSH и рекомендовать создавать учетные записи без полномочий root с sudo доступ. Всякий раз, когда требуется root-доступ, сначала войдите в систему как обычный пользователь, а затем используйте su переключиться на пользователя root. Чтобы отключить прямой вход root в SSH, следуйте нашей статье [ Disable SSH Root Login and Limit SSH Access ], которая показывает, как отключить и ограничить root-вход в SSH.

Если вы все еще хотите использовать оповещения по электронной почте вместо...

.bashrc Решение кажется очень популярным, но имеет некоторые проблемы. Он запускается (всегда и только), когда bash запущен. Он перестает работать, если его заменяет любая другая оболочка, или оболочка не запущена (например, вход в систему используется только для туннелирования по SFTP), и он также работает, даже если SSH не задействован. Злоумышленник может изменить .bashrc перед вызовом bash чтобы обойти ваше предупреждение.

Поскольку вы, вероятно, не используете SSH внутри, используя ~/.ssh/rc будет соответствовать желаемым условиям, например

ip=`echo $SSH_CONNECTION | cut -d " " -f 1`
echo "Root login from $ip" | mail -s "Alert: SSH root login from $ip" your@example.com

Тогда для глобальных предупреждений о входе в систему через SSH я бы ничего не использовал в домашних условиях ~/ как пользователь может легко изменить его. ~/.ssh/rc можно сделать глобальным по умолчанию с помощью /etc/ssh/sshrc, и любой пользователь может переопределить настройки с помощью собственного ~/.ssh/rc, с легким откатом, удалив файл.

Если вам нужно применить предупреждение таким образом, чтобы пользователь не мог его переопределить, вы можете использовать /etc/pam.d/sshd: добавить строку session optional pam_exec.so seteuid /path/to/login-notify.sh где .sh Скрипт отправляет вам (или пользователю) письмо.

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

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

Если вы хотите ограничить это только входами пользователя root, то вы можете развернуть его на /root/.bashrc вместо /etc/profile.d/

Другие вопросы по тегам