Приложение B – контрольный список вопросов для оценки защиты листенера
Для того чтобы ваша система не стала жертвой атак, описанных в этой статье, мы подготовили простой контрольный список.
Прежде всего, однако, важно понимать, что листенер может быть скомпрометирован плохой конфигурацией ОС и базы данных. Обдумывайте возможности сетевых соединений с сервером базы данных и для входящих соединений, и для исходящих. Фильтрацию входящих соединений в листенере можно устанавливать с помощью параметров TCP.VALIDNODE_CHECKING, TCP.INVITED_NODES и TCP.EXCLUDED_NODES [NETREF, 6-37/38]. Более сложные правила фильтрации могут быть установлены с помощью Connection Manager [NETADMIN, 13]. Использование межсетевых экранов также позволит фильтровать исходящие соединения, а некоторые межсетевые экраны предотвратят передачу клиентам статусной информации.
В базе данных:
обеспечьте блокирование или уничтожение всех ненужных учетных записей;
проанализируйте привилегии и роли, назначенные пользователям, особенно CREATE [ANY] LIBRARY, CREATE ANY DIRECTORY, JAVASYSPRIV и CREATE [PUBLIC] DATABASE LINK;
уничтожьте процесс PLSExtProc, если он не требуется. Если процесс нужен, локальные пользователи ОС сервера и администраторы базы данных должны быть такими, чтобы им можно было доверять как пользователю, который является владельцем Oracle. Проверяйте код вызова внешних процедур для предотвращения атак типа переполнение буфера”;
выполняйте рекомендации по обеспечению безопасности баз данных, изложенные в [CHECKLIST].
Снимите бит SUID у исполняемого файла листенера (если установлен, по умолчанию в Oracle 9i он не устанавливается).
Проверяйте сайты Oracle с оповещениями, связанными с проблемами безопасности, и с последними заплатами.
Имея защищенную среду, для конфигурирования listener.ora используйте технику перечисления целей, описанную выше.
Используйте команду lsnrctl STATUS для проверки:
выводятся ли какие-либо данные? Если да, листенер может быть защищен с помощью межсетевого экрана или tcp.validnode_checking;
если данные выводятся, какова установка SECURITY? Если ON, то листенер защищен паролем;
если SECURITY имеет значение OFF, проверьте установку ADMIN_RESTRICTIONS, пробуя изменить какой-нибудь параметр листенера, например, направив вывод протокольного файла в существующий протокольный файл. Так, если протокольный файл листенера
/myhost/oracle/OraHome1/network/log/listener.log
используйте команду:
set_log /myhost/oracle/OraHome1/network/log/listener.log
если ответом будет ошибка 12508, это означает, что опция ADMIN_RESTRICTIONS включена.
если SECURITY имеет значение ON и вы знаете пароль, то можно проверить установку ADMIN_RESTRICTIONS, задав правильный пароль и попытавшись выполнить команду реконфигурирования листенер. Если опция ADMIN_RESTRICTIONS включена, то ответом будет ошибка 1169, даже при правильном пароле.
Результаты всех этих шагов перечислены в таблицах B.1 и B.2.
Ответ | Значение |
Никаких данных не возвращается, ошибка 1153 | Листенер, возможно, защищен межсетевым экраном. |
Никаких данных не возвращается, ошибка 12537 | Включена опция tcp.validnode_checking. |
SECURITY=ON | Установлен пароль, если вы знаете правильный пароль, также проверьте установку ADMIN_RESTRICTIONS. Проверьте, что установленный пароль удовлетворяет критериям сложности, позволяющим снизить риск лобовых” атак и атак словаря данных. |
SECURITY=OFF | Пароль не установлен, проверьте установку ADMIN_RESTRICTIONS. |
Табл. B.1. Ответы листенера на запросы статуса.
В следующей таблице показаны результаты попыток изменения конфигурации, например, командой:
set log_file c:/Oracle/OraHome1/network/log
Ответ покажет, установлены ли ADMIN_RESTRICTIONS или пароль.
Ответ | Значение |
Конфигурация изменена (пароль не задавался) | Пароль не установлен. Опция ADMIN_RESTRICTIONS не включена. Это серьезный просчет, который может быть использован для соединения с листенером и организации атак отказ в обслуживании”. |
Конфигурация изменена (был задан правильный пароль) | Пароль установлен. Опция ADMIN_RESTRICTIONS не включена. Проверьте, что установленный пароль удовлетворяет критериям сложности, позволяющим снизить риск лобовых” атак и атак словаря данных. |
Отвергнуто с кодом ошибки 12508 (пароль не задавался) | Пароль не установлен. Опция ADMIN_RESTRICTIONS включена. |
Отвергнуто с кодом ошибки 1169 (был задан правильный пароль) | Пароль установлен. Опция ADMIN_RESTRICTIONS включена. Листенер защищен, однако такое состояние может оказаться нежелательным с точки зрения эксплуатации, так как оно никому не позволяет реконфигурировать листенер. Можно только вручную уничтожить процесс листенера, используя для этого команды операционной системы сервера. Необходимость такой конфигурации следует проанализировать. |
Табл. B.2. Ответы листенера на команду SET.
В заключение проверьте протокольные и трассировочные (если трассировка включена) файлы:
выполнение всех выполненных выше команд должно быть запротоколировано (это позволяет проверить функционирование механизма протоколирования);
отсутствуют следы необычной деятельности (например, большое количество ошибок проверки пароля), что может указывать на проводимую атаку.
Протокольные и трассировочные файлы листенера – полезные источники информации и их нужно архивировать вместе с журналами аудита ОС и базы данных для возможного расследования.
[NETREF] Oracle 9i Net Services Reference Guide, Release 1 (9.0.1), June 2001, Part No. A90155-01
[NETADMIN] Oracle 9i Net Services Administrator’s Guide, Release 1 (9.0.1), June 2001, Part No. A90154-01
[HACK] Hack Proofing Oracle, Howard Smith, (представлена на Oracle OpenWorld 2000, доступна в https://otn.oracle.com/deploy/security/oow00.htm).
[CHECKLIST] A Security Checklist for Oracle 9i, https://otn.oracle.com/deploy/security/oracle9i/pdf/9i_checklist.pdf
[nessus] https://www.nessus.org/
[nmap] https://www.insecure.org/
[netcat] https://www.atstake.com/research/
[bugtraq] https://www.securityfocus.com/