Информационная безопасность Oracle 9i
Страница 2. Безопасность листенера


Безопасность листенера

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

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

Обычно листенер рассматривается как ступенька” на пути вторжения в базы данных и другие сервисы, которые он может поддерживать. Тем не менее, у него есть достаточно полезные функциональные возможности, которые сами по себе заслуживают внимания.

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

На следующей схеме показано функционирование листенера Oracle.


Рис. 2. Листенер базы данных.

Листенер – это автономный процесс (сервис в Windows NT/2000), который конфигурируется файлами listener.ora и sqlnet.ora. Он выдает протокольные и трассировочные (отладочные) файлы. Он принимает от клиентов запросы на соединение и управляющие запросы от контроллера листенера (LSNRCTL). Управляющие запросы листенер обрабатывает сам, а запросы на соединение передаются серверному процессу (при необходимости он запускается), который сообщает листенеру, как клиент должен связываться с ним; затем листенер отправляет это сообщение клиенту. После этого клиент и сервер поддерживают связь без вмешательства листенера. Начиная с Oracle9i, листенер может передавать клиентские соединения непосредственно серверу.

Файл listener.ora file описан в [NETREF,8], а файл sqlnet.ora в [NETREF,6], управляющая программа листенера LSNRCTL описана в [NETREF,1].

Перечисление целей: поиск листенеров

Первым шагом при организации атаки является определение уязвимых целей. Oracle зарегистрировала ряд портов TCP/IP [NETREF, Table 5-2], по которым можно найти листенер, на практике могут использоваться также другие порты:
Порт Описание
1521 Порт листенера по умолчанию. Официально не зарегистрирован – фактически зарегистрирован как ncube licence manager.
2483 Официально зарегистрированный порт листенера.
2484 Официально зарегистрированный порт листенера для SSL.

Табл. 1. Обычные порты листенера баз данных Oracle.

Программы сканирования сетевых портов, такие, как [nmap], могут показать доступность этих портов, но листенеры могут быть сконфигурированы для работы с другими доступными портами.

Листенер связывается со своими клиентами, используя соответствующий протокол Oracle Net. Этот протокол не базируется на telnet, поэтому для проверки листенера нельзя использовать стандартные утилиты ОС, такие, как Telnet или [netcat]. К счастью, Oracle предоставляет инструментальное средство TNSPING [NETADMIN, 16-17], которое также может быть использовано для проверки листенера:

TNSPING (ADDRESS=(PROTOCOL=TCP)(HOST=$хост)(PORT=$порт))

Относительно просто смастерить простой, но достаточно медленный, сканер листенеров, подставляя в скрипте различные значения $хоста и $порта.

Определив целевой хост и номер порта листенера, можно смастерить запись в файле listener.ora, которая позволит программе lsnrctl связываться с целевым листенером. Так, для хоста victim.us.oracle.com”, прослушиваемого по порту 32768, можно ввести:

victim=
   (description=
     (address=(protocol=tcp)(host=victim.us.oracle.com)(port=32768))
   )

Рис 3. Пример записи в listener.ora для хоста victim.us.oracle.com.

Начинают появляться сканеры защиты Oracle, их также можно использовать для поиска листенеров. Например, свободно распространяемый сканер [nessus] имеет подключаемую возможность для обнаружения листенеров Oracle, работающих на портах 1521 и 1541.

 
Следующая статья »