Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ibs / LB / ПР / ПР 3 Информационная безопасность Oracle 9i.doc
Скачиваний:
36
Добавлен:
29.03.2016
Размер:
308.22 Кб
Скачать

Меры противодействия – установка параметров защиты листенера

Для защиты листенера от атак можно использовать два конфигурационных параметра, связанных с безопасностью:

  • если требуется удаленное администрирование листенера, командой lsnrctl “change_password” установите пароль. После этого без задания пароля (командой lsnrctl set_password) нельзя будет использовать никакие команды для остановки или реконфигурирования листенера;

  • на сервере в файле listener.ora можно включить опцию ADMIN_RESTRICTIONS (как это описано в [NETREF, 8-10]), которая запрещает любые попытки удаленного администрирования независимо от того, задан ли пароль. Разрешается только останавливать (команда STOP) и перезагружать листенер (команда RELOAD). Ясно, что это не защищает от простых атак типа “отказ в обслуживании”.

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

Атаки баз данных

Если нарушитель может соединяться с целевой базой данных как высоко привилегированный пользователь, то появляется возможность злоупотребления очень мощными привилегиями и ролями базы данных для атак на операционную систему сервера и другие базы данных. До Oracle9i имелось очень большое количество иногда очень мощных учетных записей пользователей, создаваемых по умолчанию во время инсталляции. Для защиты таких систем требовалось обдуманное конфигурирование пользователей, однако практика показала, что это выполнялось не всегда. Начиная с Oracle9i, подавляющее большинство учетных записей, создаваемых по умолчанию, блокируется во время инсталляции, запрещая доступ нарушителям и позволяя DBA разблокировать только требуемые для его системы учетные записи. Кроме того, все пароли учетных записей, создаваемых по умолчанию, в Oracle9i устанавливаются с истекшим сроком их действия, поэтому первый пользователь для соединения с разблокированной учетной записью должен задать новый пароль. Эти два простых, но важных, усовершенствования стандартной инсталляции Oracle9i закрывают один из основных путей доступа к базам данных, который использовался хакерами.

Несколько более интересных привилегий и атак описано в табл. 2.

Привилегия/роль

Атака

CREATE LIBRARY CREATE ANY LIBRARY JAVASYSPRIVВыполняются произвольные команды операционной системы в контексте владельца программного обеспечения Oracle (UNIX) или пользователя SYSTEM (NT). Отметим, что в зависимости от версии базы данных или версии NT (рабочая станция или сервер) пользователь SYSTEM может не иметь возможности непосредственного взаимодействия с экраном или выполнения любых команд, которые требуют экранного доступа, так как SYSTEM не имеет доступа к рабочему столу пользователя. Самый простой способ использования этих привилегий – указать библиотеку в “системном” служебном вызове, который имеет очень простой синтаксис и, по большому счету, не зависит от платформ, например:

Create library libsys as '/usr/lib/libsys.so'; -- Solaris

Create library libsys as '/usr/lib/libc.so.6'; -- SUSE Linux

Create library libsys as '/usr/lib/libc.sl'; -- HPUX

Create library libsys as 'c:\winnt\system32\msvcrt.dll'; -- NT

В приложении А содержится полностью законченный пакет “hack”.

CREATE ANY DIRECTORY

Чтение произвольных файлов с помощью вызовов больших объектов. Любой текстовый файл может отображаться как внешний большой объект и читаться с использованием привилегий процесса, принадлежащего Oracle. Это может также использоваться для проверки существования файлов. Так, нарушитель может выполнять в сервере произвольные команды, направлять их вывод в файл и читать этот файл. Примеры приведены в пакете “hack” приложения А.

CREATE DATABASE LINK

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

Create database link test

Connect to mdsys identified by mdsys

Using '(DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (HOST=victim.us.oracle,com) (PORT=1521))(CONNECT_DATA=(SID=orcl)))';

может использоваться для попытки доступа к базе данных на машине victim.us.oracle.com как пользователь MDSYS, используя SID по умолчанию orcl.

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

Также отметим, что пароли связей хранятся в открытом виде в таблице link$.

Табл. 2. Привилегии баз данных и возможные атаки.

Таким образом, используя пакет “HACK”, представленный в приложении А, можно преодолеть защиту листенера. Например, используя в SQL Plus процедуру javaexecute:

SQL> execute hack.javaexecute(‘c:\winnt\system32\cmd /c “echo admin_restrictions = off >>c:\oracle\network\admin\listener.ora”’);

Она вставляет в файл listener.ora строку “admin_restrictions = off. После этого выполнение в контролере листенера команды RELOAD приведет к выключению опции ADMIN_RESTRICTIONS.

Используя в пакете “HACK” процедуру просмотра (browse), нарушитель может читать файл listener.ora, например:

SQL> execute hack.browse(‘listener.ora’,’c:\oracle\network\admin\’);

Это позволяет обнаружить текущие установки защиты листенера, включая его пароль (хешированный в UNIX, открытый текст в NT).