ARP攻击
  你是否还在为计算机连接正常,却无法打开网页;或者计算机网络出现频繁断线,同时网速变得非常慢,这些都可能是网络中存在ARP欺骗攻击所表现出来的网络现象。
  很多病毒、木马都会利用ARP攻击的方式来达到窃取用户信息、弹挂马/广告网页、传播扩散自身等各种目的。不仅会造成联网不稳定,引发用户无法上网,或者企业断网导致重大生产事故,而且利用ARP攻击可进一步实施中间人攻击,以此非法获取到例如游戏、网银、文件服务等系统的帐号和口令,对被攻击者造成利益上的重大损失,因此ARP欺骗攻击是一种非常恶劣的网络攻击行为。
  如何更有效的来防范ARP攻击?把预防ARP攻击的工作做好才是重中之中。
  因为我们知道,连我们平时最熟知的杀毒软件、防火墙都挡不住ARP 欺骗攻击。主要是由于ARP欺骗攻击的木马程序,通常会伪装成常用软件的一部分被下载并被激活,或者作为网页的一部分自动传送到浏览者的电脑上并被激活,或者通过U盘、移动硬盘等方式进入网络。由于木马程序的形态特征都在不断变化和升级,杀毒软件也只是个摆设而已。

如何预防ARP攻击?
  1.首先要做到把你的网络安全信任关系建立在IP+MAC基础上,利用Mocha BSM中网络拓扑发现之后所有IP-MAC信息,将信息自动的录入到对照表中,如下图。

  有了Mocha BSM,省去了登录一台台的主机,用自己的眼睛一个个去查看MAC地址的情景。
  设置完静态的IP-MAC对照表,不要让主机随意刷新你设定好的对照表。
  2.管理员定期轮询,检查主机上的ARP缓存。
  当出现配置变更,变更的信息会在变更表中显示,如下图。

  客户端IP和MAC信息通过Mocha BSM这种方式的绑定,可以有效的确保正确的MAC地址不被篡改,可以保障数据流向正确,不经过第三者,从而保证通讯数据安全、保证网络畅通、保证通讯数据不受第三者控制、防范欺骗终端用户和ARP泛洪攻击,保护网络资源。
  隐患险于明火,防范重于泰山————做好预防ARP的工作才最为重要。

更多相关信息,请点击http://www.mochabsm.com/

posted @ 2008-08-21 17:20 赖永锋 阅读(31) | 评论 (1)编辑

概述
  Oracle是一个最早商品化的关系型数据库管理系统。是数据库专业厂商Oracle的核心产品。也是当前应用最为广泛、功能最强大、具有面向对象特点、采用客户机/服务器架构的数据库系统。
  作为一个通用的数据库管理系统,Oracle具有完整的数据管理功能,这些功能包括存储大量数据、定义和操作数据、并发控制、安全性控制、完整性控制、故障恢复、与高级语言接口等。Oracle还是一个分布式数据库系统,支持各种分布式功能,特别是支持Internet应用。作为一个应用开发环境,Oracle提供了一套界面友好、功能齐全的数据库开发工具,使用户拥有一个良好的应用开发环境。Oracle使用PL/SQL语言执行各种操作,具有可开放性、可移植性、灵活性等特点。特别是,Oracle支持面向对象的功能,如支持类、方法、属性等概念,使得Oracle 产品成为一种对象/关系型数据库管理系统。
  对于数据库管理员来说,工作中的压力是巨大的,因为除了日常的巨大工作量外,还需要面对各种负责问题的突然发生。当问题发生之后,需要立即对发生的问题进行分析,然后采取相对优化的措施来解决这些突如其来的问题。这些工作的顺利完成离不开应用监控软件的支持。应用监控软件可以帮助数据库管理员收集数据库、操作系统的数据,并且以图形化的方式显示这些数据的内容。
  借助摩卡业务服务管理( Mocha Business Service Management,简称Mocha BSM)的应用监控模块,可针对Oracle数据库提供可视化监控、故障定位、统计报告等功能。
  摩卡软件具有近十年Oracle系统管理、相关开发和维护的经验,提供最具管理价值的指标,细化到每一个应用元素的监控,从根本上关注Oracle的运行状态。以自动化的方式将Oracle进行监管,实现平台级故障预警、性能预警、配置变更预警等功能。 使管理员可以轻松、快捷的分析问题和采取相应的解决措施。

对Oracle DB进行性能调整
  下面我们就举例说明在Mocha BSM的帮助下通过调整共享池提升Oracle DB的性能:
  调整共享池主要包括三个方面:库高速、数据字典缓存、对话信息。由于Oracle管理共享池中数据的算法,使得数据字典缓存中的数据比库高速缓存中的数据在内存中存留的时间长,因此,只要把库高速缓存调整成可以接受的命中率,就能提高数据字典缓存的命中率。
  一般来说,库高速缓存总不命中数与总存取数之比应当接近零,如命中率值为0.001%,说明库高速缓存命中率很高,该比率如果接近或大于5%,就应当立即采取措施来减少这种不命中。
  措施一:增加初始化参数shared_pool_size的值,提高库高速缓存可用的内存数量,同时为了取得好的效果,可能还要增加初始化参数open_cursors的值,以提高对话允许的光标数。需要注意的是:为库高速缓存分配了太多的内存可能引起调页或交换。
  措施二:写等价的SQL语句,尽可能让SQL语句和PL/SQL块共享一个SQL区,来减少库高速缓存的不命中。这是应用设计人员应该做到的:SQL语句或PL/SQL块的文本必须每一个字符都等价,包括大小写和空格。

Mocha BSM对Suse Linux 的有效管理
  检查、调整库高速缓存 可以通过动态性能表V$LIBRARYCACHE来查询Instance启动以来所有库高速缓存的活动。
  V$LIBRARYCACHE表中以下几列反映了库高速缓存在执行调用阶段的不命中:
  PINS列,它的值显示在库高速缓存中执行的次数;
  RELOADS列,它的值显示在执行阶段库高速缓存不命中的数目。

