Board logo

标题: [技术文章] WEB服务器死亡日记 [打印本页]

作者: shillan    时间: 2007-6-1 22:54     标题: WEB服务器死亡日记

web服务器死亡日记(系统篇)

服务器放在机房里,就象保险柜放在大街上,心里总是怕怕的,一不小心就被人盗走了。服务器的安全有三个方面,一是操作系统,二是应用程序,三是网络安全。由于这三个方面是归不同的人负责,这使我们的安全性很脆弱,网管只负责打打系统的补丁,程序员负责应用程序,而网络安全,根本很少有人管。
平时,网管最关心的是操作系统的安全,这也是黑客最容易进入的环节。不论是linux或windows的系统,都有很多的漏洞,普通人是很难发现新的系统漏洞的,在这个环节上我们只有做事后工作,及时发现安全漏洞,并做相应的措施。,最好的办法就是:

首先要把我们的不需要的port关闭掉,windows总在135等几个port出问题,如果你只提供web服务,就只开80好了,其他的port都关闭掉。关闭方式选用策略最好,因为策略方式不需要重启服务器,调整也很简单,漏洞很多,可是我把门闭上,看你怎么进来。
其次把所有不需要的组件取掉,netbios服务、iis的缺省文件、print pool以及其他不相关的服务通通关闭,这些文件microsoft也是老出问题的地方,你爱出问题,可是与我何关,我根本不装你,另外如果你要安装终端服务,最好是改改缺省的端口号。
磁盘必须转换成ntfs分区,权限要设置好,不能是everyone full control,一旦iis程序有漏洞,也不会死的很很惨。
设置应用程序运行策略,限定只有在特定的目录下的程序才能运行,这样又给你的安全加了一些分值。

系统日志是必须的。特别是iis的日志以及系统安全日志,不用iis日志确是可能对性能提升一定的量,但这与死亡相比,生总比死好吧,死了还不知道怎么死的,多可怕!
如果不是特别需要不要安装其他的安全软件(什么天网、什么杀毒软件),装得越多、死得越快,他们不能给你带来更多的安全,一不小心可能因为他们的漏洞而死翘翘的。
不要在服务器上顺便上网,服务器上网是很危险的事,如果要上的话请把安全设在最高,不要装弹出的任何组件,包括3721什么的,他们都可能使你系统崩溃。
总结一下,操作系统安全:打所有的补丁、封端口、禁服务、设文件权限、应用安全策略、不要乱装东西、不要上网。

服务器死亡日记(应用程序篇)

第二个层面的安全是应用程序的安全。
我们要明白我们安装了哪些应用程序,ftp、imail、iis下的应用程序。
我们安装的应用程序必须顺时注意补丁的情况,同有补丁必须及时安装。问题最大的就是我们自己开发的应用程序,我们要用怀疑一切的态度去看带我们的代码。
在网上最最知名的就是sql注入攻击法。就是在参数后面加一些sql语句实现对网站的攻击。要防止sql注入法攻击,首先要求对所有的从客户端转入的参数进行过滤。不论是传入的是数值还是字符串。这是一个c#的实现:

public static string removeunsafechars(string cstring)

           {

              if(cstring==null)

                  return "";

              cstring=cstring.trim();

              cstring=cstring.replace("'","`").replace("<","&lt;").replace(">","&gt;").replace("\n\r","<br>").replace("\n","<br>");

           

              return cstring;

           }
