Профиль безопасности oracle это
Рассматриваемые вопросы
Следующие термины имеют отношение к администрированию пользователей базы данных. Они отражают вопросы, которые будут рассмотрены в этом уроке:
Учетная запись пользователя базы данных (database user account) - средство упорядочения прав владения и доступа к объектам БД.
Пароль (password) - используется при аутентификации пользователей, выполняемой базой данных Oracle.
Привилегия (privilege) - право выполнения команд SQL определенного типа или право доступа к объекту другого пользователя.
Роль (role) - именованная группа связанных привилегий, предоставляемая пользователям или другим ролям.
Профиль (profile) - именованный набор ограничений на использование базы данных и ресурсов экземпляра.
Квота (quota) - ограничение на общее пространство, которое может быть предоставлено в данном табличном пространстве. Это один из способов контроля использования ресурсов пользователями.
Учетные записи пользователей базы данных
Чтобы получить доступ к базе данных, необходимо указать правильное имя пользователя БД и успешно пройти процедуру аутентификации, как того требует учетная запись этого пользователя. Oracle рекомендует, чтобы каждый пользователь имел свою учетную запись в базе данных. Это лучше всего помогает устранять бреши в безопасности и предоставляет информацию для проведения аудита операций. Однако в редких случаях пользователи могут совместно использовать общую учетную запись в базе данных. При этом операционная система и приложения должны обеспечить соответствующую безопасность базы данных.
Каждая учетная запись пользователя содержит:
Уникальное имя пользователя. Это имя не может содержать более 30 символов, не может содержать специальные символы и должно начинаться с буквы.
Метод аутентификации. Наиболее общий метод аутентификации - это использование пароля. Кроме того, база данных Oracle 10g поддерживает и другие методы аутентификации (биометрический, а также использующие сертификаты и маркеры (token authentication).
Табличное пространство по умолчанию. В нем пользователи создают свои объекты, если в команде не указывается другое табличное пространство. Отметим, что наличие такого табличного пространства не подразумевает, что пользователь имеет привилегию создания объектов в этом табличном пространстве и что у него есть квота использования этого табличного пространства при создании объектов. Обе эти возможности предоставляются отдельно.
Временное табличное пространство. Место для создания пользователями временных объектов, например, промежуточных результатов сортировок и временных таблиц.
Профиль пользователя. Набор ограничений пользователя, накладываемых на пароли и системные ресурсы.
Группа потребителей. Используется ресурсным менеджером.
Статус блокирования. Пользователи получают доступ к базе данных только при условии, что их учетная запись "разблокирована".
Предопределенные учетные записи SYS и SYSTEM
Пользователям SYS и SYSTEM по умолчанию предоставлена роль DBA (роль администратора базы данных).
Кроме того, пользователь SYS имеет все привилегии с атрибутом WITH ADMIN OPTION, а также является владельцем словаря данных. При подсоединении к пользователю SYS необходимо использовать фразу AS SYSDBA. Любой пользователь, которому предоставлена привилегия SYSDBA, может подсоединиться с использованием учетной записи SYS, указав для этого фразу AS SYSDBA. Только "привилегированным" пользователям, обладающим привилегией SYSDBA или SYSOPER, разрешено запускать и останавливать экземпляр базы данных.
По умолчанию пользователю SYSTEM предоставлена роль DBA, но не выделена привилегия SYSDBA.
Подсказка по наилучшему практическому подходу. В соответствие с принципом выделения наименьших привилегий эти пользователи не используются для выполнения рутинных операций. Для пользователей, которым необходимы привилегии АБД, создаются свои отдельные учетные записи и выделяются требуемые привилегии. Например, Джим использует пользователя jim с небольшими привилегиями и "привилегированного" пользователя jim_dba. Такой подход позволяет применить метод наименьших привилегий, устраняет совместное использование учетных записей и дает возможность осуществлять аудит отдельных действий.
SYS и SYSTEM - обязательные пользователи базы данных. Их нельзя удалить.
Создание пользователя
Oracle Enterprise Manager позволяет сопровождать перечень пользователей, которым разрешен доступ к базе данных. После перехода на страницу Users можно создавать, удалять и изменять установочные параметры пользователя.
Чтобы создать пользователя:
1. В Database Control выберите Administration > Schema > Users & Privileges > Users.
2. Щелкните на кнопке Create.
Введите требуемые данные. Звездочкой помечены обязательные элементы, например, имя пользователя (поле Name).
Дополнительные сведения об аутентификации приводятся на следующих страницах.
Кроме того, позднее в этом уроке будут рассмотрены профили.
Назначайте каждому пользователю табличное пространство по умолчанию и временное табличное пространство. Это позволит контролировать месторасположение создаваемых объектов, когда пользователь не указывает табличное пространство, в котором должен быть создан объект.
Если для создаваемого пользователя не указывается постоянное табличное пространство, тогда используется табличное пространство, определенное в системе по умолчанию. Подобным образом, если не указано временное табличное пространство, пользователю назначается определенное в системе по умолчанию временное табличное пространство.
Аутентификация пользователей
Аутентификация (authentication) означает проверку идентичности кого-то или чего-то (пользователя, устройства и других объектов), кто хочет использовать данные, ресурсы или приложения. Она производится для установления доверительного отношения (trust relationship) перед дальнейшим взаимодействием. Кроме того, аутентификация предоставляет возможность идентификации, позволяя связывать доступ и действия со определенными личностями (identities). После аутентификации процесс авторизации (authorization) может предоставить или ограничить уровни доступа и действия, разрешенные данному объекту.
При создании пользователя необходимо решить, какой метод аутентификации будет использоваться. Этот метод позднее может быть изменен.
Password (метод аутентификации с использованием пароля)
Этот метод также принято называть аутентификацией, выполняемой базой данных Oracle, в которой каждый пользователь создается вместе с паролем. Этот пароль должен указываться пользователем при попытке установления соединения. Когда администратор назначает пароль, он должен сразу же установить для него истечение срока годности (expire). Это заставит пользователя изменить пароль при первом соединении. Однако при этом необходимо позаботиться о том, чтобы пользователь имел возможность изменить пароль. Некоторые приложения не позволяют это сделать.
Пароль всегда автоматически и прозрачно шифруется при установлении сетевого соединения (в архитектуре клиент/сервер и сервер/сервер). Для шифрования пароля перед передачей его по сети применяется модифицированный алгоритм DES (Data Encryption Standard).
External (метод внешней аутентификации)
Этот метод также принято называть аутентификацией, выполняемой на уровне операционной системы. При использовании этого метода пользователи могут соединяться с Oracle более просто, без указания имени и пароля. База данных полагается на операционную систему или на службу сетевой аутентификации, когда ограничивает доступ к учетным записям пользователей БД. Пароль базы данных не используется при этом виде установления соединения. Этот метод аутентификации может использоваться, если это позволяет сделать операционная система или сетевая служба. Когда такое возможно, установите в параметре инициализации OS_AUTHENT_PREFIX значение префикса, используемого в именах пользователей Oracle. Этот префикс Oracle подставляет к началу наименования учетной записи каждого пользователя операционной системы. По умолчанию значение параметра - OPS$, что обеспечивает совместимость с предыдущими версиями сервера Oracle. Когда пользователь ОС пытается подсоединиться, Oracle соединяет префикс с именем пользователя в ОС, а затем сопоставляет полученную строку с именами пользователей в базе данных.
Например, предположим, что значение параметра следующее:
OS_AUTHENT_PREFIX=OPS$
Когда пользователь операционной системы с именем tsmith подсоединяется к базе данных Oracle и аутентифицируется на уровне ОС, Oracle проверяет, что в базе данных есть соответствующий пользователь OPS$tsmith и, если это так, разрешает соединение пользователя. При всех ссылках на пользователя, аутентифицируемого на уровне операционной системы, необходимо указывать префикс (OPS$tsmith).
Примечание: текстовое значение параметра OS_AUTHENT_PREFIX в некоторых ОС зависит от регистра символов. Дополнительную информацию об этом параметре см. в документации Oracle, относящейся к конкретной ОС.
Global (метод глобальной аутентификации)
Это строгая аутентификация, проводимая с помощью опции Oracle Advanced Security. Глобальная аутентификация позволяет идентифицировать пользователей биометрически, на основе сертификатов х509, маркерных устройств (token devices) и с помощью Oracle Internet Directory. Дополнительная информация об этих усовершенствованных методах аутентификации рассматривается в курсе Oracle Enterprise Identity Management.
Аутентификация администраторов
Безопасность на уровне операционной системы. В UNIX и Linux администраторы базы данных по умолчанию входят на уровне ОС в группу install. Таким образом им предоставляются привилегии, необходимые для создания и удаления файлов БД.
Администраторы и обеспечение безопасности. Авторизация при подсоединении с привилегией SYSDBA или SYSOPER осуществляется с помощью парольного файла или привилегий и прав доступа на уровне операционной системы. При аутентификации на уровне ОС база данных не проверяет введенное имя пользователя и пароль. Аутентификация на уровне ОС применяется, когда отсутствует парольный файл, когда введенное имя пользователя и пароль не находятся в этом файле, а также когда не предоставляются имя пользователя и пароль.
Когда аутентификация с помощью парольного файла завершается успешно, тогда вход в систему производится на основе имени пользователя Если же успешная аутентификация происходит на основе средств ОС, тогда регистрация соединение вида CONNECT / не соотносится с определенным пользователем.
Примечание. Аутентификация на уровне ОС имеет более высокий приоритет по сравнению с аутентификацией на основе парольного файла. Поэтому, если вы подсоединены в операционной системе как пользователь, входящий в группу OSDBA или OSOPER, тогда установление соединения с привилегией SYSDBA или SYSOPER, осуществляется без учета введенного имени и пароля пользователя.
Разблокирование учетной записи пользователя и переустановка пароля
В ходе инсталляции сервера, включающей создание БД, или при отдельном создании базы данных можно разблокировать и перенастроить учетные записи многих пользователей Oracle, используемых для поддержки функциональных возможностей. Если это не было сделано при создании БД, разблокировать пользователя и переустановить пароль можно на странице Users. Выберите для этого нужного пользователя и выполните операцию Unlock User.
Если вы находитесь на странице Edit Users, тогда такие действия производятся следующим образом:
1. Укажите новый пароль в полях Enter Password и Confirm Password.
2. Выберите статус Unlocked.
3. Щелкните на кнопке Apply, чтобы переустановить пароль пользователя и разблокировать его учетную запись.
Привилегия - это право на выполнение конкретной команды SQL или право доступа к объектам других пользователей. Oracle предоставляет возможность дифференцированного контроля разрешенных и запрещенных операций пользователя в базе данных. Привилегии делятся на две категории: системные и объектные.
Системные привилегии (system privileges) Каждая системная привилегия, предоставленная пользователю, позволяет ему выполнять в базе данных конкретные операции или классы операций. Например, создание табличных пространств - это системная привилегия. Системные привилегии могут быть предоставлены администратором или кем-то, кому явно предоставлены права по сопровождению привилегий. Имеется более 100 системных привилегий. Многие системные привилегии содержат фразу ANY.
Объектные привилегии (object privileges). Каждая объектная привилегия, выданная пользователю, позволяет ему выполнять конкретные действия над определенным объектом (например, таблицей, представлением, последовательностью, процедурой, функцией или пакетом). Без специального разрешения пользователи имеют доступ только к своим собственным объектам. Объектные привилегии могут быть предоставлены владельцем объекта либо кем-то, кому явно предоставлено право выдавать привилегии на объект.
Системные привилегии
Чтобы предоставить системные привилегии, щелкните на ссылке Systems Privileges, расположенной на странице Edit User. Выберите необходимые привилегии из списка доступных привилегий и переместите их, щелкнув на стрелке Move, в окно списка Selected System Privileges.
Предоставление привилегии с фразой ANY означает, что действие привилегии не ограничивается схемой пользователя. Например, привилегия CREATE TABLE позволяет пользователю создавать таблицы, но только в своей собственной схеме. Привилегия SELECT ANY TABLE разрешает пользователю делать запросы к таблицам, принадлежащим другим пользователям.
Отметка, сделанная в поле Admin Option, дает право этому пользователю быть администратором привилегии и выдавать ее другим пользователям.
Перед предоставлением системных привилегий тщательно обсудите требования безопасности. Некоторые системные привилегии обычно предоставляются только администраторам. К ним относятся:
RESTRICTED SESSION; эта привилегия разрешает пользователю подсоединяться к базе данных, когда она открыта и находится в режиме ограниченного доступа.
SYSDBA и SYSOPER; эти привилегии разрешают останавливать и запускать экземпляр базы данных, выполнять восстановление, а также решать другие задачи по сопровождению базы данных. Привилегия SYSOPER позволяет выполнять основные операционные задачи, но без возможности просмотра данных пользователей. Эта привилегия содержит следующие системные привилегии:
- STARTUP и SHUTDOWN
- CREATE SPFILE
- ALTER DATABASE OPEN/MOUNT/BACKUP
- ALTER DATABASE ARCHIVELOG
- ALTER DATABASE RECOVER (только полное восстановление; для неполного восстановления, например, UNTIL TIME I CHANGE | CANCEL | CONTROLFILE требуется подсоединение с привилегией SYSDBA)
- RESTRICTED SESSION
Системная привилегия SYSDBA дает право выполнять неполное восстановление и удалять базу данных. Пользователь, использующий системную привилегию SYSDBA при подсоединении, устанавливает соединение как пользователь SYS.
DROP ANY ; такие привилегии разрешают пользователям удалять объекты, находящиеся в схемах, принадлежащих другим пользователям.
CREATE, MANAGE, DROP, ALTER TABLESPACE; эти привилегии позволяют производить действия по администрированию табличных пространств, включая создание, удаление и изменение их атрибутов.
CREATE ANY DIRECTORY; база данных Oracle предоставляет возможность разработчикам вызывать из PL/SQL внешний код (например, программу из библиотеки С). Средством обеспечения безопасности служит объект типа DIRECTORY, представляющий собой виртуальный каталог, с которым должна быть связана директория операционной системы, в которой находится код. Имея привилегию CREATE ANY DIRECTORY, пользователь потенциально может вызвать нарушающий безопасность кодовый объект.
Привилегия CREATE ANY DIRECTORY дает пользователю право создавать объект DIRECTORY (с правами доступа read и write) для любого каталога, к которому может обратиться владелец программного обеспечения Oracle. Это означает, что пользователь может вызвать внешние процедуры из таких директорий. Кроме того, пользователь может попытаться напрямую читать или писать в файл базы данных, например, .в оперативный журнал или файлы аудита. Стратегия безопасности, принятая в организации, должна препятствовать неправильному применению подобных привилегий, которые предоставляют такие мощные возможности.
GRANT ANY OBJECT PRIVILEGE; эта привилегия позволяет пользователю предоставлять разрешения на доступ к объектам, которые ему не принадлежат.
ALTER DATABASE и ALTER SYSTEM; это очень мощные по предоставляемым возможностям привилегии, позволяющие изменять базу данных и экземпляр Oracle, например, переименовывать файл данных и очищать (flush) кэш буферов.
Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd. Перевод: zCarot
У профиля два назначения: управление использованием пароля и ограничением на кол-во используемых ресурсов сессии. Проверка использования пароля всегда включена, проверка использования ресурсов доступна только при включенном параметре RESOURCE_LIMIT=TRUE (по-умолчанию выключено). Профили используются по умолчанию, но профили по умолчанию (применяются ко всем пользователям, в том числе и к SYS и SYSTEM) проверяют очень мало.
Profile password limits are always enforced; profile resource limits
are enforced only if the instance parameter RESOURCE_LIMIT is TRUE.
Создание и назначение профилей
Управлять профилями можно через Database Control или SQL *Plus. Для просмотра текущих профилей пользователей выполните запрос
select username,profile from dba_users;
По умолчанию все аккаунты (за исключением двух внутренних аккаунтов DBSNMP и WKSYS) будут использовать профиль DEFAULT. Запрос для просмотра профиля
select * from dba_profiles where profile=’DEFAULT’;
Профиль DEFAULT не имеет ограничений на ресурсы, но существуют несколько ограничения на пароли
Эти ограничения не слишком сильные: пароль может вводится неверно 10 раз перед блокировкой аккаунта на один день, и пароль истекает через полгода с грейс периодом в неделю. Простейший способ применить более строгие ограничения к паролям это выполнить скрипт поставляемый с Oracle $ORACLE_HOME/rdbms/admin/utlpwdmg.sql. Этот скрипт создаст функции VERIFY_FUNCTION и VERIFY_FUNCTION_11G и затем выполните запрос
ALTER PROFILE DEFAULT LIMIT
Эта команда изменит профиль DEFAULT. Все пользователи с профилем DEFAULT (все пользователи по умолчанию) сразу подхватят новые значения. Единственным изменение будет использование функции verify_function_11G. Эта функция будет проверять пароль на соответствие определённым критериям, а именно
- Новый пароль должен быть длинной не менее 8 символов
- Пароль не должен совпадать с именем пользователя
- Часто использумые простые пароли (к примеру oracle) будут отклонены
- Новый пароль должен содержать минимум одну заглавную букву и одну цифру
- Пароль должен отличаться минимум в три символа от предыдущего
Можно рассмотреть эту функцию как пример и изменить согласно вашим требованиям. Вообще желательно создать отдельные профили для разныз групп пользователей.
Для создания профиля используется команду CREATE PROFILE, устанавливая необходимые ограничения. Неустановленные значения будут выставлены в зависимости от значений в профиле DEFAULT. Например рассмотрим сценарий где пользователи могут открывать только одну сессию, администраторы могут создавать сколько угодно сессий и должны менять пароль раз в неделю с грейс периодом в день, а программисты могут открывать две сессии. Для этого можно выполнить команды
alter profile default limit sessions_per_user 1;
Затем создать профиль dba_profile и назначить его пользователю system
create profile dba_profile limit sessions_per_user unlimited password_life_time 7 password_grace_time 1;
alter user system profile dba_profile;
И создать профиль для программистов
create profile programmers_profile limit sessions_per_user 2;
alter user jon profile programmers_profile;
alter user sue profile programmers_profile;
Для вступления ограничений по ресурсам в силу необходимо установить параметр экземпляра
alter system set resource_limit=true;
Если экземпляр использует SPFILE это изменение применится к файлу параметров и будет использоваться даже после перезапуска.
Профиль нельзя удалить если он назначен какому-либо пользователю. Можно либо вначале перевести пользователей на другой профиль, либо использовать директиву CASCADE использование которой автоматически переназначит пользователей использующих удаляемый профиль назад на профиль DEFAULT.
Уровень обеспечения информационной безопасности корпоративных систем сегодня заметно вырос, и типовые ошибки встречаются все реже - администраторы регулярно устанавливают обновления и реализуют требования парольной политики на серверах Windows, выполняют требования контроля доступа на сетевом оборудовании, сегментируют сети
Уровень обеспечения информационной безопасности корпоративных систем сегодня заметно вырос, и типовые ошибки встречаются все реже — администраторы регулярно устанавливают обновления и реализуют требования парольной политики на серверах 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 году, но она до сих пор крайне актуальна. В конфигурации по умолчанию злоумышленник может:
получить детальную информацию об атакуемой системе — имени базы данных (SID), ее версии, пути к файлам журналов, версии операционной системы и т. д.;
Все эти действия можно совершить, используя стандартные утилиты, поставляемые с базой данных (см. экран 1), и лишь в некоторых случаях могут понадобиться дополнительные сценарии, доступные в Internet.
Рассмотрим атаку типа «отказ в обслуживании», исполняемую с помощью утилиты lsnrctl. С помощью команды stop любой удаленный неавторизированный пользователь может остановить службу Listener:
Для получения удаленного доступа к системе используется утилита lsnrctl и сценарий tnscmd2.pl, позволяющий выполнять команды и посылать службе Listener произвольные пакеты. С помощью команды set log_file удаленный неавторизованный пользователь может изменить имя файла для хранения журналов, например, на имя исполняемого файла, лежащего в папке автозагрузки пользователя. Далее с помощью утилиты tnscmd2.pl злоумышленник может послать запрос, содержащий системные команды, которые в результате будут сохранены в файле журнала и выполнятся при следующей регистрации администратора в системе.
Все это говорит о незащищенности системы при использовании настроек по умолчанию, причем злоумышленник не должен обладать никакими дополнительными программными средствами, кроме стандартных утилит.
Защита внешнего периметра
Для защиты службы Listener существуют следующие параметры в файле LISTENER.ORA:
PASSWORDS_(listener name) = (listener_password) — параметр, который отвечает за установку пароля на подключение к Listener. После установки пароля пользователь не сможет остановить службу, а также проводить атаки, связанные со сменой имени файла журнала. Но тем не менее команды status и version выполняются и позволяют получить информацию о версии Listener, имени установочного каталога и версии операционной системы.
ADMIN_RESTRICTIONS_(listener name) — параметр, который во включенном состоянии ADMIN_RESTRICTIONS_(listener name) =ON (по умолчанию OFF) запрещает любые изменения файла конфигурации удаленно, т. е. смена имени и каталога файла журнала возможна только при наличии локального доступа к файлу listener.ora
Пример запуска утилиты на 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):
поиск информации в сторонних приложениях. База данных Oracle 10g R2 по умолчанию устанавливает Oracle Application Server, который работает на порту 1158. Этот сервер доступен для удаленного подключения и вместе с окном регистрации пользователя выдает SID базы данных. Также при установке Oracle в связке с системой SAP R/3 можно узнать SID базы данных через приложение SAP Web-Manegment, «слушающее» обычно TCP-порт 8001 и отвечающее за управление системой SAP;
имя базы данных является словарным словом. Часто имена баз данных выражают их предназначение типа PAYMENT, CREDITS и т. п.;
имя базы данных состоит из небольшого количества символов. Все четырехсимвольные имена, например ORCL, перебираются в течение двух часов;
имя базы данных можно узнать по ссылке из другой базы данных, из файла tnsnames.ora на одном из хостов в сети или, например, прослушивая сетевой трафик.
Таким образом, даже не имея доступа к 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 в некоторых случаях приносит успех:
Проблема парольной политики также касается и других баз данных, это до сих пор является основной проблемой любой системы. Практика показывает, что в 80% случаев перебор паролей завершается успехом и редко занимает более 10-15 минут.
Внутренняя безопасность базы данных Oracle
В отличие от операционных систем, где процесс обновления уже не вызывает трудностей и осуществляется почти в автоматическом режиме, с Oracle дела обстоят намного хуже. Во-первых, обновления выходят редко, во-вторых, до сих пор их установка нетривиальна и часто грозит серьезными сбоями в тех случаях, когда Oracle используется в совокупности с какой-либо сторонней системой, работающей с определенной версией Oracle. Наконец, даже если обновления исправно устанавливаются, это все равно не дает полной гарантии безопасности, так как по статистике более половины уязвимых мест так и остаются незакрытыми.
Основные атаки, совершаемые пользователями базы данных Oracle, направлены на повышение своих привилегий. Воспользовавшись уязвимыми местами во встроенных функциях, злоумышленник может выполнить следующие действия:
Все эти возможности требуют тех или иных дополнительных знаний и программных средств, но тем не менее они очень популярны и имели место практически во всех системах на базе Oracle. А, учитывая, что в Windows база данных Oracle по умолчанию работает от имени учетной записи администратора, получение доступа к командной строке сервера через внутренние процедуры Oracle грозит получением административного доступа к операционной системе со всеми вытекающими последствиями. Наличие внутренних уязвимых мест высокой степени критичности вкупе с ошибками конфигурации и слабыми паролями представляет реальную угрозу безопасности компании.
Рекомендации по защите
Приведем некоторые рекомендации, необходимые для повышения уровня защищенности Oracle, многие из которых применимы и к другим базам данных.
1. При установке системы в рабочую среду:
устанавливайте только необходимые для бизнес-процесса компоненты. Не устанавливайте тестовые примеры схем;
смените пароли к административным учетным записям SYS и SYTEM на удовлетворяющие требованиям безопасности;
при выборе имен баз данных (SID) используйте названия, состоящие не менее чем из восьми символов, включая буквы и специальные символы, но не совпадающие с именем хоста в DNS или Netbios;
2. При настройке системы после установки:
создайте учетную запись пользователя в операционной системе, от имени которого будет запускаться база данных Oracle, установите для нее надежный пароль и лишите ее административных привилегий;
установите пароль на доступ к службе Listener. Использование установки LOCAL_OS_AUTHENT не рекомендуется, так как не защищает локальный доступ к службе и усложняет удаленное администрирование (см. листинг 1);
включите протоколирование всех попыток подключения к Listener для обнаружения попыток перебора паролей (см. листинг 2);
максимально ограничьте доступ к локальным конфигурационным файлам tnsnames.ora, оставив права на чтение лишь пользователю, от имени которого запускается база данных, так как пароль на подключение к Listener хранится в конфигурационном файле;
ограничьте доступ к приложениям, через которые можно узнать SID, или модифицируйте информацию, выводимую этими приложениями;
отключите неиспользуемые учетные записи и смените пароли учетных записей, установленных по умолчанию;
введите как административные, так и программные ограничения на длину и сложность пароля. Программно это можно реализовать настройкой профилей пользователей в базе данных Oracle. Основные параметры профиля, влияющие на безопасность, могут быть настроены путем изменения таких параметров, как FAILED_LOGIN_ATTEMPTS (число неудачных попыток регистрации), PASSWORD_LIFE_TIME (время действия пароля, рекомендуется менять раз в два месяца), PASSWORD_VERIFY_FUNCTION (имя функции для проверки длины и сложности пароля).
Пример установки числа неудачных попыток входа, равного пяти:
alter profile DEFAULT
limit FAILED_LOGIN_ATTEMPTS 5;
alter user SCOTT
profile DEFAULT;
ограничьте доступ к базе данных по IP-адресам, разрешив доступ только с Web-сервера, если база данных используется с ним в связке или только из подсети пользователей базы данных. Для этого можно воспользоваться межсетевым экраном или настройками конфигурационного файла protocol.ora. В конфигурационный файл необходимо внести строки:
3. Периодические проверки:
регулярно устанавливайте последние критические обновления. Если обновления для существующей уязвимости еще не вышли, ограничьте доступ пользователей на запуск уязвимых процедур;
периодически проводите проверку учетных записей на наличие стандартных или словарных паролей. Для этого можно воспользоваться утилитой oscanner, которая удаленно осуществляет как проверку стандартных учетных записей, так и подбор по словарю. Для локальной проверки можно воспользоваться утилитой checkpwd, которая предполагает знание аутентификационных данных администраторов. При запуске она подключается к базе данных с аутентификационными данными заданного пользователя, делает выборку из таблицы с хешами паролей пользователей и сверяет эти хеши со стандартными. Также утилита осуществляет подбор паролей по словарю и проверяет, заблокирована ли учетная запись;
Эти основные рекомендации помогут наиболее полно защитить базу данных без применения дополнительных программно-аппаратных средств. Подробную информацию о защите Oracle можно найти в официальном документе Oracle Database Security Checklist, последняя версия которого доступна по адресу
Листинг 1. Установка пароля на доступ к Listener
Листинг 2. Включение протоколирования подключения к Listener
Парольная защита Oracle, по-умолчанию, достаточно слаба и ненадежна. Ряд специальных мер позволяют усилить ее.
Каталог скриптов безопасности Oracle
Почерпнуть идеи можно изучив скрипт utlpwdmg.sql, расположенном в $ORACLE_HOME/rdbms/admin/utlpwdmg.sql (в ОС Windows - %ORACLE_HOME%\rdbms\admin\utlpwdmg.sql)
Заметка из скрипта:
Rem utlpwdmg.sql
. . .
Rem utlpwdmg.sql - script for Default Password Resource Limits
. . .
-- This script sets the default password resource parameters
-- This script needs to be run to enable the password features.
-- However the default resource parameters can be changed based
-- on the need.
-- A default password complexity function is also provided.
-- This function makes the minimum complexity checks like
-- the minimum length of the password, password not same as the
-- username, etc. The user may enhance this function according to
-- the need.
-- This function must be created in SYS schema.
-- connect sys/ as sysdba before running the script
Синтаксис профиля парольной защиты Oracle
Парольная защита построена на профилях "profiles", которые назначаются пользователям. Ниже представлен синтаксис такого профиля:
Создадим профиль и затем назначим созданный профиль пользователю. Далее следует пример создания профиля:
Мы можем изменить профиль в любой момент, выполнив предложение ALTER PROFILE
Параметры профиля Oracle
Ниже представлены параметры безопасности:
- failed_login_attempts - Количество неудачных попыток входа, прежде чем учетная запись будет заблокирована. По умолчанию равна трем попыткам.
- password_grace_time - Период действия пароля, когда значение параметра password_life_time превышено.
- password_life_time - Указывает как долго действует пароль. По умолчанию смена пароля требуется каждые 60 дней.
- password_lock_time - Указывает, как долго учетная запись остается заблокированной, после блокировки в случае исчерпания попыток неудачной регистрации. Очень часто DBA выставляют значение в UNLIMITED.
- password_reuse_max - Указывает время в течение которого пользователь может повторно использовать пароль.
- password_reuse_time - Параметр определяет время, когда пользователь сможет использовать пароль повторно. Для того что бы полностью запретить повторное использование пароля значение параметра выставляется в UNLIMITED.
- password_verify_function - Позволяет указать функцию проверки пароля.
Изменение пароля, истечение и блокировка ненужных пользователей
При полной установке Oracle пользователь сталкивается с необходимостью заблокировать учетные записи, поставляемые с тестовыми схемами и примерами. Для блокировки пользователя выполняется SQL команда:
Для разблокировки, используется опция UNLOCK:
Oracle предоставляет несколько учетных записей, которые никогда не могут быть удалены или заблокированы. Это SYS, SYSTEM, SYSMAN (Oracle 10g), OUTLN. Всегда можно изменить пароль этих пользователей. Пароль, для пользователя SYS, по умолчанию - change_on_install. Это важно. Для смены пароля пользователя выполняется SQL команда для пользователя:
Для некритичных пользователей, учетную запись можно заблокировать навсегда, и указать истечение срока действия пароля. Например, для пользователя CTXSYS:
Это позволит быть уверенным, что пароль для пользователя CTXSYS изменен, При успешной попытке регистрации потребуется смена пароля, потому что он истек, но раз учетная запись заблокирована, то с ее помощью нельзя будет подключится к серверу Oracle.
Следующие пользователи создаются при полной установке Oracle:
- AURORA$ORB$UNAUTHENTICATED - Пользователь Jserver
- BI - Демо пользователь
- CTXSYS - Администратор Oracle Text/interMedia
- DBSNMP - Oracle Intelligent Agent
- DSSYS - Dynamic Services and Syndication Server
- HR - Демо пользователь
- MDSYS - Администратор Spatial
- ORDSYS/ORDPLUGIN - Пользователь Object Relational Data
- OE - Демо пользователь
- PERFSTAT - Административный пользователь STATSPACK
- SCOTT - Демо пользователь
- SH - Демо пользователь
- TRACESVR - Сервер отладки Oracle
- WKSYS - Администратор Ultrasearch
Наилучший вариант - устанавливать только те компоненты и опции, которые реально нужны вам. Если не планируется использование Spatial, interMedia, или UltraSearch, не устанавливайте их. И не придется беспокоится за их пользователей.
Популярность базы данных Oracle во многом обусловлена ее гибкостью, которая заключается в большом количестве поддерживаемых типов интерфейсов с другими приложениями. А одним из факторов, влияющих на выбор базы данных, является ее интегрируемость с используемой средой. Например, если в компании развернут домен Windows 2000, то логично было бы требовать от базы данных наличия механизмов, позволяющих максимально задействовать возможности, предоставляемые службой каталога Active Directory. В качестве примера интеграции можно привести возможность аутентификации пользователей при доступе к ресурсам, хранящимся в базе данных. Эта возможность реализуется механизмами аутентификации посредством протоколов Kerberos, RADIUS и NTS.
АУТЕНТИФИКАЦИЯ RADIUS
При реализации данного метода на рабочей станции, намеченной для использования в качестве клиента базы данных, был установлен клиент Oracle 9.0.2 с дополнительным набором ASO (Advanced Security Option). На сервере базы данных в качестве операционной системы использовалась Windows Server 2000 SP3 и работал сервер Oracle 9.0.2 Enterprise Edition с ASO. На контроллере домена Windows 2000 помимо службы Active Directory была установлена служба Internet Authentication Services. Служба Internet Authentication Services является реализацией протокола RADIUS компании Microsoft. Таким образом, описанные ниже установки могут быть спроецированы на любую реализацию протокола RADIUS.
На стороне клиента ORACLE файл $ORACLE_HOMENetworkadminsqlnet.ora выглядит так, как показано в листинге 3.
На стороне сервера Oracle были также внесены изменения в файл $ORACLE_HOMENetworkadminsqlnet.ora, отраженные в листинге 4.
В листинге 4 параметр RADIUS_SERVER — это доменное имя (FQDN) сервера, на котором установлена служба Internet Authentication Services
В файл $ORACLE_HOME etworksecurity adius.key был помещен «разделяемый секрет» (shared secret), представляющий собой симметричный пароль на серверном и клиентском компонентах службы RADIUS.
Теперь произведем установку параметров инициализации REMOTE_OS_AUTHENT = FALSE и OS_AUTHENT_PREFIX = ?? путем выполнения следующих команд с консоли SQLPLUS:
Также можно использовать прямое редактирование этих параметров в файле настройки Oracle, в ora.ini. Правильность заданных параметров проверяется путем выполнения команды sqlplus и в консоли SQL следующих команд:
Conn / as sysdba;
Show parameters %AUTH%
При этом вывод выполняемых команд должен совпадать с приведенным ниже:
NAME TYPE VALUE
——————————————
os_authent_prefix string
remote_os_authent boolean FALSE
Настройка службы Internet Authentication Services проводится с консоли управления Microsoft Management Console (MMC). В оснастке Internet Authentication Services создадим новую конфигурацию клиента, как показано на экране 1. Следует отметить, что значение параметра Shared secret и содержимое файла D:oracleora92 etworksecurity adius.key должны совпадать.
Средствами настройки службы Internet Authentication Services создается новая политика доступа для удаленных клиентов, этот процесс отражен на экране 2. В частности, добавляется параметр Client-IP-Address matches со значением, равным IP-адресу сервера базы данных.
В свойствах соединения устанавливается флажок для включения параметра аутентификации Unencrypted Authentication (PAP, SPAP), см. экран 3, причем следует отметить, что без установления данного параметра аутентификация с использованием протокола RADIUS работать не будет. Пользователю домена, для которого предполагается задействовать аутентификацию в базе по протоколу RADIUS, нужно не забыть разрешить удаленную аутентификацию.
Учетная запись пользователя базы данных Oracle создается путем выполнения команд в оболочке Oracle SQLPlus, см. рис. 3.
Ограничение ресурсов
Ограничениями накладывами на использование ресурсов сервера (kernel limits) являются
SESSION_PER_USER количество параллельных подключений которые может создать один и тот же аккаунт. Сессии по достижении этого значения будут блокироваться
CPU_PER_SESSION – время процессора (в сентисекундах) которое серверный процесс сессии может использовать до принудительного завершения
CPU_PER_CALL — время процессора (в сентисекундах) которое серверный процесс может использовать для выполнения одной SQL команды до принудительной остановки выполнения запроса
LOGICAL_READS_PER_SESSION – количество блоков которое может считать сессия (независимо из буффера или с диска) перед принудительным отключением сессии
LOGICAL_READS_PER_CALL – количество блоков которое может считать запрос (независимо из буффера или с диска) перед принудительной остановкой выполнения запроса
PRIVATE_SGA – для сессий подключенных используя архитектуру общего сервера, количесво килобайт которое сессия может использоватья в SGA
CONNECT_TIME – в минутах, масимальная длительность сессии
IDLE_TIME – в минутах, длительность бездействия по достижении которой сессия принудительно отключается
COMPOSITE_LIMIT – взвешенная сумма других атрибутов. Не рассматриваем в этом курсе
Все ограничения по использования ресурсов не будут выполняться до установки параметра экземпляра RESOURCE_LIMIT. По умолчанию значение FALSE. Включить можно выполнив запрос
ALTER SYSTEM SET RESOURCE_LIMIT=TRUE;
Когда сессия отключается из-за достижения лимита, если была неподтвержденная транзакция – она отменяется. Если останавливается выполнение запроса – то изменения сделанные этим запросом отменяются, но все выполненные команды до этого остаются в силе и неподтверждёнными.
Profiles can be used to limit resource usage, but a much more
sophisticated tool is the Resource Manager
ЗАКЛЮЧЕНИЕ
Описанные в статье методы могут применяться для аутентификации пользователя в Oracle в гетерогенных сетевых средах. При этом база данных Oracle позволяет не ограничиваться использованием только одного метода, а задействовать набор методов в различных комбинациях. К примеру, при аутентификации пользователя в среде домена Windows 2000 в первую очередь должен применяться метод NTS. Если аутентификация по методу NTS не была успешной, должен быть применен метод RADIUS. Если же и аутентификация по методу RADIUS выполнена не была, необходимо задействовать встроенные механизмы аутентификации пользователей в базе данных Oracle с сохранением данных аутентификации в таблице DBA_USERS.
В целом же не существует метода, который можно было бы охарактеризовать как «лучший» или «худший». Например, метод NTS может использоваться исключительно в окружении Windows, тогда как RADIUS может применяться в гетерогенных средах, зато использование RADIUS влечет за собой некоторые проблемы, связанные с безопасностью (например, требование использования разделяемого секрета). Из недостатков KERBEROS можно упомянуть сложность настройки и невозможность задействовать единую с операционной системой учетную запись. Однако при этом KERBEROS может применяться в гетерогенных средах (Windows, UNIX) и допускает использование единой учетной записи с другими базами данных Oracle.
Управление паролями
К паролю могут быть применены следующие ограничения
- FAILED_LOGIN_ATTEMPTS – устанавливает число последовательно неправильных вводов пароля перед блокировкой аккаунта. Если вводится корректный пароль до блокировки, счётчик обнуляется
- PASSWORD_LOCK_TIME – устанавливает количество (в днях) до блокировки аккаунта после FAILED_LOGIN_ATTEMPTS
- PASSWORD_LIFE_TIME – количество (в днях) до окончания жизни пароля. После этого пароль ещё может быть активным какое-то время в зависимости от PASSWORD_GRACE_TIME
- PASSWORD_GRACE_TIME – количество (в днях) после первой успешной попытки подключения после окончания жизни пароля пока будет выводиться предложение сменить пароль. Старый пароль действителен в этом время
- PASSWORD_REUSE_TIME – Количество дней перед тем как пароль может быть использован заново (значение пароля)
- PASSWORD_REUSE_MAX – устанавливает сколько раз может быть использован один и тот же пароль
- PASSWORD_VERIFY_FUNCTION – имя функции для выполнения при смене пароля. Целью предполагается проверка нового пароля на необходимый уровень безопасности, но вы можете использовать для любых целей.
АУТЕНТИФИКАЦИЯ KERBEROS
Протокол Kerberos был разработан в MIT (Massachusetts Institute of Technology, Массачусетский технологический институт) и используется для обеспечения прозрачного, то есть не требующего дополнительного ввода данных аутентификации, доступа пользователей к ресурсам, поддерживающим протокол аутентификации Kerberos. Механизм работы протокола Kerberos следующий.
- Пользователь обращается к серверу Kerberos (Key Distribution Center, KDC), предоставляя данные аутентификации (имя пользователя и пароль).
- Сервер KDC генерирует билет (ticket), в котором хранится сеансовый ключ пользователя, снабженный меткой времени, когда был сгенерирован сеансовый ключ, и передает его пользователю.
- При дальнейшем обращении к ресурсам пользователь предъявляет ресурсу билет, данные билета проверяются на сервере KDC, и, если все в порядке, пользователю предоставляется доступ к ресурсу.
ktpass -princ oracle/server_bd@domain -mapuser user -pass password -out c:v5srvtab.dat
После выполнения описанной команды следует ожидать примерно такого результата, как показано на рис. 1.
Полученный файл необходимо перенести на сервер базы данных в каталог /etc/krb5. Следует учесть, что время между серверами KDC, сервером базы данных и рабочими станциями пользователей не должно различаться более, чем на величину, определенную в файле $ORACLE_HOME/network/admin/sqlnet.ora параметром SQLNET.KERBEROS5_CLOCKSKEW
Если сервер имен DNS недоступен, необходимо в файле /etc/hosts задать имя сервера и поставить ему в соответствие IP-адрес. Также требуется проверить правильность разрешения имени для сетевого IP-адреса сервера базы данных.
Далее следует создать учетную запись соответствующего пользователя в базе данных (например, user):
Имя пользователя должно содержать только заглавные буквы. Предоставим данному пользователю право инициировать сессию:
и произведем изменение конфигурационных файлов $ORACLE_HOME/network/admin/sqlnet.ora, как показано в листинге 1.
Для настройки клиента Oracle следует создать конфигурационный файл для службы Kerberos, например с:oraclekrb5krb5.conf, содержащий следующую информацию:
Затем добавляем в файл $ORACLE_HOME/network/ admin/sqlnet.ora код, показанный в листинге 2.
На следующем шаге следует проверить соединение с базой данных путем выполнения команды okinit user на клиентской рабочей станции с установленным клиентом ORACLE. При этом вывод команды должен быть приблизительно таким, как показано на рис. 2.
АУТЕНТИФИКАЦИЯ ПО NTS ORACLE
При реализации метода NTS аутентификация пользователя в базе данных производится незаметно для пользователя, без необходимости дополнительного ввода данных аутентификации. Для реализации этого метода следует установить параметры инициализации
OS_AUTHENT_PREFIX = — (пустая строка)
путем выполнения команд в оболочке SQLPlus:
SQL> alter system set os_authent_prefix=— scope=spfile;
SQL> alter system set remote_os_authentЯLSE scope=spfile;
Опять же сделать это можно и путем прямого редактирования данных параметров в файле настройки Oracle, в ora.ini. Проверяем правильность заданных параметров:
Conn / as sysdba;
Show parameters %AUTH%
При этом вывод выполняемых команд должен совпадать с приведенным ниже:
NAME TYPE VALUE
—————————————————— —————-
os_authent_prefix string
remote_os_authent boolean FALSE
В системный реестр операционной системы сервера требуется добавить параметр HKEY_LOCAL_MACHINE SOFTWAREORACLEHOMEnOSAUTH_PREFIX_DOMAIN со значением TRUE.
Учетная запись пользователя Oracle может быть создана с помощью графической утилиты Oracle Administration Assistant for Oracle. Затем ему назначаются привилегии для доступа к данным, хранящимся в базе данных. Один из шагов процесса создания учетной записи пользователя приведен на экране 4. Обращаем внимание читателей на заголовок окна Create External OS User Wizard. Таким образом уточняется, что учетная запись создается для пользователя только с внешним методом аутентификации NTS.
Читайте также: