操作计划
- 将 background_dump_dest 上的 umask 更改为 0177。
- 将 $ORACLE_HOME/rdbms/log 上的 umask 更改为 0177。
- 将 $ORACLE_HOME/rdbms/audit 上的 umask 更改为 0177。
- 将 audit_file_dest 上的 umask 更改为 0177。
- (可选)将 user_dump_dest 上的 umask 更改为 0177。
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 |
1.6 创建监听程序密码
背景 黑客惯用的伎俩之一是在监听程序中插入大量文本,从而导致监听程序终止。 数据库可能仍然运行,但是由于监听程序已经停止,因此无法建立任何新的连接,这实际上是一种“拒绝服务”攻击。
为此,黑客可能尝试更改监听程序的属性。 这里较常用的策略是通过 services 命令列出监听程序处理的各种服务。 注意显示多少信息,这些信息可能已足够黑客获得合法访问: LSNRCTL> set displaymode verbose
LSNRCTL> services
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)
(HOST=prolin1.proligence.com)(PORT=1521)(IP=FIRST)))
Services Summary...
Service "PROPRD" has 1 instance(s).
Instance "PROPRD1", status READY, has 1 handler(s) for this
service...
Handler(s):
"DEDICATED" established:0 refused:0 state:ready
LOCAL SERVER
(ADDRESS=(PROTOCOL=BEQ)(PROGRAM=/u01/oracle/products/10.1/db1/bin/ora
cle)(ARGV0=oraclePROPRD11)(ARGS='(LOCAL=NO)')(ENVS='_=/u01/oracle/pro
ducts/10.1/db1/bin/racgmain,_USR_ORA_CONNECT_STR=/ as
sysdba,_CAA_CHECK_INTERVAL=600,SHLIB_PATH=/u01/oracle/products/10.1/d
b1/lib32:/u01/oracrs/10gr1crs/lib32:/opt/nmapi/nmapi2/lib/hpux32:,_CA
A_ACTIVE_PLACEMENT=0,PATH=,_USR_ORA_ALERT_NAME=,_USR_ORA_IF=,_CAA_OPT
IONAL_RESOURCES=,_USR_ORA_START_TIMEOUT=0,ORACLE_BASE=/u01/oracle/pro
ducts/10.1/db2,_USR_ORA_DISCONNECT=false,_CAA_SCRIPT_TIMEOUT=600,_CAA
_UPTIME_THRESHOLD=7d,_USR_ORA_STOP_TIMEOUT=0,_CAA_FAILOVER_DELAY=0,_U
SR_ORA_PRECONNECT=none,_USR_ORA_FLAGS=,_CAA_TYPE=application,_USR_ORA
_INST_NOT_SHUTDOWN=,_CAA_REASON=boot,INIT_STATE=3,_USR_ORA_OPEN_MODE=
,_CAA_STATE=:OFFLINE,,_CAA_RESTART_ATTEMPTS=5,_CAA_ACTION_SCRIPT=/u01
/oracle/products/10.1/db1/bin/racgwrap,_CAA_DESCRIPTION=CRS
application for
Instance,_CAA_HOSTING_MEMBERS=prolin1,ORA_RACG_EXEC_ENV=LD_LIBRARY_PA
TH=/u01/oracle/products/10.1/db1/lib:/u01/oracrs/10gr1crs/lib:/opt/nm
api/nmapi2/lib/hpux64:/usr/lib:,_CAA_CLIENT_LOCALE=,_CAA_NAME=ora.PRO
PRD1.PROPRD11.inst,ORA_CRS_HOME=/u01/oracrs/10gr1crs,_CAA_AUTO_START=
1,_CAA_TARGET=:ONLINE,,_USR_ORA_PFILE=,_USR_ORA_OPI=false,_USR_ORA_CH
ECK_TIMEOUT=0,_CAA_PLACEMENT=restricted,_USR_ORA_LANG=,LD_LIBRARY_PAT
H=/u01/oracle/products/10.1/db1/lib:/u01/oracrs/10gr1crs/lib:/opt/nma
pi/nmapi2/lib/hpux64:/usr/lib:,_CAA_REQUIRED_RESOURCES=ora.prolin1.vi
p,_CAA_FAILURE_THRESHOLD=0,ORACLE_HOME=/u01/oracle/products/10.1/db1,
_USR_ORA_SRV=,PWD=/u01/oracrs/10gr1crs/bin,_USR_ORA_VIP=,_USR_ORA_STO
P_MODE=immediate,_CAA_FAILURE_INTERVAL=0,_USR_ORA_NETMASK=,_USR_ORA_D
EBUG=0,ORACLE_SID=PROPRD1,ORA_NET2_DESC=9,12,ORACLE_SPAWNED_PROCESS=1
')(ENV_POLICY=NONE))
黑客的另一个伎俩是关闭监听程序。 新的连接将被拒绝,再一次有效地创建了拒绝服务攻击。
此外,还可以远程管理监听程序。 利用该技术,黑客可以通过攻击其他有漏洞的计算机来远程停止监听程序。
您如何保护自己不受这些威胁侵害?
策略 最好的方法是删除可执行文件 tnslsnr 和 lsnrctl 的所有权限,所有者的权限除外。 (前面的部分已对该方法进行了描述。) 这样,除了 Oracle 软件所有者,没人可以启动或停止监听程序。 可执行文件与以下类似: -rwx------ 1 orasoft oinstall 214720 Oct 25 01:23 lsnrctl
-rwx------ 1 orasoft oinstall 1118816 Oct 25 01:23 tnslsnr
在某些情况下,您可能希望授权启动和停止监听程序。 在这种情况下,您需要打开权限。
(编辑:aniston)
|