重启服务器解决数据库连接错误Provider 错误 ’80004005′

3

分类 : 网站技术 | 发表时间 23-05-2010

access和asp搭配建设网站,到现在为止,还是占相当大比例,所以经典的access连接错误,时常遇到,解决之道,也千奇百怪,这个Provider 错误 ’80004005′,解决起来就很有趣。

开始以为是代码问题,但查代码文件日期,没有修改过,不是网站目录安全问题;后来又怀疑数据库本身错误,下载mdb数据库,利用access的“压缩和修复”功能,重新上传上去,问题依然如此。

到网上查了下资料,发现反映数据库连接代码问题的比较多,但这个数据库连接代码以前一直使用正常,为什么突然不能用了?

在一位网友讨论中,提到了一句,解决起来很简单,重启服务器就行了,不管如何,先试一试,重启服务器,重新打开网页,果然Provider 错误 ’80004005′,不再出现了,问题解决。

奇怪,这个错误,具体是什么原因呢?看起来像是数据库连接引擎的问题。但重启iis也是不行的,哦,重启iis和数据库驱动引擎没有关系。微软的问题,呵,微观起来不好解释,哪位有了解得清楚的,希望留言交流。

如何在SQL Server 2005中创建数据库

3

分类 : 网络日志 | 发表时间 13-08-2008

如何在SQL Server 2005中创建数据库,这个问题,问得确实有些傻得可以,像sql server 2000一样嘛,在企业管理器中建立就是啦!

不是,我今天为着一个问题,而安装了sql server 2005,安装了以后,硬是十几分种没找到在哪创建数据库,没办法,才求助于搜索引擎的。

也没注意是sql server 2005的哪个版本,反正是安装完以后,服务启动起来了,管理服务的工具也有了,但怎么找,怎么打开,就是没有创建数据库这样的操作可能,难道这个版本只能这样玩,不能创建新的数据库?我和同事两个人还都比较“傻”的互相开玩笑说,真高级,管理工具难不成是另外出售的?看DVD盘里面,还有一个TOOLS的目录,但在这个目录中安装时,提示这里面的组件都已经安装了,看来在开始的安装向导里面,安全起见,都选择安装上了,这样,还是没有找到可以创建数据库的可能,真是奇怪了;搜……

这一搜还真找出来不少学问:

SQL Server 2005 Express版本就可以建库了。但如果要在安装后管理创建数据库,需要下载安装Microsoft SQL Server Management Studio Express Service Pack 2,安装后打开,“数据库”节点上右击,选“新建数据库”,按提示操作即可完成。

另外又有人说,在SQL Server 2005 Express版本中,用vs 打开SQL Server 2005 Express 可以建库的。我用vs时,提示ie版本不够,需要是iesp1以上,我当时用的是win2000,还ie5.5呢,因此,没再继续折腾,不然,倒真试一下在vs2005中是否可以创建新的数据库?

另有高人提醒了:vs2005自带的sql是速成版(express)的,功能不完整,最还用个人专业版以上的版本。sql2005中没有单独的企业管理器,它把2000中所有的工具都集成在studio manager中,开发效率更高,如果安装完2005发现没有studio manager,那就说明安装的有问题。

哦,是我安装的有问题?我都选择安装了啊,我还安装得有问题?我是下载的版本有问题吧?明天再下载一个企业版本的去。sql server 2005相对于sql server 2000在性能上还是有很大的提高的,并且对于大表支持分区表操作,也有助于提高数据库的处理性能。

在用sql server 2005还原sql server 2000的备份数据时,会提示结构不搭配,造成还原不成功,这是在新建数据库后还原的情况下出现的;当遇到这个问题时,只要删除新建的数据库,直接在数据库管理上右键单击选择还原自,根据向导做就可以了。

不仅研究sql server 2005,研究oracle的计划也在安装之中,觉得这东东处理大的数据库,更是牛气一筹!今天碰到的一例sql server 2000远程访问(隔2M市数字线路)的延时问题,的确经典,解析到最后的问题是操作系统问题,重装操作系统后解决,直接重新安装sql server 2000还不能解决问题;现在想来,估计是tcp/ip协议的问题,如果当时删除掉tcp/ip协议,重新安装此协议,说不定也有可能解决此问题。

结合以前实例来分析优化discuz的误区

0

分类 : 技术文摘 | 发表时间 12-07-2008

有关于discuz的话题,本博提得不太少数,实在是对之爱之有佳,但也有无奈的无力感;之前关于discuz的乱码问题discuz论坛乱码的又一例解决方法discuz论坛W3WP.exe占用CPU100%的几个解决办法,还有那个虚拟股市6占用mysql资源的问题,最后以关闭虚拟股市了事;上述一系列的问题探索中,采取的方面也包括下述discuz优化误区中的几个方面当中,不过,在一定方面来说,适合度最重要,这关系着以下的操作是优化还是误区?

之前点石论坛中也有贴在讲述disduz的优化问题,大部分表现在模板方面,对于php、mysql方面的优化比较少;在落伍论坛也看到一个叫小勤的,好像就是那个给落伍写点击量统计查询插件的那位,有一篇日志被转到discuz论坛,是他跟踪一个客户的案例,其中提到用到了mysql慢查询来跟踪查询语句,并在最后对discuz的论坛数据库结构提出了改进索引的意见。我在改进那个discuz论坛W3WP.exe占用CPU100%的几个解决办法时,也确实用了下,感觉也确实有些作用,但在下述的所谓误区操作中,针对增加索引,提出了反面意见,而事实上,近一段时期,结合论坛实际发展情况,感觉也确实有些道理。

1、SQL 慢,加索引:多数情况下,数据库可能是瓶颈。通过 Slow Query Log 发现执行时间比较长的 SQL 并不难,于是有的人一看 SQL 走了全表扫描,干脆添加个索引好了。

其实这个地方值得商榷的。第一,必须确定一下该 SQL 执行次数到底是怎样的?执行真的很频繁? 那么对应的页面是否通过 Cache 可以减少对 DB 的冲击?如果可以,尽量不要添加索引,索引本身对表的负面影响也是很大的,比如降低更新速度影响并发能力等。就此看来,增加索引也确实是双刃剑,具体是否增加还要进一步的跟踪分析,从cache方面结合考虑查询的问题。

2、瓶颈一定在数据库上:数据库"可能"是瓶颈,很多时候,图片访问带来的压力甚至比数据库压力还大;有的用户数据库、用户上传的图片文件、Web 服务器都扔到一台服务器上,这时候,第一手去调整 MySQL 或许会有作用,但价值不大。因此,分析并确定瓶颈点,就是关键了。

3、盲目的静态编译 MySQL:静态编译 MySQL 有好处,但如果系统已经在线上运行了,在原有环境中进行静态编译未必能带来多大好处。对于 PHP 也是这样,如果一次优化从其它方式上能带来更清晰、直接的开销,就不要重新编译;我的看法是:如果论坛发展初期,哪怕是开始没来得及静态化,也要转为静态化,毕竟发展初期,大多数网站对于搜索引擎的依赖性还是比较大的,如果发展到一定地步或者是以实力领先、发展已经比较稳定的论坛团体,那就没必要再次静态化了。静态化,在一定方面,还是要以消耗部分性能为代价的。

4、反复尝试,但不建立基准数据;建立基准数据,实在应该是优化的最基本的步骤。这样才能有效的评估优化的效果。否则的话,象误区一描述的,添加了一个索引,短期内可能感觉快了,长期看,性能可能又会慢下来。这个基准数据建立的代价就大了,我当初也没有在增加索引之前保留数据库的备份,也没有太长时间对比效果,这工作量太大了点,像七十二松的那位管理员,那家伙有条件有精力来研究,还差不多。唉,国外的空间,忘记放在他们那里了,这样就省事太多了,那sir也是个优化狂人!佩服一把!本博一贯佩服技术领先、追求技术至境的网络人!

