Как настроить уведомления о входе в SSH с IP-геолокацией

Как настроить уведомления о входе в SSH с IP-геолокацией

18 апреля 2022 г.

Администраторы серверов обычно используют SSH для входа на серверы Linux. Они отключат вход через пароль из-за простоты атак методом перебора в наши дни. Рекомендуемая практика заключается в том, чтобы разрешать вход на серверы только с использованием закрытых/открытых ключей. Также полезно настроить SSH-уведомления с IP-геолокацией для большей безопасности. Администраторы будут получать уведомления в режиме реального времени всякий раз, когда кто-либо входит на серверы.


Получение немедленного уведомления, когда кто-то входит в систему, выгодно с точки зрения безопасности. Это увеличивает вероятность того, что вы сможете помешать авторизованной стороне нанести реальный ущерб вашему серверу. Если вы видите логин для подозрительного региона или интернет-провайдера, вы можете принять меры по исправлению положения как можно скорее. Быстрая реакция на вторжение не даст злоумышленнику возможности украсть ваши данные.


Предварительные условия для настройки SSH-уведомлений с IP-геолокацией


Наш сценарий будет использовать веб-службу для запроса данных геолокации с использованием IP-адреса пользователя. WS4 содержит данные о стране, регионе, городе и интернет-провайдере; более чем достаточно для нашего примера уведомления. Тем не менее, вы можете использовать другой пакет, если вам требуется больше данных геолокации.


Чтобы использовать веб-службу, вам нужен ключ API. Если у вас его нет, можно использовать ip2:


https://www.ip2location.com/web-service/ip2location


В дополнение к ключу API вы также должны установить jq и wget на свой Linux-сервер. Пакет wget необходим для вызова веб-службы, а пакет jq — для анализа ответа JSON от веб-службы.


Сценарий уведомления о входе в SSH


Чтобы сценарий уведомления SSH запускался при входе в систему, необходимо скопировать и вставить следующий код в ваш файл ~/.bashrc. Замените IP2LOCATION_API_KEY на фактический ключ API веб-службы.


Если вы хотите включить уведомление Slack, замените SLACK_WEBHOOK_URL фактическим URL-адресом. В противном случае закомментируйте специфичные для Slack строки кода.


Наконец, отредактируйте NOTIFICATION_EMAIL, указав адрес электронной почты, на который будет приходить уведомление.


API_KEY="IP2LOCATION_API_KEY"


SLACK_WEBHOOK="SLACK_WEBHOOK_URL"


EMAIL="NOTIFICATION_EMAIL"


IP="$(echo $SSH_CONNECTION | cut -d " " -f 1)"


если [ ! -z "$IP" ]; тогда


RESULT="$(wget -q -O /dev/stdout 'https://api.ip2location.com/v2/?key='"$API_KEY"'&ip='"$IP"'&package=WS4') "


CITY="$(echo $RESULT | jq -r .название_города)"


REGION="$(echo $RESULT | jq -r .region_name)"


COUNTRY="$(echo $RESULT | jq -r .country_name)"


LOCATION="$(echo $CITY, $REGION, $COUNTRY | sed 's/^[, ]\+//g')"


ISP="$(echo $RESULT | jq -r .isp)"


HOSTNAME=$(имя хоста -f)


СЕЙЧАС=$(дата +"%e %b %Y, %a %r (UTC %Z)")


# Ненадежное уведомление


wget -q -O /dev/null --no-check-certificate --header 'Content-Type: application/json' --post-data '{"имя пользователя":"'"$HOSTNAME"'", " icon_url":"https://i.imgur.com/X2W00e2.png", "канал":"#general", "вложения":[{"title":"Уведомление SSH", "color":"#FDAE02 ", "mrkdwn_in": ["text"], "text": "*IP-адрес*: '"$IP"'<br>*Расположение:* '"$LOCATION"'<br>*ISP:* '" $ISP"'<br>*Дата:* '"$СЕЙЧАС"'"}]}' $SLACK_WEBHOOK


# уведомление по электронной почте


echo "Вход по SSH из $LOCATION ($IP)". | mail -s "Уведомление о входе в SSH" "$EMAIL"


фи


Заключение: уведомления о входе в SSH с IP-геолокацией


Геолокация IP полезна для определения того, откуда ваши пользователи входят в систему. Если вы видите какие-либо местоположения, которые находятся в неожиданных регионах, вы должны быть начеку и провести аудит безопасности вашей системы. Утечка данных — очень серьезная проблема в наши дни, поэтому стоит проявлять особую бдительность при мониторинге.



Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE