Как я могу настроить monit, чтобы уведомлять меня о новых удаленных сеансах SSH, которые происходят из-за пределов одной конкретной подсети?
Я рассматривал попытки подключения к журналу как часть ~/.bashrc
script, но я не уверен, возможно ли это, потому что я не уверен в некоторых деталях реализации.
В частности, мне нужно знать, как делать следующие вещи в ~/bashrc
сценарий:
Я предполагаю, что сценарий может выглядеть примерно так:
# check that this is an SSH connection # check whether the SSH connection originates outside the selected subnet echo "New connection from $SSH_CLIENT" > /var/log/_ssh.log
Рецепт монита:
check file _ssh with path /var/log/_ssh.log if failed checksum then alert
Наряду с $ SSH_CLIENT есть $ SSH_CONNECTION. Чтобы увидеть доступные переменные, запустите «env» (без кавычек) в командной строке. -Тим
Вы не можете вести этот журнал из ~/.bashrc
или аналогичный, потому что он выполняется только для некоторых интерактивных сеансов, а не если кто-то ssh yourserver mycommand
, sftp yourserver
, и т.д.
Все попытки входа в систему ssh, неудачные или успешные, регистрируются через системный журнал с auth
объект. Сообщение журнала включает IP-адрес источника, метод аутентификации и информацию о том, прошла ли аутентификация. Я думаю, что ваш лучший вариант - использовать программное обеспечение для мониторинга журналов.
Я не знаю monit, но похоже, что его задача - наблюдать за sshd и перезапускать его, если он умирает, что является другой проблемой.
Я не знаю monit, но вы можете легко это сделать с помощью брандмауэра. Зарегистрируйте все внешние соединения с помощью специального тега и оставьте внутренние без регистрации. iptables - ваш друг, если вы работаете в Linux.
Вы также можете заблокировать все ssh-соединения с помощью hosts.allow / hosts.deny. Вы увидите журналы в журналах ssh.
Переменная среды $ SSH_CLIENT - это IP-адрес, удаленный порт и локальный порт текущего сеанса SSH пользователя.
Тем не менее, почему бы вам просто не отбросить все из любой другой подсети, кроме безопасной? Избавит вас от лишних хлопот.
Также: пожалуйста, уделите время правильной формулировке вашего вопроса. ServerFault должен быть местом, где люди могут найти ответы не только на свои собственные, но и на вопросы других людей. Ваш немного запутан, если вы не против, чтобы я так сказал.