检查命中率
  借助Mocha BSM对Oracle DB的60多个性能监控指标之一:库缓存命中率,您可以直观的看到当前的Oracle DB的库缓存命中率为97.79%(如下图),并且根据您的需要,还可以对库缓存命中率设置报警阈值,一旦被监控的Oracle DB的库缓存命中率超过设定的阈值,Mocha BSM将立即给数据库管理员发出报警(方式包括:邮件、短信、电话、桌面声光)。

更多相关信息,请点击http://www.mochabsm.com/

posted @ 2008-08-21 17:18 赖永锋 阅读(22) | 评论 (0)编辑

SuSE Linux简史
  S.u.S.E一词来自德文:" Software und System Entwicklung"。在英文中则是:" Software and System Development"。译为:软件与系统开发,可以说是众多Linux发行版本中取意最为直截了当的名称了。
  SuSE公司雏形可以追溯到10年前,即1993年由四位德国人创办并至今拥有SuSE公司,他们是:Hubert Mantel, Burchard Steinbild,Roland Dyroff 和Thomas Fehr。早期的SuSE公司并不开发自己的操作系统,而是将Slackware(一款以其稳定性著称的Linux操作系统)的所有脚本和注释翻译成为德文并装于  40张软盘中发行。后来又改用CD做为装载媒体发行。
  终于德国人决定开发自己的操作系统而不是修复Slackware的bugs.并且希望改进Slackware的操作性能,增加更好的安装和配置工具。他们从Florian   LaRoche移植一款初级操作系统并加以改进,由此诞生了SuSE公司第一款Linux操作系统:SuSE Linux4.2. 同时SuSE公司也开发出了有名的系统安装和配置工具:YaST。
  1997年初,SuSE公司在美国加里弗尼亚州奥克兰开创了第一家北美公司,并由此进入世界Linux系统市场。

Linux优点
  第一是美观性与灵活性,Suse Linux在许多方面比Windows更灵活。桌面的管理方式将会精进到了一个意想不到的水平。只要你愿意,你就可以根据的自己的喜好来定义操作系统中的个性化界面,随心所欲的在各个窗口进行轮换,并可同时进行多个窗口的同时操作,您还可以让桌面自由活动,让窗口自由拉到不同桌面里边,或者让窗口由最大化拉动后自动弹成非最大化。还可以让窗口在画面保持动态的情况下,被实时放大。这跟曾经骄傲的苹果3D桌面相比,不知道要先进多少倍!Suse Linux的应用程序大都可以被用户按照不同的需要修改,然后再重新编译, 开源社区的软件都采用了高灵活性和模块化的设计。
  第二是安全性、漏洞的快速修补:如果经常上网,就会常常听到人们说"没有绝对安全的主机"。没错。不过Suse Linux也是Linux的一种,同样也支持者众多,有相当多的热心团体、个人参与开发,因此可以随时获得最新的安全信息,并随时更新,相对较安全。
  第三是多任务和多平台可扩展性,与Windows系统不同,Suse Linux主机上可以同时允许多人上线工作,并且资源分配较为公平。这种多用户、多任务是类UNIX系统相当不错的功能。您可以在一个Suse Linux主机上规划出不同等级的用户,而且每个用户登录系统时的工作环境都可以不同。您还可以允许不同的用户在同一个时间登录主机,以便同时使用主机的资源。
  第四是高稳定性Suse Linux是基于UNIX概念而开发出来的操作系统,具有与UNIX系统相似的程序接口和操作方式,继承了UNIX稳定且有效率的特点。安装Suse Linux操作系统的主机连续运行1年以上不曾死机、不必关机是很平常的事。

Mocha BSM对Suse Linux 的有效管理
  虽然Suse Linux系统相对于商业化的UNIX系统维护相对简单,但是Suse Linux系统在日常的维护管理中还有存在着一些难题:
  发行版本众多,各厂商的产品之间存在着一定的差异。如Ubuntu、RedHat、RedFlag等,他们虽然都是基于标准的内核版本开发,但是在一些系统维护、软硬件管理、网络管理等方面还是有很多区别的。要找一个监控软件支持这么多版本比较难,所以很多企业只能选择投资多个监控软件或者放弃监控部分Suse Linux主机。现在,通过Mocha BSM支持的多个Linux平台,这个问题获得很有效的解决。
  作为一个大型的企业内部往往是不仅有一种Linux的发行版本在使用,因此管理员需要去学习多种系统的维护。但数量多,管理的工作量巨大。在一些企业的IT环境中,往往会采用集群式的Linux部署架构,因为采用Linux系统总体的成本低,采用分布式的架构既可以满足企业应用对性能的高要求又可以降低总拥有成本。这样一来管理员往往需要维护数量众多的Linux主机,而当主机的数目达到了几十台甚至上百台,完全通过人工来管理几乎是不可能完成的任务,会降低整个应用系统的运行效率,所以针对Linux管理难度和主机数量问题。Mocha BSM通过统一的监控和管理可以从整体上掌握整个应用系统的性能情况,监控指标覆盖面广泛,灵活的策略管理,友好的展现界面。

  多种多样的报警方式为企业提供最专业的数据报表,并且提供宕机的根本原因分析,帮助管理员更快解决问题,帮助企业有针对性的进行系统的扩容改造和业务增加,但是维护人员人数可以保持不变,使最终用户得到更高品质的应用服务。

更多相关信息,请点击http://www.mochabsm.com/

posted @ 2008-08-21 11:31 赖永锋 阅读(20) | 评论 (0)编辑

概述
  Sybase数据库是美国Sybase公司研制的一种关系型数据库系统,是一种典型的UNIX或Windows NT平台上客户机/服务器环境下的大型数据库系统。 Sybase提供了一套应用程序编程接口和库,可以与非Sybase数据源及服务器集成,允许在多个数据库之间复制数据,适于创建多层应用。系统具有完备的触发器、存储过程、规则以及完整性定义,支持优化查询,具有较好的数据安全性。

  产品主要具有以下优点:
  - 产品运行稳定,可靠。
  - 支持跨平台部署, 运行效率较高。
  - 有比较全面的解决方案,配套的其他数据库产品。
  - 系统具有完备的触发器、存储过程、规则以及完整性定义,支持优化查询,具有较好的数据安全性。
  - Sybase比DB2的界面友好, 比SQLSERVER稳定比ORACLE便宜。

  总之,Sybase的性价比比较高。正是基于以上的优点,中国的银行、电信、石化甚至包括一些大型企业,有大量用户都是使用的Sybase数据库,剩下的由Oracle和DB2瓜分。

  但是Sybase数据库较于其他数据库也存在以下不可忽略的缺点:
  - 安装、部署和管理需要专门的精通它的数据库管理专家来做。
  - 日常维护非常复杂。

