我们不应该把这归咎于 IIS 的不安全。如果对站点的每个目录都配以正确的权限,出现漏洞被人黑掉的机会还是很小的(Web 应用程序本身有问题和通过其它方式入侵黑掉服务器的除外)。下面是我在配置过程中总结的一些经验,希望对大家有所帮助。
IIS Web 服务器的权限设置有两个地方,一个是 NTFS 文件系统本身的权限设置,另一个是 IIS 下网站->站点->属性->主目录(或站点下目录->属性->目录)面板上。这两个地方是密切相关的。下面以实例的方式来讲解如何设置权限。
IIS 下网站->站点->属性->主目录(或站点下目录->属性->目录)面板上有:
脚本资源访问
读取
写入
浏览
记录访问
索引资源
6 个选项。这 6 个选项中,“记录访问”和“索引资源”跟安全性关系不大,一般都设置。但是如果前面四个权限都没有设置的话,这两个权限也没有必要设置。在设置权限时,记住这个规则即可,后面的例子中不再特别说明这两个权限的设置。
另外在这 6 个选项下面的执行权限下拉列表中还有:
无
纯脚本
纯脚本和可执行程序
3 个选项。
而网站目录如果在 NTFS 分区(推荐用这种)的话,还需要对 NTFS 分区上的这个目录设置相应权限,许多地方都介绍设置 everyone 的权限,实际上这是不好的,其实只要设置好 Internet 来宾帐号(IUSR_xxxxxxx)或 IIS_WPG 组的帐号权限就可以了。如果是设置 ASP、PHP 程序的目录权限,那么设置 Internet 来宾帐号的权限,而对于 ASP.NET 程序,则需要设置 IIS_WPG 组的帐号权限。在后面提到 NTFS 权限设置时会明确指出,没有明确指出的都是指设置 IIS 属性面板上的权限。
例1 —— ASP、PHP、ASP.NET 程序所在目录的权限设置:
如果这些程序是要执行的,那么需要设置“读取”权限,并且设置执行权限为“纯脚本”。不要设置“写入”和“脚本资源访问”,更不要设置执行权限为“纯脚本和可执行程序”。NTFS 权限中不要给 IIS_WPG 用户组和 Internet 来宾帐号设置写和修改权限。如果有一些特殊的配置文件(而且配置文件本身也是 ASP、PHP 程序),则需要给这些特定的文件配置 NTFS 权限中的 Internet 来宾帐号(ASP.NET 程序是 IIS_WPG 组)的写权限,而不要配置 IIS 属性面板中的“写入”权限。
IIS 面板中的“写入”权限实际上是对 HTTP PUT 指令的处理,对于普通网站,一般情况下这个权限是不打开的。
IIS 面板中的“脚本资源访问”不是指可以执行脚本的权限,而是指可以访问源代码的权限,如果同时又打开“写入”权限的话,那么就非常危险了。
执行权限中“纯脚本和可执行程序”权限可以执行任意程序,包括 exe 可执行程序,如果目录同时有“写入”权限的话,那么就很容易被人上传并执行木马程序了。
对于 ASP.NET 程序的目录,许多人喜欢在文件系统中设置成 Web 共享,实际上这是没有必要的。只需要在 IIS 中保证该目录为一个应用程序即可。如果所在目录在 IIS 中不是一个应用程序目录,只需要在其属性->目录面板中应用程序设置部分点创建就可以了。Web 共享会给其更多权限,可能会造成不安全因素。
总结: 也就是说一般不要打开-主目录-(写入),(脚本资源访问) 这两项以及不要选上(纯脚本和可执行程序),选(纯脚本)就可以了.需要asp.net的应用程序的如果应用程序目录不止应用程序一个程序的可以在应用程序文件夹上(属性)-目录-点创建就可以了.不要在文件夹上选web共享.
例2 —— 上传目录的权限设置:
用户的网站上可能会设置一个或几个目录允许上传文件,上传的方式一般是通过 ASP、PHP、ASP.NET 等程序来完成。这时需要注意,一定要将上传目录的执行权限设为“无”,这样即使上传了 ASP、PHP 等脚本程序或者 exe 程序,也不会在用户浏览器里就触发执行。
同样,如果不需要用户用 PUT 指令上传,那么不要打开该上传目录的“写入”权限。而应该设置 NTFS 权限中的 Internet 来宾帐号(ASP.NET 程序的上传目录是 IIS_WPG 组)的写权限。
如果下载时,是通过程序读取文件内容然后再转发给用户的话,那么连“读取”权限也不要设置。这样可以保证用户上传的文件只能被程序中已授权的用户所下载。而不是知道文件存放目录的用户所下载。“浏览”权限也不要打开,除非你就是希望用户可以浏览你的上传目录,并可以选择自己想要下载的东西。
总结: 一般的一些asp.php等程序都有一个上传目录.比如论坛.他们继承了上面的属性可以运行脚本的.我们应该将这些目录从新设置一下属性.将(纯脚本)改成(无).
例3 —— Access 数据库所在目录的权限设置:
许多 IIS 用户常常采用将 Access 数据库改名(改为 asp 或者 aspx 后缀等)或者放在发布目录之外的方法来避免浏览者下载它们的 Access 数据库。而实际上,这是不必要的。其实只需要将 Access 所在目录(或者该文件)的“读取”、“写入”权限都去掉就可以防止被人下载或篡改了。你不必担心这样你的程序会无法读取和写入你的 Access 数据库。你的程序需要的是 NTFS 上 Internet 来宾帐号或 IIS_WPG 组帐号的权限,你只要将这些用户的权限设置为可读可写就完全可以保证你的程序能够正确运行了。
总结: Internet 来宾帐号或 IIS_WPG 组帐号的权限可读可写.那么Access所在目录(或者该文件)的“读取”、“写入”权限都去掉就可以防止被人下载或篡改了
例4 —— 其它目录的权限设置:
你的网站下可能还有纯图片目录、纯 html 模版目录、纯客户端 js 文件目录或者样式表目录等,这些目录只需要设置“读取”权限即可,执行权限设成“无”即可。其它权限一概不需要设置。
上面的几个例子已经包含了大部分情况下的权限设置,只要掌握了设置的基本原理,也就很容易地完成能其它情况下的权限设置。
笔者每天都要从FTP服务器上下载文件。所谓“工欲善其事,必先利其器”,笔者选择的是FTP客户端新秀——FTPRush。FTPRush的前身是UltraFXP,它与传统的FlashFXP、CuteFTP相比,拥有更强大的功能,比如多窗口操作、更强大的脚本命令支持、更方便的界面定制等等。下面是笔者使用FTPRush几个月以来总结的一些“超短”技巧,如果你掌握了它们,相信你的FTP操作会玩得更酷!
1.在FTPRush的“本地窗口”中,如果你直接选中某文件并点击右键菜单,出现的是与FTPRush相关的菜单选择,如果你按住Shift的同时再单击右键,则出现的是资源管理器的右键菜单,这对于我们在FTPRush中进行文件管理非常方便。
2. 我们在升级FTPRush版本的时候最好首先备份一下旧版FTPRush安装目录下的RushSite.xml文件,这里保存的是你的站点管理器中所有 FTP站点,因为从FTPRush v1.0 RC5开始,如果你使用新版的安装包覆盖安装,RushSite.xml将被覆盖。
3. 连接到FTP后,选中要下载的文件或者目录,直接按下“Ctrl+Q”热键即可将该文件或目录添加到队列中,而无需单击右键,选择“添加选择的文件到队列”。
4. 选中要下载的文件,并在“本地窗口”中选择下载文件存放的目录,按下“Ctrl+T”即可开始文件传输,如图1所示。
5. FTPRush中查找文件支持通配符“*”和“?”,比如我们要查找的目录名为“大唐双龙传”,那么我们可以输入“*大唐*”或者直接输入“大唐”即可。查找时只需按下“Ctrl+F”热键,并输入关键词即可。
6. 搜索完毕后要想退回到原目录,可以点击“上一层目录”按钮,但这样我们需要重新向服务器发起请求,其实只需要再次按下“Ctrl+F”,并直接回车即可,这时候读取的文件是保留在本地缓存中的,速度要快很多。
7. 在站点管理器中,按住Shift键双击某个站点,会弹出FTP测试窗口,而按下Ctrl键双击则会直接连接该站点。
8.不管是本地文件还是FTP服务器上的文件,当我们选中它们之后,按下空格键,该文件的文件名会加粗显示,这对于我们在文件较多的目录中快速找到它们很有帮助。
9.老版本的UltraFXP站点文件,只需要将其改名为“RushSite.xml”并覆盖到FTPRush的安装目录即可导入站点。
10.选择“帮助→关于FTPRush”,在打开的窗口中点击“Rush every byte”,这里有一个彩蛋,上面会滚动显示FTPRush开发人员的名单,很有意思。
11.可以直接按“Ctrl+1、Ctrl+2……”快速切换到第1、2……个站台窗口,也可以直接按“Ctrl+Tab”在多站台之间切换。
12.在站点管理器中,双击某个站点打开其属性窗口,单击“密码”栏后面的“...”按钮可以直接查看密码明文,如图2所示。
13.有时候为了查看某个FTP中拥有的所有文件或者某个目录中的文件列表,我们可以选择“站台→输出FTP目录树列表”菜单,在弹出的窗口中输入目录深度,如果需要输出目录和文件大小则选择“输出目录和文件大小”,最后单击“确定”按钮,稍等片刻即可看到输出效果,如图3所示。
14.在站台日志、传输日志、系统日志中选中任意一部分日志记录,该部分记录会自动被粘贴到剪贴板中。
15.双击本地文件窗口中的SFV或者MD5校验文件,FTPRush会自动进行文件校验。
16.选择“工具→热键管理器”菜单可以在这里对所有热键进行重新分配,在“工具→布局”菜单中可以对工具栏、菜单、窗口做重新设计,这是FTPRush所独有的功能,设计出来的布局可以将其保存起来与朋友分享。
一 取消匿名访问功能
默认情况下,Windows2000系统的FTP服务器是允许匿名访问的,虽然匿名访问为用户上传、下载文件提供方便,但却存在极大的安全隐患。用户不需要申请合法的账号,就能访问FTP服务器,甚至还可以上传、下载文件,特别对于一些存储重要资料的FTP服务器,很容易出现泄密的情况,因此建议用户取消匿名访问功能。
在Windows2000系统中,点击“开始→程序→管理工具→Internet服务管理器”,弹出管理控制台窗口。然后展开窗口左侧的本地计算机选项,就能看到IIS5.0自带的FTP服务器,下面笔者以默认FTP站点为例,介绍如何取消匿名访问功能。
右键点击“默认FTP站点”项,在右键菜单中选择“属性”,接着弹出默认FTP站点属性对话框,切换到“安全账号”标签页,取消“允许匿名连接”前的勾选,最后点击“确定”按钮,这样用户就不能使用匿名账号访问FTP服务器了,必须拥有合法账号。
二 启用日志记录
Windows日志记录着系统运行的一切信息,但很多管理员对日志记录功能不够重视,为了节省服务器资源,禁用了FTP服务器日志记录功能,这是万万要不得的。FTP服务器日志记录着所有用户的访问信息,如访问时间、客户机IP地址、使用的登录账号等,这些信息对于FTP服务器的稳定运行具有很重要的意义,一旦服务器出现问题,就可以查看FTP日志,找到故障所在,及时排除。因此一定要启用FTP日志记录。
在默认FTP站点属性对话框中,切换到“FTP站点”标签页,一定要确保“启用日志记录”选项被选中,这样就可以在“事件查看器”中查看FTP日志记录了。
三 正确设置用户访问权限
每个FTP用户账号都具有一定的访问权限,但对用户权限的不合理设置,也能导致FTP服务器出现安全隐患。如服务器中的CCE文件夹,只允许 CCEUSER账号对它有读、写、修改、列表的权限,禁止其他用户访问,但系统默认设置,还是允许其他用户对CCE文件夹有读和列表的权限,因此必须重新设置该文件夹的用户访问权限。
右键点击CCE文件夹,在弹出菜单中选择“属性”,然后切换到“安全”标签页,首先删除Everyone用户账号,接着点击“添加”按钮,将 CCEUSER账号添加到名称列表框中,然后在“权限”列表框中选中修改、读取及运行、列出文件夹目录、读取和写入选项,最后点击“确定”按钮。这样一来,CCE文件夹只有CCEUSER用户才能访问。
四 启用磁盘配额
FTP服务器磁盘空间资源是宝贵的,无限制的让用户使用,势必造成巨大的浪费,因此要对每位FTP用户使用的磁盘空间进行限制。下面笔者以CCEUSER用户为例,将其限制为只能使用100M磁盘空间。
在资源管理器窗口中,右键点击CCE文件夹所在的硬盘盘符,在弹出的菜单中选择“属性”,接着切换到“配额”标签页,选中“启用配额管理”复选框,激活“配额”标签页中的所有配额设置选项,为了不让某些FTP用户占用过多的服务器磁盘空间,一定要选中“拒绝将磁盘空间给超过配额限制的用户”复选框。
然后在“为该卷上的新用户选择默认配额限制”框中选择“将磁盘空间限制为”单选项,接着在后面的栏中输入100,磁盘容量单位选择为“MB”,然后进行警告等级设置,在“将警告等级设置为”栏中输入“96”,容量单位也选择为“MB”,这样就完成了默认配额设置。此外,还要选中“用户超出配额限制时记录事件”和“用户超过警告等级时记录事件”复选框,以便将配额告警事件记录到Windows日志中。
点击配额标签页下方的“配额项”按钮,打开磁盘配额项目对话框,接着点击“配额→新建配额项”,弹出选择用户对话框,选中CCEUSER用户后,点击“确定”按钮,接着在“添加新配额项”对话框中为CCEUSER用户设置配额参数,选择“将磁盘空间限制为”单选项,在后面的栏中输入 “100”,接着在“将警告等级设置为”栏中输入“96”,它们的磁盘容量单位为“MB”,最后点击“确定”按钮,完成磁盘配额设置,这样CCEUSER 用户就只能使用100MB磁盘空间,超过96MB就会发出警告。
五 TCP/IP访问限制
为了保证FTP服务器的安全,还可以拒绝某些IP地址的访问。在默认FTP站点属性对话框中,切换到“目录安全性”标签页,选中“授权访问”单选项,然后在“以下所列除外”框中点击“添加”按钮,弹出“拒绝以下访问”对话框,这里可以拒绝单个IP地址或一组IP地址访问,以单个IP地址为例,选中“单机”选项,然后在“IP地址”栏中输入该机器的IP地址,最后点击“确定”按钮。这样添加到列表中的IP地址都不能访问FTP服务器了。
六 合理设置组策略
通过对组策略项目的修改,也可以增强FTP服务器的安全性。在Windows2000系统中,进入到“控制面板→管理工具”,运行本地安全策略工具。
1. 审核账户登录事件
在本地安全设置窗口中,依次展开“安全设置→本地策略→审核策略”,然后在右侧的框体中找到“审核账户登录事件”项目,双击打开该项目,在设置对话框中选中“成功”和“失败”这两项,最后点击“确定”按钮。该策略生效后,FTP用户的每次登录都会被记录到日志中。
2. 增强账号密码的复杂性
一些FTP账号的密码设置的过于简单,就有可能被“不法之徒”所破解。为了提高FTP服务器的安全性,必须强制用户设置复杂的账号密码。
在本地安全设置窗口中,依次展开“安全设置→账户策略→密码策略”,在右侧框体中找到“密码必须符合复杂性要求”项,双击打开后,选中“已启用”单选项,最后点击“确定”按钮。
然后,打开“密码长度最小值”项,为FTP账号密码设置最短字符限制。这样以来,密码的安全性就大大增强了。
3. 账号登录限制
有些非法用户使用黑客工具,反复登录FTP服务器,来猜测账号密码。这是非常危险的,因此建议大家对账号登录次数进行限制。
依次展开“安全设置→账户策略→账户锁定策略”,在右侧框体中找到“账户锁定阈值”项,双击打开后,设置账号登录的最大次数,如果超过此数值,账号会被自动锁定。接着打开“账户锁定时间”项,设置FTP账号被锁定的时间,账号一旦被锁定,超过这个时间值,才能重新使用。
通过以上几步设置后,用户的FTP服务器就会更加安全,再也不用怕被非法入侵了。