Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›Защитить Elastic Stack

Ограничение подключений с помощью фильтрации IP-адресов

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

Если IP-адрес узла находится в списке запрещённых, функции безопасности Elasticsearch позволяют подключиться к Elasticsearch, но соединение будет немедленно прервано, и запросы не будут обработаны.

Установки Elasticsearch не предназначены для публичного доступа через Интернет. Фильтрация IP-адресов и другие возможности функций безопасности Elasticsearch не изменяют это условие.

Включение фильтрации IP-адресов

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

Вы настраиваете фильтрацию IP-адресов, указав настройки xpack.security.transport.filter.allow и xpack.security.transport.filter.deny в elasticsearch.yml. Правила разрешения имеют приоритет над правилами запрещения.

Если не указано иное, настройки xpack.security.http.filter.* и xpack.security.remote_cluster.filter.* по умолчанию принимают значения соответствующей настройки xpack.security.transport.filter.*.

xpack.security.transport.filter.allow: "192.168.0.1"
xpack.security.transport.filter.deny: "192.168.0.0/24"

Ключевое слово _all может использоваться для запрещения всех подключений, которые не разрешены явно.

xpack.security.transport.filter.allow: [ "192.168.0.1", "192.168.0.2", "192.168.0.3", "192.168.0.4" ]
xpack.security.transport.filter.deny: _all

Настройка фильтрации IP-адресов также поддерживает IPv6-адреса.

xpack.security.transport.filter.allow: "2001:0db8:1234::/48"
xpack.security.transport.filter.deny: "1234:0db8:85a3:0000:0000:8a2e:0370:7334"

Вы также можете фильтровать по именам хостов, когда доступны DNS-запросы.

xpack.security.transport.filter.allow: localhost
xpack.security.transport.filter.deny: '*.google.com'

Отключение фильтрации IP-адресов

Отключение фильтрации IP-адресов может незначительно улучшить производительность в некоторых условиях. Чтобы полностью отключить фильтрацию IP-адресов, установите значение настройки xpack.security.transport.filter.enabled в файле конфигурации elasticsearch.yml на значение false.

xpack.security.transport.filter.enabled: false

Вы также можете отключить фильтрацию IP-адресов для транспортного протокола, но включить её только для HTTP.

xpack.security.transport.filter.enabled: false
xpack.security.http.filter.enabled: true

Указание профилей транспортного протокола TCP

Профили транспортного протокола TCP позволяют Elasticsearch привязываться к нескольким хостам. Функции безопасности Elasticsearch позволяют применять различные настройки фильтрации IP-адресов к различным профилям.

xpack.security.transport.filter.allow: 172.16.0.0/24
xpack.security.transport.filter.deny: _all
transport.profiles.client.xpack.security.filter.allow: 192.168.0.0/24
transport.profiles.client.xpack.security.filter.deny: _all

Если вы не укажете профиль, используется профиль default по умолчанию.

Фильтрация HTTP

Вы можете захотеть иметь различную фильтрацию IP-адресов для транспортного и HTTP протоколов.

xpack.security.transport.filter.allow: localhost
xpack.security.transport.filter.deny: '*.google.com'
xpack.security.http.filter.allow: 172.16.0.0/16
xpack.security.http.filter.deny: _all

Фильтрация удаленного кластера (модель на основе API-ключей)

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

xpack.security.remote_cluster.filter.allow: 192.168.1.0/8
xpack.security.remote_cluster.filter.deny: 192.168.0.0/16
xpack.security.transport.filter.allow: localhost
xpack.security.transport.filter.deny: '*.google.com'
xpack.security.http.filter.allow: 172.16.0.0/16
xpack.security.http.filter.deny: _all

Включение или отключение фильтрации IP-адресов для удаленного кластера управляется также настройкой xpack.security.transport.filter.enabled. Это означает, что фильтрация для интерфейсов удаленного кластера и транспортного интерфейса должна быть включена или отключена вместе. Однако списки разрешенных и запрещенных IP-адресов могут отличаться.

Динамическое обновление настроек фильтра IP-адресов

В случае работы в среде с динамическими IP-адресами, например, облачных хостингах, сложно определить IP-адреса заранее при развертывании машины. Вместо изменения файла конфигурации и перезапуска узла, вы можете использовать API Cluster Update Settings. Например:

resp = client.cluster.put_settings(
    persistent={
        "xpack.security.transport.filter.allow": "172.16.0.0/24"
    },
)
print(resp)
response = client.cluster.put_settings(
  body: {
    persistent: {
      'xpack.security.transport.filter.allow' => '172.16.0.0/24'
    }
  }
)
puts response
const response = await client.cluster.putSettings({
  persistent: {
    "xpack.security.transport.filter.allow": "172.16.0.0/24",
  },
});
console.log(response);
PUT /_cluster/settings
{
  "persistent" : {
    "xpack.security.transport.filter.allow" : "172.16.0.0/24"
  }
}

Вы также можете динамически отключить фильтрацию полностью:

resp = client.cluster.put_settings(
    persistent={
        "xpack.security.transport.filter.enabled": False
    },
)
print(resp)
response = client.cluster.put_settings(
  body: {
    persistent: {
      'xpack.security.transport.filter.enabled' => false
    }
  }
)
puts response
const response = await client.cluster.putSettings({
  persistent: {
    "xpack.security.transport.filter.enabled": false,
  },
});
console.log(response);
PUT /_cluster/settings
{
  "persistent" : {
    "xpack.security.transport.filter.enabled" : false
  }
}

Для предотвращения блокировки доступа к кластеру, адрес транспортного интерфейса по умолчанию никогда не будет запрещен. Это означает, что вы всегда сможете подключиться к системе через SSH и использовать curl для применения изменений.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/ip-filtering.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API