http www安全必备知识
• 经验
http www安全必备知识一.导言还记得以美国为首的北约轰炸我国驻南斯拉夫大使馆,大家义愤填膺却又无可奈何,于是黑客号召黑美国网站。很快,大家就学会了攻击网页的方法和技巧,成功黑进了几个美国的军事主页,有的甚至挂上了五星红旗。这对美国政府来说非常尴尬。我们应该投入大量的资金来维护网站的安全。再比如最近的一个例子,国内最大的综合性网站新浪某天早上被黑客攻击成功,门户页面被改成了黄页。给新浪造成了不小的副作用。这两个例子说明网站的安全性非常重要。可以说,随着互联网的快速发展,Web的安全性变得越来越重要。同时,由于网络必须是开放的,也就是说,任何人都必须有访问它的权利,这就增加了防范的难度。Web安全可以分为服务器安全和客户端安全(浏览器)。前者主要针对网站建设者,后者针对普通用户。本章将讨论这两个方面。二、什么是HTTP?HTTP(HypertextTransferProtocol)超文本传输协议允许用户从WWW(WorldWideWeb)和其他分布式信息系统请求和接受超文本内容。它运行在TCP之上,并绑定服务器端口80,然后它可以使用其他端口和协议来提供可靠的数据流。这是一个请求/响应协议。为了获取信息,浏览器客户机(如netscape)建立到Apache服务器的TCP连接,并请求资源(“GET”)。服务器检查请求,并根据服务器配置和包含的内容做出响应。也许服务器发送了一个超文本标记语言(HTML)文件、文本、图片、声音、图像或者一个javaapplet,可以在浏览器中显示。服务器也可以运行一个程序来响应浏览器的请求(如服务器的通用网关接口或应用程序接口)。测试HTTP连接(以及潜在的安全漏洞)的一个简单方法是telnet到Web服务器主机的端口80。可以输入“GET/”浏览网站的基本html文档(如index.html),如下图(去掉HTML内容):远程登录80美元正在尝试…连接到。Escapecharacteris^](在此处键入get)get/刷出下面一个html文件,例如:超文本标记语言头标题老虎屋/标题meta http-equiv= Content-Type Content= text/html; charset=gb2312 /头framesetrows=128,327 * frame border= YES border= 0 frame spacing= 0 cols= *frame name= top frame scrolling= NO noresizesrc= index-3 . html framename= mainFrame src= index-2 . html /框架集noframesbodybgcolor=#FFFFFF /body/noframes/htmlConnectionclosedbyforeignhost。三。安全风险的分类Web安全风险通常可分为三类:l对网络服务器及其连接的局域网的威胁对Web客户端的威胁对服务器和客户端之间通信通道的威胁1.服务器的风险通常在网络安全中设置各种限制,让身份不明的人无法获得未经授权的服务。然而,恰恰相反,Web服务器希望接受尽可能多的客户,对客户几乎没有任何限制和要求。嗯,这样的话,相比其他网络服务器,Web是最容易被攻击的。最常见的威胁是HTTP服务器软件中的错误、错误配置、不安全的CGI程序或缺乏强大的保密功能等。通常,服务器遭受以下侵害:修改和替换服务器提供的内容;获取受服务器访问控制保护的机密文档;在服务器上执行任意命令,破坏服务器的系统安全;查看日志文件危及用户隐私;拒绝服务攻击,使服务器或网络连接失败。2.客户风险浏览网页不是一项非常安全的活动。bug、不合适的“活动内容”和脚本、服务器管理会给观众带来以下危害:应用和系统崩溃;包括病毒和木马在内的恶意代码;丢失信息;侵犯隐私等。所有主流的Web浏览器都支持下载嵌入在HTML主页中的脚本,并在浏览器中执行它们的功能。通常,这些程序用于与用户进行交互,并在浏览器和服务器之间传输信息。比如网景的javascript和微软的Vbscript都出现过bug。即使没有bug,恶意的Web管理员也很容易在HTML主页中放置可以突破安全措施或造成严重损失的脚本。一种常见的攻击方法是创建javascript来欺骗性地生成错误消息或提示,要求用户提供网络登录ID和密码。其他客户风险来自侵犯隐私。许多网站已经编写了验证cookie,cookie customers,它可以跟踪用户并揭示他们访问了哪些网站。根据指定cookie处理的RFC的要求,客户端软件应该提供一种方法来指示cookie应该或不应该保存的域。3.传输安全性Web客户端和Web服务器之间传输的信息可能在连接的任何一端或中间的任何地方被窃听或截获,包括客户端的局域网、服务器的局域网、客户端的ISP、服务器的ISP以及两个ISP之间的任何中间网络。幸运的是,随着IPSec(IP协议安全架构)的引入,网络通信可以在IP层进行认证和加密。但是现在还不流行。第四,保护网络服务器的安全1.选择安全服务器软件。Linux上有很多httpd服务器软件。例如:*AmericaOnlineInc .AOLserver2.x*AllegroSoftwareRomPager2.x*ApacheGroupApache1.x*HawkeyeProjectHawkeye1.x.x*SunMicrosystemsJavaServer1.x*IdonexABRoxen1.x* spyglassspyglassmicroserver 2 . x* RapidLogicInc。WebControl2.x*IMatixXitami2.x* zeustechnologyzeuswebapplicationserver 3*VqSoftvqServer1.x如果你有兴趣,可以访问相关网站,了解他们的性能和特点。在这些软件中,Apache无疑是最成功的。互联网上超过一半的网站使用Apache。在最新版本的Apache中,有以下安全特性:*可以通过域名、IP地址、用户和组来禁止访问。*可以配置用户组(而不是单个用户列表)*您可以在不重新启动服务器的情况下修改用户访问控制列表。*CGI可执行文件可以在所有者的UID下执行。*基于目录文档的权限是分层的。*可以根据安全规则隐藏文档的一部分*支持SSL2.0和3.0*有一个密码机制可用。*可以根据URL制定安全规则。2.服务器配置的一般规则一般来说,Web服务器应该结合一些好的系统安全路径、配置和工具来加强安全性。例如:试着把一个主机放入Web服务器,不允许无缘无故的交互登录。删除除Web管理员帐户以外的用户禁止来自/etc/inetd.conf的不需要的服务,如果站点需要ftp功能,让另一台主机做ftp服务器。应该禁止或限制其他服务,包括telnet、finger、netstat/systat、echo等等。删除不需要的外壳和解释器。如果不运行PerlCGI脚本,请删除Perl不支持自动列目录、符号链跟随和服务器端包含等选项。Web日志的近距离检测用于应用程序的安全Web服务器软件,例如支持SecureSocketsLayer(SSL)的软件考虑在chroot环境中运行服务器。使用防火墙来控制对服务器的访问。仔细规划谁可以访问安全服务器上的内容目录非常重要。大多数Web服务器支持各种访问控制方法。通常,您可以在指定的IP地址或DNS主机名中设置访问权限,或者指定您必须提供密码才能访问特定目录中的用户。如果网络服务器中有公司机密信息,我们需要采取措施确保这些信息掌握在自己手中。在服务器上使用CGI要格外小心。一个CGI程序可以在系统中做任何事情,从为外人提供访问权限到删除重要文件。第五,保护Web客户端的安全客户端软件通常是微软的IE,或者微软压榨的网景(好在x-window下使用率比较高),还有简单的lynx等等。1.良好的客户端安全体验认真考虑程序提供的安全设置。如果禁止java和javascript,浏览器会更安全。定期清理缓存和cookie文件,避免访问名声不好的网站,并使用“保存”选项结合“打开”选项来保存不受信任的文件。2.浏览器名1998年,网景公司决定发布navigator的源代码,并成立了一个独立的组织来监督其发布和维护:Mozilla.org。如果我们有时间,分析它的源代码相信对我们提高客户端的安全性大有裨益。看吧。3.猞猁没有图片和声音的文本浏览器。我喜欢使用它(在Linux下),但是注意默认情况下不支持SSL。4.用户隐私有些网站要求用户注册后才能访问。大多数站点都维护服务器日志,这些日志可能会泄露敏感信息,包括IP地址、ISP、以前访问过的站点等等。其他网站将cookie推入管道,以便关联用户将来访问的网站。用户可以遵循以下规则:不需要用户注册。仅收集用户的电子邮件地址,而不是完整的联系信息。不要与第三方共享电子邮件地址。不要让Web上的日志文件可访问。删除不再需要的日志文件。目前,WorldWideWebConsortium已经开始指定名为PlatformforPrivacyPreferences的语句,允许用户根据自己的意愿控制身份信息的发布。但是,在我国并没有使用。不及物动词传输安全保护从用户的角度来看,网页浏览可能会危及隐私。它允许TCP/IP在两台机器之间提供匿名数据流,但不提供机密性、完整性和认证服务。在TCP/IP上增加安全层有几种方案,包括微软的SecureShell(SSH)和PCT。目前占主导地位的是SecureSocketsLayer(SSL)。1.加密套接字协议层SSL是netscape用来在应用程序协议(如http、telnet、nntp或ftp)和较低的TCP/IP层之间提供数据安全的协议。他提供了三个基本的安全特性:保密性是通过加密过程实现的。根据连接双方之间的秘密协商,对称加密密钥对于每个连接都是唯一的。认证客户端检查有效服务器的X.508v3证书,无论它是RSA公钥证书、数字签名标准(DSS)证书还是Diffie-Hellman证书。证书通常由可信的证书代理颁发。完整消息(未更改或丢失)的完整性由MAC(MessageAuthenticationCode)保护,它是基于信息和秘密数据的单个哈希函数。此外,SSL还提供可选的客户端身份验证。SSL和特殊服务器认证的其他功能在电子商务中被广泛使用。尽管不同的Web浏览器以不同的方式指示安全SSL连接,但是以“https://”开头的URL指示客户端和服务器之间已经建立了安全连接。看吧。2.坦克激光瞄准镜(Tank Laser-Sight的缩写)TLS(TransportLayerSecurity)是由传输层安全工作组起草的,它产生了一个RFC文档。TLS用于建立安全的“会话”——。它是客户端和服务器之间的关联,用于避免为每个新的安全参数建立额外连接的昂贵协商。协议分为上层TLSHandshake协议和下层TLSRecord协议。TLSHandshake协议为安全会话建立加密参数。当使用TLS的客户端和服务器建立通信时,它们就协议版本达成一致,选择加密算法,相互进行身份验证,并使用公钥加密技术来生成共享机密。看吧。3.建立TLS/SSL服务器大多数商业Web服务器产品都使用SSL。SSLeay使用几种加密算法,其中一些可能需要商业许可证。SSLeay实现了五种不同的算法:DES、RSA、RC4、IDEA和Blowfish。RSA的专利属于美国。你需要许可证才能使用它。SSLeay和OpenSSL都可以集成到ApacheWeb服务器中。程序员BenLaurie开发了一个Apache-SSL包,这个包为Apache提供了一组补丁,一些额外的源代码,一些帮助文件和配置文件示例。Apache源代码需要用到补丁,结果用SSLeay或者OpenSSL编译链接。您可以从以下网站下载它:如果双方都知道对方使用TLS/SSL,那么在任何端口上运行的任何基于TCP的协议都可以得到透明的保护。然而,出于实际原因,为每个使用TLS/SSL保护安全的协议保留了几个端口号,这允许包过滤防火墙让这些安全传输通过。例如:名称端口号描述Nsiiops261/tcpIiop名称服务Https443/tcphttp协议Ddm-ssl448/tcpDDM-SSLSmtps465/tcpSmtp协议nntps 563/TCP NTP协议外壳614/tcpSSLshellLDAP 636/tcpLdap协议ftp-data989/tcpftp协议和数据Ft990/TCP FTP控制Telnets992/tcptelnet协议Imaps993/tcpImap4协议Ircs994/tcpIrc协议Pop3s995/tcpPop3协议七。其他人大多数Web服务器被设计为由超级用户启动。服务器必须以root用户身份运行,这样它才能监控端口80。一旦服务器开始运行,它将在配置文件中更改其UID中指定的用户名。不要像root一样运行你的服务器,虽然你的服务器必须用root启动。http.conf文件不得包含用户根行。这样,您的Web服务器执行的每个脚本都将以超级用户身份运行,从而导致许多潜在的问题。小心将http与匿名ftp混合使用。许多网站使用相同的目录来存储通过匿名ftp和网站访问的文档。例如,您可能有一个名为/netDocs的目录,它既是ftp用户的主目录,也是Web服务器的根目录。这允许将文件分为两种类型的URL,如或。http对ftp的主要优势是速度快,效率高。然而,出现了各种安全问题:允许匿名ftp访问http目录为用户提供了一种限制访问任何Web服务器上的文件的方法。因此,如果您的Web服务器上有长期使用此方法的机密文件,这些文件的机密性可能会丢失。如果攻击者可以下载你的CGI脚本,他就可以搜索出攻击路径。您必须确保ftp用户无法上传可以在您的服务器上运行的脚本。向您显示的/etc/passwd文件也可能被使用WWW服务的人看到,从而导致其内容被损坏。此外,还有一些注意事项:删除不必要的用户(前面提到过)不要放置NFS或输出任何目录。删除所有编译器。所有删除的实用程序都不会用作引导或Web服务器。(再次)提供尽可能少的网络服务不要运行邮件服务器。如果您想了解更多关于HTTP/WWW安全性的信息,请访问