21.6.18.1 Безопасность и сетевые проблемы кластера NDB
В этом разделе рассматриваются основные проблемы безопасности сети, связанные с кластером NDB. Крайне важно помнить, что кластер NDB «из коробки» не является безопасным; вы или ваш сетевой администратор должны предпринять надлежащие шаги, чтобы гарантировать, что ваш кластер нельзя скомпрометировать через сеть.
Протоколы связи кластера изначально не защищены, и никаких шифрования или аналогичных мер безопасности не используется при обмене данными между узлами кластера. Поскольку скорость и задержка сети напрямую влияют на эффективность кластера, также не рекомендуется использовать SSL или другое шифрование для сетевых соединений между узлами, так как такие схемы эффективно замедляют коммуникацию.
Также верно, что для управления доступом узлов API к кластеру NDB не используется аутентификация. Как и в случае с шифрованием, избыточная нагрузка от применения требований к аутентификации отрицательно скажется на производительности кластера.
Кроме того, нет проверки исходного IP-адреса для следующих случаев при доступе к кластеру:
-
Узлы SQL или API, использующие «свободные слоты», созданные пустым
[mysqld]или[api]разделами в файлеconfig.iniЭто означает, что если в файле
config.iniесть пустые[mysqld]или[api]разделы, то любые узлы API (включая узлы SQL), знающие имя хоста (или IP-адрес) и порт сервера управления, могут подключаться к кластеру и получать доступ к данным без ограничений. (Дополнительную информацию об этом и связанных проблемах см. в разделе 21.6.18.2, «NDB Cluster и MySQL привилегии».)ПримечаниеВы можете контролировать доступ узлов SQL и API к кластеру, указав параметр
HostNameдля всех[mysqld]и[api]разделов в файлеconfig.ini. Однако это также означает, что если вам необходимо подключить узел API к кластеру с ранее неиспользуемого хоста, необходимо добавить раздел[api], содержащий его имя хоста, в файлconfig.ini.Более подробная информация о параметре
HostNameдоступна в другом месте этой главы. Также см. раздел 21.4.1, «Быстрая настройка теста кластера NDB» для примеров конфигурации, использующихHostNameс узлами API. -
Любой клиент ndb_mgm
Это означает, что любой клиент управления кластером, которому предоставлено имя хоста (или IP-адрес) и порт сервера управления (если не стандартный порт), может подключиться к кластеру и выполнить любую команду клиента управления. Это включает такие команды, как
ALL STOPиSHUTDOWN.
По этим причинам необходимо защитить кластер на сетевом уровне. Наиболее безопасная конфигурация сети для кластера — это такая, которая изолирует соединения между узлами кластера от других сетевых коммуникаций. Этого можно достичь одним из следующих способов:
-
Поддержание узлов кластера в сети, физически изолированной от любых общедоступных сетей. Этот вариант наиболее надежный, но и самый дорогостоящий в реализации.
Здесь показан пример настройки кластера NDB с использованием физически изолированной сети:
Рисунок 21.9 Кластер NDB с аппаратным брандмауэром
Эта настройка имеет две сети: одну частную (сплошная рамка) для серверов управления кластером и узлов данных и одну общедоступную (пунктирная рамка), где находятся узлы SQL. (Мы показываем соединение узлов управления и данных с помощью гигабитного коммутатора, поскольку это обеспечивает наилучшую производительность.) Обе сети защищены от внешнего доступа аппаратным брандмауэром, иногда также известным как сетевой брандмауэр.
Эта сетевая настройка является самой безопасной, так как пакеты не могут достичь узлов управления или данных кластера извне сети — и ни одна внутренняя коммуникация кластера не может выйти наружу — без прохождения через узлы SQL, если только узлы SQL не разрешают пересылку пакетов. Это означает, конечно, что все узлы SQL должны быть защищены от попыток взлома.
ВажноЧто касается потенциальных уязвимостей, узел SQL ничем не отличается от любого другого сервера MySQL. См. раздел 6.1.3, «Обеспечение безопасности MySQL от атак» для описания техник, которые вы можете использовать для защиты серверов MySQL.
-
Использование одного или нескольких программных брандмауэров (также известных как брандмауэры на основе хоста) для управления пакетами, проходящими в кластер из частей сети, которым нет необходимости в доступе к нему. В этом типе настройки программный брандмауэр должен быть установлен на каждом хосте в кластере, который в противном случае может быть доступен извне локальной сети.
Вариант на основе хоста является наименее дорогостоящим в реализации, но полностью полагается на программное обеспечение для защиты, поэтому его труднее поддерживать в безопасности.
Эта сетевая настройка для кластера NDB показана здесь:
Рисунок 21.10 Кластер NDB с программными брандмауэрами
Использование этого типа сетевой настройки означает, что существуют две зоны узлов кластера NDB. Каждый узел кластера должен иметь возможность обмениваться данными со всеми другими машинами в кластере, но только узлы, на которых размещаются узлы SQL (пунктирная рамка), могут иметь какое-либо взаимодействие с внешним миром, в то время как узлы в зоне, содержащей узлы данных и управления (сплошная рамка), должны быть изолированы от любых машин, которые не являются частью кластера. Приложения, использующие кластер, и пользователи этих приложений не должны иметь прямого доступа к узлам управления и данных.
Для достижения этого необходимо настроить программные брандмауэры, ограничивающие трафик до типов, показанных в следующей таблице, в зависимости от типа узла, который работает на каждом компьютере кластера:
Таблица 21.62 Типы узлов в конфигурации кластера с брандмауэрами на основе хоста
Таблица 21.62 Типы узлов в конфигурации кластера с брандмауэрами на основе хоста Тип узла Разрешённый трафик Узел SQL или API Он исходит с IP-адреса узла управления или данных (используя любой порт TCP или UDP).
Он исходит из сети, в которой находится кластер, и находится на порту, который использует ваше приложение.
Узел данных или управления Он исходит с IP-адреса узла управления или данных (используя любой порт TCP или UDP).
Он исходит с IP-адреса узла SQL или API.
Любой трафик, не соответствующий указанному в таблице для данного типа узла, должен быть заблокирован.
Конкретные настройки брандмауэра зависят от используемого приложения брандмауэра и выходят за рамки данного руководства. iptables — очень распространенное и надежное приложение брандмауэра, которое часто используется с APF в качестве переднего плана для упрощения конфигурации. Вы можете (и должны) обратиться к документации используемого программного брандмауэра, если вы решите реализовать настройку сети кластера NDB этого типа или «смешанного» типа, как обсуждалось в следующей статье.
-
Также можно использовать сочетание первых двух методов, применяя как аппаратные, так и программные средства для защиты кластера — то есть, используя как сетевые, так и брандмауэры на основе хоста. Это находится посередине между первыми двумя схемами по уровню безопасности и стоимости.
Возможная сетевая реализация кластера NDB с комбинированными аппаратным и программным брандмауэрами показана здесь:
Рисунок 21.11 Кластер NDB с комбинированным аппаратным и программным брандмауэрами
В этом случае вы можете настроить правила в аппаратном брандмауэре, чтобы запретить любой внешний трафик, кроме трафика к узлам SQL и API, и затем разрешить трафик только на необходимых портах.
Какой бы сетевой конфигурации вы не использовали, помните, что ваша цель с точки зрения обеспечения безопасности кластера остается неизменной — предотвратить доступ нежелательного трафика к кластеру и обеспечить наиболее эффективную коммуникацию между узлами кластера.
Поскольку кластер NDB требует открытия большого количества портов для связи между узлами, рекомендуемым вариантом является использование изолированной сети. Это самый простой способ предотвратить попадание нежелательного трафика в кластер.
Если вы хотите администрировать кластер NDB удаленно (то есть, извне локальной сети), рекомендуется использовать ssh или другой защищённый оболочный вход для доступа к хосту узла SQL. С этого хоста вы можете запустить клиент управления, чтобы безопасно получить доступ к серверу управления, находящемуся в локальной сети кластера.
Хотя теоретически это возможно, не рекомендуется использовать ndb_mgm для непосредственного управления кластером извне локальной сети, в которой он работает. Поскольку между клиентом и сервером управления не производится ни аутентификация, ни шифрование, такой способ управления кластером крайне небезопасен и практически наверняка будет взломан рано или поздно.
© 2025 Oracle
Licensed under the GPLv2 License.