目前Sybase数据库使用现状
  目前Sybase数据库的使用现状:
  1. 大多数部署在UNIX机器上,并且是关键性业务在使用。
  2. 公司或企业没有专业的Sybase数据库维护人员,数据库的维护靠厂家不定期的巡检。
  3. 数据库down机后影响到了关键业务的使用时,才知道数据库已经不可用了。
  4. 对Sybase数据库的运行状态,健康情况,性能指标,数据库运行的瓶颈等信息一无所知,没有一个可视化的界面进行查看。

  基于上述问题,如何选择一个有效的办法对Sybase数据库进行监控就显得尤其重要。

  一般的监控软件对Sybase数据库的监控有以下不足之处:
  1. 监控指标少,并且一些关键性的指标是没有办法监控的。
  2. 虽然实现了可视化监控,但是不能做到一目了然。
  3. 监控的颗粒度不够细,不能对某个具体的数据库以及它的空间使用情况进行监控。

怎么管理?
  Mocha BSM在对Sybase数据库监控这一方面的优势有以下几点:
  1. 可视化监控,监控指标多,并且可以监控到最关键的指标。
  用户不再需要被动的去敲一些sql命令,去漫无目的检查数据库的状态。

  2. 可以查看Sybase包含多少个数据库,并且各个数据库的空间大小,使用空间,剩余空间,数据库空间使用率一目了然,并且可以实时监控每个数据库的可用性状态。

  3. 告警方式的多样性。
  可以通过页面告警。

  也可以通过短信和邮件以及语音进行告警,可以使数据库管理员在第一时间知道数据库存在的潜在风险,并且在第一时间进行排除,从而有效的保护最为关键的数据业务。

更多相关信息,请点击http://www.mochabsm.com/

