Слушатель Oracle, что это такое

Обновлено: 21.11.2024

При запуске экземпляр базы данных регистрируется в прослушивателе, используя одно или несколько имен служб. Когда клиентская программа или база данных подключается к прослушивателю, она запрашивает подключение к службе.

Имя службы может идентифицировать несколько экземпляров базы данных, а экземпляр может принадлежать нескольким службам.

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

Чтобы подключиться к службе базы данных, клиенты сначала связываются с процессом прослушивания, который обычно находится на сервере базы данных. Прослушиватель получает входящие запросы на подключение от клиентов и отправляет эти запросы на сервер базы данных. После установления соединения клиент и сервер базы данных обмениваются данными напрямую.

Прослушиватель знает, какие службы могут обрабатывать запросы на подключение, поскольку база данных Oracle динамически регистрирует эту информацию в прослушивателе. Этот процесс регистрации называется регистрацией услуги. Регистрация также предоставляет слушателю информацию об экземплярах базы данных и обработчиках служб, доступных для каждого экземпляра.

Статьи по теме

Прослушиватель в запросе на подключение

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

Отправляет клиенту сообщение о перенаправлении с указанием местоположения диспетчера или процесса выделенного сервера. Затем клиент напрямую подключается к диспетчеру или процессу выделенного сервера.

После того, как прослушиватель завершил операцию подключения к клиенту, клиент связывается напрямую с базой данных Oracle без участия прослушивателя. Прослушиватель возобновляет прослушивание входящих сетевых сеансов.

Процесс в 3 шага:

<р>2. Прослушиватель анализирует запрос клиента и перенаправляет его обработчику службы для запрошенной службы базы данных.

Управление слушателями

Конфигурация

Прослушиватель настраивается с одним или несколькими адресами протокола прослушивания, информацией о поддерживаемых службах и параметрами, управляющими его поведением во время выполнения. Конфигурация прослушивателя хранится в файле конфигурации с именем listener.ora.

Чтобы узнать больше о настройке прослушивателя, см. эту статью: База данных Oracle — конфигурация прослушивателя (listener.ora)

Прослушиватель Oracle — это служба, работающая на хосте базы данных и получающая запросы от клиентов Oracle. Иногда прослушиватель перенаправляет запросы серверу базы данных (рис. 8.3), а иногда он перенаправляет клиента в другое место, где сервер базы данных прослушивает выделенные соединения (рис. 8.4). В любом случае это первая точка контакта для клиента.

Рисунок 8.3. Общий серверный процесс

Рисунок 8.4. Процессы выделенного сервера

Самая простая атака для инсайдера — это атака на слушателя, у которого нет пароля. Выполнение команд прослушивателя, таких как «стоп», тривиально, если у вас есть копия программного обеспечения Oracle для управления прослушивателем, lsnrctl:

остановка nrctl 192.168.1.2

Прослушиватель Oracle — это вход в вашу базу данных. Заблокируйте дверь, настроив ее на запрос пароля. До 10 г. он был разблокирован по умолчанию, поэтому обязательно проверьте свои старые серверы баз данных.

Безопасность прослушивателя TNS

Джош Шауль, Аарон Ингрэм, в книге «Practical Oracle Security», 2007 г.

Уязвимости прослушивателя «по замыслу»

В Oracle Listener нет функции блокировки учетной записи. Это означает, что злоумышленник может подключиться к прослушивателю и бесконечно угадывать пароли, при этом прослушиватель не предпримет никаких шагов для своей защиты. Подбор пароля методом полного перебора против Oracle Listener — жизнеспособная атака.

При аутентификации в сети Oracle отправляет пароль прослушивателя в открытом виде, предоставляя злоумышленнику, отслеживающему сетевые соединения, пароль прослушивателя. Имея пароль, злоумышленник может перенастроить прослушиватель, чтобы заблокировать доступ к базе данных или, что еще хуже, получить контроль над сервером базы данных.

При аутентификации на прослушивателе (только в версиях до 10 g) он примет либо правильный пароль прослушивателя, либо хэш пароля прослушивателя. Это означает, что хэш пароля прослушивателя, хранящийся в listener.ora, должен быть защищен, как если бы это был пароль в открытом виде. Пользователям, которым не разрешено администрировать прослушиватель, должен быть запрещен любой доступ (в том числе только для чтения) к файлу listener.ora.

Внутренний интерфейс

Ограничение доступа к сети

Сетевая безопасность базы данных — еще один важный аспект защиты базы данных.Несколько пунктов, которые мы здесь обсуждаем, ограничивают доступ через прослушиватель Oracle. Первый вопрос заключается в том, как предотвратить установление соединений sqlnet с базой данных неавторизованными хостами. Минимальным требованием для SAP является подключение sqlnet от всех серверов приложений к серверу базы данных. Давайте используем пример, чтобы продемонстрировать этот момент. Предположим, что ваша производственная система SAP существует на двух физических серверах: server1 и server2. Server1 — это сервер базы данных, а server2 — центральный экземпляр. В этом примере мы можем ограничить подключение sqlnet от server2 к server1 и от server1 к самому себе. См. Рисунок 6.9 для конфигурации sqlnet.ora, которая ограничивает доступ только необходимыми хостами.

Рисунок 6.9. Конфигурация sqlnet.ora

Файл конфигурации sqlnet.ora находится в каталоге $ORACLE_HOME/network/admin. Конфигурация вступает в силу после перезапуска слушателя. Если вы реализуете это в действующей системе и немного робеете нажимать на триггер, проанализируйте файл журнала прослушивателя, чтобы увидеть, какие хосты обращались к вашей базе данных через sqlnet. Я включил пример сценария (см. рис. 6.10), который анализирует файл журнала слушателя и выводит адреса, которые обращались к вашему слушателю. Запустите сценарий от имени пользователя adm или ora UNIX. Он будет просматривать все журналы прослушивателей, расположенные в расположении по умолчанию, которые называются $ORACLE_HOME/network/log/listener.log*.

Рисунок 6.10. Пример скрипта для разбора файла listener.log

Профиль конфигурации sqlnet.ora определяет реализацию конкретных функций Oracle Net. sqlnet.ora находится как на сервере, так и на клиенте в расположении по умолчанию $ORACLE_HOME/network/admin или в определенном расположении, указанном в переменной среды TNS_ADMIN. В SAP-реализации Oracle файл sqlnet.ora находится на сервере базы данных и на сервере приложений. В Таблице 6.3 описаны функции Oracle Net, важные для SAP.

Таблица 6.3. sqlnet.ora

Имя параметраОписание
DEFAULT_SDU_SIZEЭтот параметр определяет размер блока данных сеанса (SDU) в байтах. Установите это значение равным 32768 на стороне клиента и сервера.
TRACE_LEVEL_CLIENTЭтот параметр реализует трассировку клиента. Возможные значения: 0–16, где 0 — самый низкий уровень, а 16 — самый высокий уровень трассировки. Уровень трассировки должен быть установлен на 0 во время нормальной работы.
TRACE_UNIQUE_CLIENTЭтот параметр разделяет сеансы на отдельные файлы трассировки. Установите значение true.
SQLNET.EXPIRE_TIMEЭтот параметр указывает время в минутах, по истечении которого соединение в состоянии ошибки разрывается. Введите значение 5.0, чтобы деактивировать эту функцию.
SQLNET.INBOUND_CONNECT_ TIMEOUTЭтот параметр определяет время в секундах, по истечении которого соединение закрывается после неудачного входа в систему. Установите значение 120.
Пример файла Web AS 7.0 sqlnet.ora

Еще один момент, о котором мы поговорим, — это защита слушателя. Записи вводятся в файл конфигурации прослушивателя, расположенный по умолчанию, $ORACLE_HOME/network/admin/listener.ora. В установках NetWeaver 2004s 10g SAP объявляет местоположение прослушивателя с помощью переменной среды TNS_ADMIN. Записи, показанные на рис. 6.11, защищают все действия прослушивателя с помощью хешированного пароля «97A82B7E9A8725CD» и требуют, чтобы изменения в прослушивателе выполнялись в фактическом файле listener.ora.

Рисунок 6.11. Защита слушателя

Тестирование корпоративных приложений

