1.5 限制 SYSDBA 登录
背景 您可能已经注意到,属于组“dba”成员的任何 *nix 用户都可通过以下命令以 SYSDBA 用户身份登录: sqlplus / as sysdba
这通常被认为是一件很方便的事,因为您不需要记住或输入用户 SYS 的密码。 但是,这也带来了一个漏洞: 任何可通过 dba 组成员身份登录的用户都可通过 SYS 身份登录数据库。 导致 SYS 的加强密码并不经常使用。 如果您有一个牢固的 SYS 帐户,您可能应该对其以及 dba 组用户进行保护,使得以 SYS 身份登录必须提供 SYS 密码。 这种方法不会消除渗透的风险,但是可以使该风险显著降低。
策略 该进程由文件 SQLNET.ORA 中的参数 SQLNET.AUTHENTICATION_SERVICES 控制。如果将该参数设置为 NONE,会禁用 SYSDBA 角色的自动登录。 要禁用 SYSDBA 角色的自动登录,可将以下行放到位于 $ORACLE_HOME/network/admin 目录中的 SQLNET.ORA 文件中。 SQLNET.AUTHENTICATION_SERVICES=(NONE)
从此时起,如果属于组 dba 的 *nix 用户希望使用类似的登录连接: $ sqlplus / as sysdba
他们将收到: ERROR:
ORA-01031:insufficient privileges
要进行连接,必须提供 SYS 密码: $ sqlplus /nolog
SQL> connect sys/oracle as sysdba
这可以防止仍然不知道 SYS 密码的人访问 dba 帐户。
结论 如上所示,最重要的是使用 SYS 密码。 您可能需要对连接至 SYS 的脚本做一些改动。
如果您曾经丢失过 SYS 密码,不要担心。 您可以对文件 SQLNET.ORA 中的行进行注释,然后按照传统方式进行连接,即 / as sysdba。 操作计划
IF 您在脚本中使用 SYS 连接 THEN |
|
将 / as sysdba 更改为 sys/<SysPassword> as sysdba 将 SQLNET.AUTHENTICATION_SERVICES=(NONE) 置于文件 SQLNET.ORA 中 |
ELSE |
|
无需任何更改 |
END IF |
(编辑:anna sui)
|