其他做好服务器的设置工作,
a、不要用sa帐号与sql服务器相联、或者信任联接,一旦有一个地方的代码没有过滤完全,黑客就会进入你的系统。
b、删除不需要的扩展存贮过程,如xp_cmdshell等。不仅仅在sql里面删除,文件一起删除。否则黑客是可以恢复的。
c、对表格的权限要设置好,最好只有读的权限,没有写的权限,所有的写操作都用存贮过程去做。这样代码注入就不能删除你的数据了。
d、数据库系统的补丁必须及时打,如果web与数据库系统是一个服务器,1433端口不要开放,如果是外部服务,也只对特定的ip开放(在网络策略里设置)。
e、如果条件许可,数据库服务器最好放在内网里面,服务器一般有两张网卡,数据服务器只与web用对等网相联。不直接联外部的网络环境。
特殊的文件保护
我们的asp应用常常包括数据库的联接等配置文件,一定要设置成asp文件,不要让黑客猜出这些文件的文件名,否则,一个http://xxx.xxx.xxx/inc/conn.inc就获取了你的数据库信息。
sql注入、文件盗取,这都是最常用的黑客方法。另外我们需要特别关注的地方就是与文件操作相关的程序,如文件上传、文件读的程序。
文件上传:不要相信客户,客户上传的所有东西都可能是攻击性的。首先是上传文件的类型:我们一般是根据contenttype来获取获得的文件类型,但是contenttype是可以欺骗的,客户端可以人为构造文件头,使上传一个asp文件,而contenttype是imgae。其次是对上传文件名的分析,如果特殊的文件也可能使你的程序分析认为一个asp文件是gif或jpg文件。小心上传的html文件,如果是html文件,可能html文件有包含文件,如果上传的html文件包含了你的index.asp,呵呵,你的index.asp可能就被别人一览无遗了,你有这样的代码吗?所以,小心客户上传的文件。

文件读取:有些程序是采用客户端发出参数,服务器asp程序读特定的文件并write到客户端。一般读前会测试是否是要读asp文件,方法是测试扩展名是不是asp,可是在文件名后加一些特定的字符后,所请求的文件扩展名不是asp,但文件io也能正确读出文件如:readfiie.asp?filename=readfile.asp /。所以小心你对文件的判定,一不小心就被别人利用了。

管好你的密码:有些管理人员的密码真是简单的可爱,用户名admin、密码admin。这样的站点大家都没有什么话可以说,好可爱,好可爱。不要用电话号码、不要用与公司相关的任何东东。

web服务器死亡日记(必杀篇)

上面的东东都是常用的,我们必须死亡,没有办法,因为我们在网络中。

sniffer大法。

我们可以保护我们的服务器不被不正常的访问,但我们不能限定我们的正常访问。在正常访问中,我们处在一个极度不安全的环境中。

服务器通过上面的设置,我们是相对安全了不少,一般情况我们对服务器的关注甚过了我们对我们日常生活的网络。我们的网络常是用hub联连的,如果有人进入我们的网络,并sniffer 我们的局域网,我们的帐号、密码信息、统统的一切,都在别人的注视中,要进服务器,先进局域网。你只有进入了局域网,你就很有可能掌权了一切。这个方法可以称为窃密法。

即便是你的密码是加密的,是通过https的,但是你的所有通讯都是https的吗?我们安全通常就是登录页面需要https,然后为了保证我们的效率,其他的操作我们都是通过http的方式。所以,如果你真的需要很好的安全性,都使用https吧。

服务器识别不同的会话是根据cookie来识别的,只要我们获取了用户的cookie,我们就可以以他的身份继续他的故事,即使ip地址不同也是如此。所以,你还是死定了。

必杀技:唇亡齿寒法

你能保护你的服务器,可是你能保护你同一网段的其他服务器吗?我们知道sniffer在交换环境是无效的,但是ip包是根据arp协议传播的,如果一个被人控制的jj向你发出包说他是路由器,服务器发送的所有包就到mj上去了,如果jj再向路由器说他是你,路由器就会把本该给你的包给了他,这样你又被sniffer了。所以随时查看你的arp缓充表,你是不是被人欺骗了。

看了这么多,你还认为你是安全的吗?


trackback: http://tb.blog.csdn.net/trackback.aspx?postid=265857
作者: sterok    时间: 2007-6-4 17:45

巧用dos命令实现文件合并隐藏秘密
作者: sterok    时间: 2007-6-4 17:50

巧用dos命令实现文件合并隐藏秘密




欢迎光临 逐梦论坛 (http://temp2023.zhumeng.org/) Powered by Discuz! 7.2