posted @ 2008-08-21 11:30 赖永锋 阅读(22) | 评论 (0)编辑
      协议分析器是网络管理员库中最强有力的工具之一。它能将难处理、耗时长、让CEO们感到恼火甚至不得不重启所有机器的问题转变为能短时处理、易于在每周例行状态报告中反映的问题,为公司省下大量的时间与金钱。

 

  然而,就像其它任何复杂工具一样,它必须被适当运用才能获得最大的效益。在使用协议分析器诊断网络故障时,应当尽量避免……

 

  错误1 分析器误置

 

  正确放置分析器对快速诊断故障具有决定性作用。设想分析器是置于网络中的窗口,犹如建筑物窗口一般,视野的改变依赖于从哪个窗口看出去。从南面窗口望去是看不到建筑物北面高速公路上交通的拥挤状况的。在分析置于网络不当位置的分析器时,跟踪往往要花很长时间。那么,怎样正确放置分析器呢?我们可以举例说明。

 

  以下为几个可能出现的问题及原因分析:

 

  设想A:一台主机,服务器A,主机不能与其它任何主机通信。可能的原因:

 

  1 服务器A没有正确配置;

 

  2 服务器A配置的网卡出错;

 

  3 服务器A所在局域网出了问题;

 

  4 服务器A所在局域网段出错。

 

    字串5

 

 

  设想B:一台主机,服务器B,主机不能与远程网X中的任何一台主机通信;且局域网或其它远程网中的主机无任何故障(这就意味着问题不可能出现在服务器B或服务器B所在局域网段上)。

 

  可能原因:

 

  1 服务器B有关网络X的部分配置错误;

 

  2 服务器B用于连接到网络X的路由器所在网段的连接出了问题;

 

  3 服务器B所在局域网与网络X的一处或多处链接出了问题;

 

  4 网络X用于连接到服务器B所在网络的路由器所在网段出了问题;

 

  5 网络X出了问题。

 

  设想C:一台主机,服务器C,主机不能与局域网中另一主机通信,但与网络中其它主机通信正常(这意味着问题不可能出现在服务器C或服务器C所在局域网段)。

 

  可能的原因:

 

  1 主机C错误配置;

 

  2 主机C网卡出现故障;

 

  3 主机C所在局域网段出了问题。

 

  设想D:一台主机,服务器D,主机不能与一远程主机通信,但与服务器D所在局域网段的其它主机通信正常,到远程网或远程网自身的连接亦无故障。

 

  可能原因:

 

  1 主机D错误配置;

 

  2 主机D网卡出错;

 

  3 主机D所在局域网段出了问题。

 

    字串7

 

 

  这些问题当中个别的不用分析器也可诊断或排除。例如:设想A中的第三种情况,就能通过检查服务器A所在局域网的其它主机决定故障所在;设想D中的第二和第三种情况亦能通过这种方法确定(假设主机D能与局域网中其它主机通信)。

 

  一台服务器或主机的错误配置通过检测很容易被发现。但另外一些问题,像网络或网段中的故障,就需要分析器来诊断。

 

  在以上所有可能的设想中,一开始或许会将分析器置于离最有可能出现问题的主机或是怀疑有问题的网络、网段尽可能近的地方,但是如果未发现有意义的问题,得准备好移动分析器,要知道,在出现故障的位置被确定以前,所做的一切都是建立在猜想基础上的。在以上设想B的第三种情况中,服务器B所在局域网和网络X中都应该有分析器,至少分析器应该能够从一端被移动到另一端。

 

  例如,一次故障中,一台服务器突然停止了工作。人们起初怀疑是站点人员对服务器实施了误操作所致,实际上跟踪器表明,是因为众多主机向服务器发送连接请求信息的同时服务器却没有响应,致使服务器死锁。

 

  在花了几天时间来判断到底服务器出了什么问题后,被告知观察跟踪器,于是请求站点操作员将跟踪器从主机所在局域网(这里指设想B中第三种情况的网络X)移到服务器所在局域网。结果发现访问控制列表没有被正确添加到服务器所在局域网的路由器上,这份错误的访问控制列表过滤了所有来源于客户端主机所在网络的信息。假若当初多一些怀疑的话,就会发现在服务器所在局域网中根本就没见到过连接请求信息。因为没有同时查看网络两端的情况,致使站点很多天不能工作。

 

    字串8

 

 

 

  怎么知道跟踪器在网络的哪一端起作用呢?在跟踪器中,发自客户端主机的帧信息都具有实客户端所有的源MAC地址,与此同时,目标MAC地址则存放在路由器中。

 

  不幸的是,问题变得越来越复杂,仅仅知道分析器连接于哪个网络还不够。当将一个局域网分解成多个部分时,首要的是去找到空闲Hub端口或同轴电缆的分接头,然而,在网络交换环境下,并不是仅仅将分析器接入交换设备的空闲端口就万事大吉了。

 

  大多数交换设备都具备将特定端口指定为分接头或映像端口的能力,只是所用术语因交换设备制造厂商不同而有别。如果所有来自或发往特定端口的通信同样能发送到映像端口,这时只要将分析器连接到映像端口,所有设置即告完成。

 

  但问题在于有些交换设备不能将两端口之间的通信发送到映像端口。举例说,在双工环境下,作为监控的连接之一部分的两台主机能同时发送信息,交换机也能接收每帧数据并将其传输到链接中的另外端口。但对于映像端口,必须对某一数据帧进行缓冲,如果这样处理了太多帧,缓冲区就会溢出,数据帧就会丢失,跟踪因此变得不可靠。更糟的是,根本就不知道是在跟踪不可靠的线索。

 

  某些交换设备支持内部分析器功能,这类交换机本身能够俘获传向被跟踪对象的数据帧。这种功能部件的可靠性依赖于交换机的缓冲容量。在某些情况下,我们不得不选择映像端口或是内部分析器方式。但只要有可能,最好是将主机之一和分析器连接到Hub,并将Hub挂到交换机上。 字串7

 

  为什么这么做呢?这是因为即使确信交换机有足够容量缓存所有数据帧,以至于映像端口或内部分析器不可能丢数据,跟踪仍然是不可靠的。例如,标准以太网中,一个处于交换机有故障端口的RJ45连接器每当交换机向服务器传输数据帧时都会创建交互式会话,交换机将此解释成为一次冲突并停止工作,当尝试16次之后数据帧就会撤消,但数据帧仍被发送到映像端口,因此跟踪器发现了数据帧并显示服务器响应失败。另一种情况是:不合规格的配线导致1%的数据帧破坏。如果将分析器与第一种情况(任何位置的数据帧都能传送)中提到的的主机一起挂到Hub,或者与第二种情况(网络中有被破坏的数据帧)中主机一起挂到Hub,接收交换机的端口会在未将数据帧发往映像端口之前就将它们撤消,跟踪器没有任何错误指示。当然,每当改变一种方式,都得冒一定风险来纠正可能出现的意外问题。如果RJ45连接器出现故障仅仅是因为没有在交换机端口将其固定好,那么只要将连接器重新插入Hub,故障或许也就不存在了,至少问题是得到了解决。

 

    另外需要记住的是,对于交换设备,在其网段内每个端口都是有效的,因此当连接到服务器的交换端口未发现问题时,应将Hub(或分析器)移动到主机或路由器交换端口.还有,注意不能将Hub挂到双工环境。有些分析器能以双工方式工作,这类分析器有两个以太网口和一个功能模块,功能模块将通信对分为两部分,并分别发送到每一以太网口,之后软件把从每个以太网口接收来的数据结合成单一的跟踪链。如果网络是双工环境,就需要这种分析器。 字串6

 

  错误2 过多的过滤

 

  过滤功能允许协议分析器忽略某些数据帧,从而为感兴趣的帧腾出更多的俘获缓冲空间。如果能过滤来源于较高协议层的数据,如IP地址和端口号以至更高层数据,则分析器几乎很少需要基于源或目标MAC地址的过滤。然而,实际跟踪中通常出现的问题是过滤太多。

 

  有一个站点出现过这样的故障:服务器与一特定客户端之间的连接出了问题,莫名其妙地断开了,其它客户端都没有任何问题。由于客户端与服务器处在同一子网,一旦发生断开现象,使客户端与服务器恢复连接的唯一办法是重新启动服务器。

 

  这个站点安装了分析器,同时因为数据量大,配置了过滤器,只允许俘获两主机(基于MAC地址)之间的数据帧。前两天中没有发现问题,但在第三天问题出现了:跟踪表明服务器突然停止了发送多路会话和最后一次会话。当从服务器端ping客户端时,跟踪器显示服务器没有发送任何数据帧。站点操作员得出的结论是:TCP栈或操作系统出了问题。

 

  于是请求另一次跟踪,这次没有使用过滤器。一天半以后俘获了另一事件:跟踪清楚表明服务器持续发送数据,而与此同时却再也没有得到应答。经过更深层挖掘,发现服务器数据帧的目标MAC地址突然改变了。

 

  既然目标MAC地址不再与客户端的相匹配,那么第一次未使用过滤器的跟踪就不再俘获到MAC地址,同时表明服务器已停止了工作。另外发现就在地址改变之前,服务器无故收到带有为客户端IP地址配置的新MAC地址的ARP信息包,这导致服务器升级ARP缓存并向错误主机发送数据。

 

    字串3

 

 

  通过ARP数据帧的源MAC地址由无故发送ARP的主机向下跟踪,不知何故,主机居然同时配置了复用于客户端的静态IP地址和DHCP地址。当主机启动时,分配的是静态地址,这与服务器相冲突,于是调用DHCP,正确地址才配置上。

 

  基于这一点可得出这样一个结论:用过滤器看似很有道理,但很多时候问题的根源往往以假象出现在过滤器之外,如果跟踪器没有表明问题的起因,过滤器应当关闭,或至少应当扩展一下,直至跟踪器确实查出原因。仅当所有过滤器都关闭后跟踪器仍无法查出问题起因,才可以得出结论——对网络已无计可施了。

 

  错误3

 

  俘获时帧太短

 

  前面例子中表明,站点操作员使用过滤器是因为网络中数据量过大。分析器仅能俘获大约3分钟时间的数据,这使得站点操作员几乎不可能发现问题的发生并使分析器及时加以阻止以真正找到问题的起因。分析器能够俘获数据帧而没有将它们填入俘获缓冲区的时间长短取决于网络的速度、网络中帧的数量、帧的大小以及俘获缓冲区的大小。

 

  几乎所有分析器都能控制俘获数据帧的大小,这在处理连接问题和不太高协议层问题时显得很有用。在通常情况下,只要俘获数据的第一个64字节也就足够了。因此,如果网络中所有帧都是1024字节而仅有3分钟俘获时间,那么仅俘获64字节将允许有超过30分钟的俘获时间。 字串1

 

  错误4

 

  触发器安装不正确

 

  触发器告诉分析器执行某项操作,比如终止俘获。当等待问题发生而又不知道将何时发生时,触发器显得很有用。

 

  安装触发器意味着没有必要随时以手动方式来控制分析器。触发器安装的最大问题往往是没有正确定义,这会大大延长解决问题的时间。

 

  当然,应该详细知道怎样安装触发器,并且,若有可能,在使用之前进行测试。有时可以安装另一台分析器来发送触发数据帧,以确认俘获分析触发器已正确安装。

 

  使用触发器带来的另一问题是,许多分析器允许设置将被预触发的俘获缓冲区的百分比。举例来说,可以指定50%的缓冲区在触发之前俘获,而另外50%的缓冲区在触发之后俘获。预触发的百分比通常是0255075100

 

  如果预触发值设置不当,就有可能俘获不到足够的相关数据帧来诊断问题所在。预触发值有可能被错误设置是因为其默认设置对现行问题往往不适用:也许是因为未将针对前一问题的设置升级,也许是因为粗心的鼠标操作或错误按键。无论何种原因,一定要确认触发器已正确安装。

 

  那么怎样来设置呢?通常是将预触发百分比设为100%,以知道是什么原因导致触发器关闭。

 

  当然,只有当触发器在触发某事件时,它才处于关闭状态。过去使用过特殊的触发程序,它能测试状态,然后发送信息包,分析器可将此信息包用作触发器。测试状态可以是日志文件中的错误信息,或是上例中无法创建连接的情况。一般整个程序也就一百多行或稍长一些。

 

    字串8

 

  错误5

 

  日期/时间设置不正确

 

  没有正确设置分析器上的日期/时间看似一件小事,很多时候可能也确实是这样。然而,当处理广域网络中的问题时,有时同时运行两台分析器,网络每端一台,则正确设置日期/时间是相当有用的。

 

  如果将两台分析器时钟设置相同,调整跟踪会变得更为容易。假定在一个例子中,通过发现通用帧并比较时间,会发现其中一台用了4小时37分,比另一台提前了15.7891秒,如果时钟设置同步误差在12秒,时间差距计算也就容易多了。

 

  另外,如果需要费劲地随主机中的事件调整跟踪,由于基于时间包的同步是不可选的,则设置相同的日期/时间绝对具有实质意义。

 

  错误6 不理解协议

 

  很多分析器具有“专家分析”功能,指的是它们能保持对信息的追踪,像序列号、时间信息、显示重传信息、冻结窗口、无应答状态等等。这类分析相当有用,但也有可能造成误导,尤其在分析器没有正确报错时。

 

  举个例子,有一种情况:从一远程位置发来的远程登录会话无法建立,而发自局域工作站的远程登录会话却没有问题。于是站点操作人员在远程登录服务器所在的局域网挂一分析器,跟踪器表明从远程主机到远程登录服务器的数据帧没有报错;于是他们得出结论是操作系统故障。

 

    字串3

 

   另一位操作人员查看跟踪器发现,局域端远程登录会话连接到端口2323,而远程会话连接到端口23。另外,远程登录服务器响应远程连接请求的信息包包含了RST标志设置。

 

  在这里,站点操作人员没有仔细查看TCP细节,因此没有意识到不同端口号和RST包的重要性,他们依赖来源于分析器的诊断信息,既然远程登录服务器的端口23没有安装,凭感觉猜想也认为是操作系统出了问题。然而,若站点工作人员了解TCP和远程登录,他们就会立即发现问题所在并能在5分钟内找到一个好的解决办法。

 

  事实上是,他们等半天时间来安装跟踪器,结果失去了远程网上数目相当可观的客户。

 更多详细内容,请登陆http://www.mochabsm.com

