|
|
|||||||||||||||||||||||||||||
|
Некоторые вопросы безопасности в OracleИсточник: dsec Александр Поляков, аналитик, специалист по информационной безопасности
Автор: Александр Поляков, аналитик, специалист по информационной безопасности Уровень обеспечения информационной безопасности корпоративных систем сегодня заметно вырос, и типовые ошибки встречаются все реже - администраторы регулярно устанавливают обновления и реализуют требования парольной политики на серверах Windows, выполняют требования контроля доступа на сетевом оборудовании, сегментируют сети. Однако существует ряд проблем, которым до сих пор не уделяется должного внимания, и одна из них - защищенность корпоративных систем управления базами данных. В данной статье я хочу проанализовать наиболее критичные уязвимые места на примере систем, построенных на базе данных Oracle. Получить доступ к серверу с установленными на нем последними обновлениями для системы безопасности и стойкими паролями становится довольно сложно, поэтому векторы атак смещаются сегодня в сторону приложений, наиболее важными из которых являются базы данных, тем более что именно информация в базах данных зачастую является конечной целью злоумышленника. База данных Oracle - одна из распространенных в корпоративной среде систем, поэтому она и была выбрана в качестве примера, а точнее, версии Oracle Database 9i и 10g. Рассмотрим ряд критичных уязвимых мест, которыми можно воспользоваться, не имея логических прав доступа к базе данных Oracle. Внешний периметр Удаленный доступ к базе данных предоставляет служба Oracle TNS Listener, работающая по умолчанию на TCP-порту 1521, и большинство атак направлено именно на эту службу. Listener - компонент сетевого доступа к системам Oracle, принимает клиентские запросы на соединение и направляет их для обработки соответствующему серверному процессу. Обычно Listener рассматривается как первый этап на пути вторжения в базы данных и другие службы, поэтому плохо сконфигурированный и незащищенный Listener предоставляет нарушителю различные возможности атак, включая удаленное выполнение команд и отказ в обслуживании. Лазейки внешнего периметра Для версий базы данных Oracle ниже 10g (8, 9i R1, 9i R2) в конфигурации по умолчанию можно осуществлять анонимное подключение и управление службой Listener. Эта проблема была впервые озвучена еще в 2001 году, но она до сих пор крайне актуальна. В конфигурации по умолчанию злоумышленник может:
Все эти действия можно совершить, используя стандартные утилиты, поставляемые с базой данных (см. экран 1), и лишь в некоторых случаях могут понадобиться дополнительные сценарии, доступные в Internet. Рассмотрим атаку типа "отказ в обслуживании", исполняемую с помощью утилиты lsnrctl. С помощью команды stop любой удаленный неавторизированный пользователь может остановить службу Listener:
Для получения удаленного доступа к системе используется утилита lsnrctl и сценарий tnscmd2.pl, позволяющий выполнять команды и посылать службе Listener произвольные пакеты. С помощью команды set log_file удаленный неавторизованный пользователь может изменить имя файла для хранения журналов, например, на имя исполняемого файла, лежащего в папке автозагрузки пользователя. Далее с помощью утилиты tnscmd2.pl злоумышленник может послать запрос, содержащий системные команды, которые в результате будут сохранены в файле журнала и выполнятся при следующей регистрации администратора в системе. Все это говорит о незащищенности системы при использовании настроек по умолчанию, причем злоумышленник не должен обладать никакими дополнительными программными средствами, кроме стандартных утилит. Защита внешнего периметра Для защиты службы Listener существуют следующие параметры в файле LISTENER.ORA:
Для проверки защищенности Listener можно воспользоваться удобной утилитой lsnrcheck.exe, работающей под Windows. Утилита распространяется бесплатно и доступна для загрузки по адресу http://www.integrigy.com/downloads/lsnrcheck.exe Пример запуска утилиты на Oracle 10g с настройками по умолчанию можно увидеть на экране 2. Как мы видим, настройки по умолчанию в Oracle 10g более безопасны по сравнению с Oracle 9, но все же имеют ряд недостатков. Подключение к базе данных По умолчанию, чтобы подключиться к базе данных Oracle, необходимо знать пять параметров: IP-адрес сервера; порт Listener; имя базы данных (SID); имя пользователя; пароль. Относительно первых двух пунктов все ясно. Что касается имени базы данных (SID), то Listener для базы данных до версии 10g R1 по умолчанию выдает имена баз данных без аутентификации. Для этого достаточно воспользоваться утилитой lsntctl с ключом services. Если на Listener установлен пароль или включена настройка LOCAL_OS_AUTHENTICATION, что сделано в версии Oracle 10g по умолчанию, это значительно усложнит злоумышленнику доступ к базе. Подбор SID В случае использования парольной защиты Listener все же существует несколько способов получения имени базы данных (SID):
Таким образом, даже не имея доступа к Listener, можно узнать SID базы данных - практика показывает, что в 90% случаев тем или иным способом SID базы данных был получен. Подбор паролей Получив SID базы данных или обнаружив незащищенный порт Listener, злоумышленник может попытаться получить доступ к базе данных, подобрав учетные записи пользователей. Oracle при установке создает множество системных учетных записей со стандартными паролями. Обычно при установке по умолчанию с использованием Database Configuration Assistant после успешного завершения процесса большинство этих учетных записей автоматически блокируется. Однако если база данных конфигурируется вручную или по той или иной причине установка завершается некорректно, то учетные записи остаются открытыми, а администраторы обычно забывают их удалять, отключать или хотя бы менять пароли. Например, при установке базы данных Oracle 9 R2 программа установки запрашивает ввод новых паролей для учетных записей SYS и SYSTEM, но пароли учетных записей DBSNMP и SCOTT (в версии 9 R1 к ним добавляется OUTLN) при установке по умолчанию остаются неизменными, и эти учетные записи не блокируются после установки. При установке версии Oracle 10g R1 программа установки запрашивает ввод новых паролей для учетных записей: SYS, SYSTEM, DBSNMP и SYSMAN. Остальные записи по умолчанию заблокированы, что обеспечивает безопасную конфигурацию. Что касается последней версии Oracle 11g, в ней опять присутствуют учетные записи с паролями по умолчанию, которые не блокируются: DIP, MGMT_VIEW, SYS, SYSMAN, SYSTEM. Кроме приведенных стандартных учетных записей, имеется множество приложений для Oracle и систем типа SAP, которые интегрируются с базой данных; они имеют свои стандартные системные учетные записи, которые также можно использовать для проникновения в систему. Список стандартных пользовательских учетных записей насчитывает порядка 600 имен и доступен в Сети (www.petefinnigan.com/default/default_password_list.htm). Для проверки базы данных на наличие учетных записей с паролями, установленными по умолчанию, можно воспользоваться утилитой oscanner, которая может осуществлять проверку по заданному списку стандартных учетных записей. Пример запуска утилиты oscanner для проверки установленной версии Oracle 9 R2 показан на экране 3. Здесь мы видим, что у пользователей DBSNMP,SCOTT, SYS и SYSTEM установлены пароли по умолчанию, поэтому любой злоумышленник может получить удаленный доступ к базе данных. Даже если все неиспользуемые системные учетные записи удалены или заблокированы, а стандартные пароли изменены, ничто не мешает злоумышленнику использовать перебор паролей к учетным записям. Существует несколько моментов, благодаря которым перебор паролей к базе данных Oracle в некоторых случаях приносит успех:
Проблема парольной политики также касается и других баз данных, это до сих пор является основной проблемой любой системы. Практика показывает, что в 80% случаев перебор паролей завершается успехом и редко занимает более 10-15 минут. Внутренняя безопасность базы данных Oracle В отличие от операционных систем, где процесс обновления уже не вызывает трудностей и осуществляется почти в автоматическом режиме, с Oracle дела обстоят намного хуже. Во-первых, обновления выходят редко, во-вторых, до сих пор их установка нетривиальна и часто грозит серьезными сбоями в тех случаях, когда Oracle используется в совокупности с какой-либо сторонней системой, работающей с определенной версией Oracle. Наконец, даже если обновления исправно устанавливаются, это все равно не дает полной гарантии безопасности, так как по статистике более половины уязвимых мест так и остаются незакрытыми. Основные атаки, совершаемые пользователями базы данных Oracle, направлены на повышение своих привилегий. Воспользовавшись уязвимыми местами во встроенных функциях, злоумышленник может выполнить следующие действия:
Все эти возможности требуют тех или иных дополнительных знаний и программных средств, но тем не менее они очень популярны и имели место практически во всех системах на базе Oracle. А, учитывая, что в Windows база данных Oracle по умолчанию работает от имени учетной записи администратора, получение доступа к командной строке сервера через внутренние процедуры Oracle грозит получением административного доступа к операционной системе со всеми вытекающими последствиями. Наличие внутренних уязвимых мест высокой степени критичности вкупе с ошибками конфигурации и слабыми паролями представляет реальную угрозу безопасности компании. Рекомендации по защите Приведем некоторые рекомендации, необходимые для повышения уровня защищенности Oracle, многие из которых применимы и к другим базам данных. 1. При установке системы в рабочую среду:
2. При настройке системы после установки:
Пример установки числа неудачных попыток входа, равного пяти:
3. Периодические проверки:
Эти основные рекомендации помогут наиболее полно защитить базу данных без применения дополнительных программно-аппаратных средств. Подробную информацию о защите Oracle можно найти в официальном документе Oracle Database Security Checklist, последняя версия которого доступна по адресу http://www.oracle.com/technology/deploy/security/ pdf/twp_security_checklist_db_database.pdf. Листинг 1. Установка пароля на доступ к Listener Листинг 2. Включение протоколирования подключения к Listener Ссылки по теме
|
|