5、一次进行多个优化步骤:如果一次调整多个参数或是多个环境的设置,然后观察效果。如果每个步骤都是"对"的话,那么效果看起来是好的。如果有的步骤调节"错"的话,可能会抵消那些有效果的优化步骤。这方面不再多说了,再多分析嘛,分析后确定优化点。

上述部分内容源自:http://www.bullog.cn/blogs/dbanotes/archives/157025.aspx,我看这内容时搜索了下,有两个地址,并且是不同域名不同路径的相同内容,作者也相同,奇怪了,这作者排名不低呀,不会犯这样的重复性网页错误吧?

discuz的优化方面,实在有些疲累的感觉,毕竟数据库也比较大了,每次调整面临的压力与等待都比较辛苦,并且这也是在探索中前进,discuz官方对此的答案一向是那个“苦砂”回答,但这位似是一个应用层级别的高手,对于深层次的代码级修改和mysql深层次优化,似乎心有余而力不足,而discuz官方开发团队中,除了那个童虎偶尔展示一下风采外,其他人和其他解决性方案,更是难得一见。可能这就是对待免费下载使用用户的服务吧,理解吧,不理解也得理解吧!phpwind在速度方面,一向都是高出discuz一筹,但phpwind官方对于免费服务群体的态度,比之discuz官方更是过份,phpwind安装应用区的问题,就可见一斑,失望之下,才转至discuz的,但discuz近来的资源占用情况,似乎又在迫使我寻求其他的解决之路。VBB?还是aspx?还是静态化?还是在硬件方面加大投入?四核?还是分布式应用?扯淡!我这么high?我还谈优化干嘛?呵

优化,是个技术活,更是一个让人心力交瘁的活,有兴趣的,留言多交流!

如何限制SQL SERVER用户对表和字段的删除添加权限?

1

分类 : 网站技术 | 发表时间 21-06-2008

使用sqlserver2000已经五六年了,但对于sqlserver的使用,一直也在边缘阶段,除非有特殊问题,才专门研究一番;有朋友是做IDC的,最近在一块讨论,说有一个客户,是自己写的asp程序,最近总中木马并且还在sql数据库中建立了一些垃圾表,虽然不影响服务器安全,但这样一来,也总是问题,看能不能解决下?

这问题算是比较普遍的asp类问题了,业余asp编写者,在编写asp代码时,难免对于过滤特殊字符,没有考虑周全,这方面可以利用网上比较通用的asp木马注入过滤程序来缓步解决,具体方法,不多赘述;

sqlserver的安全,本站中有很多文章都有提及,不仅涉及删除危险的存储过程,建立sql独立运行用户,设置sqlserver的目录权限等,来设置sqlserver以及整体服务器的安全,另外,虚拟主机各用户都有独立的sql访问权限,不会影响到其它数据库,更不会影响到sql整体和服务器安全;朋友所提到的,第二个问题,就是随意在数据库中建立表,把木马注入问题解决后,这个问题可以得到缓解,但还可以更进一步做出设置,就是限制虚拟主机sql独立用户对数据库的管理权限,一般,虚拟主机会给该sql独立数据库用户分配该数据库的完全db_ower权限,这时,该用户对此数据库的所有表、字段有着一切管理权限,包括建立表、删除表、新建字段等,一般数据库在表结构建立以后,对于数据库结构的修改,会比较少,主要会对数据库进行读取、写入操作,因此,可以考虑,只给此sql独立访问用户对该数据库的读、写权限,其它权限暂时封闭。进入“sql   server企业管理器”,点击要进行限制的数据库,选择“用户”,比如test用户,在test上点击鼠标右键,选择属性,去掉db_owner权限,加上db_datareader和db_datawriter权限即可。

有关设置可以参考:设置sqlserver2000运行安全在最小权限普通用户下的方法 修改sqlserver数据库所有者

MySQL安全问题(匿名用户)的一点心得

0

分类 : 技术文摘 | 发表时间 28-09-2007

在安装完MySQL后,它会自动创建一个root用户和一个匿名用户,其初始密码都是空,对于前者,很多参考资料上都会提醒大家要注意及时设定一个密码,而忽略了后者,大概是因为后者默认设定为只能在本机使用的缘故吧。

  但如果你的MySQL是要提供给Web服务器作数据库服务的,忽略这个匿名用户的代价可能相当惨重,因为在默认设置下,这个匿名用户在localhost上几乎拥有和root一样的权限,这时候,如果你的客户拥有上传脚本文件、脚本文件可以进行MySQL数据库操作(比如允许操作MySQL的php)的权限已经可能将你的MySQL改动得面目全非了:

  我今天帮朋友整理他的主页空间的时候,试着写了一个很简单的执行sql语句的php文件上传上去,其中连接字中的user,password我都试着置空,host=localhost,结果发现我的sql语句可以执行,于是执行select * from MySQL.user察看用户权限,发现这个用户在localhost权限非常高,连grant_priv都有,(察看的时候,会发现在root用户下有两行用户名、密码为空的,但各项权限有y\n的,就是这个匿名用户本地、远程权限设置了)

  所以我试着用这个php页面创建一个新用户,并grant给他较高的权限,结果一举成功,这样我就可以用这个新用户通过我本机的MySQL client连接到这个网站的MySQL server,并用这个新建立的用户的管理权限对这个网站的MySQL server进行管理,看到自己可以进行这样轻易获得深入的数据库操作,我怎么还敢把朋友的主页空间的敏感资料放入这个MySQL server呢?

  改进建议:

  1、在安装完成MySQL 后,不仅改变root用户的的密码,也同时改变匿名用户的密码,方法类似改变root的密码的方式:

  MySQL> UPDATE user set password=PASSWORD(‘yournewpassword’) where user=”;
  MySQL>FLUSH PRIVILEGES;

  2、如非必要,删除这个匿名用户,这样所有人要使用MySQL 都必须提供用户名,即便日后出了问题,也容易查找问题的源头。

  3、除了root用户外,其他用户包括匿名用户(如果没有删除这个用户)不应该拥有grant权限,防止管理权限不受控制的扩散出去。

  4、赋予用户update\delete\alert\create\drop权限的时候,应该限定到特定的数据库,尤其要避免普通客户拥有对MySQL数据库做操作的权限,否则你的系统设置很可能被替换掉。

  5、检查MySQL.user表,取消不必要用户的shutdown_priv,reload_priv,process_priv和File_priv权限,这些权限可能泄漏更多的服务器信息包括非MySQL的其它信息出去。

  6、如果不打算让你的用户使用MySQL数据库,在提供诸如php这样的脚本语言的时候,重新设置或编译你的php,取消它们对MySQL的默认支持。

Discuz!论坛详细安装向导

0

分类 : 技术文摘 | 发表时间 08-08-2006

现在php和mysql的组合非常火,前一段时间玩phpwind,感觉还是不错;这一段时间,又把discuz下载下来测试了一把,果然不错;事实上,最新版本5.1的,也已经出来了;以下测试版本是4.1的……

  平台:WINDOWS XP SP2 + APMServ5.1.2

  测试环境:PHP程序+asp程序+asp.net程序+cgi程序;

  测试推荐:APMServ5.1.2组合服务器(这个组合是全能的)

  程序版本:Discuz! 4.10

  一、安装Discuz!论坛

  APMServ5.1.2的默认访问路径为\APMServ5.1.2\www,在WWW文件下新建了Discuz! 文件夹,把Discuz!论坛安装目录复制到Discuz!文件夹中,测试地址变为:

http://127.0.0.1/Discuz!/



  运行:

http://127.0.0.1/Discuz!/

浏览器会提示:Access denied for user:

[url=mailto:'dbuser@localhost']‘dbuser@localhost’[/url]

(Using password: YES) 错误提示:论坛数据库错误。



图1 未安装数据库时提示的错误

  解释:这个是因为还没有安装Discuz!论坛数据库,所以有错误提示。

  运行:

http://127.0.0.1/Discuz!/install.php

,系统会自动转到Discuz!论坛的安装界面。

  Discuz!安装文件夹内有4个安装语言包供您选择,各位根据自己的需要进行选择。现在选择[简体中文 GBK]格式。

  小贴士:若环境用的是国外php+sql,推荐使用[简体中文 UTF-8]语言包,因为这样大大的减少了安装过程中出现乱码的情况!

  点[简体中文 GBK]进入下一安装步骤。



图2 选择合适的语言

  出现Discuz!系列软件的授权介绍等说明,点击“我完全同意”进入安装的下一步骤。



图3 “同意”并开始安装过程

  根据空间服务商提供的资料填写完整,如有不明白请咨询服务提供商。(如果还是不太明白,干脆就制作一个此项目表格,传给服务商,让服务商帮你填写完毕。)

  此出有两点需要注意:1)填写的资料是否正确?2)是否拥有数据库空间的管理权限?如果没有管理权限,请马上联系空间管理员。

  在这里填写的是系统默认的数值,点保存配置信息进入安装下一步骤。

&namecode=pcedu&subnamecode=pcedu_index’ target=_blank>





图4 填写相关信息

  检查空间的文件权限与运行论坛环境的差异,要是发现不同的话就马上进入你的FTP选择文件设置他的写权限为777。

&namecode=pcedu&subnamecode=pcedu_index’ target=_blank>





图5 设置文件夹属性(+点击上图可放大)

  填写论坛管理员的信息,一定要记住这些资料。写完以后点击“开始安装Discuz!”进入论坛装下一步。



图6 开始安装

  系统正在新建论坛运行需要的数据库表,安装完毕后,在页面最下面列出设置好的管理员ID和密码。



图7 安装成功

  现在就安装完毕Discuz!论坛了。点击进入论坛。

&namecode=pcedu&subnamecode=pcedu_index’ target=_blank>





图8 论坛首页(+点击上图可放大)

  选择“登录”,输入刚才设置的管理员ID和密码点提交登陆论坛。



图9 登陆后台

  进入论坛,选“系统设置”,系统会新开窗口打开管理界面。



图10 进入“系统设置”
<
br/>

图11 后台设置

  在后台设置完相关设置以后,论坛就可以正常运行了!

  二、安装常见问题

  1.什么是二进制(BINARY)上传?如何设置并使用二进制上传?

  答:所有的 FTP 服务器端和客户端软件均支持两种方式的文件上传,其一为文本(ASCII)上传,其二为二进制(BINARY)上传。Discuz! 要求用户在上传 PHP 程序文件时,使用二进制的上传方式进行。原因为某些程序文件经过编译处理,使用一般的文本上传会造成文件传输错误,影响您的使用。您可以在所有的 FTP 客户端软件中找到有关二进制上传的选项,例如 LeapFTP, CuteFTP 等。以下举例说明这两种客户端软件设置 PHP 文件二进制上传的方法。

  LeapFTP:在 Options(选项)菜单中选择 Parameters(参数设置),选择其中的[ASCII 扩展名],出现列表后,选中其中的“*.PHP”,点右边的[删除],再点右边的[确定]即可。如果“*.PHP”项目不存在的话,可直接使用,不需另行设置。

  CuteFTP:进入软件后按 ALT+F7 进入 Global Options(全局选项),选择[传输]下面的[ASCII 类型],在右边列表框中找到名为“PHP”的项目,选定后点右边的[删除],再点下面的[确定]即可。如果“PHP”项目不存在的话,可直接使用,不需另行设置。



  2.如何更改文件属性?



  答:只有在服务器使用 Linux/Unix 类操作系统时,才需要在安装时对文件属性进行更改,Windows 系统的服务器不需要更改属性。您可以在 FTP 软件中,选定需要更改属性的文件或目录,然后点右键选择 CHMOD(更改文件属性),输入属性值(如 777),再确定即可。如果您的 FTP 软件提示无权更改属性,而您又没有办法通过 Shell 的方式登入主机,请与空间服务商联系,要求其授予您 CHMOD 的权限。



  3.为什么访问所有 .php 页面都会出现类似程序代码一样的信息?



  答:这种情况是因为您的服务器上 PHP 语言支持环境没有被安装,或配置不正确。请自行安装,或向空间提供商寻求解决。



  4.为什么软件提示 Unable to read xxx bytes in xxx.php in xx 这样的信息?



  答:因为您没有使用二进制(BINARY)上传 PHP 文件,请使用 FTP 软件将所有 PHP 文件重新传输一次。



  5.为什么论坛提示 Caches successfully created, please refresh?



  答:这是缓存自动更新的提示信息,通常在初次安装完成后,或缓存文件不存在由系统自动重新建立的时候出现。这个提示为正常现象,一般仅出现一次,刷新该页面即可。



  6.为什么论坛提示 Can not write to cache files, please check directory ./forumdata/ and ./forumdata/cache/ .?



  答:出现这个提示通常因为 Cache 文件无法写入。使用 Unix 类操作系统的用户,请检查“./forumdata/和“./forumdata/cache/”和“./forumdata/templates/”这三个目录是否设置了可写属性(777),同时如果您是从其他服务器上转移论坛而来,除了需要对上述文件设置属性以外,用以下两种方式也可以解决:



  将上述三个目录中的后两个目录中的所有文件全部删除;或将上述三个目录中下的所有文件及目录属性均设置为777。



  7.如果数据库不存在,安装程序可以自动建立数据库吗?



  答:Discuz! 安装程序提供这个功能,前提是您的账号要有建库的权限才行,否则只能使用已有的数据库。



  8.一般情况下,需要修改 config.inc.php 中的什么设置?



  答:一般应用只要修改 $dbname,$dbuser,$dbpw,$dbhost,$adminemail 这五个变量,而其他保留默认或等待对论坛软件更加熟悉以后再进行修改。上面这五个变量,除了 $adminemail 外,其他均用于连接数据库,在您服务器空间的说明中都会给出,如果其中之一配置不正确就会出现数据库无法连接的错误提示而无法使用 Discuz! 论坛。如果您对此不了解,请咨询您的空间服务商,如何设置这四个变量参数。



  9.安装后论坛提示 Access denied for user@localhost using password YES’,该如何解决?



  答:这个提示意味着您的数据库连接参数设置的不正确,有两种可能:其一为数据库账号或密码错误;其二为数据库账号和密码均正确,但无权访问指定的数据库。遇到此种情况,请您咨询您的空间服务商,针对您的空间该如何配置数据库连接参数。



  10.为什么安装成功,进入系统设置后提示 Please delete install.php via FTP?



  答:因为您没有按照说明将 install.php 删除,会产生安全问题,使用 FTP 软件将其删除后这个提示自动消失。



  11.Discuz! 文件及目录结构的形式是怎样的?



  答:Discuz! 软件包通常以 tgz(tar.gz)或 zip 的格式压缩,绝大多数压缩软件可解开此类压缩格式的软件包,解压后的目录结构如下所示:



  ./users_guide.htm   用户使用说明书(本文档)

  ./usersguide/     用户使用说明书内容与图片目录

  ./upload/   程序及相关文件(此目录中的内容需上传)

  *.php           Discuz! 程序



  install.php       Discuz! 安装脚本

  config.inc.php     论坛基本配置,安装前请修改本文件

  mail_config.inc.php   邮件发送配置

  whatsnew.php       网页新帖调用程序

  admin/             系统设置程序目录

  *.php             系统设置程序集

  attachments/         空目录,请设置属性 777,用于存放附件

  customavatars/       空目录,请设置属性 777,用于存放上传头像

  forumdata/           空目录,请设置属性 777,用于存放备份及记录数据

  templates/         空目录,请设置属性 777,用于存放编译模板文件

  cache/             空目录,请设置属性 777,用于存放系统缓存

  templates/           模板文件目录

  default/             系统默认模板目录

  *.htm               系统默认模板文件

  *.lang.php           系统默认语言包文件

  images/               图片文件目录

  attachicons/           附件图标图片目录

  avatars/             论坛提供头像图片目录

  
