TNS Listener Oracle

Стас Белков

Стас Белков

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

Сетевая служба TNS Listener – достаточно мощный инструмент, почти полностью контролирующий доступ к СУБД и предоставляющий возможность доступа к командам ОС. Листенер состоит из двух исполняемых и нескольких конфигурационных файлов.

Исполняемые файлы tnslsnr и lsnrctl расположены в директории $ORACLE_HOME/bin (переменная $ORACLE_HOME отображает путь к директории, в которую установлена СУБД). Конфигурационные файлы расположены в директории $ORACLE_HOME/network/admin. Рассмотрим подробнее назначение этих файлов.

Tnslsnr

Сердце Листенера, отвечающее за весь основной функционал службы, – процесс tnslsnr, который выполняет роль прокси-сервера и перенаправляет запросы от клиента непосредственно к СУБД. Процесс tnslsnr по умолчанию запускается с привилегиями пользователя Oracle в ОС UNIX и с привилегиями пользователя

Local System в ОС Windows NT/2000/2003. Так как учетная запись «oracle», создаваемая при установке СУБД на UNIX-системах, не имеет административных привилегий, риск поставить под угрозу весь сервер при компрометации Листенера в UNIXсистемах по умолчанию ниже.

Lsnrctl

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

Sqlnet.ora

Этот конфигурационный файл отвечает за сетевые настройки Листенера. В нем нас прежде всего интересуют опции, связанные с безопасностью, - это на стройки шифрования передачи данных, аутентификации и разграничения прав доступа к Листенеру по IP-адресам (Valid Node Checking).

Listener.ora

Этот конфигурационный файл отвечает за связь Листенера с СУБД. Для нас важнейшим моментом является хранимая в нем строка подключения, которая со держит такие параметры подключения, как системный идентификатор (SID) и порт, на который будут приниматься запросы для данного SID. Как будет ясно в дальнейшем, эта информация является во многом определяющей при проведении начального этапа проникновения в СУБД Oracle. Этот файл очень важен для нас – получив к нему доступ с возможностью внесения модификаций, мы сможем обойти такие ограничения безопасности, как пароль на службу Листенера и протоколирование событий. Пример конфигурационного файла:

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = Ora)(PORT = 1521))
)
)

Здесь мы видим, что на хосте с именем Ora, на порту 1521 запущен экземпляр базы данных. Кроме того, в этом файле могут храниться такие параметры, как пароль на доступ к Листенеру, директория хранения логфайлов и пр. Изменения в конфигурации Листенера могут быть сделаны напрямую путем правки файла listener.ora или с использованием командного интерфейса утилиты lsnrctl.

Tnsnames.ora

В этом файле хранится соответствие кратких имен (Net Service Names) длинным дескрипторам соединений для упрощения межсетевого взаимодействия. Нам это файл интересен тем, что в нем может находиться информация о SSL-сертификатах, используемых для аутентификации. В нем также могут храниться данные для подключения к другим серверам СУБД, в том числе и SID. Пример одной записи из файла Tnsnames.ora:

ORCL102 =
   (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.40.14)(PORT = 1521))
      (CONNECT_DATA =
         (SERVER = DEDICATED)
         (SID = orcl102)
)
)

Здесь мы видим, что на хосте с IPадресом 192.168.40.14 на порту 1521 запущена служба Листенера. У базы данных, установленной на этом сервере, SID равно ORCL102.

Режимы работы Листенера

В зависимости от конфигурации, описанной в listener.ora, служба Листенера может работать в трех различных режимах:

На рисунке ниже показан Листенер, сконфигурированный в двух режимах: Database и PLSExtProc. За подключение к СУБД отвечает сервис с именем «orcl9» (режим Database), за выполнение внешних процедур отвечает сервис PLSExtProс.

Больше информации о службе TNS Listener и о сетевом взаимодействии Oracle можно узнать в документе «Oracle Database Net Services Reference Guide 10g Release 1 (10.1)». Документ доступен по адресу: http://www.stanford.edu/dept/itss/docs/oracle/10g/network.101/b10776.pdf.

TNS Listener Oracle 

Мы же в следующей статье блога перейдем к очень интересному вопросу – атакам на службу Листенера. Применим пошаговую стратегию, начав со стандартных атак на незащищенную службу и постепенно переходя ко все более сложным вариантам атак, на защищенную службу Листенера. Большинство примеров будет работать как старой версии СУБД Oracle 8i, которая, тем не менее, до сих пор (!!!) встречается в корпоративных сетях, так и на самый распространенный на данный момент версии 11g.

Вас заинтересует / Intresting for you:

Oracle и непроцедурный доступ ...
Oracle и непроцедурный доступ ... 8510 просмотров Antoni Tue, 21 Nov 2017, 13:32:50
Listener Oracle
Listener Oracle 33064 просмотров Stas Belkov Tue, 21 Nov 2017, 13:18:05
Отмена сессий в Oracle (ALTER ...
Отмена сессий в Oracle (ALTER ... 23082 просмотров Stepan Ushakov Thu, 01 Nov 2018, 18:04:59
Работа с запросами Approximate...
Работа с запросами Approximate... 2271 просмотров Андрей Васенин Mon, 29 Oct 2018, 06:40:46
Печать
Войдите чтобы комментировать

apv аватар
apv ответил в теме #8272 7 года 1 нед. назад
Согласен! Структура и режимы работы листенера описаны отлично, а по настройке желательно добавить материал
OraDevel аватар
OraDevel ответил в теме #8253 7 года 2 нед. назад
Не плохо бы было добавить информацию относительно настройки Listener. Какие файлы и как менять в Листенере!