Мы довольно подробно обсуждали Nmap в главе 3, Сканирование и перечисление, а также обсуждали некоторые альтернативные способы использования этого инструмента в других главах. Есть несколько дополнительных методов, которые можно использовать с Nmap, чтобы лучше идентифицировать и тестировать корпоративные приложения. Например, при выполнении сканирования хоста с помощью Nmap вы видите результаты, показанные на рис. 7.3.

Рисунок 7.3. Результаты сканирования Nmap

Когда приложение разделено на несколько уровней, оно соответствует одному из критериев для того, чтобы быть корпоративным приложением, и поэтому его следует тестировать с учетом этого предположения. В данном случае похоже, что мы обнаружили уровень сервера базы данных, который потенциально может быть корпоративным приложением. Инструменты и методы, продемонстрированные в главе 6 «Взлом служб баз данных», могут дать нам доступ к этой системе. В случае, если мы сможем успешно скомпрометировать этот хост, мы захотим найти доказательства того, что система на самом деле является частью корпоративного приложения.Мы обсудим некоторые методы определения этого, продолжая рассматривать различные инструменты для тестирования корпоративных приложений на проникновение.

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

Если мы используем параметр -p с Nmap, мы можем указать диапазон портов для сканирования. Установив диапазон от 1 до 65 535, мы можем сканировать все системные порты и искать признаки корпоративного приложения. На рис. 7.4 показан пример сканирования этого типа.

Рисунок 7.4. Сканирование сервера приложений Nmap

Быстрый поиск в Google по запросу Siebel показывает, что это корпоративное приложение для управления взаимоотношениями с клиентами (CRM), принадлежащее Oracle. Просканировав все порты в системе, мы смогли найти убедительные признаки того, что в этой системе запущено корпоративное приложение, которое мы не обнаружили бы при сканировании портов по умолчанию.

Авторское право © 2022 Elsevier B.V. или ее лицензиары или участники. ScienceDirect ® является зарегистрированным товарным знаком Elsevier B.V.

Вывод: в этом руководстве вы узнаете о прослушивателе Oracle и о том, как использовать команды управления прослушивателем для управления прослушивателем.

Введение в Oracle Listener

Прослушиватель — это отдельный процесс сервера базы данных, который выполняется локально на сервере базы данных или удаленно в среде Oracle RAC.

На следующем рисунке показана архитектура базы данных Oracle и местонахождение слушателя:

Когда приходит запрос клиента, слушатель сначала получает его. Затем прослушиватель устанавливает соединение между клиентом и экземпляром базы данных.

После успешного подключения клиента к экземпляру базы данных прослушиватель передает подключение клиента серверному процессу.

Если прослушиватель перестанет работать, вы больше не сможете подключиться к базе данных Oracle. Однако это не повлияет на все существующие соединения.

Команды управления Oracle Listener

Чтобы запустить прослушиватель, используйте команду LSNCTRL из командной строки в Windows или терминала в Linux:

Введите команду справки, чтобы увидеть все доступные параметры:

Вот результат:

Вы можете использовать все эти команды для управления слушателем. Давайте воспользуемся командой состояния:

В выходных данных отображается состояние прослушивателя, например псевдоним, версия, дата начала, время безотказной работы, файл трассировки, безопасность, файлы параметров прослушивателя, файлы журналов прослушивателя и сводка конечной точки прослушивания.

Теперь введите команду остановки:

После того, как слушатель прекратит прослушивание, вы больше не сможете подключиться к базе данных Oracle. Любая попытка подключения к базе данных Oracle приведет к следующей ошибке:

Обратите внимание, что все соединения, установленные до остановки прослушивателя, не будут затронуты. Поскольку остановка прослушивателя предотвращает входящие подключения, она не отключает те, которые уже подключены.

Используйте команду запуска, чтобы запустить прослушиватель:

Чтобы выйти из прослушивателя, используйте команду выхода:

Еще один способ выполнить команду прослушивателя — через командную строку, не заходя в интерфейс управления прослушивателем. Например, чтобы просмотреть состояние прослушивателя, вы можете использовать следующую команду в командной строке в Windows или терминале в Linux:

В Windows прослушиватель Oracle имеет службу, работающую как прослушиватель TNS. Вы также можете контролировать состояние слушателя с помощью этой службы, останавливая и запуская ее.

