Ограничить доступ к общедоступным веб-приложениям определенными динамическими IP-адресами источника

Я разрабатываю веб-приложение с использованием хостинга Laravel в публичном облаке. Теперь к приложению можно получить доступ через Интернет по доменному адресу. Однако я хочу ограничить использование приложения только пользователями, которые подключаются к сетям организации, поскольку мы не хотим, чтобы приложение использовалось дома или в другом месте.

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

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

Я думал о VPN, но он (вероятно) не работает, потому что, если мы разрешаем пользователям доступ к VPN, они все равно смогут получить доступ к VPN где угодно и использовать приложение вне рабочих мест. Если мы ограничиваем доступ VPN-клиента с определенного IP-адреса, то при изменении IP-адреса возникает та же проблема.

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

Заранее спасибо.

2 ответа

Вы можете настроить клиент для динамической службы DNS (например, dyndns) на стороне клиента.

Затем вы можете использовать это на стороне сервера, чтобы всегда проверять текущий IP с использованием этого DNS.

В качестве альтернативы вы можете привязать веб-сайт только к localhost и разрешить доступ к нему только через туннель SSH с принудительной фиксацией (и сделать так, чтобы он автоматически устанавливался скриптом / планировщиком на стороне клиента на уровне разрешений за пределами пользователей). достичь, чтобы они не могли взять закрытый ключ, необходимый для подключения в любом месте)

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

Кроме того, вы можете сгенерировать токен с помощью Laravel Passport или создать собственный механизм, а затем использовать этот токен для аутентификации, если запрос действителен или нет.

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

Другие вопросы по тегам