ASP.NET相对于ASP,设置权限方面有点不同,有一点儿设置错了都运行不到。在网上搜索到的都是很垃圾的答案,没有一个用得到的,下面是我自己设置并从中遇到的问题摸索后得到的经验,给大家分享。
ASP.NET需要用到USERS组的权限,因为我也遇过很多次自己设置了权限之后发现网站运行不了,很郁闷。下面根据出现的问题,一点点解决,让你的ASP.NET运行起来。。
问题一:
未找到路径“C:\”的一部分。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.IO.DirectoryNotFoundException: 未找到路径“C:\”的一部分。
解决:
在C盘加上Users组读取权限即可
本人试过:在C盘加上Users读取权限后可以访问了,但出于服务器安全问题,我又把UserS组去掉了(想到应该C盘下面还要一些文件夹要加入UserS权限即可)。去掉USERS组后,相继的问题以不同的错误方式显示出来了,如下面讲到的问题,然后再一一解决。
问题二:
页面弹出登录窗口点取消后出现:HTTP 错误 401.3 - 未经授权:访问由于 ACL 对所请求资源的设置被拒绝。
或者出现 HTTP 401.1错误
解决:
一,先要检查你的“身份检证和访问控制”中"对匿名使用下列windows用户账号”中的用户密码是否正确,还有检查你的网站 右键单击-权限中有没有加入此中用。
第一种方法试过都还是这的话,就看文件夹的权限设置了
在windows上加上Users权即可
问题三:
如果浏览到你整个网站出现乱码
解决:
那应该在 c盘 windows 加上users组的 读取权限即可
问题四:
编译错误
说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。
编译器错误信息: CS0016: 未能写入输出文件“c:\windows\Microsoft.NET\work\v1.1.4322\Temporary ASP.NET Files\root\345513e7\86f1794a\fvmzvzp7.dll”--“拒绝访问。 ”
解决:
应该在 c盘 windows下的temp 加上Users组的读、写、修改的权限即可
问题五:
编译错误
说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。
编译器错误信息: 编译器失败,错误代码为 128。
解决:
应该在 c盘 windows下的System32 加上Users组的读的权限即可
问题六:
运行时错误
说明: 服务器上出现应用程序错误。此应用程序的当前自定义错误设置禁止远程查看应用程序错误的详细信息(出于安全原因)。但可以通过在本地服务器计算机上运行的浏览器查看。
详细信息: 若要使他人能够在远程计算机上查看此特定错误信息的详细信息,请在位于当前 Web 应用程序根目录下的“web.config”配置文件中创建一个 <customErrors> 标记。然后应将此 <customErrors> 标记的“mode”属性设置为“Off”。
<!-- Web.Config 配置文件 -->
<configuration>
<system.web>
<customErrors mode="Off"/>
</system.web>
</configuration>
注释: 通过修改应用程序的 <customErrors> 配置标记的“defaultRedirect”属性,使之指向自定义错误页的 URL,可以用自定义错误页替换所看到的当前错误页。
<!-- Web.Config 配置文件 -->
<configuration>
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/>
</system.web>
</configuration>
解决:
在所在站点右键点击-权限 加上 IIS_WPG组的读权限即可
总 结:
windows temp System32 都需要users 的权限
windows读 temp读,写 System32读
站站权限要加上IIS_WPG读取权限
所以服务器的安全性也会低了很多,呵呵,,
问题7
在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码
在VS2005编译网站内置环境编译网站的时候出现” 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码 “这个错误,到网上baidu了一下,有下面的解决方案:
修改该目录的权限,加上“NETWORK SERVICE”,让它对该目录有控制权限。
修改网络/IIS/IIS服务的缺省账户.htm">IIS服务的缺省账户为“本地系统”
经验证,方法二可行,方法一失败。但是方法二会导致IIS运行不安全,所以这种方法不太合适。
我照着方案试了下,都没有成功,突然想到昨天因为杀毒,装了mcafee,查看mcafee的日志,果然有一下几条:
C:\Program Files\Internet Explorer\iexplore.exe \REGISTRY\MACHINE\SOFTWARE\Classes\.torrent\@ 防病毒最大保护:禁止更改所有文件扩展名的注册
c:\windows\system32\inetsrv\w3wp.exe C:\WINDOWS\TEMP\wda3zurp.dll 通用最大保护:禁止在 Windows 文件夹中创建新的可执行文件
应该就是这里的毛病了,把上两条规则删掉,编译成功:)
问题8
错误 1 “ASP.login_aspx.GetTypeHashCode()”: 没有找到适合的方法来重写 c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\clim\22c580cf\181f2416\App_Web_iiv2pnyq.8.cs
错误 2 “ASP.login_aspx.ProcessRequest(System.Web.HttpContext)”: 没有找到适合的方法来重写 c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\clim\22c580cf\181f2416\App_Web_iiv2pnyq.8.cs
错误 3 “ASP.login_aspx”不会实现接口成员“System.Web.IHttpHandler.IsReusable” c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\clim\22c580cf\181f2416\App_Web_iiv2pnyq.8.cs
解决方法:检查方法名、类名、名称空间前后是否一致。
话锋一转就到了系统权限设置与安全配置的实际操作阶段
系统设置网上有一句话是“最小的权限+最少的服务=最大的安全”。此句基本上是个人都看过,但我好像
没有看到过一篇讲的比较详细稍具全面的文章,下面就以我个人经验作一次教学尝试!
最小的权限如何实现?
NTFS系统权限设置 在使用之前将每个硬盘根加上 Administrators 用户为全部权限(可选加入SYSTEM用户)
删除其它用户,进入系统盘:权限如下
C:\WINDOWS Administrators SYSTEM用户全部权限 Users 用户默认权限不作修改
其它目录删除Everyone用户,切记C:\Documents and Settings下All Users\Default User目录及其子目录
如C:\Documents and Settings\All Users\Application Data 目录默认配置保留了Everyone用户权限
C:\WINDOWS 目录下面的权限也得注意,如 C:\WINDOWS\PCHealth、C:\windows\Installer也是保留了Everyone权限.
删除C:\WINDOWS\Web\printers目录,此目录的存在会造成IIS里加入一个.printers的扩展名,可溢出攻击
默认IIS错误页面已基本上没多少人使用了。建议删除C:\WINDOWS\Help\iisHelp目录
删除C:\WINDOWS\system32\inetsrv\iisadmpwd,此目录为管理IIS密码之用,如一些因密码不同步造成500
错误的时候使用 OWA 或 Iisadmpwd 修改同步密码,但在这里可以删掉,下面讲到的设置将会杜绝因系统
设置造成的密码不同步问题。
打开C:\Windows 搜索
net.exe;cmd.exe;tftp.exe;netstat.exe;regedit.exe;at.exe;attrib.exe;cacls.exe;format.com;
regsvr32.exe;xcopy.exe;wscript.exe;cscript.exe;ftp.exe;telnet.exe;arp.exe;edlin.exe;
ping.exe;route.exe;finger.exe;posix.exe;rsh.exe;atsvc.exe;qbasic.exe;runonce.exe;syskey.exe
修改权限,删除所有的用户只保存Administrators 和SYSTEM为所有权限
关闭445端口
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\netBT\Parameters
新建 “DWORD值”值名为 “SMBDeviceEnabled” 数据为默认值“0”
禁止建立空连接
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
新建 “DWORD值”值名为 “RestrictAnonymous” 数据值为“1” [2003默认为1]
禁止系统自动启动服务器共享
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
新建 “DWORD值”值名为 “AutoShareServer” 数据值为“0”
禁止系统自动启动管理共享
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
新建 “DWORD值”值名为 “AutoShareWks” 数据值为“0”
通过修改注册表防止小规模DDOS攻击
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
新建 “DWORD值”值名为 “SynAttackProtect” 数据值为“1”
禁止dump file的产生
dump文件在系统崩溃和蓝屏的时候是一份很有用的查找问题的资料。然而,它也能够给黑客提供一些敏感
信息比如一些应用程序的密码等。控制面板>系统属性>高级>启动和故障恢复把 写入调试信息 改成无。
关闭华医生Dr.Watson
在开始-运行中输入“drwtsn32”,或者开始-程序-附件-系统工具-系统信息-工具-Dr Watson,调出系统
里的华医生Dr.Watson ,只保留“转储全部线程上下文”选项,否则一旦程序出错,硬盘会读很久,并占
用大量空间。如果以前有此情况,请查找user.dmp文件,删除后可节省几十MB空间。
本地安全策略配置
开始 > 程序 > 管理工具 > 本地安全策略
账户策略 > 密码策略 > 密码最短使用期限 改成0天[即密码不过期,上面我讲到不会造成IIS密码不同步]
账户策略 > 账户锁定策略 > 账户锁定阈值 5 次 账户锁定时间 10分钟 [个人推荐配置]
本地策略 > 审核策略 >
账户管理 成功 失败
登录事件 成功 失败
对象访问 失败
策略更改 成功 失败
特权使用 失败
系统事件 成功 失败
目录服务访问 失败
账户登录事件 成功 失败
本地策略 > 安全选项 > 清除虚拟内存页面文件 更改为"已启用"
> 不显示上次的用户名 更改为"已启用"
> 不需要按CTRL+ALT+DEL 更改为"已启用"
> 不允许 SAM 账户的匿名枚举 更改为"已启用"
> 不允许 SAM 账户和共享的匿名枚举 更改为"已启用"
> 重命名来宾账户 更改成一个复杂的账户名
> 重命名系统管理员账号 更改一个自己用的账号 [同时可建立一个无用户组的Administrat账户]
组策略编辑器
运行 gpedit.msc 计算机配置 > 管理模板 > 系统 显示“关闭事件跟踪程序” 更改为已禁用
删除不安全组件
WScript.Shell 、Shell.application 这两个组件一般一些ASP木马或一些恶意程序都会使用到。
方案一:
regsvr32 /u wshom.ocx 卸载WScript.Shell 组件
regsvr32 /u shell32.dll 卸载Shell.application 组件
如果按照上面讲到的设置,可不必删除这两个文件
方案二:
删除注册表 HKEY_CLASSES_ROOT\CLSID\{72C24DD5-D70A-438B-8A42-98424B88AFB8} 对应 WScript.Shell
删除注册表 HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540000} 对应 Shell.application
用户管理
建立另一个备用管理员账号,防止特殊情况发生。
安装有终端服务与SQL服务的服务器停用TsInternetUser, SQLDebugger这两个账号
用户组说明
在将来要使用到的IIS中,IIS用户一般使用Guests组,也可以再重新建立一个独立的专供IIS使用的组,但
要将这个组赋予C:\Windows 目录为读取权限[单一读取] 个人不建议使用单独目录,太小家子气。
最少的服务如果实现
黑色为自动 绿色为手动 红色为禁用
Alerter
Application Experience Lookup Service
Application Layer Gateway Service
Application Management
Automatic Updates [Windows自动更新,可选项]
Background Intelligent Transfer Service
ClipBook
COM+ Event System
COM+ System Application
Computer Browser
Cryptographic Services
DCOM Server Process Launcher
DHCP Client
Distributed File System
Distributed Link Tracking Client
Distributed Link Tracking Server
Distributed Transaction Coordinator
DNS Client
Error Reporting Service
Event Log
File Replication
Help and Support
HTTP SSL
Human Interface Device Access
IIS Admin Service
IMAPI CD-Burning COM Service
Indexing Service
Intersite Messaging
IPSEC Services [如果使用了IP安全策略则自动,如无则禁用,可选操作]
Kerberos Key Distribution Center
License Logging
Logical Disk Manager [可选,多硬盘建议自动]
Logical Disk Manager Administrative Service
Messenger
Microsoft Search
Microsoft Software Shadow Copy Provider
MSSQLSERVER
MSSQLServerADHelper
Net Logon
NetMeeting Remote Desktop Sharing
Network Connections
Network DDE
Network DDE DSDM
Network Location Awareness (NLA)
Network Provisioning Service
NT LM Security Support Provider
Performance Logs and Alerts
Plug and Play
Portable Media Serial Number Service [微软反盗版工具,目前只针对多媒体类]
Print Spooler
Protected Storage
Remote Access Auto Connection Manager
Remote Access Connection Manager
Remote Desktop Help Session Manager
Remote Procedure Call (RPC)
Remote Procedure Call (RPC) Locator
Remote Registry
Removable Storage
Resultant Set of Policy Provider
Routing and Remote Access
Secondary Logon
Security Accounts Manager
Server
Shell Hardware Detection
Smart Card
Special Administration Console Helper
SQLSERVERAGENT
System Event Notification
Task Scheduler
TCP/IP NetBIOS Helper
Telephony
Telnet
Terminal Services
Terminal Services Session Directory
Themes
Uninterruptible Power Supply
Upload Manager
Virtual Disk Service
Volume Shadow Copy
WebClient
Windows Audio [服务器没必要使用声音]
Windows Firewall/Internet Connection Sharing (ICS)
Windows Image Acquisition (WIA)
Windows Installer
Windows Management Instrumentation
Windows Management Instrumentation Driver Extensions
Windows Time
Windows User Mode Driver Framework
WinHTTP Web Proxy Auto-Discovery Service
Wireless Configuration
WMI Performance Adapter
Workstation
World Wide Web Publishing Service
以上操作完成以后是否就“最小的权限+最少的服务=最大的安全”呢?其实不然,任何事物都是相对的
依我个人而见,以上设置也只是最基本的一些东西而已,如有遗漏,稍后补上!
1.在计算机管理里的本地用户和组里面创建一个帐户,例如:apache,密码设置为 apacheuser,加入guests组(如果出现问题,可以赋予user权限);
2.打开开始->管理工具->本地安全策略,在用户权限分配中选择“作为服务登陆”,添加apache用 户;
3.计算机管理里面选择服务,找到apache2.2,先停止服务,右击->属性,选择登陆,把单选框从本地系统帐户切换到此帐户,然后查找 选择apache,输入密码apacheuser,然后点确定(这个时候apache还不能正常启动,一般情况肯定会报错:Apache2.2 服务因 1 (0x1) 服务性错误而停止。);
4.赋予apache安装目录(比如:D:/apache2.2)以及web目录(比 如D:/wwwroot)apache帐号的可读写权限,去除 各磁盘根目录除administror与system以外的所有权限,赋予apache安装 目录所在的磁盘根目录apache帐户的可读取列目录权限(我 开始觉得没必要,但后来发现:这是导致上面出错的关键。)
5.启动apache,一切OK了。
6.php.ini中指定的PHP临时上传目录和session保存目录,并给予目录apache完 全控制权限,例如:
upload_tmp_dir = "D:/wwwroot/Tmp/uploadtmp/"
session.save_path = "D:/wwwroot/Tmp/sessiontmp/"
7.给予D:/php目录读取与运行的权限;
8.给予zend安装目录读取与运行的权限;
9.限制读取访问的目录,修改apache安装目录下conf文件夹下的 httpd.conf,加上:
php_admin_value open_basedir "D:/wwwroot"
php_admin_value safe_mode On
httpd.conf配置(假如将PHP读写权限限制在E:\smis目录下)
Apache2.0配置示例:
<VirtualHost *:80>
ServerName www.abc.com
DocumentRoot "E:/smis"
Options FollowSymLinks IncludesNOEXEC Indexes
DirectoryIndex index.html index.htm default.htm index.php default.php
AllowOverride None
Order Deny,Allow
Allow from all
php_admin_value open_basedir "E:/smis/;E:/APMServ5.2.0/PHP/uploadtemp/;E:/APMServ5.2.0/PHP/sessiondata/"
php_admin_value safe_mode On
</VirtualHost>
Apache2.2配置示例:
<VirtualHost *:80>
ServerName www.abc.com
DocumentRoot "E:/smis"
</VirtualHost>
<Directory "E:/smis">
Options FollowSymLinks IncludesNOEXEC Indexes
DirectoryIndex index.html index.htm default.htm index.php default.php
AllowOverride None
Order Deny,Allow
Allow from all
php_admin_value open_basedir "E:/smis/;E:/APMServ5.2.0/PHP/uploadtemp/;E:/APMServ5.2.0/PHP/sessiondata/"
php_admin_value safe_mode On
</Directory>
win2003系统下apache、php、mysql安装以及虚拟主机和目录权限设置
本文介绍的在试在win2003系统下apache、php、mysql安装以及虚拟主机和目录权限设置,即WAPM。
但不同于打包的WAPM软件,此软件部推荐在正式的服务器上面部署。下面开始:
1 安装pache、php、mysql
安装到自己认为合适的目录,三个软件的下载以及安装我不再叙述了,应该看到这篇文章的人对这部分内容都会认为是多余的!
2 虚拟主机设置
打开..\Apache\conf\http.conf
在# Virtual hosts处去掉加载虚拟主机的注释符号
Include conf/extra/httpd-vhosts.conf
在conf/extra/httpd-vhosts.conf配置虚拟主机配置文件内容:
以我的招聘网站jobigg.com为例:
# 1 jobigg.com
<VirtualHost *:80>
ServerAdmin alavin.cui@gmail.com
DocumentRoot "D:/jobigg.com"
ServerName jobigg.com
ServerAlias www.jobigg.com
ErrorLog "logs/jobigg.com-error.log"
CustomLog "logs/jobigg.com-access.log" common
</VirtualHost>
我的服务器为双ip,所以在httpd-vhosts.conf和http.conf中有点不同的配置
#Listen 11.11.11.11:80
Listen 80
就是未指定IP地址,才能正常使用双ip。
3 降低apache的运行权限
3.1 创建一个新的帐户
在计算机管理里的本地用户和组里面创建一个帐户,例如:apache,密码设置为jobigg.com,加入user组;
3.2 打开开始->管理工具->本地安全策略,在用户权限分配中选择“作为服务登陆”,添加apache用户
3.3 计算机管理里面选择服务,找到apache2.2,先停止服务,右击->属性,选择登陆,把单选框从本地系统帐户切换到此帐户,然后查找选择 apache,输入密码jobigg.com,然后点确定(这个时候apache应该不能正常启动,一般情况肯定会报错:Apache2.2 服务因 1 (0x1) 服务性错误而停止。)
3.4 赋予apache安装目录(比如:E:/apache2.2)以及web目录(比如D: /jobigg.com)apache帐号的可读写权限,去除各磁盘根目录除administror与system以外的所有权限,赋予apache安装 目录所在的磁盘根目录apache帐户的可读取列目录权限
3.5 重新启动apache