ISA2006+SQL+ACCESS 制作精确的日志查询 摆脱死板的服务器查询

时间:2010/7/8 17:45:03      阅读:5897          

步骤:
一般情况下,ISA都是使用MSDE数据库来保存WEB代理日志,那么我们首先就要修改这几个地方
1,在独立的SQL服务器中建立数据库

这里我取名叫ISA06TN
注意:我使用的是SQL2000
2,
选中ISA06TN数据库,然后粘贴以下两处代码来添加2个表单
IF NOT EXISTS (SELECT name FROM sysobjects WHERE name = 'sp_batch_insert' AND type = 'P')
    exec sp_executesql N'CREATE PROCEDURE sp_batch_insert @tempTableName nvarchar(100), @tableName nvarchar(100) AS
                EXECUTE (''INSERT into ['' + @tableName + ''] SELECT * FROM ['' + @tempTableName + '']'')
                EXECUTE (''truncate table ['' + @tempTableName + '']'')'
GO

CREATE TABLE WebProxyLog (
  [ClientIP]        bigint,
  [ClientUserName]  nvarchar(514),
  [ClientAgent]     varchar(128),
  [ClientAuthenticate]    smallint,
  [logTime]         datetime,
  [service]         smallint,
  [servername]      nvarchar(32),
  [referredserver]  varchar(255),
  [DestHost]        varchar(255),
  [DestHostIP]      bigint,
  [DestHostPort]    int,
  [processingtime]  int,
  [bytesrecvd]      bigint,
  [bytessent]       bigint,
  [protocol]        varchar(12),
  [transport]       varchar(8),
  [operation]       varchar(24),
  [uri]             varchar(2048),
  [mimetype]        varchar(32),
  [objectsource]    smallint,
  [resultcode]      int,
  [CacheInfo]       int,
  [rule]            nvarchar(128),
  [FilterInfo]      nvarchar(256),
  [SrcNetwork]      nvarchar(128),
  [DstNetwork]      nvarchar(128),
  [ErrorInfo]       int,
  [Action]          varchar(32),
  [GmtLogTime]            datetime,
  [AuthenticationServer]  varchar(255)
)

CREATE CLUSTERED INDEX [IX_WebProxyLog_DateTime] ON [WebProxyLog]([logTime]) ON [PRIMARY]

GO

这个是web代理记录表单

IF NOT EXISTS (SELECT name FROM sysobjects WHERE name = 'sp_batch_insert' AND type = 'P')
    exec sp_executesql N'CREATE PROCEDURE sp_batch_insert @tempTableName nvarchar(100), @tableName nvarchar(100) AS
                EXECUTE (''INSERT into ['' + @tableName + ''] SELECT * FROM ['' + @tempTableName + '']'')
                EXECUTE (''truncate table ['' + @tempTableName + '']'')'
GO

CREATE TABLE FirewallLog (
    [servername]         nvarchar(128),
    [logTime]            datetime,
    [protocol]           varchar(32),
    [SourceIP]           bigint,
    [SourcePort]         int,
    [DestinationIP]      bigint,
    [DestinationPort]    int,
    [OriginalClientIP]   bigint,
    [SourceNetwork]      nvarchar(128),
    [DestinationNetwork] nvarchar(128),
    [Action]             smallint,
    [resultcode]         int,
    [rule]              nvarchar(128),
    [ApplicationProtocol] nvarchar(128),
    [Bidirectional]      smallint,
    [bytessent]          bigint,
    [bytessentDelta]     bigint,
    [bytesrecvd]         bigint,
    [bytesrecvdDelta]    bigint,
    [connectiontime]     int,
    [connectiontimeDelta] int,
    [SourceProxy]        varchar(32),
    [DestinationProxy]   varchar(32),
    [SourceName]         varchar(255),
    [DestinationName]    varchar(255),
    [ClientUserName]     varchar(514),
    [ClientAgent]        varchar(255),
    [sessionid]          int,
    [connectionid]       int,
    [Interface]          varchar(25),
    [IPHeader]           varchar(255),
    [Payload]            varchar(255),
    [GmtLogTime]            datetime       
)
       
CREATE CLUSTERED INDEX [IX_FirewallLog_DateTime] ON [FirewallLog]([logTime]) ON [PRIMARY]

GO       

这个是防火墙日志
运行完毕以后会发现数据库中多了2个表单

