Парольная защита 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 profile_name LIMIT pw_limit(s) range
WHERE:
pw_limit = PASSWORD_LIFE_TIME
PASSWORD_GRACE_TIME
PASSWORD_REUSE_TIME
PASSWORD_REUSE_MAX
FAILED_LOGIN_ATTEMPTS
PASSWORD_LOCK_TIME
range = UNLIMITED / DEFAULT / expression
Создадим профиль и затем назначим созданный профиль пользователю. Далее следует пример создания профиля:
CREATE PROFILE ALL_USERS
LIMIT
PASSWORD_LIFE_TIME 365
PASSWORD_GRACE_TIME 10
PASSWORD_REUSE_TIME UNLIMITED
PASSWORD_REUSE_MAX 0
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LOCK_TIME UNLIMITED;
CREATE USER TEST IDENTIFIED BY ORACLE2008 PROFILE ALL_USERS;
Мы можем изменить профиль в любой момент, выполнив предложение ALTER PROFILE
ALTER PROFILE FINANCE_USER SET FAILED_LOGIN_ATTEMPTS = 4;
Параметры профиля 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 команда:
ALTER USER ИМЯ_ПОЛЬЗОВАТЕЛЯ ACCOUNT LOCK;
Для разблокировки, используется опция UNLOCK:
ALTER USER ИМЯ_ПОЛЬЗОВАТЕЛЯ ACCOUNT UNLOCK;
Oracle предоставляет несколько учетных записей, которые никогда не могут быть удалены или заблокированы. Это SYS, SYSTEM, SYSMAN (Oracle 10g), OUTLN. Всегда можно изменить пароль этих пользователей. Пароль, для пользователя SYS, по умолчанию - change_on_install. Это важно. Для смены пароля пользователя выполняется SQL команда для пользователя:
ALTER USER ИМЯ_ПОЛЬЗОВАТЕЛЯ IDENTIFIED BY НОВЫЙ_ПАРОЛЬ;
Например,
ALTER USER SYSTEM IDENTIFIED BY ORACLE2008;
Для некритичных пользователей, учетную запись можно заблокировать навсегда, и указать истечение срока действия пароля. Например, для пользователя CTXSYS:
ALTER USER CTXSYS IDENTIFIED BY ORACLE2008 ACCOUNT LOCK PASSWORD EXPIRE;
Это позволит быть уверенным, что пароль для пользователя 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, не устанавливайте их. И не придется беспокоится за их пользователей.