common/               公用图片目录

  default/               系统默认风格图片目录

  smilies/             Smilies 图片目录

  stats/             流量统计图片目录

  include/               引用包含目录

  *.php                 引用包含程序集



  plugins/             空目录,用于存放插件程序

  ./utilities/           论坛附带工具

  repair.php             数据库修复工具

  restore.php               分卷备份数据恢复工具

  testmail.php               邮件发送测试工具

  upgrade(x).php               论坛升级程序


合租服务器大解密

0

分类 : 业界动态 | 发表时间 15-06-2006

作者:aileenguan
来源:绿光互联(http://www.phpidc.net)

搞合租也算是有些时间了,经历了一些,也有一些经验和感触,愿意拿出来跟朋友们分享。请注意,在这里,只是用经验,用事实,用监测说话,而且是在大量机器基础上得出的结论。

1.首先要解释一个带宽的问题。
有人号称服务器100Mb带宽,却不肯提共享两个字。事实上,独占一条100Mb带宽每个月的费用都得在千元左右,这样,仅仅是带宽一年都得上万的费用。所以一般的IDC是不会让你独占这个带宽,正常来讲,这个100M带宽要分配给15台左右的机器,黑心的服务器商可能分配给更多的机器。而且,一般会给每一个机器设置带宽上限为10M上下。所以,记住,不会有100M独占的机器给你用,所谓的100M基本都是共享,分配到一个服务器上的也就是10M上下

这里不得不提到一个带宽单位的问题,要注意KB不等于Kb MB也不等于Mb B代表着byte,而b则是bit 1B=8b 所以由此类推,其实10Mb的带宽在你机器上的理论上的速度上限只有1.25MB 而事实上,除去部分头文件信息,这个数量就更少了。

那么,有人会提出疑问了,这样一个带宽,让服务器上那么多的用户使用,够吗?答案是肯定的,只要你不提供下载,就web访问而言,这是很足够了。本人现在几台服务器上均安装了iis流量的监测工具,虽然小有限制,但是在访问量高的时候,同时的带宽也就能限制在1MB/s左右。带宽是够的。

2.内存的问题
应该说参与合租的站点都不会太大,因为本人是在PHPWind论坛基础上号召起来的,所以参与的用户多数都是要自己做论坛的,一开始,考虑的配置是P4 3.0 (64位) 1G DDR400内存,这样子。但是很快发现,就算按照原本的20个人的用户,这个内存也很快被耗尽,此前就听人说论坛是资源大户,就现在来看,mysql吃内存太厉害,在2003+IIS6+Mysql平台上,常常mysql就要占去服务器高达四五百兆的内存,这就占用了服务器物理内存的50%。再加上iis占用,还有其他一些服务,基本上内存很容易告罄。所以后来的机器,内存只好自己掏钱一律扩容了,因为没有办法。我觉得最佳的配置应该是2G内存,1G是绝对不够的。再多无益,服务器的资源这样搭配是比较好的。

3.CPU的问题
与内存持续走高正好相反的是,对iis的应用程序池适当限制,可以控制CPU即使在峰值的时候也不会太高,现在当前时间是19:47 算是访问量开始变高的时候,我监测几台服务器的CPU使用率,均在40%徘徊。如果访问量在大一点,也就百分之六七十。曾经有一个自认为资深的朋友对这个服务器配置嗤之以鼻,认为根本不能用。但是他却忽略了两点:第一、倘若流量达到一定程度,是没有必要还跟人合租服务器的。其二、服务器的配置如果提高,相应的租赁的用户所要承担的费用则也要提高。但是不得不说的是,在这个配置的CPU,在备份mysql数据的时候,常常要占用相当高的CPU,我曾经在自己的机器上备份mysql数据,如果数据量过大,我个人的机器都几乎处于当机状态。(个人电脑P4 2.4G 1G内存)。所以,必须承认,这个配置的服务器,在论坛数据备份的时候,常常会出现问题。解决的办法就是用单独的应用程序池来做一个phpmyadmin站点,不限CPU使用,来解决问题。好在其一,倘若你的论坛数据库好几百兆,而你又是合租服务器,那么你没有必要天天去备份,如果那样,两三天之后,你的服务器空间就让备份文件占据完了。

4.服务器对用户流量等限制的问题
开始的时候,也想让大家用的爽,用得自在,所以也不愿意做任何限制,不限制iis,不限制cpu,不限之内存等等,但是后来才发现,就好像这个天底下的任何地方一样,不自觉的人总是太多,而且有的人程序出问题之后可能影响到其他人。所以到最后只是得到一个这样的结论对服务器不做任何限制是一个天大的谎言,那是不可能的。所以最理想的方法是建立独立的应用程序池,然后每一个用户占用一个应用程序池,在进行对CPU份额、内存使用、带宽占用的限制。服务器上20个用户,我一般限制每一个人最高8%的CPU,如果你去计算8%*20=160%,那无疑你是愚蠢的。一个服务器上的站点总是有大有小,而且,也基本不可能在同一瞬间都达到各自的峰值。所以有些小用户可能cpu永远也就1% 2%

5.服务器空间的小,5G = 10G = 20G
空间大可以说是合租服务器最大的亮点,但事实上,这个亮点也有值得商榷的地方,标榜的网络空间大也是服务器合租最大的幌子。常常有人问我单租不单租1G的空间。我都是一口拒绝,其实,磁盘空间只是一个幌子而已,因为可以说没有几个人用得了那么大的空间,给你1G的空间,但是你的cpu和内存份额仍然是一样,这有什么意义呢?其实可以说你跟5G的用户享受了一样的待遇。真正决定服务器合租价格的是分配给你的CPU和内存,而不是空间大小 所以如果你问我1G怎么卖,我会告诉你 Never. 但是如果你说空间可以不可以多给你几G,我会告诉你,No problem. 同样的CPU,同样的内存,如果我要1G单卖,1G300吧。但是我已知的成本固定,那么这就意味着我需要更多的用户才能拿回成本,那么,是否意味着你所使用的CPU份额就要更低呢?可以说零售小额空间,是某种程度上对合租用户权益的侵害。

6.电信网通双线以及相关问题
很多用户希望有一个双线机房,这样就能保证南北方访问的速度都很快,众所周知,当今中国ISP天下,南方电信北方网通,间或又有移动、铁通等也能够提供ISP接入服务。网络之间的互访互连速度慢,这是举国尽知的事实。如果是电信机房,是不敢打包票说网通的用户访问也能够如同电信用户一样快的,而作为网通机房,电信的用户去访问,那速度也是要比网通自己的用户去访问打一个折扣。应该说对于相关业务的具体内涵,本人也就是略知一二,曾和一个专门搞IDC的朋友谈,说及双线机房,他告诉我:双线机房都是个人搞的小机房,真正的骨干级机房,是不可能搞双线的,如果那样,还存在什么互联互通的问题?思索一二,也觉得有些道理。然后便访网上的主流IDC,确实难觅双线机房的踪迹。

7.合租服务器价格
一台普通的服务器租赁的一年的费用一般在1万元左右,便宜的可能在八九千,再低我就要对他的服务质量——譬如机器的性能,网络服务的质量产生怀疑了。因为这个价格是很容易计算出来的。服务器托管一年的费用一般在四千左右,如果一台机器一年送产权,莫非一台机器只价值2000元?一个P4 3.0 64位CPU的价钱大家都可以查得到。一般来说都是第二年送产权。很多合租者所看重的则是这个产权。而用户则是看中的便宜,空间大。组织有信誉的、值得信赖的合租,双方受益,反之则都彼此头疼不已。想要让服务器稳定的运行,并不是一件太简单的事情,经验的积累和自身的技术同样重要,两者不可或缺。

磁盘阵列系统(RAID)技术详解

0

分类 : 技术文摘 | 发表时间 14-06-2006

RAID入门基础及RAID0技术详解

  随着计算机应用的日益普及,人们对计算速度和性能的要求也逐渐提高。在一个完整的计算机系统中,CPU和内存的作用固然重要,但是数据存储设备性能的好坏和速度的快慢也直接影响到整个系统的表现。本文所要讲解的RAID技术起初主要应用于服务器高端市场,但是随着个人用户市场的成熟和发展,正不断向低端市场靠拢,从而为用户提供了一种既可以提升硬盘速度,又能够确保数据安全性的良好的解决方案。本文将对RAID技术进行较为详细的介绍,希望能够对广大读者有所帮助。

  入门基础

  RAID是英文Redundant Array of Inexpensive Disks的缩写,中文简称为磁盘阵列。其实,从RAID的英文原意中,我们已经能够多少知道RAID就是一种由多块廉价磁盘构成的冗余阵列。虽然RAID包含多块磁盘,但是在操作系统下是作为一个独立的大型存储设备出现。RAID技术分为几种不同的等级,分别可以提供不同的速度,安全性和性价比。

  人们在开发RAID时主要是基于以下设想,即几块小容量硬盘的价格总和要低于一块大容量的硬盘。虽然目前这一设想还没有成为现实,RAID在节省成本方面的作用还不是很明显,但是RAID可以充分发挥出多块硬盘的优势,实现远远超出任何一块单独硬盘的速度和吞吐量。除了性能上的提高之外,RAID还可以提供良好的容错能力,在任何一块硬盘出现问题的情况下都可以继续工作,不会受到损坏硬盘的影响。

  RAID 0

  提到RAID分为几种不同的等级,其中,RAID 0是最简单的一种形式。RAID 0可以把多块硬盘连接在一起形成一个容量更大的存储设备。最简单的RAID 0技术只是提供更多的磁盘空间,不过我们也可以通过设置,使用RAID 0来提高磁盘的性能和吞吐量。RAID 0没有冗余或错误修复能力,但是实现成本是最低的。

  RAID 0最简单的实现方式就是把几块硬盘串联在一起创建一个大的卷集。磁盘之间的连接既可以使用硬件的形式通过智能磁盘控制器实现,也可以使用操作系统中的磁盘驱动程序以软件的方式实现。图示如下:



  在上述配置中,我们把4块磁盘组合在一起形成一个独立的逻辑驱动器,容量相当于任何一块单独硬盘的4倍。如图中彩色区域所示,数据被依次写入到各磁盘中。当一块磁盘的空间用尽时,数据就会被自动写入到下一块磁盘中。

  这种设置方式只有一个好处,那就是可以增加磁盘的容量。至于速度,则与其中任何一块磁盘的速度相同,这是因为同一时间内只能对一块磁盘进行I/O操作。如果其中的任何一块磁盘出现故障,整个系统将会受到破坏,无法继续使用。从这种意义上说,使用纯RAID 0方式的可靠性仅相当于单独使用一块硬盘的1/4(因为本例中RAID 0使用了4块硬盘)。

  虽然我们无法改变RAID 0的可靠性问题,但是我们可以通过改变配置方式,提供系统的性能。与前文所述的顺序写入数据不同,我们可以通过创建带区集,在同一时间内向多块磁盘写入数据。具体如图所示:


  上图中,系统向逻辑设备发出的I/O指令被转化为4项操作,其中的每一项操作都对应于一块硬盘。我们从图中可以清楚的看到通过建立带区集,原先顺序写入的数据被分散到所有的四块硬盘中同时进行读写。四块硬盘的并行操作使同一时间内磁盘读写的速度提升了4倍。

  在创建带区集时,合理的选择带区的大小非常重要。如果带区过大,可能一块磁盘上的带区空间就可以满足大部分的I/O操作,使数据的读写仍然只局限在少数的一、两块硬盘上,不能充分的发挥出并行操作的优势。另一方面,如果带区过小,任何I/O指令都可能引发大量的读写操作,占用过多的控制器总线带宽。因此,在创建带区集时,我们应当根据实际应用的需要,慎重的选择带区的大小。

  我们已经知道,带区集可以把数据均匀的分配到所有的磁盘上进行读写。如果我们把所有的硬盘都连接到一个控制器上的话,可能会带来潜在的危害。这是因为当我们频繁进行读写操作时,很容易使控制器或总线的负荷超载。为了避免出现上述问题,建议用户可以使用多个磁盘控制器。示意图如下:


  这样,我们就可以把原先控制器总线上的数据流量降低一半。当然,最好解决方法还是为每一块硬盘都配备一个专门的磁盘控制器。

  RAID 1技术详解

  虽然RAID 0可以提供更多的空间和更好的性能,但是整个系统是非常不可靠的,如果出现故障,无法进行任何补救。所以,RAID 0一般只是在那些对数据安全性要求不高的情况下才被人们使用。

  RAID 1和RAID 0截然不同,其技术重点全部放在如何能够在不影响性能的情况下最大限度的保证系统的可靠性和可修复性上。RAID 1是所有RAID等级中实现成本最高的一种,尽管如此,人们还是选择RAID 1来保存那些关键性的重要数据。

  RAID 1又被称为磁盘镜像,每一个磁盘都具有一个对应的镜像盘。对任何一个磁盘的数据写入都会被复制镜像盘中;系统可以从一组镜像盘中的任何一个磁盘读取数据。显然,磁盘镜像肯定会提高系统成本。因为我们所能使用的空间只是所有磁盘容量总和的一半。下图显示的是由4块硬盘组成的磁盘镜像,其中可以作为存储空间使用的仅为两块硬盘(画斜线的为镜像部分)。

  

  RAID 1下,任何一块硬盘的故障都不会影响到系统的正常运行,而且只要能够保证任何一对镜像盘中至少有一块磁盘可以使用,RAID 1甚至可以在一半数量的硬盘出现问题时不间断的工作。当一块硬盘失效时,系统会忽略该硬盘,转而使用剩余的镜像盘读写数据。

  通常,我们把出现硬盘故障的RAID系统称为在降级模式下运行。虽然这时保存的数据仍然可以继续使用,但是RAID系统将不再可靠。如果剩余的镜像盘也出现问题,那么整个系统就会崩溃。因此,我们应当及时的更换损坏的硬盘,避免出现新的问题。   更换新盘之后,原有好盘中的数据必须被复制到新盘中。这一操作被称为同步镜像。同步镜像一般都需要很长时间,尤其是当损害的硬盘的容量很大时更是如此。在同步镜像的进行过程中,外界对数据的访问不会受到影响,但是由于复制数据需要占用一部分的带宽,所以可能会使整个系统的性能有所下降。

  因为RAID 1主要是通过二次读写实现磁盘镜像,所以磁盘控制器的负载也相当大,尤其是在需要频繁写入数据的环境中。为了避免出现性能瓶颈,使用多个磁盘控制器就显得很有必要。下图示意了使用两个控制器的磁盘镜像。



  使用两个磁盘控制器不仅可以改善性能,还可以进一步的提高数据的安
全性和可用性。我们已经知道,RAID 1最多允许一半数量的硬盘出现故障,所以按照我们上图中的设置方式(原盘和镜像盘分别连接不同的磁盘控制),即使一个磁盘控制器出现问题,系统仍然可以使用另外一个磁盘控制器继续工作。这样,就可以把一些由于意外操作所带来的损害降低到最低程度。

  RAID 0+1

  单独使用RAID 1也会出现类似单独使用RAID 0那样的问题,即在同一时间内只能向一块磁盘写入数据,不能充分利用所有的资源。为了解决这一问题,我们可以在磁盘镜像中建立带区集。因为这种配置方式综合了带区集和镜像的优势,所以被称为RAID 0+1。

  RAID3和RAID5技术详解

  热插拔

  一些面向高端应用的磁盘镜像系统都可以提供磁盘的热插拔功能。所谓热插拔功能,就是允许用户在不关闭系统,不切断电源的情况下取出和更换损害的硬盘。如果没有热插拔功能,即使磁盘损坏不会造成数据的丢失,用户仍然需要暂时关闭系统,以便能够对硬盘进行更换。现在,使用热插拔技术只要简单的打开连接开关或者转动手柄就可以直接取出硬盘,而系统仍然可以不间断的正常运行。

  校验

  RAID 3和RAID 5都分别使用了校验的概念提供容错能力。简单的说,我们可以把校验想象为一种二进制的校验和,一个可以告诉你其它所有字位是否正确的特殊位。   在数据通信领域,奇偶校验被用来确定数据是否被正确传送。例如,对于每一个字节,我们可以简单计算数字位1的个数,并在字节内加入附加校验位。在数据的接收方,如果数字位1的个数为奇数,而我们使用的又是奇数校验的话,则说明该字节是正确的。同样对偶数校验也是如此。然而,如果数字位1的个数和校验位的奇偶性不一致的话,则说明数据在传送过程中出现了错误。

  RAID系统也采用了相似的校验方法,可以在磁盘系统中创建校验块,校验块中的每一位都用来对其它关联块中的所有对应位进行校验。

  在数据通讯领域,虽然校验位可以告诉我们某个字节是否正确,但是无法告诉我们到底是哪一位出现了问题。这就是说我们可以检测错误,但是不能改正错误。对于RAID,这是远远不够的。固然错误的检测非常重要,但是如果不能对错误进行修复,我们就无法提高整个系统的可靠性。

  举个例子来说,假设我们发现校验块中第10个字节的第5位不正确。如果这个校验块包含的是另外8个数据块的校验信息,那么哪一个数据块才是问题的罪魁祸首呢?也许你可能会想为每一个数据块都建立一个校验块就可以解决问题。但是这种方法很难实现。事实上,RAID主要是借助磁盘控制器的错误报告检测错误位置,并进行修复。如果磁盘控制器在读取数据时没有发出任何“抱怨”,那么系统将会视该数据为正确数据,继续使用。

  RAID 3

  RAID 3采用的是一种较为简单的校验实现方式,使用一个专门的磁盘存放所有的校验数据,而在剩余的磁盘中创建带区集分散数据的读写操作。例如,在一个由4块硬盘构成的RAID 3系统中,3块硬盘将被用来保存数据,第四块硬盘则专门用于校验。这种配置方式可以用3+1的形式表示,具体如图:



  在上图中,我们用相同的颜色表示使用同一个校验块的所有数据块,斜线标出的部分为校验块。校验块和所有对应的数据块一起构成一个带区。

  第四块硬盘中的每一个校验块所包含的都是其它3块硬盘中对应数据块的校验信息。RAID 3的成功之处就在于不仅可以像RAID 1那样提供容错功能,而且整体开销从RAID 1的50%下降为25%(RAID 3+1)。随着所使用磁盘数量的增多,成本开销会越来越小。举例来说,如果我们使用7块硬盘,那么总开销就会将到12.5%(1/7)。

  在不同情况下,RAID 3读写操作的复杂程度不同。最简单的情况就是从一个完好的RAID 3系统中读取数据。这时,只需要在数据存储盘中找到相应的数据块进行读取操作即可,不会增加任何额外的系统开销。

  当向RAID 3写入数据时,情况会变得复杂一些。即使我们只是向一个磁盘写入一个数据块,也必须计算与该数据块同处一个带区的所有数据块的校验值,并将新值重新写入到校验块中。例如,当我们向上图中的绿色数据块写入数据时,必须重新计算所有3个绿色数据块的校验值,然后重写位于第四块硬盘的绿色校验块。由此我们可以看出,一个写入操作事实上包含了数据读取(读取带区中的关联数据块),校验值计算,数据块写入和校验块写入四个过程。系统开销大大增加。

  我们可以通过适当设置带区的大小使RAID系统得到简化。如果某个写入操作的长度恰好等于一个完整带区的大小(全带区写入),那么我们就不必再读取带区中的关联数据块计算校验值。我们只需要计算整个带区的校验值,然后直接把数据和校验信息写入数据盘和校验盘即可。

  到目前为止,我们所探讨的都是正常运行状况下的数据读写。下面,我们再来看一下当硬盘出现故障时,RAID系统在降级模式下的运行情况。

  RAID 3虽然具有容错能力,但是系统会受到影响。当一块磁盘失效时,该磁盘上的所有数据块必须使用校验信息重新建立。如果我们是从好盘中读取数据块,不会有任何变化。但是如果我们所要读取的数据块正好位于已经损坏的磁盘,则必须同时读取同一带区中的所有其它数据块,并根据校验值重建丢失的数据。

  当我们更换了损坏的磁盘之后,系统必须一个数据块一个数据块的重建坏盘中的数据。整个过程包括读取带区,计算丢失的数据块和向新盘写入新的数据块,都是在后台自动进行。重建活动最好是在RAID系统空闲的时候进行,否则整个系统的性能会受到严重的影响。

  RAID 3的性能问题

  除了我们在上文讨论过的有关数据写入和降级模式的问题之外,在使用RAID 3的过程中还有其他一些性能上的问题需要引起我们的注意。RAID 3所存在的最大一个不足同时也是导致RAID 3很少被人们采用的原因就是校验盘很容易成为整个系统的瓶颈。   我们已经知道RAID 3会把数据的写入操作分散到多个磁盘上进行,然而不管是向哪一个数据盘写入数据,都需要同时重写校验盘中的相关信息。因此,对于那些经常需要执行大量写入操作的应用来说,校验盘的负载将会很大,无法满足程序的运行速度,从而导致整个RAID系统性能的下降。鉴于这种原因,RAID 3更加适合应用于那些写入操作较少,读取操作较多的应用环境,例如数据库和WEB服务器等。

  RAID 5

  RAID 3所存在的校验盘的性能问题使几乎所有的RAID系统都转向了RAID 5。在运行机制上,RAID 5和RAID 3完全相同,也是由同一带区内的几个数据块共享一个校验块。

  RAID 5和RAID 3的最大区别在于RAID 5不是把所有的校验块集中保存在一个专门的校验盘中,而是分散到所有的数据盘中。RAID 5使用了一种特殊的算法,可以计算出任何一个带区校验块的存放位置。具体如图所示:



  注意图中的校验块已经被分散保存在不同的磁盘中,这样就可以确保任何对校验块进行的读写操作都会在所有的RAID磁盘中进行均衡,从而消除了产生瓶颈的可能。

AntiAttackFireWall(AAFW)源代码发布暨开源公告

0

分类 : 技术文摘 | 发表时间 13-06-2006

文章作者:Fr. Qaker [E.S.T]
信息来源:邪恶八进制信息安全团队(www.eviloctal.com)

备注:AXLFilter研究中

本软件开源目的
防御CC类型攻击,共享ISAPI编程思路,追求共享精神。

开源花絮
AAFW在2005年12月底就已经完成,现在需要的就是一些功能的补充和界面的优化,所以还是具有一定学习意义的。
原来发布过CC的源代码,但是发生了一些很不开心的事。这次要发布代码,很多朋友因此建议我不要开源。但是,代码放在手里,放着也是浪费,也不符合自己的共享精神。当初,我自己成长的时候也是读别人的代码提高自身的过程,乘凉不忘栽树人。虽然有不少小人,就让他去吧,真理永远变不了,小人得逞只是一时,大家技术的共同提高,共享精神的保持才是最重要的。

AntiAttackFireWall(AAFW)介绍
AA防火墙是一款IIS ISAPI防火墙,利用ISAPI FILTER进行系统保护,利用ISAPI EXTENTION进行管理。
目前代码已经实现了,有效防止盗链,有效防止CC攻击,有效控制文件下载,有效IP连接限制等功能,而且很多功能都考虑到了扩充问题,所以很容易的修改代码进行功能添加。
特别提下,里面的Base64的编码功能是我从网络上复制的一段代码改编来的。
IP管理用的是二叉树进行内存查找,正常情况下,十万次IP记录(十万数量级)的查找能在0.01秒内完成,建议修改的时候将数据进行hash算法。
原创SQL注入保护代码混合在Decode里面,过滤了()<>‘;= 因为<>=是判断符号,没有这三个符号,基本无法进行条件语句的构造,用()限制了decalre这样的使用和sql语句的套用,用’;杜绝了SQL语句的分隔,应该说,这样的过滤是相对比较安全,而且有效的。
程序本身有访问者按IP管理,所以很方便进行下载限制。
盗链问题,用的是IP判断,看访问者是否访问过本站,用以判断,而不是refer判断,建议加上refer判断增加精确性,接下来会专门研究这个问题。
防止CC攻击用的就是原来我给出的asp防御的思路,采用IIS ASP的随机生成Session的方法,而且session值绑定在访问者的IP记录下。
控制文件下载,也是基于IP的,建议参考后台管理的登录代码,运用Base64的解码,可以很方便的开发会员区这样专业级别的登录控制,甚至可以考虑使用数据库存储用户,比ASP的管理有效的多,而且安全。

顺带感叹
近日的迅雷事件,我在这里支持天空,鄙视华军和迅雷。
迅雷的软件,思路,效率令人佩服,确实是个好东西。但是,大家听说过杀鸡取卵的故事么,迅雷现在就是,他自己建立了门户,提供软件搜索,软件从其他软件下载站下载。看上去挺不错的。潜在问题发生了,一个软件,很多地方同时提供,但是在迅雷中显示的站点只有一个,那么以后各家下载的站估计都要给迅雷送钱,这样才能让自己的站点多显示几次,多一些广告收入阿。下载的时候,管你是谁,只要有这个文件,迅雷就能下,流量上去了。这样做来,用户感觉不错,速度快,但是下载站呢?流量上去了,广告下来了,收入比支出少了,而且广告成倍的少,流量成倍的加,后果是什么?还记得baidu的mp3搜索吧,现在音乐站还有多少?还记得baidu的竞价广告吧,不给钱,你的页面别显示了,你的软件我照样用,不服?叫天天不应,叫地地不灵。说实话,迅雷作软件,佩服,做门户,卑鄙。杀鸡取卵,不改大家以后都没软件下,不信看吧。迅雷可是说了哦,我们不提供软件下载的,嘿嘿。
再说一个潜在威胁,迅雷就使加强版的CC,不信就看,千万用户一起用,每人5个连接,迅雷说今天,天空和我闹,大家一起去挤它的软件下载吧,天空崩溃了。明天,华军这个小人又出尔反尔了,大家去挤它吧。别和我说什么它很有商业道德,baidu多大的一个网站,不照样出来一个8848攻击事件,这次迅雷的做法,嘿嘿,好像更猛。
华军,嘿嘿,就是一个炒作家,先领头出来说,迅雷卑鄙阿,坏阿,然后,不知道得到什么好处,嘿嘿,第一个叛变了,不信大家去华军网上看看,这样的领头羊,嘿嘿,就是披着狼皮,自己炒作自己,能活到最后,但是第一个出卖用户的肯定是它。
天空,赞一个,支持一个,顶住,你要倒了,我们以后软件下载没了,一定要坚持住,让迅雷改。谢谢。

推荐网站
VIF:一个商业版本的IIS防火墙,界面比我的好看多了,功能呢,说实话是同类产品,但是有后续性,不断更新重,大家支持一个http://vif.foosun.cn

邪恶八进制:我的根据地,欢迎大家来指导 http://forum.eviloctal.com/ ,
我的软件首发地色釉-信手绾红尘:美文欣赏http://blog.sina.com.cn/u/1236648217强烈推荐里面的诱惑,嘿嘿http://blog.sina.com.cn/u/49b5c1190100043h

NDS论坛:喜欢玩NDS的朋友可以去看看http://www.ndsman.com/bbs,好像遇到了和天空一样的问题,被某个叫NDSBBS的网站盗链加恶意中伤。

浩联电子:http://www.591hl.com家乡的一个公司,感谢一个长期支持我的朋友 [m*],估计他不想在这里出名,嘻嘻

近日计划
集中精力研究AXLFilter,用IIS ISAPI FILTER彻底解决盗链问题,然后发布源代码,希望相关下载站与我联系测试盗链效果和防迅雷下载,概念代码将在第一时间发布。

我的联系方式:bigboyq[at]eviloctal[dot]com
点击下载

浅谈网络攻击检测技术

0

分类 : 系统安全 | 发表时间 13-06-2006

信息来源:BackLi’blog

保证信息系统安全的经典手段是“存取控制”或“访问控制”,但无论在理论上还是在实践中,这种手段都不能彻底填补一个系统的安全漏洞,也还没有一种切实可行的办法解决合法用户在通过“身份鉴别”或“身份认证”后滥用特权的问题。攻击检测技术就像治安巡逻队,专门注重于发现形迹可疑者。

  计算机网络技术的发展和应用对人类生活方式的影响越来越大。通过Internet网连接到几乎世界上任何一台计算机。因此,传统的安全域的概念也已经发生了深刻的变化,边界变得模糊了,网络系统管理员再也不能满足于守住安全边界了;也不再有信心保护敏感信息万无一失。越来越多的证据表明计算机信息系统的安全性是十分脆弱的。基于计算机、网络的信息系统的安全问题已经成为非常严重的问题。

  一、存取控制与攻击检测:站岗与巡逻

  保证信息系统安全的经典手段是“存取控制”或“访问控制”,这种手段在经典的以及现代的安全理论中都是实行系统安全策略的最重要的手段。但迄今为止,软件工程技术还没有达到A2级所要求的形式生成或证明一个系统的安全体系的程度,所以不可能百分之百地保证任何一个系统(尤其是底层系统)中不存在安全漏洞。而且,无论在理论上还是在实践中,试图彻底填补一个系统的安全漏洞都是不可能的,也还没有一种切实可行的办法解决合法用户在通过“身份鉴别”或“身份认证”后滥用特权的问题。打个比方,经典的安全体系就像一座城池,身份认证就好像进城时的查路条一样,着重点在于防范奸细混入;但是这种措施对于城池的安全仍是远远不够的。

  攻击检测作为其他经典手段的补充和加强,是任何一个安全系统中不可或缺的最后一道防线;攻击检测可以分为被动、非在线地发现和实时、在线地发现计算机网络系统中的攻击者两种方法。从大量非法入侵或计算机盗窃案例可以清晰地看到,计算机系统的最基本防线“存取控制”或“访问控制”,在许多场合不是防止外界非法入侵和防止内部用户攻击的绝对无懈可击的屏障。大量攻击成功的案例是由于系统内部人员不恰当地或恶意地滥用特权而导致的。攻击检测技术则类似于治安巡逻队,专门注重于发现形迹可疑者,信息系统的攻击者很有可能通过了城门的身份检查,或者爬越了城墙而混入城中;这时要想进一步加强信息系统的安全强度,就需要增派一支巡逻队,专门负责检查在城市中鬼鬼祟祟行动可疑的人员。

  攻击检测提供了一种机制,对合法用户而言能够在一定程度上使他们为其失误或非法行为负责,从而增强他们的责任感。对非法进入的攻击者而言则意味着增强了纠察力度,行使着公安局、检察院的职责。攻击检测具有最后防线性质的防范能力,或许是用来发现合法用户滥用特权的唯一方法,而且完善的攻击检测还能用具有法律效力的方式证明一个受到怀疑的人是否有罪。

  早期中大型的计算机系统中都收集审计信息来建立跟踪文件,这些审计跟踪的目的多是为了性能测试或计费,因此对攻击检测提供的有用信息比较少。
二、攻击检测技术

  1.攻击分类

  在信息系统中,一般至少应当考虑如下三类安全威胁:外部攻击、内部攻击和行为滥用。攻击者来自该计算机系统的外部时称作外部攻击;当攻击者就是那些有权使用计算机,但无权访问某些特定的数据、程序或资源的人企图越权使用系统资源时视为内部攻击,包括假冒者(即那些使用其他合法用户的身份和口令的人)、秘密使用者(即那些有意逃避审计机制和存取控制的人员);特权滥用者也是计算机系统资源的合法用户,表现为有意或无意地滥用他们的特权。

  通过审计试图登录的失败记录可以发现外部攻击者的攻击企图;通过观察试图连接特定文件、程序和其他资源的失败记录可以发现内部攻击者的攻击企图,如可通过比较为每个用户单独建立的行为模型和特定的行为来检测发现假冒者;但要通过审计信息来发现那些权利滥用者往
往是很困难的。

  基于审计信息的攻击检测特别难于防范具备较高优先特权的内部人员的攻击,因为攻击者可通过使用某些系统特权或调用比审计本身更低级的操作来逃避审计。对于那些具备系统特权的用户,需要审查所有关闭或暂停审计功能的操作,通过审查被审计的特殊用户、或者其他的审计参数来发现。审查更低级的功能,如审查系统服务或核心系统调用通常比较困难,通用的方法很难奏效,需要专用的工具和操作才能实现。总之,为了防范隐秘的内部攻击需要在技术手段以外确保管理手段行之有效,技术上则需要监视系统范围内的某些特定的指标(如CPU、内存和磁盘的活动),并与通常情况下它们的历史记录进行比较,以期发现之。

  2.攻击检测技术分类

  基于计算机系统审计跟踪信息设计和实现的系统安全自动分析或检测工具是最为自然朴素的攻击检测技术。可以从审计系统筛选出涉及安全的信息。其思路与流行的数据挖掘(Data Mining)技术极其类似。

  基于审计的自动分析检测工具可以是脱机的,也可以是联机或在线的。分析工具实时地对审计跟踪文件提供的信息进行同步处理,当有可疑的入侵行为时,系统提供实时的警报,在攻击发生时就能提供攻击者的有关信息。

  对于信息系统安全强度而言,联机或在线的攻击检测是比较理想的,能够在案发现场及时发现攻击行为,有利于及时采取对抗措施,使损失降低到最低限度。同时也为抓获攻击犯罪分子提供有力的证据。但是,联机的或在线的攻击检测系统所需要的系统资源,几乎随着系统内部活动数量的增长呈几何级数增长。

  3.攻击检测方法

  (1)基于审计的攻击检测

  基于审计信息的攻击检测工具以及自动分析工具可以向系统安全管理员报告计算机系统活动的评估报告,通常是脱机的、滞后的。

  对攻击的实时检测系统的工作原理是基于对用户历史行为的建模,以及在早期的证据或模型的基础之上。审计系统实时地检测用户对系统的使用情况,根据系统内部保持的用户行为的概率统计模型进行监测,当发现有可疑的用户行为发生时,保持跟踪并监测该用户的行为。

  系统应具备处理自适应的用户参数的能力。能够判断使用行为的合法或可疑。系统应当能够避免“肃反扩大/缩小化”的问题。这种办法同样适用于检测程序的行为以及对数据资源(如文件或数据库)的存取行为。
(2)基于神经网络的攻击检测技术

  如上所述,基于审计统计数据的攻击检测系统,具有一些天生的弱点,因为用户的行为可以是非常复杂的,所以想要准确匹配一个用户的历史行为和当前的行为是相当困难的。错发的警报往往来自于对审计数据的统计算法所基于的不准确或不贴切的假设。SRI的研究小组利用和发展神经网络技术来进行攻击检测。神经网络可能用于解决传统的统计分析技术所面临的以下几个
问题:

  ●难于建立确切的统计分布
  ●难于实现方法的普适性
  ●算法实现比较昂贵
  ●系统臃肿难于剪裁

  目前,神经网络技术提出了对基于传统统计技术的攻击检测方法的改进方向,但尚不十分成熟,所以传统的统计方法仍将继续发挥作用,也仍然能为发现用户的异常行为提供相当有参考价值的信息。

  (3)基于专家系统的攻击检测技术

  进行安全检测工作自动化的另外一个值得重视的研究方向就是基于专家系统的攻击检测技术,即根据安全专家对可疑行为的分析经验来形成一套推理规则,然后再在此基础之上构成相应的专家系统。由此专家系统自动进行对所涉及的攻击操作的分析工作。

  所谓专家系统是基于一套由专家经验事先定义的规则的推理系统。例如,在数分钟之内某个用户连续进行登录,且失败超过三次就可以被认为是一种攻击行为。类似的规则在统计系统似乎也有,同时应当说明的是基于规则的专家系统或推理系统也有其局限性,因为作为这类系统的基础的推理规则一般都是根据已知的安全漏洞进行安排和策划的,而对系统的最危险的威胁则主要是来自未知的安全漏洞。实现一个基于规则的专家系统是一个知识工程问题,而且其功能应当能够随着经验的积累而利用其自学习能力进行规则的扩充和修正。

  (4)基于模型推理的攻击检测技术

  攻击者在入侵一个系统时往往采用一定的行为程序,如猜测口令的程序,这种行为程序构成了某种具有一定行为特征的模型,根据这种模型所代表的攻击意图的行为特征,可以实时地检测出恶意的攻击企图,尽管攻击者并不一定都是恶意的。用基于模型的推理方法人们能够为某些行为建立特定的模型,从而能够监视具有特定行为特征的某些活动。根据假设的攻击脚本,这种系统就能检测出非法的用户行为。一般为了准确判断,要为不同的入侵者和不同的系统建立特定的攻击脚本。

  当有证据表明某种特定的攻击模型发生时,系统应当收集其他证据来证实或者否定攻击的真实,以尽可能的避免错报。

  为了防止过多的不相干信息的干扰,用于安全目的的攻击检测系统在审计系统之外一般还配备适合系统安全策略的信息采集器或过滤器。同时,还应当充分利用来自其它信息源的信息。在某些系统内可以在不同的层次进行审计跟踪。如有些系统的安全机制中采用三级审计跟踪,包括审计操作系统核心调用行为的跟踪、审计用户和操作系统界面级行为的跟踪、和审计应用程序内部行为的跟踪。

  总之,和经典安全措施相同,任何一种攻击检测措施都不能视之为一劳永逸的,必须配合有效的管理和组织措施,形成立体的和纵深有序的安全防御体系。

无觅相关文章插件,快速提升流量