posted @ 2008-08-20 17:05 赖永锋 阅读(53) | 评论 (0)编辑

一、概述  
      当网络编程越来越方便,系统功能越来越强大,安全性却指数倍地下降。这恐怕就是网络编程的不幸和悲哀了。各种动态内容生成环境繁荣了WWW,它们的设计目标就是为了给开发者更多的力量,给最终用户更多的方便。正因为如此,系统设计师和开发者必须明确地把安全问题作为一个考虑因素,事后追悔很难奏效。  
      从安全的角度来看,服务器端WWW应用的弱点来源于各种各样的交互能力和传输通道。它们是攻击者直接可以用来影响系统的工具。在攻击者寻找和利用系统安全漏洞时,它们总是给系统安全带来压力。对付所有这些攻击的通用防卫策略就是所谓的输入验证。  
从同一层面考虑,主要有两种设计上的错误导致了安全方面的问题:  
      ·
拙劣的访问控制  
      ·
对部署环境作隐含的假设。  
      在有关安全的文献中,针对访问控制问题有着许多深入的分析。这里我们要讨论的是底层实现(代码和配置)上的安全管理问题,讨论的环境是JSP。或者说,我们将讨论恶意的用户输入伪装自身以及改变应用预定行为的各种方法,考虑如何检验输入合法性以及减少对信息和应用接口的不受欢迎的探测。  


二、JSP概述  
      JSP
