你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / Linux开发
oracle 基础(10)
 

然后,执行此脚本文件以撤销权限。

可能的影响
删除这些权限以及将 SYSTEM 表空间的份额减少为 0 不会产生影响。 但如果 SYSTEM 表空间中存在段,并且您将其移动到其他表空间,则将产生两个结果:
  • rowid 将因为物理移动而更改。 如果您有一个基于 rowid 的应用程序,则应注意这一点。
  • 表索引将不可用 - 您必须重建它们。

此更改还可以使某些独立过程无效。

操作计划

找到 SYS、SYSTEM 和 OUTLN 之外的用户的默认表空间。
如果默认表空间为 SYSTEM,则将其更改为非 SYSTEM 表空间。
找到属于 SYS、SYSTEM 和 OUTLN 之外的用户的 SYSTEM 表空间段。
如果找到,则

 

将它们移出到它们的表空间
重新构建索引、物化视图等。

ENDIF
找到具有 UNLIMITED TABLESPACE 系统权限的用户
如果找到,则
  向他们授予所有表空间(SYSTEM 和 SYSAUX 除外)的无限份额
撤销系统权限 UNLIMITED TABLESPACE
ENDIF


2.9 监控监听器日志以获知尝试的非法入侵

背景
阶段 1.7 中,您了解了如何通过限制在线更改参数的能力来保护 Oracle Listener。 这样做很不错,但您如何知道是否有人尝试非法入侵以及何时尝试非法入侵? 防止入侵只是预防措施的一部分;跟踪防御的有效性同样重要。

您可以从监听器日志文件中浏览已尝试的失败登录。 当用户提供错误口令并尝试修改监听器时,以下消息将写入监听器日志:

12-NOV-2005 23:23:12 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=prolin01)(USER=ananda
))(COMMAND=stop)(ARGUMENTS=64)(SERVICE=LISTENER_PROLIN01)(VERSION=168821760)) * stop * 1190
TNS-01190: The user is not authorized to execute the requested listener command

该消息表明 11 月 12 日晚上 11:23,用户“ananda”尝试停止监听器(注意 (COMMAND=stop) 的存在),但提供了错误的口令。 这是否表示尝试的非法入侵? 有可能。 ananda 也可能是一个合法用户,但在输入口令时出现输入错误,从而产生此错误。 但如果您多次看到此错误,则它实际上可能指示尝试的非法入侵。应访问用户 ananda 并验证它实际上是否尝试停止监听器。

同样,在监听器中限制 admin 选项时,用户无法只从命令行设置参数。 如果用户尝试使用以下命令:

$ lsnrctl
LSNRCTL> set trc_level support

他将立即获得错误。

TNS-12508: TNS:listener could not resolve the COMMAND given

以下条目将出现在监听器日志文件中。

12-NOV-2005 23:26:34 * trc_level * 12508
TNS-12508: TNS:listener could not resolve the COMMAND given

该条目指示某人曾尝试直接对 LSNRCTL 提示设置 trc_level。 这可能也是个正常的错误,但重复尝试可能表示存在攻击。

策略
最好的方法是定期检查这些模式的监听器日志文件。 可以通过多种方法执行该操作。

首先,您可以使用以下代码编写一个 shell 脚本:

$ grep "(COMMAND=stop)" listener.log | cut -f4 -d"*"

以下输出将指示监听器命令 STOP 已发出三次:

 0
 0
 0

还可以使用复杂工具(如 awk)或脚本语言(如 PERL)使该脚本提供更丰富的信息。 但如果您对 SQL 最熟悉(这种情况很有可能),则使用 SQL 从此日志文件中提取信息将更具有吸引力。

此处的技巧是将监听器日志用作外部表。 首先,为监听器日志所在的目录创建一个 directory 对象。

create directory listener_log_dir
as
'/u01/app/oracle/10.1/db1/network/log'
/

然后,为日志文件创建外部表。 仔细留意日志文件的内容;它通常包含六个由“*”字符分隔的信息部分。 这些部分将成为外部表的列。

create table listener_log
(
   log_date      date,
   connect_data  varchar2(300), 
   protocol_data varchar2(300),
   command       varchar2(15),
   service_name  varchar2(15),
   return_code   number(10)
)
organization external (
type oracle_loader
   default directory LISTENER_LOG_DIR
access parameters
   (
records delimited by newline
      nobadfile 
      nologfile
      nodiscardfile
      fields terminated by "*" lrtrim
      missing field values are null
      (
          log_datechar(30) date_format 
          date mask "DD-MON-YYYY HH24:MI:SS",
          connect_data,
          protocol_data,
command,
          service_name,
          return_code
      )
   )
   location ('listener_prolin01.log')
)
reject limit unlimited
/

创建表后,可以从中进行选择以确保定义正确。

这些行的描述性很高,但嵌入的命令(如 (COMMAND=stop))可能使它难于破解。 这种情况下,编写另一个函数以提取字符串中的值:

create or replace function extract_value
(
    p_in varchar2,
    p_param in varchar2
)
return varchar2
as
    l_begin     number(3);
    l_end       number(3);
    l_val       varchar2(2000);
begin
    l_begin := instr (upper(p_in), '('||p_param||'=');
    l_begin := instr (upper(p_in), '=', l_begin);
    l_end := instr (upper(p_in), ')', l_begin);
    l_val := substr (p_in, l_begin+1, l_end - l_begin - 1);
    return l_val;
end;
(编辑:aniston)
  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089