Я наконец-то разворачиваю Cloud Gateways для клиентов, и все еще учусь, как лучше всего справляться с подходом UniFi к Зонам (что, кстати, потрясающе). В процессе этого некоторые стандартные/неявные правила вызвали у меня опасения, и я хотел бы их здесь обозначить и попросить команду Ubiquiti проанализировать и, возможно, изменить. Все сводится к тому, как Cloud Gateways (и также прошивки AP) обрабатывают разрешения для DNS-запросов. Хотя я согласен, что в наше время разрешение DNS-запросов в ИНТЕРНЕТ — это необходимость, поскольку в большом количестве сервисов жестко заданы DNS-серверы Google/Cloudflare, эти правила как-то смутно применяются ко всем целевым зонам.
Когда я создаю любую точку доступа с "Включенным гостевым порталом" ("Captive Portal enabled" SSID), добавляется правило "Разрешить общедоступные DNS" ("Allow Public DNS"), что вполне логично для трафика с точки доступа в Интернет (Hotspot->External), например. Но оно применяется ко всем целевым зонам, тем самым позволяя клиентам, подключенным к точке доступа с включенным гостевым порталом, запрашивать DNS-серверы в моей внутренней сети, например, что я не могу рассматривать как хорошую практику. С Hotspot->External все в порядке, но Hotspot->Internal, Hotspot->DMZ... возможно, нет.
Я говорю об этих правилах, чтобы проиллюстрировать
. Зональный брандмауэр делает это простым, *ЕСЛИ НУЖНО*, чтобы я мог разрешить некоторый DNS-трафик, например, но с более строгим правилом, только для одного или двух внутренних DNS-серверов. Я знаю, что также легко установить правило "Запретить" поверх "Разрешить общедоступные DNS", и таким образом остановить этот трафик. В любом случае, наличие этого правила с разрешением по умолчанию кажется очень плохим, так как оно может быть использовано для запросов внутренних DNS-серверов, которые не должны быть доступны для пользователей точки доступа, что может привести к утечке данных DNS, что поможет в составлении карты сети, что облегчит дальнейшие атаки.
И к этому плохому обращению с DNS-трафиком, добавлю, что прошивки AP также имеют "Разрешить TCP и UDP 53, никаких ограничений, неявное правило", которое, по крайней мере, совершенно не задокументировано и нигде не указано, что оно существует. Хотя я считаю, что зональные правила не идеальны, по крайней мере, они явно видны. На прошивках AP это есть, но совершенно не задокументировано.
Данные с U6-Lite на 6.7.12 и U7-Pro на 8.0.23 (оба ведут себя точно так же, привожу только один)
admin@U7-Pro:~# ebtables -t nat -L GUESTIN
Bridge table: nat
Bridge chain: GUESTIN, entries: 12, policy: ACCEPT
[ .... ]
-p IPv4 --ip-proto udp --ip-dport 53 -j GUEST_DNS
-p IPv4 --ip-proto tcp --ip-dport 53 -j GUEST_DNS
[ ... ]
admin@U7-Pro:~#
Bridge chain: GUEST_DNS, entries: 0, policy: ACCEPT
.
Трафик от клиентов точки доступа будет проходить через цепочку ebtables GUESTIN, где трафик для TCP и UDP порта 53 переходит в GUEST_DNS, который пуст с политикой ACCEPT по умолчанию, тем самым предоставляя доступ ко всем и любому IP-адресу, TCP и UDP порту назначения 53, также позволяя этим клиентам запрашивать DNS-серверы внутренней сети *ДАЖЕ* если явно заблокированы правилами IP-ограничений в конфигурации точки доступа. Эти правила "ACCEPT" размещаются перед моими правилами "BLOCK" (IP-ограничения в конфигурации точки доступа), поэтому верхнее ACCEPT всегда побеждает и позволяет этот трафик.
Я на самом деле уже сообщил об этом через службу поддержки (#4408988) 30 ноября 2024 г.
Чтобы я мог исправить прошивки AP, это просто. Просто удалите эти два правила "-j GUEST_DNS" и цепочку GUEST_DNS целиком. Просто позвольте трафику проходить через правила GUESTIN и, если разрешено IP-ограничениями точки доступа, некоторый трафик внутреннего IP-адреса будет разрешен, если это настроено. Я не вижу необходимости в жестком кодировании DNS-правил здесь, просто позвольте трафику проходить через правила GUESTIN, чтобы мои настроенные разрешения/ограничения соблюдались. Это закодированное и совершенно не задокументированное правило также облегчит жизнь любому злоумышленнику, пытающемуся составить карту сети, запрашивая внутренние DNS-серверы.
Когда я создаю любую точку доступа с "Включенным гостевым порталом" ("Captive Portal enabled" SSID), добавляется правило "Разрешить общедоступные DNS" ("Allow Public DNS"), что вполне логично для трафика с точки доступа в Интернет (Hotspot->External), например. Но оно применяется ко всем целевым зонам, тем самым позволяя клиентам, подключенным к точке доступа с включенным гостевым порталом, запрашивать DNS-серверы в моей внутренней сети, например, что я не могу рассматривать как хорошую практику. С Hotspot->External все в порядке, но Hotspot->Internal, Hotspot->DMZ... возможно, нет.
Я говорю об этих правилах, чтобы проиллюстрировать
. Зональный брандмауэр делает это простым, *ЕСЛИ НУЖНО*, чтобы я мог разрешить некоторый DNS-трафик, например, но с более строгим правилом, только для одного или двух внутренних DNS-серверов. Я знаю, что также легко установить правило "Запретить" поверх "Разрешить общедоступные DNS", и таким образом остановить этот трафик. В любом случае, наличие этого правила с разрешением по умолчанию кажется очень плохим, так как оно может быть использовано для запросов внутренних DNS-серверов, которые не должны быть доступны для пользователей точки доступа, что может привести к утечке данных DNS, что поможет в составлении карты сети, что облегчит дальнейшие атаки.И к этому плохому обращению с DNS-трафиком, добавлю, что прошивки AP также имеют "Разрешить TCP и UDP 53, никаких ограничений, неявное правило", которое, по крайней мере, совершенно не задокументировано и нигде не указано, что оно существует. Хотя я считаю, что зональные правила не идеальны, по крайней мере, они явно видны. На прошивках AP это есть, но совершенно не задокументировано.
Данные с U6-Lite на 6.7.12 и U7-Pro на 8.0.23 (оба ведут себя точно так же, привожу только один)
admin@U7-Pro:~# ebtables -t nat -L GUESTIN
Bridge table: nat
Bridge chain: GUESTIN, entries: 12, policy: ACCEPT
[ .... ]
-p IPv4 --ip-proto udp --ip-dport 53 -j GUEST_DNS
-p IPv4 --ip-proto tcp --ip-dport 53 -j GUEST_DNS
[ ... ]
admin@U7-Pro:~#
Bridge chain: GUEST_DNS, entries: 0, policy: ACCEPT
.
Трафик от клиентов точки доступа будет проходить через цепочку ebtables GUESTIN, где трафик для TCP и UDP порта 53 переходит в GUEST_DNS, который пуст с политикой ACCEPT по умолчанию, тем самым предоставляя доступ ко всем и любому IP-адресу, TCP и UDP порту назначения 53, также позволяя этим клиентам запрашивать DNS-серверы внутренней сети *ДАЖЕ* если явно заблокированы правилами IP-ограничений в конфигурации точки доступа. Эти правила "ACCEPT" размещаются перед моими правилами "BLOCK" (IP-ограничения в конфигурации точки доступа), поэтому верхнее ACCEPT всегда побеждает и позволяет этот трафик.
Я на самом деле уже сообщил об этом через службу поддержки (#4408988) 30 ноября 2024 г.
Чтобы я мог исправить прошивки AP, это просто. Просто удалите эти два правила "-j GUEST_DNS" и цепочку GUEST_DNS целиком. Просто позвольте трафику проходить через правила GUESTIN и, если разрешено IP-ограничениями точки доступа, некоторый трафик внутреннего IP-адреса будет разрешен, если это настроено. Я не вижу необходимости в жестком кодировании DNS-правил здесь, просто позвольте трафику проходить через правила GUESTIN, чтобы мои настроенные разрешения/ограничения соблюдались. Это закодированное и совершенно не задокументированное правило также облегчит жизнь любому злоумышленнику, пытающемуся составить карту сети, запрашивая внутренние DNS-серверы.