技术允许把Java代码逻辑嵌入到HTMLXML文档之内,为创建和管理动态WWW内容带来了方便。JSP页面由JSP引擎预先处理并转换成Java Servlet,此后如果出现了对JSP页面的请求,Web服务器将用相应的Servlet输出结果作为应答。虽然JSPServlet在功能上是等价的,但是,和Servlet相比,JSP的动态内容生成方法恰好相反:JSP是把Java代码嵌入到文档之中,而不是把文档嵌入到Java应用之中。为访问外部功能和可重用的对象,JSP提供了一些用来和JavaBean组件交互的额外标记,这些标记的语法和HTML标记相似。值得注意的是:HTML语法属于JSP语法的一个子集(一个纯HTML文档是一个合法的JSP页面),但反过来不一定正确。特别地,为了便于动态生成内容和格式,JSP允许在标记之内嵌入其他标记。例如,下面是一段合法的JSP代码:  
      <A HREF = "<%= request.getRemoteUser() %>">  
      从本文后面可以看到,这种结构增加了安全问题的复杂性。  
      与CGI相比,JSP具有更好的性能和会话管理(即会话状态持久化)机制。这主要通过在同一个进程之内运用Java线程处理多个Servlet实现,而CGI一般要求为每一个请求分别创建和拆除一个进程。

  
三、安全问题  
      由于完全开放了对服务器资源的访问,从JSP页面转换得到的不安全Servlet可能给服务器、服务器所在的网络、访问页面的客户机之中的任意一个或全体带来威胁,甚至通过DDoS或蠕虫分布式攻击,还可能影响到整个Internet。人们往往假定,Java作为一种类型安全的、具有垃圾收集能力的、具有沙箱(Sandbox)机制的语言,它能够奇迹般地保证软件安全。而且事实上,许多在其他语言中存在的低层次安全问题,比如缓冲或堆溢出,很少给Java程序带来危害。然而,这并不意味着人们很难写出不安全的Java程序,特别是对编写Servlet来说。验证输入和控制对资源的访问是始终必须关注的问题。另外,JSP的体系结构相当复杂,其中包含许多相互协作的子系统。这些子系统之间的交互常常是安全隐患的根源。除此之外,虽然现在所有的JSP实现都围绕着Java,但JSP规范允许几乎所有其他语言扮演这个角色。这样,这些替代语言的安全问题也必须加以考虑。  
      简而言之,在JSP系统中产生安全漏洞的机会是相当多的。下面我们将讨论它们中最常见的一部分。  


四、非置信用户输入的一般问题  
      非置信的用户输入(Untrusted User Input)实际上包含了所有的用户输入。用户输入来源于客户端,可以通过许多不同的途径到达服务器端,有时甚至是伪装的。为JSP服务器提供的用户输入包括(但不限于):  
      ·
请求URL的参数部分,  
      · HTML
表单通过POSTGET请求提交的数据,  
      ·
在客户端临时保存的数据(也就是Cookie),  
      ·
数据库查询,  
      ·
其它进程设置的环境变量。  
      用户输入的问题在于,它们由服务器端的应用程序解释,所以攻击者可以通过修改输入数据达到控制服务器脆弱部分的目的。服务器的脆弱部分常常表现为一些数据访问点,这些数据由用户提供的限定词标识,或通过执行外部程序得到。  
      JSP
能够调用保存在库里面的本地代码(通过JNI)以及执行外部命令。类Runtime提供了一个exec()方法。exec()方法把它的第一个参数视为一个需要在独立的进程中执行的命令行。如果这个命令字符串的某些部分必须从用户输入得到,则用户输入必须先进行过滤,确保系统所执行的命令和它们的参数都处于意料之内。即使命令字符串和用户输入没有任何关系,执行外部命令时仍旧必须进行必要的检查。在某些情况下,攻击者可能修改服务器的环境变量影响外部命令的执行。例如,修改path环境变量,让它指向一个恶意的程序,而这个恶意程序伪装成了exec()所调用程序的名字。为了避免这种危险,在进行任何外部调用之前显式地设置环境变量是一种较好的习惯。具体的设置方法是:在exec()调用中,把一个环境变量的数组作为第二个参数,数组中的元素必须是name=value格式。  
      当用户输入用来标识程序打开的任意类型的输入/输出流时,类似的问题也会出现。访问文件、数据库或其他网络连接时不应该依赖于未经检验的用户输入。另外,打开一个流之后,把用户输入直接发送给它是很不安全的。对于SQL查询来说这一点尤其突出。下面访问JDBC APIJSP代码片断很不安全,因为攻击者可以在他提交的输入中嵌入分隔命令的字符,从而达到执行危险命令的目的:  
      <%@ page import="java.sql.*" %> <!--
这里加上一些打开SQL Server连接的代码 --> <% Statement stmt = connection.getStatement(); String query = "SELECT * FROM USER_RECORDS WHERE USER = " + request.getParameter("username"); ResultSet result = Statement.executeQuery(query); %>
      如果username包含一个分号,例如:  
http://server/db.jsp? username=joe;SELECT%20*%20FROM%20SYSTEM_RECORDS
      一些版本的SQL Server会忽略整个查询,但还有一些版本的SQL Server将执行两个命令。如果是后者,攻击者就可以访问原本没有资格访问的数据库资源(假定Web服务器具有访问权限)。  
进行适当的输入检验可以防止这类问题出现。

  
五、输入检验  
      从安全的角度来看,输入检验包括对来自外部数据源(非置信数据源,参见前面说明)的数据进行语法检查,有时还要进行语义检查。依赖于应用的关键程度和其他因素,作为输入检验结果而采取的动作可能是下面的一种或者多种:  
      ·
忽略语法上不安全的成分,  
      ·
用安全的代码替换不安全的部分,  
      ·
中止使用受影响的代码,  
      ·
报告错误,  
      ·
激活一个入侵监测系统。  
      输入检验可以按照以下两种模式之一进行:列举不安全的字符并拒绝它们;定义一组安全的字符,然后排除和拒绝不安全的字符。这两种模式分别称为正向和反向输入过滤。一般地,正向输入过滤更简单和安全一些,因为许多时候,要列举出服务器端应用、客户端浏览器、Web服务器和操作系统可能误解的字符并不是一件容易的事情。  
      请参见本文下面通过嵌入标记实现的攻击部分中输入检验的例子,这个例子示范了如何避免误解恶意提交的输入内容。 

 
六、GET请求和Cookie中的敏感数据  
      就象CGI协议所定义的,把请求数据从客户端传输到服务器端最简单的方法是GET请求方法。使用GET请求方法时,输入数据附加到请求URL之后,格式如下:  
      URL[?name=value[&name=value[&...]]]
      显然,对于传输敏感数据来说,这种编码方式是不合适的,因为通常情况下,整个URL和请求字符串都以明文方式通过通信通道。所有路由设备都可以和服务器一样记录这些信息。如果要在客户请求中传输敏感数据,我们应该使用POST方法,再加上一种合适的加密机制(例如,通过SSL连接)。从JSP引擎的角度来看,在很大程度上,使用哪种传输方法无关紧要,因为两者的处理方式一样。  
      在WWW的发展过程中,Netscape引入了Cookie的概念。Cookie是服务器保存到客户端的少量信息,服务器提取这些信息以维持会话状态或跟踪客户端浏览器的活动。JSP提供了一个response隐含对象的addCookie()方法,用来在客户端设置Cookie;提供了一个request()对象的getCookie()方法,用来提取Cookie的内容。Cookiejavax.servlet.http.Cookie类的实例。由于两个原因,如果把敏感数据保存到Cookie,安全受到了威胁:第一,Cookie的全部内容对客户端来说都是可见的;第二,虽然浏览器一般不提供伪造Cookie的能力,但没有任何东西能够阻止用户用完全伪造的Cookie应答服务器。  
      一般而言,任何客户端浏览器提交的信息都不可以假定为绝对安全。  


七、通过嵌入标记实现的攻击  
      CERT Advisory CA-2000-02
描述了客户在请求中嵌入恶意HTML标记的问题。这个问题一般被称为“cross site scripting”问题,但它的名字有些用词不当,因为它不仅仅和脚本有关,同时,它和跨越网站cross site)也没有什么特别的关系。不过,这个名字出现时,问题还没有被人们广泛了解。  
这种攻击通常包含一个由用户提交的病态脚本,或者包含恶意的HTML(或XML)标记,JSP引擎会把这些内容引入到动态生成的页面。这种攻击可能针对其他用户进行,也可能针对服务器,但后者不太常见。“cross site scripting”攻击的典型例子可以在论坛服务器上看到,因为这些服务器允许用户在自己提交的文章中嵌入格式化标记。通常,被滥用的标记是那些能够把代码嵌入到页面的标记,比如<SCRIPT><OBJECT><APPLET><EMBED>。另外还有一些标记也会带来危险,特别地,<FORM>可能被用于欺骗浏览者暴露敏感信息。下面是一个包含恶意标记的请求字符串的例子:  
http://server/jsp_script.jsp?poster=evilhacker
message=<SCRIPT>evil_code</SCRIPT>
      要防止出现这种问题当然要靠输入检查和输出过滤。这类检查必须在服务器端进行,不应依赖于客户端脚本(比如JavaScript),因为没有任何东西能够阻止用户逃避客户端检验过程。  
      下面的代码片断示范了如何在服务器端检查嵌入的标记:  
