Tns oracle что это
Начиная с SQL Server 2005 (9.x), SQL Server поддерживает принудительные подписки Oracle через поставщик Oracle OLE DB, предоставляемый Oracle.
Режимы работы Листенера
В зависимости от конфигурации, описанной в listener.ora, служба Листенера может работать в трех различных режимах:
- Database – предоставляет удаленный доступ к конкретной базе. Этот режим является стандартным и потому более всего распространен.
- PLSExtProc – предоставляет доступ к командам операционной системы через процедуры PL/SQL.
- Executable – предоставляет удаленный доступ к командам операционной системы. Он позволяет продуктам Oracle, таким как, например, Oracle EBusiness Suite и Oracle Database общаться между собой через Листенер.
На рисунке ниже показан Листенер, сконфигурированный в двух режимах: Database и PLSExtProc. За подключение к СУБД отвечает сервис с именем «orcl9» (режим Database), за выполнение внешних процедур отвечает сервис PLSExtProс.
Мы же в следующей статье блога перейдем к очень интересному вопросу – атакам на службу Листенера. Применим пошаговую стратегию, начав со стандартных атак на незащищенную службу и постепенно переходя ко все более сложным вариантам атак, на защищенную службу Листенера. Большинство примеров будет работать как старой версии СУБД Oracle 8i, которая, тем не менее, до сих пор (. ) встречается в корпоративных сетях, так и на самый распространенный на данный момент версии 11g.
(ORACLE SID = ora816)
При подключении к выделенному серверу процесс прослушивания автоматически запустит выделенный сервер. В ОС UNIX это делается с помощью системных вызовов fork() и ехес() (единственный способ создать новый процесс после инициализации ОС UNIX - использовать системный вызов iork()). Теперь мы физически подключены к базе данных. В Windows процесс прослушивания требует от серверного процесса создания нового потока для подключения. После создания этого потока клиент перенаправ-
ляется на него, и тем самым обеспечивается физическое подключение. В случае ОС UNIX это можно представить следующей схемой:
В режиме MTS процесс прослушивания работает иначе. Ему известно, какие процессы-диспетчеры работают в составе экземпляра. При получении запроса на подключение процесс прослушивания выбирает процесс-диспетчер из пула доступных диспетчеров. Затем он посылает клиенту информацию, позволяющую подключиться к процессу-диспетчеру. Это необходимо, поскольку процесс прослушивания работает на известном порту соответствующего хоста, а вот диспетчеры будут принимать подключения через произвольно выделенные порты. Процессу прослушивания известны эти выделенные порты, поэтому он автоматически выбирает свободный диспетчер. Затем клиент отключается от процесса прослушивания и подключается непосредственно к диспетчеру. В результате устанавливается физическое соединение с СУБД. Графически это можно представить так:
Итак, обзор архитектуры Oracle закончен. Мы описали, что такое экземпляр Oracle, что такое база данных и как можно подключиться к базе данных через выделенный и разделяемый сервер. На следующей схеме показано взаимодействие с сервером Oracle клиента, подключенного к разделяемому серверу, и клиента, работающего с выделенным серверным процессом. Один экземпляр Oracle может поддерживать оба типа подключений одновременно:
Теперь подробно рассмотрим процессы, образующие сервер, их назначение и взаимодействие друг с другом, а также содержимое области SGA и назначение ее компонентов. Но начнем мы с описания различных типов файлов, которые сервер Oracle использует для управления данными.
В состав базы данных и экземпляра входит шесть типов файлов. С экземпляром связаны файлы параметров. По этим файлам экземпляр при запуске определяет свои характеристики, например размер структур в памяти и местонахождение управляющих файлов.
Базу данных образуют следующие файлы.
Файл1 данн1х. Собственно данные (в этих файлах хранятся таблицы, индексы и
все остальные сегменты).
Файл1 журнала повторного в1полнения. Журналы транзакций.
Управляющие файл1. Определяют местонахождение файлов данных и содержат другую необходимую информацию о состоянии базы данных.
Временн1е файл1. Используются при сортировке больших объемов данных и для хранения временных объектов.
Файл1 паролей. Используются для аутентификации пользователей, выполняющих
администрирование удаленно, по сети. Мы не будем их подробно рассматривать.
Наиболее важны первые два типа файлов, поскольку именно в них хранятся накопленные данные. В случае потери остальных файлов хранящиеся данные не пострадают. Если будут потеряны файлы журнала повторного выполнения, некоторые данные могут быть потеряны. Если же будут потеряны файлы данных и все их резервные копии, данные, безусловно, будут потеряны навсегда.
Lsnrctl
Lsnrctl является консольной утилитой, используемой для администрирования Листенера. С ее помощью можно управлять Листенером как локально, так и удаленно. Команды управления включают в себя возможность настройки протоколирования событий, смены пароля или удаленного перезапуска Листенера.
Настройте разрешения для каталога
Учетной записи, под которой запускается служба SQL Server на распространителе, должны быть предоставлены права на чтение и выполнение для каталога (и всех вложенных каталогов), где установлено клиентское сетевое программное обеспечение Oracle.
Установка пароля для Oracle Listener
При первоначальной установке Listener утилита не имеет никакой защиты паролем. Любой пользователь, имеющий доступ к операционной системе, без труда может остановить Listener Oracle и воспрепятствовать клиентам подключаться, просто введя команду lsnrctl stop в командной строке.
На заметку! Установленный по умолчанию пароль службы слушателя — listener, и при использовании Listener этот пароль указывать не нужно.
Собственный пароль для утилиты Listener Oracle можно установить, как показано в листинге ниже.
После того как пароль успешно изменен, службу Listener нельзя будет останавливать или запускать как раньше — для этого придется ввести пароль пользователя. Для указания листенеру Оракл нового пароля необходимо использовать выражение set password в приглашении утилиты lsnrctl, после чего можно еще раз запустить или остановить службу Oracle Net Listener. Обратите внимание, что выражение set password не устанавливает новый пароль, а просто вынуждает слушателя запрашивать пароль для выполнения административных задач.
Результат неудачной попытки остановки Listener вследствие отсутствия предоставленного пароля показан в листинге ниже. Затем листенер был корректно остановлен посредством применения команды set password.
Для администрирования и настройки конфигурации публикации Oracle необходимо ознакомиться со следующей терминологией Oracle. Полный список терминов Oracle см. в электронной документации Oracle.
Индексно организованные таблицы (IOT)
Таблица, данные которой физически отсортированы на диске в индексном порядке; аналог таблицы Microsoft SQL Server с кластеризованным индексом. IOT реплицируется на подписчик в виде таблицы с кластеризованным индексом.
Экземпляр
База данных Oracle связана с экземпляром. Экземпляр содержит память и фоновые процессы, поддерживающие базу данных. Экземпляр Oracle всегда сопоставляется с одной базой данных, тогда как экземпляр SQL Server может содержать множество баз данных. Существуют обстоятельства, при которых база данных Oracle может иметь несколько экземпляров.
Прослушиватель Oracle
Обрабатывает входящий сетевой трафик для экземпляра базы данных Oracle. При настройке сетевого подключения к базе данных Oracle указывается протокол, по которому отсылается трафик, и порт, на котором прослушиватель прослушивает трафик. Прослушиватель обычно настраивается на запуск на том же компьютере, на котором выполняется экземпляр базы данных Oracle, и может быть настроен для работы с одним или несколькими экземплярами.
ROWID
Указатель расположения определенной строки базы данных. Поскольку извлечение строк с использованием ROWID происходит быстрее, чем при использовании просмотра таблицы или индекса, репликация использует ROWID в течение периода обработки опубликованных изменений таблицы.
Sequence
Объект базы данных, который используется для формирования уникальных чисел. Репликация использует последовательности дл упорядочивания изменений, произведенных в опубликованных таблицах.
SQL*Plus
Приложение, используемое для доступа и отправки запросов к базам данных Oracle. Похоже на программу SQL Server sqlcmd.
Синоним
Псевдоним для объекта. При настройке издателя Oracle автоматически создается специальный открытый синоним MSSQLSERVERDISTRIBUTOR . Синоним ссылается на таблицу HREPL_Distributor и обеспечивает логический указатель на распространитель SQL Server , обслуживающий издателя.
После публикации базы данных Oracle последующие попытки переустановить конфигурацию издателя для использования иного распространителя SQL Server будут неудачны, поскольку этот открытый синоним идентифицирует определенный распространитель с установленной конфигурацией для обслуживания издателя.
Табличное пространство
Элемент хранилища базы данных, примерно эквивалентный группе файлов в SQL Server.
Имя службы TNS
Протокол TNS (Transparent Network Substrate) — уровень связи, используемый базами данных Oracle. Имя службы TNS — это имя, с которым экземпляр базы данных Oracle представлен в сети. Имя службы TNS назначается при настройке подключений к базе данных Oracle. Репликация использует имя службы TNS для идентификации издателя и установки подключений.
Пользовательская схема
Пользовательская схема может рассматриваться как пользователь базы данных, владеющий определенным набором ее объектов. Схема администратора репликации владеет всеми объектами, созданными процессом репликации SQL Server в базе данных Oracle, за исключением открытого синонима MSSQLSERVERDISTRIBUTOR .
Сетевая служба TNS Listener – достаточно мощный инструмент, почти полностью контролирующий доступ к СУБД и предоставляющий возможность доступа к командам ОС. Листенер состоит из двух исполняемых и нескольких конфигурационных файлов.
Исполняемые файлы tnslsnr и lsnrctl расположены в директории $ORACLE_HOME/bin (переменная $ORACLE_HOME отображает путь к директории, в которую установлена СУБД). Конфигурационные файлы расположены в директории $ORACLE_HOME/network/admin. Рассмотрим подробнее назначение этих файлов.
Вопросы, касающиеся подписчиков Oracle
Помимо вопросов, описанных в разделе Non-SQL Server Subscribers, необходимо рассмотреть следующие вопросы при репликации на подписчики Oracle:
Oracle обрабатывает как пустые строки, так и значения NULL как NULL. Это важно, если столбец SQL Server определен как NOT NULL и реплицируется на подписчик Oracle. Во избежание сбоев при применении изменений на подписчике Oracle необходимо выполнить одно из следующих действий:
Убедиться в том, что пустые строки не вставляются в опубликованную таблицу в качестве значений столбцов.
Использовать параметр -SkipErrors для агента распространителя, если желательно получать уведомления об ошибках в журнал агента распространителя и продолжать обработку. Задать код ошибки Oracle 1400 (-SkipErrors1400).
Измените сформированный скрипт создания таблицы, удалив атрибут NOT NULL из любого символьного столбца, с которым могут быть связаны пустые строки, и предоставьте измененный скрипт в качестве пользовательского скрипта создания для статьи, используя параметр @creation_script хранимой процедуры sp_addarticle.
Подписчики Oracle поддерживают параметр схемы 0x4071. Дополнительные сведения о параметрах схемы см. в статье sp_addarticle (Transact-SQL).
Sqlnet.ora
Этот конфигурационный файл отвечает за сетевые настройки Листенера. В нем нас прежде всего интересуют опции, связанные с безопасностью, - это на стройки шифрования передачи данных, аутентификации и разграничения прав доступа к Листенеру по IP-адресам (Valid Node Checking).
Listener.ora
Этот конфигурационный файл отвечает за связь Листенера с СУБД. Для нас важнейшим моментом является хранимая в нем строка подключения, которая со держит такие параметры подключения, как системный идентификатор (SID) и порт, на который будут приниматься запросы для данного SID. Как будет ясно в дальнейшем, эта информация является во многом определяющей при проведении начального этапа проникновения в СУБД Oracle. Этот файл очень важен для нас – получив к нему доступ с возможностью внесения модификаций, мы сможем обойти такие ограничения безопасности, как пароль на службу Листенера и протоколирование событий. Пример конфигурационного файла:
Здесь мы видим, что на хосте с именем Ora, на порту 1521 запущен экземпляр базы данных. Кроме того, в этом файле могут храниться такие параметры, как пароль на доступ к Листенеру, директория хранения логфайлов и пр. Изменения в конфигурации Листенера могут быть сделаны напрямую путем правки файла listener.ora или с использованием командного интерфейса утилиты lsnrctl.
Несколько TNS Listener
На одном сервере могут действовать более одной службы Listener NET Oracle, но обычно такую конфигурацию придется применять в Oracle RAC. При использовании нескольких служб слушателя можно конфигурировать параметр CONNECT_TIME_FAILOVER, который определяет длительность ожидания клиентом подключения через одного Listener, прежде чем будет предпринята попытка подключения с помощью другого Listener Oracle.
Настройка подписчика Oracle
Для настройки подписчика Oracle выполните следующие шаги:
Установите и настройте клиентское сетевое программное обеспечение Oracle и поставщика OLE DB Oracle на распространителе SQL Server , чтобы распространитель мог подключаться к подписчику Oracle. Клиентское сетевое программное обеспечение Oracle должно быть самой последней доступной версии. Oracle рекомендует пользователям установить самую новую версию клиентского программного обеспечения. Клиентское программное обеспечение часто бывает новее, чем программное обеспечение баз данных. Наиболее простым способом установки программного обеспечения является использование универсального установщика Oracle с диска Oracle Client. В универсальном установщике Oracle необходимо ввести следующие сведения:
Создайте имя TNS для подписчика. Протокол TNS (Transparent Network Substrate) — уровень связи, используемый базами данных Oracle. Имя службы TNS — это имя, с которым экземпляр базы данных Oracle представлен в сети. Имя службы TNS назначается при настройке подключений к базе данных Oracle. Репликация использует имя службы TNS для идентификации подписчика и для установки соединений.
После того как установка Oracle завершена, для настройки сетевых подключений используйте компонент Net Configuration Assistant. Для настройки сетевых подключений необходимо ввести сведения в четырех разделах. Администратор базы данных Oracle настраивает сеть, когда устанавливает базу данных и прослушиватель, поэтому он должен быть способен предоставить эти сведения, если они отсутствуют. Необходимо выполнить следующие действия:
Создайте публикацию моментальных снимков или публикацию транзакций, активируйте ее для подписчиков, отличных отSQL Server , а затем создайте принудительную подписку для подписчика. Дополнительные сведения см. в статье Создание подписки для подписчика, отличного от подписчика SQL Server.
Проверка соединения между распространителем SQL Server и издателем Oracle
Перед завершением выполнения приложения Net Configuration Assistant может быть предложено протестировать соединение с подписчиком Oracle. До начала проверки соединения убедитесь в том, что экземпляр базы данных Oracle находится в режиме «в сети» и запущен прослушиватель Oracle. Если проверка не удалась, свяжитесь с администратором Oracle, ответственным за базу данных, к которой была предпринята попытка подключиться.
После успешного подключения к подписчику Oracle попытайтесь войти в базу данных, используя учетную запись и пароль, которые были настроены для агента распространителя подписки:
Введите cmd и нажмите кнопку ОК.
В командной строке введите:
Например: sqlplus replication/$tr0ngPasswerd@Oracle90Server
Если настройка сети прошла удачно, будет выполнен вход и появится окно сеанса SQL .
Tnslsnr
Сердце Листенера, отвечающее за весь основной функционал службы, – процесс tnslsnr, который выполняет роль прокси-сервера и перенаправляет запросы от клиента непосредственно к СУБД. Процесс tnslsnr по умолчанию запускается с привилегиями пользователя Oracle в ОС UNIX и с привилегиями пользователя
Local System в ОС Windows NT/2000/2003. Так как учетная запись «oracle», создаваемая при установке СУБД на UNIX-системах, не имеет административных привилегий, риск поставить под угрозу весь сервер при компрометации Листенера в UNIXсистемах по умолчанию ниже.
Команды TNS Listener Oracle
После вызова утилиты lsnrctl помимо status можно выполнять и другие важные команды. Например, команда services позволяет выяснить, какие службы слушатель отслеживает на предмет запросов на подключение.
На заметку! Состояние службы листенера можно проверить из страницы Net Services Administration (Администрирование сетевых служб) в Oracle Enterprise Manager.
Ознакомиться с доступными командами утилиты lsnrctl можно с помощью команды help, введенной в интерфейсе lsnrctl, как показано в листинге ниже.
После вызова утилиты lsnrctl запуск Listener можно осуществить с помощью команды start, а его остановку — с помощью команды stop. Если эти команды требуется выдать из командной строки операционной системы, можно использовать команды lsnrctl start и lsnrctl stop.
При внесении изменений в файл listener.ora единственный способ ввода этих изменений в действие — перезапуск слушателя. Другой, более безопасный способ — просто перезагрузка информации Listener, в результате чего последние выполненные изменения слушателя будут внесены в файл конфигурации. Команда lsnrctl reload позволяет перезагрузить TNS Listener Oracle “на лету”, без его перезапуска. Подключенные в текущий момент клиенты останутся подключенными во время перезагрузки Listener (или даже при его перезапуске), поскольку слушатель уже “отдал” подключения базе данных и не участвует в обмене данными между клиентом и службой базы данных.
Внимание! Изменять файл listener.ora не рекомендуется, если только для этого не существует веской причины. Кроме того, при использовании динамической автоматической регистрации служб необходимость в модификации файла возникает значительно реже. Тем не менее, в некоторых случаях приходится изменять определенную часть файла Listener, содержащую информацию о конфигурации сети для всех служб, которые слушатель отслеживает на предмет запросов подключения.
Сопоставление типов данных SQL Server и Oracle
В следующей таблице показаны соответствия типов данных, используемые при репликации данных на подписчик, в котором выполняется программное обеспечение Oracle.
Листенер (слушатель) Oracle Net Listener — служба, которая действует только на сервере и прослушивает входящие запросы на подключение. Oracle предоставляет утилиту lsnrctl, управляющую процессом листенера. Место слушателя в сетевой обработке Oracle можно кратко описать следующим образом.
- С помощью TNS Listener Oracle база данных регистрирует информацию о службах, экземплярах и обработчиках служб.
- Клиент устанавливает начальное соединение со слушателем.
- Слушатель принимает и проверяет запрос на подключение клиента и передает его обработчику службы базы данных. Как только слушатель передает запрос клиента, он устраняется из процесса обслуживания данного подключения.
Файл listener.ora, который по умолчанию размещается в каталоге $ORACLE_HOME/network/admin в системах UNIX и в каталоге $ORACLE_HOME\network\admin в системах Windows, содержит информацию о конфигурации Listener Oracle. Поскольку служба слушателя действует только на сервере, клиентские компьютеры не содержат никакого файла listener.ora. Типичный файл listener.ora приведен в листинге ниже.
Все параметры конфигурации в этом файле имеют значения по умолчанию. Поэтому службу листенера не обязательно конфигурировать вручную. После создания первой базы данных на сервере служба TNS Listener Oracle автоматически запускается, и файл конфигурации слушателя, listener.ora, помещается в каталог, определенный по умолчанию. При создании новой базы данных ее информация о сетевых подключений и службах автоматически добавляется в файл конфигурации tns listener Oracle. При запуске экземпляра база данных автоматически регистрируется в слушателе, и слушатель начинает прослушивать запросы на подключение к этой базе данных.
Процесс PMON Oracle отвечает за динамическую регистрацию имен служб баз данных Oracle в листенере (Listener) — при создании новые базы данных Oracle будут автоматически регистрироваться в службе TNS Listener Oracle. Процесс PMON будет обновлять файл listener.ora после создания каждой базы данных на сервере.
Для обеспечения возможности автоматической регистрации файл init.ora или SPFILE должен содержать следующие параметры:
Если значение параметра SERVICE_NAMES не указано, по умолчанию ему присваивается значение глобального имени базы данных, являющееся сочетанием параметров DB_NAME и DB_DOMAIN. Значение параметра INSTANCE_NAME, устанавливаемое по умолчанию — идентификатор SID, введенный во время установки Oracle или создания базы данных.
Состояние листенера на сервере можно проверить с помощью утилиты lsnrctl, как показано в листинге ниже. Вывод показывает длительность работы Listener Oracle и размещение файла конфигурации службы слушателя. Он содержит также имена баз данных, которые слушатель “прослушивает” на предмет запросов на подключение.
Состояние в разделе Services Summary (Сводка по службам) листинга выше может принимать одно из следующих значений:
Tnsnames.ora
В этом файле хранится соответствие кратких имен (Net Service Names) длинным дескрипторам соединений для упрощения межсетевого взаимодействия. Нам это файл интересен тем, что в нем может находиться информация о SSL-сертификатах, используемых для аутентификации. В нем также могут храниться данные для подключения к другим серверам СУБД, в том числе и SID. Пример одной записи из файла Tnsnames.ora:
Здесь мы видим, что на хосте с IPадресом 192.168.40.14 на порту 1521 запущена служба Листенера. У базы данных, установленной на этом сервере, SID равно ORCL102.
Рассмотрение Oracle Home
Oracle поддерживает параллельную установку двоичных файлов приложений, но только один набор двоичных файлов может использоваться для репликации в текущий момент. Каждый набор двоичных файлов связан с Oracle Home; двоичные файлы находятся в каталоге %ORACLE_HOME%\bin. Необходимо обеспечить использование правильного набора двоичных файлов (а именно — самой последней версии клиентского сетевого программного обеспечения) при установке репликацией соединения с подписчиком Oracle.
Войдите на распространитель под учетными записями, используемыми службой SQL Server и службой агентов SQL Server , установите соответствующие переменные среды. Переменная %ORACLE_HOME% должна указывать на точку установки, заданную при установке сетевого клиентского программного обеспечения. Переменная %PATH% должна включать каталог %ORACLE_HOME% \bin в качестве первой записи, относящейся к Oracle. Сведения о настройке переменных среды см. в документации по операционной системе Windows.
При наличии нескольких каталогов установки Oracle на распространителе SQL Server убедитесь в том, что агент распространителя использует самую последнюю версию поставщика OLE DB Oracle. В некоторых случаях Oracle по умолчанию не обновляет поставщика OLE DB при обновлении клиентских компонентов на распространителе SQL Server . Удалите старого поставщика OLE DB и установите его самую последнюю версию. Дополнительные сведения об установке и удалении поставщика см. в документации Oracle.
Установка размера очереди
Иногда большое количество одновременных запросов на подключение со стороны клиентов могут перегрузить службу слушателя. Чтобы уберечь Listener от сбоя, можно использовать параметр QUEUESIZE в файле конфигурации listener.ora для указания допустимого количества параллельно выполняющихся запросов на подключение.
Для большинства операционных систем значение параметра QUEUESIZE — достаточно небольшое число, наподобие 5. Ниже приведен пример установки параметра QUEUESIZE:
Управление Listener
Хотя установка службы Listener Oracle достаточно проста, после ее выполнения можно предпринять ряд действий для более точной настройки процесса подключения и для обеспечения безопасности службы TNS Listener Oracle. Некоторые из этих параметров описаны в последующих разделах.
Читайте также: