Почта, когда 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/