<!-- HTML
代码结束 --><% String message = request.getParameter("message"); message = message.replace ('<','_'); message = message.replace ('>','_'); message = message.replace ('"','_'); message = message.replace (''','_'); message = message.replace ('%','_'); message = message.replace (';','_'); message = message.replace ('(','_'); message = message.replace (')','_'); message = message.replace ('&','_'); message = message.replace ('+','_'); %><p>你提交的消息是:<hr/><tt><%= message %></tt><hr/></p><!-- 下面加上其他HTML代码 -->
由于要列举出所有不合法的字符比较困难,所以更安全的方法是进行正向过滤,即除了那些确实允许出现的字符之外(例如[A-Za-z0-9]),丢弃(或者转换)所有其他字符。  


八、关于JavaBean的说明  
      JSP
按照JavaBean规范描述的一系列约定,在JSP页面中快速、方便地访问可重用的组件(Java对象)。每个JavaBean组件封装了一些可以不依赖于调用环境而独立使用的数据和功能。Bean包含数据成员(属性),并通过GetSet方法实现访问这些属性的标准API  
      为快速初始化指定Bean的所有属性,JSP提供了一种快捷方式,即在查询字符串中提供name=value对,并让它匹配目标属性的名字。考虑下面这个使用Bean的例子(以XML格式显示):  
<jsp:useBean id="myBasket" class="BasketBean"> <jsp:setProperty name="myBasket" property="*"/> <jsp:useBean> <html> <head><title>
你的购物篮</title></head> <body> <p> 你已经把商品: <jsp::getProperty name="myBasket" property="newItem"/> 加入到购物篮 <br/> 金额是$ <jsp::getProperty name="myBasket" property="balance"/> 准备 <a href="checkout.jsp">付款</a>
      注意在setProperty方法调用中使用的通配符号“*”。这个符号指示JSP设置查询字符串中指定的所有属性的值。按照本意,这个脚本的调用方式如下:  
http://server/addToBasket.jsp?newItem=ITEM0105342
      正常情况下,HTML表单构造的查询字符串就是这种形式。但问题在于,没有任何东西能够防止用户设置balance属性:  
http://server/addToBasket.jsp? newItem=ITEM0105342&balance=0
      处理页面的<jsp:setProperty>标记时,JSP容器会把这个参数映射到Bean中具有同样名字的balance属性,并尝试把该属性设置为0  
      为避免出现这种问题,JSP开发者必须在BeanSetGet方法中实现某种安全措施(Bean必须对属性进行强制的访问控制),同时,在使用<jsp:setProperty>的通配符时也应该小心谨慎。  


九、实现上的漏洞与源代码安全  
      无论是哪一种JSP实现,在一定的阶段,它们的某些版本都会出现给系统带来危险的安全隐患,即使JSP开发者遵从了安全编程惯例也无济于事。例如,在AllaireJRun的一个版本中,如果请求URL包含字符串“.jsp%00”作为JSP脚本扩展名的一部分,服务器不会忽略null字节,它会把页面视为一个静态的非JSP页面之类的东西。这样,服务器会请求操作系统打开该页面,而这时null字节却被忽略,结果提供给用户的是JSP页面的源代码而不是页面的执行结果。  
      类似地,Tomcat的一个版本也有一个安全隐患。只要请求类如下面的格式,它会让攻击者看到JSP页面的源代码:  
http://server/page.js%2570
      这里的骗局在于,%25URL编码的“%”,而70“p”的十六进制值。Web服务器不会调用JSP处理器(因为URL没有以“.jsp”结尾),但静态文件处理器会设法把URL映射到正确的文件名字(再一次解码URL)。  
      另外,许多Web服务器和JSP实现都带有示范脚本,这些示范脚本常常包含安全隐患。在把服务器部署到一个不无恶意的环境(即Internet)之前,禁止对所有这些脚本的访问有利于安全。  
      简而言之,JSP开发者应该清楚:在自己正在开发的平台上,当前有哪些安全隐患。订阅BUGTRAQ和所有供应商提供的邮件列表是跟踪这类信息的好方法。  
结束语  
      JSP
和任何其他强大的技术一样。如果要保证被部署系统的安全和可靠,应用JSP时必须小心谨慎。在这篇文章中,我们简要地讨论了JSP脚本中常常出现的代码和配置级安全问题,提出了降低由此带来的安全风险的建议。

更多详细内容,请登陆http://www.mochabsm.com

 

 

posted @ 2008-08-19 11:51 赖永锋 阅读(39) | 评论 (0)编辑
 

      通常意义上的网络诊断,是指利用相关硬件工具对网络的测试判定;如果只是一些普遍的连接故障,可以先使用本文介绍的这些诊断命令,先行对故障进行判定。

 

  诊断命令都是DOS命令的一类,学习过程中不需要过多地去了解其详细的诊断原理,只需要了解在何种情况下,使用何种命令即可;此外对Ping命令应该重点掌握。虽然是DOS命令,但在Windows操作系统下,仍可以通过在“开始/运行”框内输入“cmd”,启动Windows桌面下的DOS实模式来进行操作。

 

  一、Ping命令 

  Ping命令是网络中使用最频繁的小工具,主要用来确定网络的连通性问题。需要注意的是,只有在安装 TCP/IP 协议之后才能使用该命令。 

  其命令格式为:Ping + IP地址或主机名+参数;Ping命令的参数如下所列:

   。 -t:表示ping指定的计算机直到中断。。-a:表示将地址解析为计算机名。。-f:在数据包中发送“不要分段”标志,数据包就不会被路由上的网关分段。。-n:发送count指定的ECHO数据包数,默认值为4.-w:指定超时间隔,单位为ms.

 

  举 例:ping 192.168.1.100 -t (再敲回车键,下同),表示一直测试本机到IP地址为192.168.0.1的另一台计算机的连接是否正常,直到强行中止测试;

 小 结:该命令主要是用来检查路由是否能够到达,其在网上传递的速度非常快,可以快速地检测要去的站点是否可达。如果执行Ping不成功,则可以预测故障出现在以下几个方面:网线是否连通,网络适配器配置是否正确,IP地址是否可用等;如果执行Ping成功而网络仍无法使用,那么问题很可能出在网络系统的软件配置方面,Ping成功只能保证当前主机与目的主机间存在一条连通的物理路径。

 

二、ipconfig命令

 

  此命令可以显示IP协议的具体配置信息,比如显示网卡的物理地址、主机的IP地址、子网掩码以及默认网关等,还可以查看主机名、DNS服务器、节点类型等相关信息。

 

  其命令格式为:ipcofig+参数;命令的参数如下所列:

 

  / :显示所有可用参数信息。

 

  /all :显示所有的有关IP地址的配置信息。

 

  /batch [file] :将命令结果写入指定文件。

 

  /release_all :释放所有网络适配器。

 

  /renew_ all :重试所有网络适配器。

 

  举 例:ipconfig /all,可以查看到本机IP地址为“192.168.1.100,子网掩码为“255.255.255.0等信息。 

 

  小 结:此命令一般用来检验人工配置的TCP/IP设置是否正确,可以将其看作是最基础的IP地址检测手段。

 

更多详细内容,请登陆http://www.mochabsm.com

 

posted @ 2008-08-18 17:27 赖永锋 阅读(87) | 评论 (0)编辑
     摘要: 给文件取名字可远没有给人来取名那么麻烦,但你知道吗?有时给文件改改名,往往能够解决我们一些诸如防止恶意攻击、解锁注册表限制、修复损坏文件、保密我们自己的隐私等功能。 妙用一:防止恶意攻击 当我们在互联网上冲浪时,有些恶意网站可能会利用系统漏洞,通过调用系统程序,如Deltree.exe、Format.com等具有很强破坏性的程序,将你电脑中的资料删除或者格式化你的硬盘。如果我们事先将电脑中这些危险... 阅读全文
posted @ 2008-08-18 17:15 赖永锋 阅读(61) | 评论 (0)编辑
     摘要: 在建设和维护局域网时,总会遇到各种各样的故障。排除故障、优化系统,是管理局域网最基本的工作之一。笔者从事网管工作已经八年,下面把平时在工作中积累的一些小经验和大家一同来分享,其中包括排除故障、优化性能的角度出发,简单归纳了一些局域网维护及优化的经验和技巧,重讨论了网卡、网线的正确安装、合理设置等问题。希望能让大家更好地去维护电脑、管理网络,从而更好的利用网络去开展的工作。 做局域网维护的时候你是否... 阅读全文
posted @ 2008-08-18 10:21 赖永锋 阅读(11) | 评论 (0)编辑
     摘要: 描述 嵌入在你的web页面中的导航元素能够降低你的搜索引擎评价排名并且降低你的网站的响应性能。本文作者想同你一起探讨如何使用AJAX技术来解决这两个问题。  许多设计良好的web站点都包含大量的与实际内容相联系的可导航信息。用于导航的HTML标记能影响你的搜索引擎评价,而且能够改进访问者的页面下载体验感。在本文中,你会看到如何使用AJAX来创建更为集中的更快速加载的web页面。  一、 分离导航与... 阅读全文
posted @ 2008-08-18 10:18 赖永锋 阅读(56) | 评论 (0)编辑