В этом руководстве вы узнали об Oracle Listener и о том, как использовать команды для управления прослушивателем.

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

Конфигурацию прослушивателей, используемых Oracle Clusterware и Oracle RAC, можно изменить с помощью команд утилиты управления сервером (SRVCTL) или с помощью NETCA. Ручное редактирование файла listener.ora не требуется.

Каждый прослушиватель настроен с одним или несколькими адресами протокола, которые определяют его конечные точки прослушивания. Агент прослушивателя динамически обновляет конечные точки с помощью прослушивателя.Начиная с Oracle Database 11 g Release 2, файл listener.ora теперь содержит только ключ IPC и следующую информацию:

В предыдущем примере протокол ADDRESS неявно ссылается на конечную точку HOST локального узла. Файл listener.ora одинаков на всех узлах базы данных Oracle RAC. Конечные точки прослушивания, такие как номера портов, динамически регистрируются в прослушивателе.

Перед установкой Oracle RAC во время установки Oracle Grid Infrastructure NETCA создает и запускает прослушиватель по умолчанию в домашнем каталоге Grid с именем LISTENER . Прослушиватель настроен с использованием адресов прослушивания протокола по умолчанию. Прослушиватель настроен так, чтобы отвечать на запросы на подключение, направленные на один адрес протокола, указанный во время установки.

Во время установки Oracle RAC база данных Oracle RAC использует прослушиватель в домашней сети Grid и настраивает служебную информацию о базе данных Oracle RAC. Службы базы данных автоматически регистрируют свою информацию в прослушивателе, такую ​​как имя службы, имена экземпляров и информацию о загрузке. Динамическая регистрация службы устраняет необходимость в статической настройке служб базы данных. Однако если вы планируете использовать Oracle Enterprise Manager, необходима статическая конфигурация службы.

Пример 6-4 Пример файла listener.ora для узла Oracle RAC

Ниже приведен пример файла listener.ora, который появится после установки, с записью для узла с именем node1 и прослушивателем SCAN.

Арун Кумар

Сеть Oracle очень важна, когда вы хотите подключить конкретную базу данных. Для настройки сети у нас должен быть запущен прослушиватель на сервере и настроен tnsnames.ora на стороне клиента.

Настроить listener.ora

Файл listerner.ora содержит параметры конфигурации сети на стороне сервера. Его можно найти в каталоге $ORACLE_HOME/network/admin на сервере. Ниже приведена конфигурация прослушивателя по умолчанию

Каждый раз, когда вы вносите изменения в файл listener.ora, перезапускайте слушатель

Настройте listener.ora в многопользовательском режиме

В многопользовательской архитектуре каждую PDB можно рассматривать как отдельную базу данных. Вы можете либо настроить один прослушиватель, который принимает соединения для всех PDB, либо создать отдельный прослушиватель для каждой PDB.

Метод 1. Один прослушиватель для всех PDB-файлов

Метод 2. Несколько прослушивателей для отдельных PDB

Вы должны настроить несколько прослушивателей для каждой отдельной PDB в режиме реального времени

Запуск всех слушателей

Остановить определенный прослушиватель

Настроить tnsnames.ora

Файл tnsnames.ora помогает подключаться из одной базы данных (или клиента) к другой базе данных. Файл tns находится в папке $ORACLE_HOME/network/admin.

Файл tnsnames.ora содержит сведения о подключении удаленной базы данных, к которой вы хотите подключиться. Сначала запрос отправляется прослушивателю, работающему в целевой базе данных, а затем устанавливается соединение. На целевом сервере (к которому вы хотите подключиться) и прослушиватель, и база данных должны быть запущены и работать. В противном случае соединение не будет установлено.

Ниже представлен заполненный файл tnsnames.ora, в котором мы пытаемся подключиться к базе данных ORA12C, работающей на хосте 192.168.1.9

Нет ограничений на количество подключений, которые вы можете добавить в файл tnsnames.ora. Например, если вы хотите добавить несколько записей для подключения к базе данных, ваш файл будет выглядеть так, как показано ниже

Теперь, когда вы добавили записи tns в файл, давайте подключимся к удаленной базе данных

Читайте также: