Я выполнил эти инструкции
Как получить 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/