ASP.NET虚拟主机安全漏洞处理方案
发布时间:2023-04-22 14:11:57 所属栏目:教程 来源:
导读:我们作为一个站长,互联网之路一路走来起来不知道需要经历多少的坎坎坷坷才走到今天,今天就讲互联网建站之路之其中重要需要掌握技术之一“阿里云服务器”,给大家说一说我使用过的阿里云服务器的一些经验
我们作为一个站长,互联网之路一路走来起来不知道需要经历多少的坎坎坷坷才走到今天,今天就讲互联网建站之路之其中重要需要掌握技术之一“阿里云服务器”,给大家说一说我使用过的阿里云服务器的一些经验吧。 也顺便说下阿里云服务器价格表这块,到底需要多少钱,怎样的配置更适合个人站长及企业网站。 我本人在前几天自己开始做网站的时候,因为备案需要十多二十天的时间,不想等待,网站忙着上线所以就没有选择国内的网站空间,而是在网上找了香港的空间,使用香港网站空间的原因很简单,其实就是不像用国内需要备案嘛,购买了网站空间网站即可马上上线,不用等待网站备案下来再上线,用香港空间当时购买的是百多块钱一年的,内存5个G,独立的IP。 这配置对于我个人站长来说,都有点大材小用了,这空间ping值也就50左右,访问速度也是很可以的,总之没什么大一,价格也感觉非常的合理,但是时不时的会掉线,就这样使用香港空间有一年半的时间吧。 直到今年3月底,博主不知道为什么,好像之前优化的上去了,努力好像得到了回报,网站流量迅速两天内翻了好多倍,随着网站流量的不段上升,之前使用的香港空间似乎承受不起了,访问速度慢,此时考虑到了用户的访问体验,博主不得不考虑到网站服务器的问题,纠结了好几天,在网上了解了许多平台的服务器。 最终还是选择了阿里云服务器,因为以我多年互联网经验,阿里云及网上的评论以及其它方面的因素给了我留下了三个其它平台给不了的印象,那就是“速度,安全,稳定”。 那么我就说说我为什么选择阿里云服务器的其它原因吧。 第一、价格 对于我们个人站长来说,第一会考虑到的肯定是价格,如果说购买便宜的,怕承受不住网站的访问速度,会影响用户的访问速度,严重影响用户体验,但如果说购买太贵的。 对于我们个人站长来说,如果找不到什么好的盈利点,恐怕服务器成本费用都很难收得回来,最后综合了我个人站选择了很普通的配置,每个月也就才百多块钱,这对我而言,完全没有问题,完全可以承受。 1核CPU Xeon 2.26G+1G 内存 +2Mbps 带宽 +系统盘20G+数据盘20G +1个独立IP = 1050元/年 这里面主要是cpu,内存,带宽值钱。 第二 、口碑 经过几天自己在网上的了解,也问了几个认识多年的互联网朋友及各大论坛对阿里云的评论,他们都觉得很不错,使用的也都是阿里云服务器,所以就毫不犹豫的购买了,购买好之后,紧接着就去备案了,在阿里云备案对于我有多年网站备案经验,当然是一下子的事情了。 但如果对于没有备案过的朋友,可能会觉得有点麻烦,我所有资料提交拍照这些繁琐的事情完成之后,阿里云给我通过了初审,提示: 备案最长需要20天左右,因为新的域名备案阿里云还需要二十天左右,后面我就用我之前其它已经备案过的域名来试下服务器,看看怎么样。 4月2日晚上9点多,耗费一个多小时总算把网站从网站搬到了服务器,(一个多小时包含配置服务器环境),使用了两天,没出现过任何问题,打开的速度也是非常快的,这对于当初的选择,我觉得很满意,感觉没有选错! 如果使用过服务器的站长们可能就知道这性价比如何了,我所说的这些都是因为我的博客有足够的访问量,但如果你是一个小博客,小网站,只是想拿来练练手的话,我建议你还是花个几十块钱百多块钱购买个国外的主机也可以,这就不再说了,以上这主要是我对阿里云服务器的一些看法! 如果想要知道更多关于阿里云方面的东西建议还是去阿里云论坛及问题板块看吧,多的就不一一的说了,下面我来总的说下我对使用阿里云服务器的体会吧!: 我觉得如果想要做好一个网站,并且想要长期发展的话,这离不开一个好的网站空间或者说网站服务器! 我说这话大概的意思相信大家都懂了,如果你非要问我怎样的空间才是好的,怎么的服务器才是好的,服务器价格多少合作这个我也很难说,总的来说,很多问题都是以你自身网站及你预算来考量。 阿里云的备案难不难?有必要选择阿里云或其它的国内空间服务器服务商吗? 阿里云备案不难,按照上面的信息填写就可以了,有不懂的先找度娘,如果不会找或其它因为找不到,也可以直接拨打阿里云的官方客服,转到备案专线,也会有专门的备案客服协助你的,这一点阿里云还是很不错的,那么有必要选择阿里云国内空间吗? 博主最大的体会: 如果你做的网站在你们那地区有存活下去的可能,内容是正常的,那么就使用国内的空间或服务器吧、如果内容不是太和谐,还是拿你的网站去可以放你网站的国家去吧。 阿里云服务器或空间是贵族主机? 这个怎么说呢,就像我们手机一样吧,价格高有高的好处,低有低的好处,毕竟一分钱一分货嘛,看个人选择!我个人是觉得选择阿里云服务器让我觉得很安心,不像其它垃圾的空间商,那空间时而出问题时而出问题,有时候真的想吐血! 主要考虑因素如下: 预算:我个人的预算不是很多,一年在1000RMB左右就可以了,我网站所需的主机空间不是很大、流量也不是太大,1000左右已足够使用。 稳定及访问速度:几大空间中我考虑了许久,最终还是觉得阿里云稳定性相对较好,速度的话,也是占很大优势的,毕竟阿里云是多线户通嘛。 售后服务:阿里云的售后服务响应速度是很快的,有问题要么打电话给人工,要么提交工单,很快就能把问题给你解决。 性价比:一年1000左右,在国内的许多空间商中,无法是从保障、稳定、速度、售后等方面来考虑,还是觉得阿里云最划算了。 我对阿里云唯一不是太满意的地方可能就是备案了,需要等待的时间比较长,但也有好的一点,备案这一关,就可以过滤很多擦边的网站,也是不错的,有利有弊吧! 小结:如果网站内容是正常的,网站流量也比较大,又追求稳定及速度和长期发展的话,我个人觉得还是积极的备案吧,网站有秒多流量又要考虑用户体验的话,阿里云产品绝对会是不二之选!曾经很早就在网上看到一篇关于<asp.net虚拟主机的重大隐患>的文章,当时并不在意,做过asp虚拟主机的朋友可能都知道,即对每一个用户都设置一个独立的服务器用户和单个目录的操作权限,能够基本上解决asp的fso问题。 在网上无意中发现了一个叫做webadmin的asp.net-webshell,对自己的服务器进行测试的时候,让我大吃一惊,居然对我服务器的c盘有读取的权限。以及对整个硬盘的修改删除权限。这样的话,那么我的服务器的安全…… 为了进一步证实,本人曾在国内一些著名的虚拟主机提供商上作过测试,均有和我一样的问题。 有必要先介绍一下漏洞的原因。 ASP中常用的标准组件:FileSystemObject,这个组件为 ASP 提供了强大的文件系统访问能力,可以对服务器硬盘上的任何有权限的目录和文件进行读写、删除、改名等操作。FSO对象来自微软提供的脚本运行库scrrun.dll中。 在ASP.NET中我们发现这一问题仍然存在,并且变得更加难以解决。这是因为.NET中关于系统IO操作的功能变得更加强大,而使这一问题更严重的是ASP.NET所具有的一项新功能,这就组件不需要象ASP那样必须要使用regsvr32来注册了,只需将Dll类库文件上传到bin目录下就可以直接使用了。这一功能确实给开发ASP.NET带来了很大的方便,但是却使我们在ASP中将此dll删除或者改名的解决方法失去效用了,防范此问题就变得更加复杂。需要进一步了解的朋友可以看<asp.net虚拟主机的重大隐患>一文,本文就不再重复。只针对此问题引出虚拟主机的安全设置。 网上提出针对此问题用Microsoft .NET Framework Configration设置System.io的对目录读取的权限,经过我们长时间的测试没有成功,可能是.net framework1.1机制改革了? 废话不说。先说说解决的思路:在 IIS 6 中,Web 应用程序的工作进程设置为以进程标识“Network Service”运行。在 IIS 5 中,进程外 Web 应用程序则设置为以 IWAM_<服务器名> 帐户运行,这个帐户是普通的本地用户帐户。 Network Service 是 Windows Server 2003 中的内置帐户。了解 IIS 5 上的本地用户帐户(IUSR 和 IWAM)与这个内置帐户之间的区别是非常重要的。Windows 操作系统中的所有帐户都分配了一个 SID(安全标识,Security ID)。服务器是根据 SID,而不是与 SID 相关的名称来识别服务器上所有帐户的,而我们在与用户界面进行交互时,则是使用名称进行交互的。服务器上创建的绝大部分帐户都是本地帐户,都具有一个唯一的 SID,用于标识此帐户隶属于该服务器用户数据库的成员。由于 SID 只是相对于服务器是唯一的,因此它在任何其他系统上无效。所以,如果您为本地帐户分配了针对某文件或文件夹的 NTFS 权限,然后将该文件及其权限复制到另一台计算机上时,目标计算机上并没有针对这个迁移 SID 的用户帐户,即使其上有一个同名帐户也是如此。这使得包含 NTFS 权限的内容复制可能出现问题。 内置帐户是由操作系统创建的、一类较为特别的帐户或组,例如 System 帐户、Network Service 和 Everyone 组。这些对象的重要特征之一就是,它们在所有系统上都拥有一个相同的、众所周知的 SID。当将分配了 NTFS 权限的文件复制到内置帐户时,权限在服务器之间是有效的,因为内置帐户的 SID 在所有服务器上都是相同的。Windows Server 2003 服务中的 Network Service 帐户是特别设计的,专用于为应用程序提供访问网络的足够权限,而且在 IIS 6 中,无需提升权限即可运行 Web 应用程序。这对于 IIS 安全性来说,是一个特大的消息,因为不存在缓冲溢出,怀有恶意的应用程序无法破译进程标识,或是对应用程序的攻击不能进入 System 用户环境。更为重要的一点是,再也不能形成针对 System 帐户的“后门”,例如,再也无法通过 InProcessIsapiApps 元数据库项利用加载到 Inetinfo 的应用程序。 Network Service 帐户在创建时不仅仅考虑了在 IIS 6 中的应用。它还具有进程标识 W3WP.exe 的绝大部分(并不是全部)权限。如同 ASPNET 用户为了运行 ASP.net 应用程序,需要具有 IIS 5 服务器上某些位置的访问权限,进程标识 W3WP.exe 也需要具有类似位置的访问权限,而且还需要一些默认情况下没有指派给内置组的权限。 为了管理的方便,在安装 IIS 6 时创建了 IIS_WPG 组(也称为 IIS 工作进程组,IIS Worker Process Group),而且它的成员包括 Local System(本地系统)、Local Service(本地服务)、Network Service(网络服务)和 IWAM 帐户。IIS_WPG 的成员具有适当的 NTFS 权限和必要的用户权限,可以充当 IIS 6 中工作进程的进程标识。 因此,Network Service 帐户提供了访问上述位置的权限,具有充当 IIS 6 工作进程的进程标识的充足权限,以及具有访问网络的权限。 Msdn上说:在 Windows Server 2003 中,用户上下文称为 NETWORK SERVICE。这些用户帐户是在 .NET Framework 安装过程中创建的,它具有唯一的不易破解的密码,并仅被授予有限的权限。ASPNET 或 NETWORK SERVICE 用户只能访问运行 Web 应用程序所需的特定文件夹,如 Web 应用程序存储已编译文件的 /bin 目录。 要将进程标识设置为特定用户名,以取代 ASPNET 或 NETWORK SERVICE 用户标识,您提供的用户名和密码都必须存储在 machine.config 文件中。 但是根据实际情况,asp.net的system.io可以无限制访问不设防的服务器路径。不知道这算不算一个ms的重大漏洞。而且根本不能使iis以machine.config的用户执行asp.net程序。J 如何解决呢?答案就是―应用程序池。 IIS 6.0 在被称为应用程序隔离模式(隔离模式)的两种不同操作模式下运行,它们是:工作进程隔离模式和 IIS 5.0 隔离模式。这两种模式都要依赖于 HTTP.sys 作为超文本传输协议 (HTTP) 侦听程序;然而,它们内部的工作原理是截然不同的。 工作进程隔离模式利用 IIS 6.0 的重新设计的体系结构并且使用工作进程的核心组件。IIS 5.0 隔离模式用于依赖 IIS 5.0 的特定功能和行为的应用程序。该隔离模式由 IIs5IsolationModeEnabled 配置数据库属性指定。 您所选择的 IIS 应用程序隔离模式对性能、可靠性、安全性和功能可用性都会产生影响。工作进程隔离模式是 IIS 6.0 操作的推荐模式,因为它为应用程序提供了更可靠的平台。工作进程隔离模式也提供了更高级别的安全性,因为运行在工作进程中的应用程序的默认标识为 NetworkService。 以 IIS 5.0 隔离模式运行的应用程序的默认标识为 LocalSystem,该标识允许访问并具有更改计算机上几乎所有资源的能力。 IIS 功能 IIS 5.0隔离模式宿主/组件 工作进程隔离模式宿主/组件 工作进程管理 N/A Svchost.exe/WWW 服务 工作进程 N/A W3wp.exe/工作进程 运行进程内ISAPI 扩展 Inetinfo.exe W3wp.exe 运行进程外ISAPI 扩展 DLLHost.exe N/A(所有的 ISAPI 扩展都在进程内) 运行ISAPI筛选器 Inetinfo.exe W3wp.exe HTTP.sys 配置 Svchost.exe/WWW 服务 Svchost.exe/WWW 服务 HTTP 协议支持 Windows内核/HTTP.sys Windows 内核/HTTP.sys IIS配置数据库 Inetinfo.exe Inetinfo.exe FTP Inetinfo.exe Inetinfo.exe NNTP Inetinfo.exe Inetinfo.exe SMTP Inetinfo.exe Inetinfo.exe 由此可见,我们只能使用工作进程隔离模式解决.net的安全问题。 默认情况下,IIS 6.0在工作进程隔离模式下运行,如图五所示。在这种模式中,对于每一个Web应用,IIS 6.0都用一个独立的w3wp.exe的实例来运行它。w3wp.exe也称为工作进程(Worker Process),或W3Core。 可靠性和安全性。可靠性的提高是因为一个Web应用的故障不会影响到其他Web应用,也不会影响http.sys,每一个Web应用由W3SVC单独地监视其健康状况。安全性的提高是由于应用程序不再象IIS 5.0和IIS 4.0的进程内应用那样用System帐户运行,默认情况下,w3wp.exe的所有实例都在一个权限有限的“网络服务”帐户下运行,如图六所示,必要时,还可以将工作进程配置成用其他用户帐户运行。 对,这里,这里就是我们解决的核心。 我们把每一个网站都分配一个独立的应用程序池,并赋予不同的权限。不就能解决这个问题了吗? 具体如何做呢,下面我就针对建立一个网站来做一个示范: 首先,我们为网站创建两个用户(一个是app_test_user、密码为appuser,一个是iis_test_user、密码为iisuser) 1. 打开 计算机管理器 2. 单击控制台树中的用户→计算机管理→系统工具→本地用户和组→用户 3. 单击“操作”菜单上的“新用户”输入用户名为。app_test_user、密码为appuser 4. 在对话框中键入适当的信息。 5. 选中复选框: 用户不能更改密码 密码永不过期 6. 单击“创建”,然后单击“关闭”。 按照此方法在创建iis_test_user账户 然后分别把app_test_user添加到iis_wpg组,把iis_test_user添加到Guests组。删除其他组。 然后,建立相应的应用程序池。 依次打开Internet 信息服务→本地计算机→应用程序池→新建→应用程序池 新建一个名字为test的应用程序池 编辑test应用程序池的属性→标示→配置→用户名→浏览→把用户名改为我们刚才建立的app_test_user并输入相应的密码 其次建立相应的网站。 依次打开Internet 信息服务→本地计算机→网站→新建→test的网站,目录为d:/test →编辑test网站的属性→主目录→应用程序池→app_test_user →目录安全性→身份验证和访问控制→编辑,选择我们刚才建立的iis_test_user,并输入相应的密码iisuser→保存并退出。 最后设定服务器的安全。 C:只给administrators和system完全控制的权利,删除掉其他所有的权限,不替换子目录 C:/Documents and Settings继承父项,并替换子目录。 C:/Program Files继承父项,并替换子目录,并把C:/Program Files/Common Files/Microsoft Shared继承属性删除并复制现有属性,增加users的读取权限并替换子目录(这样做是为了能够让asp,asp.net使用access等数据库)。 C:/windows删除继承,并复制现有属性,只给予administrators,system完全控制和users读取的权限并替换子目录 其余所有的盘都只给于administrators和system用户的完全控制权限,删除其他所有用户并替换子目录。 D:/test(用户网站目录)继承现有属性并增加app_test_user和iis_test_user完全控制的权限并替换子目录。 以后每增加一个网站都以此类推。 但是,至此,system.io还是对c:/windows又读取权限的,(怀疑network servers用户属于users组,但是好多服务都要使用users组来执行的,所以不能把c:/windwos去掉users组的读取权限)但必须知道系统路径,有两种方案解决。 1、 再安装系统的时候使用无人值守安装,更换c:/windows默认安装路径,如更改为c:/testtest(要符合dos的命名规则,不能超过8个字符)。这个是必需的 2、 以下位置具有指派给 IIS_WPG 的权限: %windir%/help/iishelp/common 读取 %windir%/IIS Temporary Compressed Files 列出、读取、写入 %windir%/system32/inetsrv/ASP Compiled Template 读取 Inetpub/wwwroot(或内容目录)- 读取、执行 此外,IIS_WPG 还具有以下用户权限: 忽略遍历检查(SeChangeNotifyPrivilege) 作为批处理作业登录(SeBatchLogonRight) 从网络访问此计算机(SeNetworkLogonRight) 当然两种方法结合起来算是最安全的方案,一般使用第一种方案已经算是很安全的,毕竟是用一个webshell来猜测8位字符的目录还是需要花费时间的。使用防火墙很容易就能察觉出来,并加以控制。 (编辑:聊城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