Наша текущая установка
ALB -> Target Group -> EC2 instances
В настоящий момент можно получить доступ к серверам EC2 за балансировщиком нагрузки, используя IP-адрес ALB, DNS-имя (например, xxxx-5555555555.eu-west-1.elb.amazonaws.com), а также домен, указанный в DNS (например, aaa.bbbbbbb.com).
Можно ли заблокировать доступ к ALB при использовании IP-адреса или имени DNS и разрешить доступ только при использовании имени домена (aaa.bbbbbbb.com)? Если да, то как мне это настроить?
Опция 1.
Сделайте целевой группой вашего ALB по умолчанию пустую целевую группу без экземпляров. Это допустимая конфигурация.
100% запросов, отправленных в эту целевую группу, всегда будут неудачными, поэтому эти запросы будут встречены 503 Service Unavailable
.
Затем добавьте вторую целевую группу, «настоящую», с прикрепленными экземплярами, и настройте балансировщик так, чтобы он отправлял только запросы, соответствующие желаемому. Host
в эту группу.
https://serverfault.com/a/868017/153161 аналогичен, но противоположен этому случаю, когда группа по умолчанию обрабатывает большинство запросов, но фиктивная целевая группа / черная дыра обрабатывает запросы, которые вы хотите заблокировать, что приводит к тому же поведению - заблокированные запросы никогда не отправляются экземплярам.
Вариант 2.
Amazon Брандмауэр веб-приложений (WAF) также может сделать это, создав правило сопоставления строк для сравнения с входящим запросом. Host
заголовок. WAF интегрируется с ALB.
Эта установка, вероятно, будет означать повышенную стоимость, поскольку вам придется платить за WAF (0,60 доллара США за миллион веб-запросов, в настоящее время доступно не во всех регионах) ... но если вы уже при использовании WAF на этом ALB для других целей (ограничение скорости, XSS, SQL, сопоставление строк и т. д.) стоимость дополнительного правила будет незначительной или нулевой, в зависимости от текущей конфигурации.
Существует заблуждение, что ваш трафик проходит «через» WAF, но это не так. ALB клонирует первые несколько КБ из каждого запроса и отправляет пакет в WAF, запрашивая вердикт о том, разрешить ли запрос или нет. Если он проходит, запрос разрешен и WAF не попадает в цикл трафика. Если это не удается, ALB возвращает 403
. Если ALB вообще не может получить ответ от WAF (например, из-за системного сбоя), запрос всегда разрешен, что предотвращает превращение WAF в точку отказа.
Вариант 3. (ч / т @ceejayoz)
Настройте поведение виртуального хостинга своих веб-серверов с конфигурацией по умолчанию, чтобы возвращать ответ об ошибке при неожиданном / неизвестном Host
заголовок во входящем запросе. Ваш сервер не должен положительно отвечать на такие запросы в соответствии с передовой практикой.
Эти параметры расположены в произвольном порядке.