API сервиса мониторинга открытых портов

Сервис находится в режиме бета-тестирования.

Сервис мониторинга открытых портов позволяет отслеживать открытые порты на IP-адресах. Вы добавляете в сервис IP-адреса для мониторинга и отмечаете порты, которые должны быть открытыми. Сервис регулярно сканирует порты на адресе, и при обнаружении открытого порта без отметки отправляет уведомление на email аккаунта. Вы также можете подключить уведомления в Telegram.

Подключить мониторинг можно только для IP-адресов, которые назначены на выделенные серверы, размещенное оборудование, межсетевые экраны, объекты облачной платформы (облачные серверы, балансировщики, базы данных и т.д.), а также для PI IP-адресов, которые вы анонсируете через оборудование Selectel.

С помощью API сервиса вы можете:

  • включить или отключить мониторинг открытых портов для IP-адреса;
  • получить список открытых портов на одном или нескольких IP-адресах;
  • отметить порты, которые должны быть открыты;
  • проверить состояние конкретного порта на IP-адресе;
  • настроить уведомления на email и в Telegram об открывшихся портах.

Авторизация

Для работы с API используются токены Selectel, которые передаются в заголовке X-Token.

Адрес (URL) можно посмотреть в списке URL.

Пример базовой настройки мониторинга

  1. Добавьте IP-адрес в список для мониторинга:

    curl -X POST \
    -H 'X-Token: <selectel_token>' \
    -H 'Content-Type: application/json' \
    -d '{"ip":"<ip>"}' \
    https://api.selectel.ru/eye/v1/ips
    

    Укажите:

    • <selectel_token> — токен Selectel;
    • <ip> — IP-адрес, который нужно добавить в сервис.
  2. Подождите около 10 минут, пока сервис проведет первичное сканирование портов IP-адреса, затем запросите список открытых портов адреса:

    curl -X GET \
    -H 'X-Token: <selectel_token>' \
    -H 'Content-Type: application/json' \
    -d '{"ip":"<ip>"}' \
    https://api.selectel.ru/eye/v1/ips/ports
    

    Укажите <ip> — IP-адрес, для которого нужно получить список портов.

  3. Опционально: если обнаружены открытые порты, которые должны быть закрытыми, закройте их. Например, для Linux используйте утилиту iptables или UFW.

  4. Если вы закрыли порты, подождите 10 минут, чтобы сервис успел выполнить повторное сканирование. Чтобы проверить, что сканирование прошло успешно, снова запросите список открытых портов:

    curl -X GET \
    -H 'X-Token: <selectel_token>' \
    -H 'Content-Type: application/json' \
    -d '{"ip":"<ip>"}' \
    https://api.selectel.ru/eye/v1/ips/ports
    

    Укажите <ip> — IP-адрес, для которого нужно получить список портов.

  5. Отметьте оставшиеся открытые порты IP-адреса как доверенные, для этого установите для них тег KNOWN со значением true.

    Одним запросом вы можете отметить:

    • конкретный порт — первый запрос устанавливает тег KNOWN со значением true, каждый следующий меняет значение тега на противоположное;
    • все открытые порты IP-адреса — запрос всегда устанавливает тег KNOWN со значением true.
    curl -X PUT \
    -H 'X-Token: <selectel_token>' \
    -d '{"ip":"<ip>"}' \
    https://api.selectel.ru/eye/v1/ips/ports/<port>
    

    Укажите:

    • <port> — номер порта, который нужно отметить. Чтобы отметить все открытые порты адреса, не указывайте номер порта;
    • <ip> — IP-адрес, на котором находится порт.
  6. Опционально: чтобы проверить, что тег установлен верно, запросите список всех открытых портов IP-адреса и проверьте значение в поле KNOWN:

    curl -X GET \
    -H 'X-Token: <selectel_token>' \
    -H 'Content-Type: application/json' \
    -d '{"ip":"<ip>"}' \
    https://api.selectel.ru/eye/v1/ips/ports
    

    Укажите <ip> — IP-адрес, для которого нужно получить список портов.

  7. Если на адресе будет обнаружен открытый порт с тегом KNOWN со значением false, вы получите уведомление на email, который вы использовали при регистрации аккаунта. Вы также можете подключить уведомления в Telegram.