注意:最好顺便建立一个专门的使用用户

3:由于建立表单中有个字段是ClentIP,是整数型的,当我们查询的时候,返回的客户端IP结果是一串10位的数字
根本看不懂,所以要在ISA06nt中建立个专门翻译的函数


函数代码如下
CREATE   FUNCTION   [dbo].[f_Int2IP](   
@IP   bigint   
)RETURNS   varchar(15)   
AS   
BEGIN   
DECLARE   @re   varchar(15)   
SET   @re=''   
SELECT   @re=@re+'.'+CAST(@IP/ID   as   varchar)   
,@IP=@IP%ID   
from(   
SELECT   ID=CAST(16777216   as   bigint)   
UNION   ALL   SELECT   65536   
UNION   ALL   SELECT   256   
UNION   ALL   SELECT   1)a   
RETURN(STUFF(@re,1,1,''))   
END

然后建立一个视窗

注意:这里就使用到上面建立的函数了,不然你看到的只是10位数的数字

我的视窗设计如下:

由于整个表单中我只想看客户端IP,服务器IP,上网地址,以及时间日期,所以我只保留以上4个字段
大家还有其他需要可以自行设置
以上SQL服务器设置完毕

4:ISA设置,这里只介绍WEB代理记录,服务器日志操作一样的


确认服务器参数全部正确,可以点击测试看是否成功

特别注意事项:一定要确定

系统策略SQL是选中的
SQL连接认证不要使用Windows认证,要使用账号密码认证。不然你的ISA服务会自动停止

5:确定你ISA的修改,如果是按照我的操作,一般都会确定通过验证
这样你的日志都会存档在你的SQL服务器中

6:office07 access设定
这个设定哪台电脑都可以,这样我们查日志的时候就很方便了
开始--执行--odbcad32--用户DSN--添加--sqlserver---完成



下一步。完成

7:配置access







8:为access建立查询
一下是我简历查询的实例



图1的建立好之后保存,再双击可以看到这个画面

在里面输入你想查询的IP地址即可返回所有关于此地址的
上网信息

图2建立好之后保存,再双击可以看到这个画面

以上返回所有浏览过QQ相关网站的用户以及网站信息信息(一定要记住*的作用)

9 基本完成所有设定

完成的access档案非常小,复制到任何电脑上,只要设定好odbc,即可实现查询


再次强调一下,一定要按照顺序操作,以及我提到的重点以及注意点,不然很有可能你的ISA服务停止。以及ISA更改存档失败。

评论
  • Re:ISA2006+SQL+ACCESS 制作精确的日志查询 摆脱死板的服务器查询  (2010/7/12 11:59:42) by 閮戠幃 

    <p>果然厉害啊。。</p>

  • Re:ISA2006+SQL+ACCESS 制作精确的日志查询 摆脱死板的服务器查询  (2010/10/14 16:29:21) by 鍒樺啲鍐?Url= 

    过来学习一下

  • Re:ISA2006+SQL+ACCESS 制作精确的日志查询 摆脱死板的服务器查询  (2010/12/23 17:12:56) by thtf2010 

    下载学习了,好东西,现阶段非常需要

  • Re:ISA2006+SQL+ACCESS 制作精确的日志查询 摆脱死板的服务器查询  (2011/1/4 15:51:10) by feilang 

    下载学习了,好东西,现阶段非常需要

  • Re:ISA2006+SQL+ACCESS 制作精确的日志查询 摆脱死板的服务器查询  (2011/1/18 16:06:33) by liyubaiandlong 

    ,好东西,现阶段非常需要

  • Re:ISA2006+SQL+ACCESS 制作精确的日志查询 摆脱死板的服务器查询  (2011/5/16 19:19:00) by 闁告粌鑻柦?Url= 

     原来可以这样用,有启发意义

  • Re:ISA2006+SQL+ACCESS 制作精确的日志查询 摆脱死板的服务器查询  (2011/8/15 10:50:11) by huixch 

    这样都可以,真是学习了!

  • Re:ISA2006+SQL+ACCESS 制作精确的日志查询 摆脱死板的服务器查询  (2011/11/16 12:06:32) by 温迪 

    值得学习

标 题:
 
姓 名:
 
主 页:

验证码:

评论:
 

Because of the cache,you may see your comments several minutes later.