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

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

Я выполнил эти инструкции

Как получить root-права и оповещения пользователя по электронной почте SSH-входа

Вы должны добавить этот код в .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`

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

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

Поэтому не рекомендуется разрешать прямой вход в систему root через сеанс SSH, и рекомендуется создавать учетные записи без полномочий root с помощью sudo доступ. Всякий раз, когда требуется root-доступ, сначала войдите в систему как обычный пользователь, а затем используйте su переключиться на пользователя root. Чтобы отключить прямой вход в систему с root-доступом по SSH, выполните следующие действия [Отключить вход в систему с root-доступом по SSH и ограничить доступ по SSH], в которой показано, как отключить и ограничить вход 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/