下面是小编为大家推荐的用EVSSL为WEB站点打造绿色安全通道WEB安全(共含9篇),欢迎阅读,希望大家能够喜欢。同时,但愿您也能像本文投稿人“dudongheng”一样,积极向本站投稿分享好文章。
网络钓鱼攻击一直是Internet中最严重的安全威胁之一,发展到现在已经存在许多种不同的钓鱼攻击方式,其中最主要的一种就是通过网页伪装手段冒充企业的电子商务网站,然后通过各种手段欺骗用户登录至冒牌的网站上进行商务交易,并以此来获取受骗用户的登录帐号和密码,使用户遭受金钱和名誉的双重损失。
正是在电子交易网站的这种非常严峻的情势下,2月,一种叫做扩展SSL认证(Extended Validation SSL Certificate)的认证方式出现在人们的视野中。EV-SSL是在SSL的基础上发展而来的,它是全球领先的数字证书颁发机构和主流的WEB浏览器厂商共同制定的一个新的SSL认证标准。EV-SSL证书由受信任的第三方证书颁发机构颁发,在与WEB服务器进行无缝集成后,不仅可以为用户和WEB服务器之间的网络通信数据提供128位或256位SSL链路级加密,又可以通过此证书机构颁发的中间级证书来验证WEB服务器身份的真实性。
一旦某个WEB站点使用了EV-SSL认证,当用户浏览此WEB站点时,就会在用户的WEB浏览器中显示出此证书的颁发机构标志。并且,现在一些主流的WEB浏览器,例如IE7及以上、Firefox3.0及以上等,会将通过EV-SSL认证的WEB站点的URL地址在其地址栏中显示为绿色。如图1所示。这样就让用户一眼就知道当前浏览的网站是安全的和真实可靠的。
图1以绿色显示的IE7地址栏
在本文中,我将以Resin为例向大家描述如何使用EV-SSL认证。与应用传统的第三方SSL认证一样,EV-SSL的应用也需要经过生成证书请求文件、注册购买证书、安装证书和备份/恢复证书这一系列的过程。
1、生成EV-SSL认证的私钥
想要Resin可以响应EV-SSL请求,我们就必需保证WEB服务器上已经安装好了相关的SSL套件。对于中小企业来说,开源免费的OpenSSL提供与SSL相同的认证功能。
OpenSSL的Linux版本可以在www.openssl.org网站上下载。现在它的最新版本是OpenSSL 0.9.8j。Linux系统下的Resin是通过libexec/libresinssl.so JNI库文件提供对OpenSSL的支持。
如果我们是在Windows系统中使用Resin,那么,我们同样需要在此操作系统下先安装好OpenSSL。Windows下的OpenSSL在www.slproweb.com/products/Win32OpenSSL.html下载,它的最新安装文件是Win32OpenSSL-0_9_8j.exe,其大小为7MB左右。在Windows系统下,Resin的resinssl.dll文件中包含提供对OpenSSL支持的代码。因此,在Windows系统下只需要安装好OpenSSL就可以让Resin使用它了。OpenSSL在Windows系统下很容易安装,就如同安装其它的应用程序一样简单。
不过,在Windows系统下安装完OpenSSL后,还应当将一些需要的DLL文件复制到Resin的根目录当中。现在假设Resin安装在c:\resin-pro-3.2.1目录,OpenSSL安装在c:\Program Files\GnuWin32目录。现在打开系统开始菜单的“运行”对话框,在运行框中输入CMD命令,回车后进入命令行终端界面。然后在命令行终端下就可以通过下列所示的命令将OpenSSL安装目录下的相关文件复制到Resin的根目录下:
cd resin-pro-3.2.1
copy c:\Program Files\GnuWin32\bin\libssl32.dll c:\ resin-pro-3.2.1\libssl32.dll
copy c:\Program Files\GnuWin32\bin\libeay32.dll c:\ resin-pro-3.2.1\libeay32.dll
当OpenSSL安装和配置好以后,就可以通过它来为EV-SSL认证生成私钥,生成后的私钥文件应当保存到相应的Resin目录中。因此,在生成密钥前,我们可以在Resin根目录中创建一个keys子目录用来保存将要创建的私钥文件。
在生成私钥时,OpenSSL会根据其配置文件中设置的内容来生成。在类Linux系统下,这个缺省的配置文件可能在usr/ssl/openssl.cnf或/usr/share/ssl/openssl.cnf下。而Windows系统中不存在这样的文件。
在WEB服务器上创建私钥时,会要求我们输入相应的密码,这个密码将会在我们使用创建的私钥时要求被输入。因此要牢记这个密码并妥善地保管它。我们还必需将这个密码加入到Resin的配置文件当中。
在Windows系统下创建私钥时,先打开系统开始菜单中的“运行”对话框,在其中输入CMD,回车后进入系统的命令行终端窗口。然后用CD命令切换到OpenSSL安装目录,再用下列命令产生私钥:
keytool –genkey –alias myevssl –keyalg RSA –keysize 1024 –keystore c:\ resin-pro-3.2.1\key\myprikey.key
其中,-genkey参数为产生密钥对;-alias参数后为私钥别名; -keyalg参数后为密钥算法;-keysize参数后为密钥位数;-keystore参数后为私钥存储路径和文件名。
输入上述命令后按回车键就会开始EV-SSL私钥的生成过程,在私钥生成过程中会出现在些需要我们输入相应内容的提示,例如网站
域名及密码等,这些都必需根据提示真实输入。在本例中,完成私钥生成后,私钥文件就会以命令中指定的myprikey.key文件名保存到指定的c:\ resin-pro-3.2.1\key目录中。2、成证书请求文件(CSR)得到EV-SSL认证的私钥后,接下来就是要生成一个申请第三方EV-SSL认证证书的证书请求文件(Certificate Sign Request),简称CSR。证书请求文件中包含有EV-SSL证书的公钥、名称、加密位数、地址和网站域名等信息。这个证书请求文件我们将会在注册购买EV-SSL证书时提交给证书颁发机构,而证书的私钥将由我们自己保管在WEB服务器上。
在Windows系统下创建证书请求文件时,先要打开系统开始菜单中的“运行”对话框,在其中输入CMD,回车后进入系统的命令行终端窗口。然后用CD命令切换到OpenSSL安装目录,再用下列命令生成EV-SSL的证书请求文件:
keytool –certreq –alias myevsslcsr –sigalg MD5withRSA –file c:\ resin-pro-3.2.1\key\myevssl.csr –keypass password –keystore c:\ resin-pro-3.2.1\key\myprikey.key –storepass password
其中,-certreq参数指生成证书请求文件;-alias参数后为证书别名;-sigalg参数后为密钥算法;-file参数后为证书请求文件的输出路径和文件名;-keypass参数后为密钥保护密码;-keystore参数后为私钥存储路径及文件名;-storepass参数后为存储密码。
同样,在生成证书请求文件的过程中会要求我们按提示输入相关信息,这些需要我们输入的信息必需按要求真实输入。在本例中,完成证书请求文件的生成工作后,就会在c:\ resin-pro-3.2.1\key目录下得到一个名为myevssl.csr的证书请求文件。
3、注册和购买EV-SSL证书
生成完证书请求文件后,接下来就是选择一个第三方证书颁发机构注册并购买其证书。在本文中我将以向天威诚信注册VeriSign的128位EV-SSL证书为例做具体的介绍说明。一个具体的EV-SSL注册购买过程需要经过确认域名、确认付款方式、生成证书请求文件、提交证书请求文件和完成注册这5个步骤。
下面就是具体的注册和购买EV-SSL证书的过程:
首先,在WEB浏览器地址栏中输入:digitalid.itrus.com.cn/GlobalServer/globalserver/,就可以进入如图2所示的天威诚信公司网站的128位EV-SSL证书注册页面。
图2 EV-SSL证书开始注册界面
在此EV-SSL证书的注册和购买过程的最初两个步骤中,当我们按网站提供的注册要求完成域名验证和填写付款方式后,就会出现如图3所示的生成证书请求(CSR)界面。由于我们已经通过WEB服务器生成了证书请求文件,那么,现在就可以直接单击此界面中的“下一步”按钮继续下一步的注册过程。
图3 生成证书请求界面
接下来就会出现一个如图4所示的提交证书请求文件界面。此时,我们先用记事本打开前面已经生成的证书请求文件,在本文中就是“c:\ resin-pro-3.2.1\key\myevssl.csr”文件。然后将其中所有的内容全部复制到证书请求文件提交界面中的文本框中。完成后单击“下一步”按钮继续其注册过程。
图4 提交证书请求文件界面
此时,就会出现一个完成注册的界面。在此界面中通过下拉条往下拉,当出现如图5界面所示的位置时,在选择服务器软件供应下拉框中选择WEB服务器软件的供应商。例如,IIS6的软件供应商就是Microsoft(微软)。在这个注册步骤,我们必需正确地选择WEB服务器的软件供应商,这样,证书颁发机构才能将与WEB服务器兼容的正确证书颁发给我们,
图5 选择服务器软件供应商界面
完成服务器软件供应商的选择后,继续向下拉下拉条。接下来会依次出现要求输入技术联系人信息、输入单位联系人信息和输入付款联系人信息的部分。在这些需要填入相应联系人信息的位置,我们都必需按要求填入真实有效的联系人信息,以便证书能正确送达。其中的技术联系人信息一定填写一个真实可靠的E-Mail地址,以便在注册后证书颁发机构能够将确认邮件发送给技术人员确认,以及此邮箱将最终接收证书颁发机构发送过来的EV-SSL证书。
完成三种联系人信息的输入后继续往下拉,就会出现如图6所示的要求输入企业机构代码的界面。在此界面中,我们必需在“代码”文本框中正确输入组织机构代码证上的代码,此代码是一个由9位数据组成数字串。
图6 输入组织机构代码界面
当完成注册界面中的所有工作全部完成后,单击此界面中的“接受”按钮就可以完成整个EV-SSL证书的申请注册和购买过程。
如果我们真的在天威诚信网站完成了EV-SSL证书的注册申请工作,天威诚信将经过1-3个工作日来核实和确认付款等工作。天威诚信会在EV-SSL证书的注册申请提交后,给我们填写的技术联系人的电子邮箱中发送一封确认购买证书的邮件,技术联系人必需按邮件中提示的内容进行相应的确认。如果技术联系人没有按邮件中内容的要求确信证书购买,那么,天威诚信将不会将证书颁发给我们。同时,在这封确认证书购买的邮件中,还包含了购买证书的个人身份证号码(PIN),我们可以通过它去确认当前的证书订单状态。4、获取EV-SSL证书
当我们所有的证书注册工作正确完成,并按要求付款后,证书机构(本例中为天威诚信)就会将一封包含有EV-SSL证书的电子邮件发送到技术联系人的邮箱当中。我们现在要做的,就是打开电子邮件,将此邮件内容中从“-----BEGIN CERTIFICATE-----”字段开始(包括此字段)到“-----END CERTIFICATE-----”字段(包括此字段)止的所有文本内容复制好,然后粘贴到记事本中,并以“myevssl.crt”的EV-SSL证书名保存到“c:\ resin-pro-3.2.1\key”目录下。当然,此证书文件的名称可以由我们自由决定。
5、安装EV-SSL根证书
现在我们已经得到了EV-SSL证书,接下来的工作就是将其安装到我们所使用的WEB服务器当中。在本文中就是安装到使用IIS6的WEB服务器中。
打开IIS6服务器的管理控制台,右键网站的域名,在弹出的右键菜单中选择“属性”菜单进入其属性界面。然后在属性界面中单击“目录安全性”选项框,在随即出现的界面中单击“服务器证书”按钮,就会开始一个IIS6证书向导。在此证书向导的第一个界面中选择“挂起证书请求”单项选择项,然后单击“下一步”按钮就会出现如图7所示的挂起证书请求的界面。在此界面中选择“处理挂起的请求并安装证书”单项选择项,然后单击下一步按钮继续下一步的证书安装过程。
图7 挂起证书请求界面
接下来就会出现如图8所示的要求输入要安装的EV-SSL证书的界面。在此界面中单击“浏览”按钮,导航到我们保存的证书的位置,并选择获得的EV-SSL证书文件(在本文中就是c:\ resin-pro-3.2.1\key\ myevssl.crt)。完成后单击“下一步”按钮继续安装证书的过程。
图8 指定EV-SSL根证书文件界面
此时,就会出现一个如图9所示的指定SSL连接端口的界面。SSL默认的端口是443,此端口可以保护默认,以便不了解的用户可以直接通过此默认端口连接服务器。在此界面中单击“下一步”按钮就可以完成EV-SSL的安装过程。
图9 指定SSL连接端口界面6、安装中间级证书
在安装完EV-SSL根证书后,要想WEB服务器能够被用户浏览器所信任,我们就必需再为此WEB服务器安装一个中间级证书。安装这个中间级证书的作用就是以此来形成一个证书链,使浏览器信任这个WEB服务器。
首先,从www.itrus.com.cn/products/server/golbalmediumca.asp 得到天威诚信提供的服务器中间证书,并保存为一个“crt”类型的文件,例如本文中的myiterevssl.crt,同样,文件名可以由我们自己决定。
得到中间证书后,接下来就是将它导入到证书管理器中。仍以IIS6服务器为例说明。先打开Windows系统开始菜单中的“运行”对话
框,在其中输入“MMC”后回车就可以进入系统控制台。进入系统控制台后,通过控制台文件菜单中的“添加/删除管理单元”添加证书管理控制台。图10就是证书管理控制台的界面。图10 证书管理控制台界面
在证书管理控制台界面中展开“中级证书颁发机构”,在打开的下级菜单中右击“证书”,在弹出的右键菜单中选择“所有任务”—“导入”菜单,就可以打开一个证书导入向导。按证书导入向导的提示将上面保存好的中间级证书“myiterevssl.crt”导入即可完成中间级证书的安装工作。
7、修改Resin配置文件
要想Resin能够使用EV-SSL认证,我们还必需对其配置文件resin.conf做相应的设置。具体要配置的内容包括:
...
password
其中,
和之间就是填入我们在创建私钥时设置的密码。8、备份和恢复EV-SSL证书
当WEB服务器操作系统或软件出现故障需要重新安装操作系统或软件时,为了免除每次安装两个证书的过程,我们就有必要将EV-SSL证书和中间级证书都进行备份,以便不时之需。下面的说明仍以IIS6服务器为例。
(1)、EV-SSL和中间级证书的备份
EV-SSL和中间级证书的备份都可以在证书系统管理控制台中完成。具体操作如下:
在系统开始菜单的“运行”框中输入“MMC”打开系统管理控制台,通过其“文件”菜单中的“添加/删除管理单元”菜单项将“证书”管理控制单元添加进来。
在证书管理控制单元中展开“个人”证书,单击个人证书下的“证书”菜单,然后在证书管理控制台右边界面中用鼠标右键单击我们安装的EV-SSL证书。在弹出的右键菜单中选择“导出”,就可以开始一个证书导出向导。
在进行证书导出时,我们必需将私钥一起导出,并且还可以将证书所有路径中的证书一起导出,然后再为备份的证书设置一个密码。这样,备份的证书将保存为一个“pfx”类型的文件。
中间级证书的备份在证书管理控制台的“中间级证书颁发机构”项中选择并导出,其具体的操作过程与上述方式相同。
(2)恢复EV-SSL和中间级证书
当我们备份好EV-SSL和中间级证书后,如果需要重新安装它们,就可以直接在IIS6的管理控制台中完成。我们可以打开IIS6管理控制台,进入“目录安全性”页面,在其中单击“服务器证书”按钮,在打开的证书向导中选择“从.pfx文件导入证书”的单项选择项,然后按提示将保存的证书备份导入即可。
在导入证书备份文件时需要我们指定证书备份文件的具体位置,以及输入备份证书时设置的密码,剩下的工作与安装新证书时相同。
打造更安全的防火墙
只开放必要的端口,关闭其余端口.因为在系统安装好后缺省情况下,一般都有缺省的端口对外开放,
就会利用扫描工具扫描那些端口可以利用,这对安全是一个严重威胁, 本人现将自己所知道的端口公布如下(如果觉得还有危险需要过滤的,请联系本人:OICQ 250875628
端 协议 应用程序
21 TCP FTP
25 TCP SMTP
53 TCP DNS
80 TCP HTTP SERVER
1433 TCP SQL SERVER
5631 TCP PCANYWHERE
5632 UDP PCANYWHERE
6(非端口) IP协议
8(非端口) IP协议
那么,我们根据自己的经验,将下面的端口关闭
TCP
21
22
23
25 TCP SMTP
53 TCP DNS
80
135 epmap
138 [冲击波]
139 smb
445
1025 DCE/1ff70682-0a51-30e8-076d-740be8cee98b
1026 DCE/12345778-1234-abcd-ef00-0123456789ac
1433 TCP SQL SERVER
5631 TCP PCANYWHERE
5632 UDP PCANYWHERE
3389
4444[冲击波]
4489
UDP
67[冲击波]
137 netbios-ns
161 An SNMP Agent is running/ Default community names of the SNMP Agent
关于UDP一般只有腾讯OICQ会打开4000或者是8000端口,那么,我们只运行本机使用4000端口就行了
如何保障Web服务器安全
维护Web服务器安全是信息安全中最不讨好的差事之一,你需要在相冲突的角色中找到平衡,允许对网络资源的合法访问,同时阻止恶意破坏。
你甚至会考虑双重认证,例如RSA SecurID,来确保认证系统的高信任度,但是这对所有网站用户来说也许不实用,或者不划算。尽管存在这样相冲突的目标,仍有六个有助Web服务器安全的步骤。
对内部和外部应用分别使用单独的服务器
假设组织有两类独立的网络应用,面向外部用户的服务和面向内部用户的服务,要谨慎地将这些应用部署在不同的服务器上。这样做可以减少恶意用户突破外部服务器来获得对敏感的内部信息地访问。如果你没有可用的部署工具,你至少应该考虑使用技术控制(例如处理隔离),使内部和外部应用不会互相牵涉。
使用单独的开发服务器测试和调试应用软件
在单独的Web服务器上测试应用软件听起来像是常识——的确是。不幸的是,许多组织没有遵循这个基本规则,相反允许开发者在生产服务器上调试代码甚至开发新软件。这对安全和可靠性来说都很可怕。在生产服务器上测试代码会使用户遇到故障,当开发者提交未经测试易受攻击的代码时,引入安全漏洞。大多数现代版本控制系统(例如微软的Visual SourceSafe)有助于编码/测试/调试过程自动化。
审查网站活动,安全存储日志
每一个安全专业人员都知道维护服务器活动日志的重要性。由于大多数Web服务器是公开的,对所有互联网服务进行审核是很重要的。审核有助你检测和打击攻击,并且使你可以检修服务器性能故障,
在高级安全环境中,确保你的日志存储在物理安全的地点——最安全的(但是最不方便的`)技巧是日志一产生就打印出来,建立不能被入侵者修改的纸记录,前提是入侵者没有物理访问权限。你也许想要使用电子备份,例如登录进安全主机,用数字签名进行加密,来阻止日志被窃取和修改。
培训开发者进行可靠的安全编码
软件开发者致力于创建满足商业需求的应用软件,却常常忽略了信息安全也是重要的商业需求。作为安全专业人员,你有责任对开发者进行影响到Web服务器的安全问题的培训。你应该让开发者了解网络中的安全机制,确保他们开发的软件不会违背这些机制;还要进行概念的培训,例如内存泄漏攻击和处理隔离——这些对编码和生成安全的应用软件大有帮助。
给操作系统和Web服务器打补丁
这是另一个常识,但是当管理员因为其他任务而不堪重荷时常常忽略这一点。安全公告,像是CERT或者微软发布的公告,提醒人们软件厂商多频繁地发布某些安全漏洞的修补程序。一些工具像是微软的软件升级服务(SUS)和RedHat的升级服务有助于使这项任务自动化。总之,一旦漏洞公布,如果你不修补它,迟早会被人发现并利用。
使用应用软件扫描
如果负担地起,你也许会考虑使用应用软件扫描器来验证内部编码。像是 Watchfire公司的AppScan这样的工具有助于确保编码在生产环境里不会存在漏洞。记住,要有安全意识。设计良好的 Web服务器结构应该基于健全的安全政策。贯彻执行这六个方法会帮助你建立坚固的基础。
1. 数据验证流程:一个好的web系统应该在IE端,server端,DB端都应该进行验证,但有不少程序偷工减料,script验证完了,就不管了;app server对数据长度和类型的验证与db server的不一样,这些都会引发问题。有兴趣的可参看一下script代码,设计一些case,这可是你作为一个高级测试人员的优秀之处哦。我曾修改了页面端的script代码,然后提交了一个form,引发了一个系统的重大漏洞后门。
2. 数据验证类型: 如果web server端提交sql语句时,不对提交的sql语句验证,那么一个 就可暗喜了。他可将提交的sql语句分割,后面加一个delete all或drop database的之类语句,能将你的数据库内容删个精光!我这一招还没实验在internet网站上,不知这样的网站有没有,有多少个。反正我负责的那个web系统曾经发现这样的问题。
3. 网络加密,数据库加密不用说了吧。
WEB软件最常碰到的BUG为:
1、SQL INJETION
2、对文件操作相关的模块的漏洞
3、COOKIES的欺骗
4、本地提交的漏洞
SQL INJETION的测试方法
原理:
如有一新闻管理系统用文件news.asp再用参数读取数据库里的新闻譬如
www.xxx.com/news.asp?id=1这一类网站程序
如果直接用
rs.open “select * from news where id=” &
cstr(request(“id”)),conn,1,1
数据库进行查询的话即上面的URL所读取的文章是这样读取的
select * from news where id=1
懂得SQL语言的就知道这条语言的意思是在news读取id为1的文章内容。
但是在SQL SERVER里select是支持子查询和多句执行的。如果这样提交URL的话
www.xxx.com/news.asp?id=1and 1=(select count(*) from admin
where left(name,1)=a)
SQL语句就变成了
select * news where id=1 and 1=(select count(*)
from admin where left(name,1)=a)
意思是admin表里如果存在字段字为name里左边第一个字符是a的就查询news表里id为1的内容,news表里id为1是有内容的,从逻辑上的角度来说就是1&P。只要P为真,表达式就为真,页面会返回一个正确的页面。如果为假页面就会报错或者会提示该id的文章不存在。 利用这点就可以慢慢得试用后台管理员的用户和密码,
测试:
测试存不存在SQL INJETION很简单如果参数为整数型的就在URL上分别提交www.xxx.com/news.asp?id=1and 1=1 和www.xxx.com/news.asp?id=1and 1=2
如果第一次返回正确内容,第二次返回不同页面或者不同容内的话表明news.asp文件存在SQL INJETION。如何利用就不多说了,毕竟我们都不是为了入侵。
对文件操作相关的模块的漏洞在测试
原理:
如一上传文件功能的程序upload.asp如果程序员只注重其功能上的需求没有考虑到用户不按常规操作的问题。如上传一个网页木马程序上去,整个网站甚至整个服务器的架构和源码都暴露而且还有一定的权限。
测试:
试上传asp,php,jsp,cgi等网页的文件看是否成功。
补充:
还有像 www.xxx.com/download/filespath.asp?path=../abc.zip
下载功能的软件如果
www.xxx.com/download/filespath.asp?path=../conn.asp
很可能下载到这些asp的源码数据库位置及用户密码都可能暴露。
其它还有很多,就不一一举例了。
COOKIES的欺骗
原理:
COOKIES是WEB程序的重要部分,COOKIES有利有弊。利在于不太占用服务器的资源,弊在于放在客户端非常容易被人修改加以利用。所以一般论坛前台登陆用COOKIES后台是用SESSION,因为前台登陆比较频繁,用SESSION效率很低。但如论坛程序管理员用户在前台也有一定的权限,如果对COOKIES验证不严的话,严重影响了WEB程序的正常工作。如前期的LEADBBS,只有后台对COOKIES验证严格,前台的位置只是从COOKIES读取用户的ID,对用户是否合法根本没有验证。
测试:
推荐使用MYBROWER浏览器,可即时显示及修改COOKIES。尝试一下修改里面的对应位置。
本地提交表单的漏洞
原理:
Action只接爱表单的提交,所以表单是客户WEB程序的接口。先举一个例子,一个投票系统,分A,B,C,D各项的VALUE是100,80,60,40。
但是如果先把些页面以HTML形式保存在本地硬盘里。然后修改其VALUE,再向其ACTION提交,ACTION会不会接受呢?
测试:
如一投票系统,把投票的页面保存在本地硬盘,用记事本打开,找到对应项的VALUE值,对其修改,然后提交。
强制后台浏览:绕过登陆页面,直接提交系统文件夹或文件页面。不完善的系统如果缺少index.html就可能被绕过登陆验证页面。在系统文件夹中保留一些公司机密内容也会造成不可估计的损失。
跨站脚本攻击:基本上这个我只是在论坛――各种形式的论坛里看到过,具体的一个例子,比如这段代码可以被填在任何输入框里 “”,如果未对一些字符,如 “<”、“>”进行转换,就会自动执行这个脚本。百度快照所提供的网页都自动将代码执行了。不信大家搜一点JS的代码,看看你能不能看到。
堆栈溢出攻击:完全的不了解,只是在某个网站上看到,可以对现在的、XP、进行攻击,非常恐怖,MS应该打了补丁了吧?
web.config 位于根目录
1、authentication节点
基于窗体(Forms)的身份验证配置站点,当没有登陆的用户访问需要身份验证的网页,网页自动跳转到登陆网页。其中元素loginUrl表示登陆网页的名称,name表示Cookie名称
2、authorization 节点
allow 向授权规则映射添加一个规则,该规则允许对资源进行访问。
deny 向授权规则映射添加一条拒绝对资源的访问的授权规则。
users=“*” 是指任何用户 users=“?” 是指经身份验证的用户
注意: 运行时,授权模块从最本地的配置文件开始,循环访问 allow 和 deny 元素,直到它找到适合特定用户帐户的第一个访问规则。然后,该授权模块根据找到的第一个访问规则是 allow 还是 deny 规则来允许或拒绝对 URL 资源的访问。默认的授权规则为 。因此,默认情况下允许访问,除非另外配置。
如果在根目录下的web.config配置太繁琐,可以配置到相应目录下,例如User目录下的web.config文件
3、customErrors 节点
mode=“On|Off|RemoteOnly”>
defaultRedirect 可选的属性。指定出错时将浏览器定向到的默认 URL。如果未指定该属性,则显示一般性错误。
Mode 必选的属性。指定是启用或禁用自定义错误,还是仅向远程客户端显示自定义错误。
此属性可以为下列值之一。
值 说明
On 指定启用自定义错误。如果未指定 defaultRedirect,用户将看到一般性错误。
Off 指定禁用自定义错误。这允许显示标准的详细错误。
RemoteOnly 指定仅向远程客户端显示自定义错误并且向本地主机显示 ASP.NET 错误。这是默认值。
默认值为 RemoteOnly。
error 可选的元素。指定给定 HTTP 状态代码的自定义错误页。错误标记可以出现多次。子标记的每一次出现均定义一个自定义错误条件。
例如:
这里可以让用户自定义出错页。
4、pages 节点
validateRequest=“true”
该值确定 ASP.NET 是否针对危险值检查来自浏览器的输入。如果 ASP.NET 针对危险值检查来自浏览器的输入,则为 true;否则为 false。默认值为 true。
这个功能是为了防止跨站脚本等危险代码。使全局默认为true。只有小数页面,如搜索页面
Search.aspx 设为 : ValidateRequest=“false” 。为了可以搜索类似 等内容,如果只是文字性的输入,可修改页 search.aspx 的设置,以增强系统安全性。
Security.config 配置说明
文件位于config目录
1、后台页面访问配置
noCheckAdminLogOn
后台不检查权限的页面
2、检查外站链接的后台页面配置
noCheckUrlReferrer
后台不检查来源页的列表,即管理员用户可以直接访问的文件列表,
后台设置是默认不允许直接访问,这样可以保护后页页面不被非法方式访问和外站链接访问,有效防止跨站请求伪造。
如果文件不在列表中,直接在URL 里访问,将出现错误提示:
产生错误的可能原因:
对不起,为了系统安全,不允许直接输入地址访问本系统的后台管理页面。
如需要,用户可以加上自定义的内容。
3、防止跨站请求伪造追加安全码的页面配置
checkSecurityCode
页面提交时检查安全码。
防止不正常操作(恶意操作)造成系统重大损失。也是对一些重要操作的保护,防止跨站请求伪造。
如:
4、页面操作权限码的配置
checkPermissions
页面操作权限码的配置,检查后台管理员是否有相关操作码的权限。
operateCode 为操作码 根据操作码判断是否存在此操作的权限。
checkType 权限判断类型, or and
or 操作码中的权限进行或运算,即有其中任何一种权限,就返回true
这个默认值是or 而且对于单一权限码的,可以不用配置
and 操作码中的权限进行与运算,即要求有全部权限才返回true 否则返回false.
AjaxLabel.config 配置说明
是对AJAX.aspx 的文件访问权限控制配置文件。
由于前台AJAX标签过于强大,会致使 AJAX标签 会出现一些危险性,对此我们做了一个XML安全文件来配置那些AJAX标签可以直接引用。这个AjaxLabel.config 文件是在 网站根目录的Config 目录下。如果标签没有记录,就会出现 本标签禁止访问!
例如:
是指标签名 为 “内容评论PK标签” 的标签可以被ajas.aspx调用,而且参数param只能为 “generalid”,类型为Int,这样能有效防止恶意攻击。
如果用户需自定义标签,而且需要ajax.aspx 文件调用,那就在AjaxLabel.config 中配置
app_offlineX.htm 文件作用
如果你要COPY站点,进行站点维护,部署,和进行大量修改,有可能要停掉你的WEB应用程序了,而以一个友好的方式提示给用户,比如什么“本网站正在更新”等等的信息,你可以把文件app_offlineX.htm 改名为app_offline.htm(大小写没关系)的静态HTM页面文件,其中修改成你要临时显示的内容,将其放在你的应用的根目录下。这样,任何外部的请求的话,都会马上被转移到该页面了。
网站维护完成后记得将文件名app_offline.htm改回。
AllowString.xml 文件配置
文件位于Common目录下
文件的作用是:会员发表信息时启用防XSS(跨站攻击)设置时,让用户设置允许会员提交部份特殊js 代码。
XSS是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。
例如:
功能是: 允许保留 nmousewheel=“return bbimg(this)” 和 nload=“resizepic(this)” 代码。这是对FCK上传图片功能的一个保留。
如用户想让系统过滤不要太严格,可在这里加上相应保留代码。
web安全现状调查报告
根据Menlo Security最近发布的20web安全先转报告,Alexa排名前100万的网站有46%都存在安全风险,对访问网站的企业和个人用户构成安全威胁。
Menlo在去年的web安全报告中给出两个重点数据:三分之一的Alexa排名前100万网站存在安全风险,五分之一运行着有漏洞的软件。而年的报告数据——接近半数网站存在安全风险,表明全球互联网的'web安全风险正在快速累积。
Menlo今年的web安全报告重点调查了Alexa排名前100万网站的2500万个后台请求,也就是当用户访问那些最流行的网站时,浏览器后台“悄悄”访问的一大堆web地址或服务,例如内容分发、广告网络、用户跟踪等等。Menlo Security首席技术官Kowsik Guruswamy表示:
表面上你只访问了一个网站,实际上你访问了25个网站!
Menlo将那些后台访问第三方服务存在的漏洞的网站也标记为风险网站,因为这些漏洞对主站的访问用户来说同样构成风险。研究者在评估一个网站风险的时候将第三方服务和软件的发布日期、软件版本、CVE ID和第三方风险评估也都考虑在内。
根据Menlo的报告,目前web安全风险快速增长的原因有三个:
网站比过去更加容易被攻击
传统安全产品无法提供足够的保护
越来越多的钓鱼攻击开始利用合法的网站掩护
web软件技术过时是web安全面临的最大风险,数以万计的web服务器都在运行过时的软件,而且后台的网络广告系统也非常容易被攻击利用来分发恶意软件。
Menlo报告的一些亮点图表如下:
风险最高的网站类型
软件漏洞最多的网站类型
Nginx跨站攻击很让人头疼,在多个网站运行的主机上如果攻破其中一个上传了类似webshell之类的木马程序后可以轻松浏览到相邻别的网站程序目录,由于nginx是后端FCGI程序处理php,统一设置open_basedir后会导致访问出现问题,只能通过每站分别处理的方式来设置,当然还有通过修改PHP程序等方式实现,贴上一个我目前正在使用的方法。
这种方式最好把网站集中到一个目录下,另外网站目录名字最好规范统一方便辨认。否则启动和维护起来非常麻烦容易混淆。
第一步修改php-fpm配置文件,为每个站点单独建立一个配置文件,
cd /usr/loca/php/etc/
cp php-fpm.conf php-fpm-www.zhaoyi.info.conf
修改其中
Pid file
Error log file
以及
第二步修改php-fpm启动脚本
cd /usr/local/php/sbin
# vim /usr/local/sbin/php-fpm
vhost=$2 ###
php_fpm_BIN=/usr/local/bin/php-cgi
php_fpm_CONF=/usr/local/etc/php-fpm-$vhost.conf ##
php_fpm_PID=/usr/local/logs/php-fpm-$vhost.pid ###
#php_opts=”–fpm-config $php_fpm_CONF”
php_opts=“-d open_basedir=/www/$vhost/ --fpm-config $php_fpm_CONF” #此处为网站目录
启动方式为php-fpm start www.zhaoyi.info 多个虚拟主机以此类推
第三步修改网站conf配置文件中
fastcgi_pass unix:/tmp/php-cgi-www.zhaoyi.info.sock; 要与php-fpm配置中的对应,tcp方式的启单独端口
OK,测试一下
/usr/local/php/sbin/php-fpm stop
/usr/local/php/sbin/php-fpm start www.zhaoyi.info
ps -ef | grep php中可以看到open_basedir=/www/www.zhaoyi.info就成功了
reload一下nginx的配置文件基本就可以实现各个主机隔离了,
我用phpspy测试已经访问不到别的目录了
nginx配置文件最好也采用每个网站单独一个的方式统一放在vhosts下
为了方便启动php-fpm可以写个脚本一起启动
#!/bin/bash
auto=$1
/bin/bash /usr/local/webserver/php/sbin/php-fpm $auto www.zhaoyi.info &&
/bin/bash /usr/local/webserver/php/sbin/php-fpm $auto www.xx.com &&
/bin/bash /usr/local/webserver/php/sbin/php-fpm $auto www.xxxx.com
保存为start.sh
开启sh start.sh start
关闭sh start.sh stop
在放入/etc/rc.local中开机启动
以下是我的一些经验,希望对你有用,但你要知道,绝对的安全是没有的,这才是一个网管存在的理由。所以。未雨绸缪是件好事。但亡羊补牢也不是下策。
请看我的经验:
1。多看看ms的安全公告,这是首选。订阅安全技术杂志。(MS免费的!)如果是正版的nt,则会有最新的安全E-mail。保证及时更新。
2。多大补丁,一定要注意顺序,如果安装了系统软件,则还要重补。(如后面加上了smtp服务,则还要重补sp1等等,否则可能导致旧文件不会被覆盖)。
3。提高安全策略,也可以用微软的安全模板。有一些很好的自动模板。可以根据需要自动加上。
4。加大审核力度,审核权限比较大的操作。
5。密码按时更改。必须符合策略。
6。常上一些安全论坛。如:绿盟科技,妖狐站点。
7。账号的级别一定要多分一些,如果可一实现功能,就不要给更大权限。
8。去掉多余的服务。如:(ftp,smtp,nntp,telnet)多余的脚本,例子。如IIS中好多的脚本库,都可以不要。
9。去掉一些危险的命令。不要共享c盘。
10。常看看日志,事件。
11。不要安装html的远端管理。
12。最好安装一些 工具,模拟攻击。看看是否出了问题。
13,
安装端口扫描工具。看看是否有些不用的开放端口。
14。安装一些防止 的工具,去除一些隐藏在端口的sniffer,防止密码数据被截获。
15。远程管理时最好调试端管理。密码加密策略高一些。防止被截获。
16。用注册表修改掉某些选项。如自动显示最后一个登录着的姓名。
17。改掉administrator的缺省姓名。这样可以多一级保护!
18。密码策略
19。密码的安全策略。多少位的密码是安全的。这个很怪。按照ms的加密算法。只有14位以上的密码是可能安全的。但实际上很少有人能记住那么多位的密码。但14位一下。7位密码比较安全。(很怪吧。)微软工程师说有时7位比10位还要保险。呵呵,具体原因说起来比较复杂。我是给我老弟讲课的。省略吧。
20。建议密码有字母。数字。大小写组成。最好加上一些如!・#¥%等的字符。也很难被猜到。
21。用户名改掉缺省的admini.....后,可以建一个14位长的管理员名。可以全部用字母。这样就加大了一级保护。
22。加大策略。防止用枚举法猜出账号名。
23。加入防止5次登录失败后,自动锁定账号20分中。防止暴力法突破。
24。建立分类的密码策略。不要用一些内置账号。如“sa”。
25。将sa的密码加大。最好不要常用他。建一个另外的管理员账号。然后对每一个自建的数据库都建一个分类账号。asp中最好用他来连接。这样就可以保障其他数据库的安全。
26。去掉一些权限。不允许普通用户用比较危险的存储过程。
27。不允许除管理员外的账号远程连接。或是加上命名管道。
27。asp如果能用dsn,就不要用连接字符串。并采取包含文件的模式包含进来。
整理了下Flash安全相关的知识,后面会再完善
一、先来说crossdomain.xml这个文件
flash如何跨域通信,全靠crossdomain.xml这个文件,这个文件配置在服务端,一般为根目录下,限制了flash是否可以跨域获取数据以及允许从什么地方跨域获取数据。
比如下面的列子:
1、www.a.com域下不存在crossdomain.xml文件,则不允许除了www.a.com域之外的其他任何域下的flash进行跨域请求。
2、www.a.com域下存在crossdomain.xml文件,如若配置 allow-access-from 为www.b.com,则只允许www.b.com域下的flash进行跨域请求,以及来自自身域www.a.com的网络请求。
crossdomain.xml需严格遵守XML语法,有且仅有一个根节点cross-domain-policy,且不包含任何属性。在此根节点下只能包含如下的子节点:
site-control
allow-access-from
allow-access-from-identity
allow-http-request-headers-from
site-control
早期的flash允许从其他位置载入自定义的策略文件,目前最新版的flash在接受自定义的策略文件之前会去检查主目录的crossdomain.xml来判断是否接受自定义策略文件。该选项就由site-control进行控制。
不加该选项时,默认情况下flash不加载除主策略文件之外的其他策略文件,即只接受根目录下的crossdomain.xml,这样可以防止利用上传自定 义策略文件进行的攻击。如果需要启用其他策略文件,则需要配置permitted-cross-domain-policies属性,该属性有以下五个 值: none: 不允许使用loadPolicyFile方法加载任何策略文件,包括此主策略文件。
master-only: 只允许使用主策略文件[默认值]。
by-content-type:只允许使用loadPolicyFile方法加载HTTP/HTTPS协议下Content-Type为text/x-cross-domain-policy的文件作为跨域策略文件。
by-ftp-filename:只允许使用loadPolicyFile方法加载FTP协议下文件名为crossdomain.xml的文件作为跨域策略文件。
all: 可使用loadPolicyFile方法加载目标域上的任何文件作为跨域策略文件,甚至是一个JPG也可被加载为策略文件!
例子:
允许通过HTTP/HTTPS协议加载http头中Content-Type为text/x-cross-domain-policy的文件作为策略文件
允许加载任意文件作为策略文件
allow-access-from
该选项用来限制哪些域有权限进行跨域请求数据。
allow-access-from有三个属性
domain:有效的值为IP、域名,子域名代表不同的域,通配符*单独使用代表所有域。通配符作为前缀和域名进行组合代表多个域,比如*.weibo.com,代表weibo.com所有的子域。
to-ports:该属性值表明允许访问读取本域内容的socket连接端口范围。可使用to-ports=“1100,1120-1125”这样的形式来限定端口范围,也可使用通配符(*)表示允许所有端口。
secure:该属性值指明信息是否经加密传输。当crossdomain.xml文件使用https加载时,secure默认设为true。此时将不允许flash传输非https加密内容。若手工设置为false则允许flash传输非https加密内容。
例子
a.com/crossdomain.xml文件内容如下
允许所有qq.com的子域通过https对t.qq.com域进行跨域请求。
allow-access-from-identity
该节点配置跨域访问策略为允许有特定证书的来源跨域访问本域上的资源。每个allow-access-from-identity节点最多只能包含一个signatory子节点。
allow-http-request-headers-from
此节点授权第三方域flash向本域发送用户定义的http头。
allow-http-request-headers-from包含三个属性:
domain:作用及参数格式与allow-access-from节点中的domain类似。
headers:以逗号隔开的列表,表明允许发送的http头。可用通配符(*)表示全部http头。
secure:作用及用法与allow-access-from节点中的secure相同。
注:Flash 在自定义HTTP头中无法使用下列请求标题,并且受限制的词不区分大小写(例如,不允许使用 Get、get 和 GET)。 另外,如果使用下划线字符,这也适用于带连字符的词(例如,不允许使用 Content-Length 和 Content_Length):
Accept-Charset、Accept-Encoding、Accept-Ranges、Age、Allow、Allowed、Authorization、Charge-To、Connect、Connection、Content-Length、Content-Location、Content-Range、Cookie、Date、Delete、ETag、Expect、Get、Head、Host、Keep-Alive、Last-Modified、Location、Max-Forwards、Options、Post、Proxy-Authenticate、Proxy-Authorization、Proxy-Connection、Public、Put、Range、Referer、Request-Range、Retry-After、Server、TE、Trace、Trailer、Transfer-Encoding、Upgrade、URI、User-Agent、Vary、Via、Warning、WWW-Authenticate 和 x-flash-version,
二、web应用中安全使用flash
设置严格的crossdomain.xml文件可以提高服务端的安全性,在web应用中也会经常使用flash,一般是通过
flash是直接可以执行js代码的,所以在web应用中如果使用不当也会很危险,所以flash使用下面两个属性来保证引用flash时的安全性。
allowScriptAccess 和 allowNetworking
allowScriptAccess用来控制flash与html的通讯,可选的值为:
always //对与html的通讯也就是执行javascript不做任何限制
sameDomain //只允许来自于本域的flash与html通讯,这是默认值
never //绝对禁止flash与页面的通讯
allowNetworking用来控制flash与外部的网络通讯,可选的值为:
all //允许使用所有的网络通讯,也是默认值
internal //flash不能与浏览器通讯如navigateToURL,但是可以调用其他的API
none //禁止任何的网络通讯
在allowNetworking设置为internal时,下面API将会被禁止使用:
fscommand()
navigateToURL()
ExternalInterface.call()
在allowNetworking设置为none时,下面API将会被禁止使用:
sendToURL()
FileReference.download()
FileReference.upload()
Loader.load()
LocalConnection.connect()
LocalConnection.send()
NetConnection.connect()
URLStream.load()
NetStream.play()
Security.loadPolicyFile()
SharedObject.getLocal()
SharedObject.getRemote()
Socket.connect()
Sound.load()
URLLoader.load()
XMLSocket.connect()
在web应用中使用flash的时候一般通过设置这两项即可保证安全性,如果在web应用中使用的flash为用户可控,强烈建议这两项的设置值为
allowScriptAccess=never allowNetworking=none
三、flash安全编程
如果web应用中调用flash时设置的allowScriptAccess为never、allowNetworking为none,即使flash文件 本身存在漏洞也可以忽略。不过事实上大部分web应用不会设置这两项属性,甚至会设置的不安全,比如allowScriptAccess为always、allowNetworking为all。所以在进行flash开发的时候就要考虑好安全性。
flash编程不安全可导致两方面的漏洞:
1、通过ExternalInterface.call()执行javascript代码
2、通过loadMovie()等方式可以载入外部flash文件执行
这两类问题都是需要通过参数接收外面传入的数据,在flash内部没有对数据进行严格的控制造成的。
例子:
this.movieName = root.loaderInfo.parameters.movieName;
this.flashReady_Callback = “SWFUpload.instances[\”“ + this.movieName + ”\“].flashReady”;
ExternalCall.Simple(this.flashReady_Callback);
public static function Simple(arg0:String){
ExternalInterface.call(arg0);
return;
}
接收到外部传入的movieName没有进行处理,最后通过ExternalInterface.call()进行执行,这样就能够执行任意的javascript代码,如果在调用flash的时候设置的不够安全就是XSS漏洞。
所以在flash编程中如果需要通过参数接收外部传入的数据,一定要对数据进行严格的检查,这样才能保证flash安全性。
参考文档:
Flash应用安全规范 www.80sec.com/flash-security-polic.html
flash跨域策略文件crossdomain.xml配置详解hi.baidu.com/cncxz/blog/item/7be889fa8f47a20c6c22eb3a.html
Cross-domain Policy File Specificationwww.senocular.com/pub/adobe/crossdomain/policyfiles.html
?