Доступ к Cloudflare новая привлекательная функция от Cloudflare, более или менее основанная на Google BeyondCorp (обратный прокси с логином, который должен заменить VPN при доступе к внутренним сетевым приложениям).
Меня беспокоит, насколько на самом деле безопасна их реализация.
Идея BeyondCorp заключается в том, что сервер должен находиться на «границе» сети, когда защищенный сервер приложений не имеет публичных IP-адресов и не может быть доступен напрямую из Интернета.
В случае реализации Cloudflare - сервер приложений должен иметь общедоступный IP-адрес (как и остальные их службы CDN), и он «скрыт» их собственными IP-адресами.
Скрытый IP-адрес может быть ошибочно обнаружен (даже с помощью некоторого JavaScript) или обнаружен другими методами. И даже если в ваших приложениях есть брандмауэр, который ограничивает трафик только с IP-адресов Cloudflare, эти IP-адреса можно подделать.
Я что-то упускаю?
Надеюсь, кто-то из Cloudflare решит эти проблемы.
Спасибо
Лучший способ решить эту проблему - использовать Cloudflare Туннель Арго для подключения вашего сервера к Cloudflare. С помощью Argo Tunnel ваш сервер подключается к Cloudflare, а не Cloudflare к вашему серверу. Следовательно, вашему серверу не обязательно иметь общедоступный IP-адрес или быть доступным в Интернет - ему нужно только иметь возможность устанавливать исходящие соединения.
Если Argo Tunnel не работает для вас, другой вариант - настроить ваш сервер так, чтобы он принимал соединения только от Cloudflare. Вы можете сделать это, настроив брандмауэр на прием подключений только от IP-адреса Cloudflare, или включив Подтвержденные исходные запросы а затем настройте сервер так, чтобы он требовал подключения HTTPS для аутентификации с помощью сертификата клиента Cloudflare. ПРЕДУПРЕЖДЕНИЕ: В любом из этих решений, отличных от Argo-Tunnel, важно, чтобы ваш сервер принимал HTTP-запросы только в тех случаях, когда Host
заголовок включает ваш домен. В противном случае злоумышленник может зарегистрировать свою собственную учетную запись Cloudflare и ввести ваш IP-адрес в свои настройки DNS, что приведет к тому, что запросы будут поступать на ваш сервер «из Cloudflare», но у них будет домен злоумышленника в Host
заголовок. Чтобы проверить Host
заголовок, вы можете, например, настроить nginx
в качестве обратного прокси перед вашим сервером и настройте его с помощью default_server
которые всегда возвращают 404. Однако, если вы используете туннель Арго, вам не нужно беспокоиться о Host
заголовок.
Не забудьте проверить веб-токен json в заголовке запросов в ДОПОЛНЕНИИ для внесения в белый список исходных IP-адресов Cloudflare, если вы выберете этот вариант. Простое включение белого списка не гарантирует безопасность, поскольку другие пользователи cloudflare могут использовать веб-воркер cloudflare для доступа к вашей открытой точке, если они каким-то образом получат информацию о ваших исходных IP-адресах.