Назад | Перейти на главную страницу

Почему я должен разрешать использование нескольких IP-адресов на веб-сайте для одного сеанса?

Надеюсь, мой вопрос соответствует тематике этого сайта.

Я разрабатываю CMS. В настоящее время мои зарегистрированные пользователи заблокированы для своего IP-адреса для сеанса. К сожалению, небольшая часть моей пользовательской базы постоянно переключается между двумя или более IP-адресами. Большинство из них, вероятно, используют балансировщики нагрузки. Технически нет необходимости привязывать сеансы пользователей к одному IP-адресу. Я не ожидал, что клиенты будут переключаться между несколькими IP-адресами для запроса одной страницы на моем веб-сайте.

Теперь мне интересно, каковы риски, позволяющие моим клиентам постоянно переключаться между IP-адресами для запроса страницы (например, файлы CSS запрашиваются xxx.xxx.xxx.xxx, а файлы JavaScript запрашиваются yyy.yyy.yyy. ггг)? Должен ли я вообще разрешать или запрещать это?

небольшая часть моей пользовательской базы постоянно переключается между двумя или более IP-адресами.

Причины

Предполагая, что ваши пользователи не пытаются активно скрыть свои настоящие IP-адреса с помощью службы анонимности ...:

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

Вы можете увидеть, как пользователи Dual Stack отправляют запросы как по IPv4, так и по IPv6 и переключаются между двумя протоколами. RFC 8305 для последующих запросов.

Другой сценарий - это когда я нахожусь на крайнем расстоянии от точки доступа Wi-Fi, и мое устройство «случайным образом» переключается между Wi-Fi и сотовыми данными.

Решения

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

Во втором и третьем сценариях вы увидите совершенно разные IP-адреса клиентов, даже от несвязанных провайдеров.

Не привязывайте сеансы к определенному IP-адресу, это скорее нарушит работу пользователя, чем обеспечит повышенную безопасность.

Теперь мне интересно, каковы риски, позволяющие моим клиентам постоянно переключаться между IP-адресами для запроса страницы (например, файлы CSS запрашиваются xxx.xxx.xxx.xxx, а файлы JavaScript запрашиваются yyy.yyy.yyy. ггг)? Должен ли я вообще разрешать или запрещать это?

Основной риск - это захват сеанса злоумышленником. Если бы вы могли заблокировать один или небольшой набор IP-адресов, вы могли бы заблокировать пользователей с совершенно разных IP-адресов от взлома сеанса.

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

Один из способов уменьшить влияние этого - использовать HTTPS. Затем злоумышленник должен иметь способ взломать безопасный уровень, а также файл cookie сеанса. При небезопасном соединении злоумышленник мог просто использовать проверку сети для взлома файла cookie сеанса. Но через HTTPS тот же злоумышленник должен иметь доступ к одному из концов разговора. И если он есть у злоумышленника, то нет необходимости использовать другой IP-адрес.

TL; DR: обычно вы должны разрешать запросы с разных IP-адресов для одного и того же пользователя. Это может произойти по уважительным причинам. Вместо этого используйте HTTPS для защиты от этого класса эксплойтов.

каковы риски, позволяющие моим клиентам постоянно переключаться между IP-адресами при запросе страницы

С точки зрения безопасности - нулевые риски.

Теперь с практической точки зрения. Это означает, что вы не можете использовать определенные типы алгоритмов для обеспечения безопасности или DoS защита.

Простой способ ограничить количество запросов пользователей - отслеживать их по IP-адресу. Поскольку для этого не требуется взаимодействие с вашим сервером приложений, вы можете использовать для этого службы на более низких уровнях. Программное обеспечение, такое как mod_evasive от Apache, делает это. Вы все еще можете использовать эти методы, но изменение IP-адреса пользователем снизит их эффективность. С другой стороны, пользователи все равно будут переключать IP-адреса, поэтому эти методы никогда не были эффективными.

Связанный, но другой вариант использования - это ограничение неудачных попыток входа в систему. Это сделано для предотвращения подбора пароля методом перебора. Но опять же, вы ничего не сможете сделать, если пользователи меняют IP-адреса. По-настоящему серьезный хакер даже не стал бы использовать свои собственные машины. Он просто выиграет немного времени в ботнете (или воспользуется своим ранее зараженным ботнетом) и подключится к вашему сервису через 10 000 чужих компьютеров (IP-адресов). На самом деле это не связано с ограничением IP-адреса пользователя, поскольку это предварительный вход в систему, но об этом следует помнить.

Существует несколько причин, по которым пользователь может перейти на новый IP-адрес.

  1. Расширения конфиденциальности IPv6, многие клиенты IPv6 в настоящее время будут прыгать в пределах / 64 в локальной сети.
  2. Прокси-серверы с балансировкой нагрузки, запросы клиентов направляются на один из нескольких прокси, каждый с отдельным IP-адресом.
  3. Пулы NAT, пограничный nat настроен с использованием нескольких IP-адресов и произвольно назначает комбинации IP / портов из пула клиентским TCP-соединениям.
  4. Пользователь перемещается между разными сетями или частями сети, что характерно для современных телефонов.
  5. Пользователи двойного стека могут переключаться между IPv4 и IPv6.

Теперь мне интересно, каковы риски, позволяющие моим клиентам постоянно переключаться между IP-адресами для запроса страницы?

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

Обратной стороной является то, как вы говорите, это вызовет сбой у некоторых пользователей, которые обнаружат, что их сеанс недействителен без очевидной причины.

Большинство сайтов в настоящее время, похоже, думают, что поломка перевешивает преимущества такой блокировки.