本篇文章主要讲述架设网站服务器——IIS6.0,网站架构:ASP+ACCESS——的安全设置,是结合网上相关教程和自己经验总结整理的服务器安全设置笔记,在此仅做为参考以飨网友。
Windows Server2003的安装
1、安装系统最少两需要个分区,分区格式都采用NTFS格式
2、在断开网络的情况安装好2003系统
3、安装IIS,仅安装必要的IIS组件。下面仅以架设ASP网站必要的IIS组件有:
应用程序服务器→启用网络COM+访问
应用程序服务器→Internet信息服务(IIS)→Internet 信息服务管理器
应用程序服务器→Internet信息服务(IIS)→公用文件
应用程序服务器→Internet信息服务(IIS)→万维网服务→Active Server Pages
应用程序服务器→Internet信息服务(IIS)→万维网服务→万维网服务
4、更新Win2003 SP2并更新其它重要安全补丁
5、根据需要安装软件,比如WinRAR,MSSQL。安全前检查文件完整性,安全性。
6、服务器上的软件安装越少越好,就将这做为一条指导性原则吧。
网卡配置
1、右键“网上邻居”→属性→本地连接→属性
在“常规”选项卡中,只保留:“Internet 协议(TCP/IP)”,如图所示(该图为本人服务器配置)
“Internet 协议(TCP/IP)”→属性→高级→WINS选项卡→NetBIOS设置,选择“禁用TCP/IP上的NetBIOS(S)”,并确定,直至完成。
2、优化网卡性能。具体请参考:网卡高级设置,让网络更加稳定。提醒:如果你对说明内容不明白,请不要仿照设置。即设置你有把握的内容,不要设置你没有把握的项。如果你一项都没有把握,那就把这问题放一放。以后可以逐步尝试。
设置和管理账户
1、系统管理员账户最好少建,更改默认的管理员帐户名(Administrator)和描述,密码最好采用数字加大小写字母加数字的上档键组合,长度最好不少于14位。
2、新建一个名为Administrator的陷阱帐号,为其设置最小的权限,然后随便输入组合的最好不低于20位的密码
3、将Guest账户禁用并更改名称和描述,然后输入一个复杂的密码。
开启3389远程终端并更改端口
1、开启3389远程终端
右键“我的电脑”→属性→“远程”选项卡,勾选“启用这台计算机上的远程桌面”并单击“选择远程用户...”,添加一个帐户。
2、修改3389端口
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\Wds\Repwd\Tds\Tcp, 看到那个PortNumber没有?0xd3d,这个是16进制,你选择“10进制”,就会显示3389,你在十进制下改一个数字,比如8888,点击确定即可。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\WinStations这里应该有一个或多个类似RDP-TCP的子健(取决于你建立了多少个RDP服务),一样改掉PortNumber。
组策略设置
1、“计算机配置”→“Windows设置”→“安全设置”→“账户策略”
账户锁定策略:将账户设为“三次登陆无效”,“帐户锁定时间”设为30分钟,“在此后复位帐户锁定计数器”设为30分钟。
2、“计算机配置”→“Windows设置”→“安全设置”→“本地策略”
[审核策略]
推荐的要审核的项目是:
审核策略更改:成功,失败
审核登录事件:成功,失败
审核对象访问:失败
审核对象追踪:成功,失败
审核目录服务访问:失败
审核特权使用:失败
审核系统事件:成功,失败
审核账户登录事件:成功,失败
审核账户管理:成功,失败
[用户权限分配]
从网络访问此计算机:只保留Internet来宾账户、启动IIS进程账户。如果使用了Asp.net还要保留Aspnet账户
关闭系统:保留Administrators和Backup Operators,其它帐户全部删除
通过终端服务允许登陆:保留Administrators和Remote Desktop Users,其它帐户全部删除。
[安全选项]
“不显示上次的用户名”设为启用
“不允许 SAM 帐户和共享的匿名枚举”设为启用
“不允许为网络身份验证储存凭证”设为启用
“可匿名访问的共享”,删除全部内容
“可匿名访问的命名管道”,删除全部内容
“可远程访问的注册表路径”,删除全部内容
“可远程访问的注册表路径和子路径”,删除全部内容
配置 IIS 服务
1、不使用默认的Web站点,如果使用也要将 将IIS目录与系统磁盘分开。
2、删除IIS默认创建的Inetpub目录(在安装系统的盘上)。
3、删除系统盘下的虚拟目录,如:IISSamples、Scripts、IIShelp、IISAdmin、IIShelp、MSADC。
4、启用父级路径
5、在IIS中将HTTP 404 Object Not Found出错页面通过URL重定向到一个定制HTM文件
6、删除不必要的IIS扩展名映射。右键单击“默认Web站点→属性→主目录→配置”,打开应用程序窗口,去掉不必要的应用程序映射。我就保留一个.asp,其它全部删除。
7、建议使用W3C扩充日志文件格式,每天记录客户IP地址,用户名,服务器端口,方法,URI字根,HTTP状态,用户代理,而且每天均要审查日志。(最好不要使用缺省的目录,建议更换一个记日志的路径,同时设置日志的访问权限,只允许管理员和system为Full Control)。
8、Web站点权限设定(建议)
脚本源访问 不允许
读取 允许
写入 不允许
记录访问 建议关闭
索引资源 建议关闭
执行权限 推荐选择 “纯脚本”
通过“IP安全策略”屏蔽危险端口
加固服务器安全,不见得要部署大型的安全软件,充分利用服务器系统集成的一些工具往往可以起到事半功倍的效果。这些工具不需要企业投入额外的成本,而且与服务器系统无缝结合,安全性、稳定性更有保障。
·禁止ICMP协议——防止他人Ping你的服务器。
·需要屏蔽的危险端口:25,57,135,139,161,445,1433
关闭不需要的服务
以下为建议选项
Computer Browser
Server
Workstation
Remote Registry
Print Spooler
Help and Support
Wireless Configuration
关闭不需要服务,请慎重。网上很多关于关闭服务的文章都不要招搬,如果你有上面几个,屏蔽掉就可以了。
服务器要的是稳定,安全。而不是追求性能极限!淡定~~
卸载最不安全的组件
三大危险组件:WScript.Shell, Shell.application, WScript.Network,将下面代码保存为批处理文件,并执行
regsvr32 /u %SystemRoot%\System32\wshom.ocx
copy %SystemRoot%\System32\wshom.ocx c:\
regsvr32 /u %SystemRoot%\System32\wshext.dll
copy %SystemRoot%\System32\wshext.dll c:\
regsvr32 /u %SystemRoot%\System32\shell32.dll
copy %SystemRoot%\System32\shell32.dll c:\
del %SystemRoot%\System32\wshext.dll
del %SystemRoot%\System32\wshom.ocx
del %SystemRoot%\System32\shell32.dll
执行后,WScript.Shell, Shell.application, WScript.Network就会被卸载了。可能会提示无法删除文件,不用管它。执行上面的批处理后,会将文件备份到C盘根目录下,你可以将C盘的文件打包备份一个压缩文件放到其它目录,删掉C盘下的备份文件。
打开注册表:查找下面九项内容,将搜索到的内容删除
1、Shell.Application
2、Shell.Application.1
3、{13709620-C279-11CE-A49E-444553540000}
1、wscript.network
2、wscript.network.1
3、{093FF999-1EA0-4079-9525-9614C3504B74}
1、wscript.shell
2、wscript.shell.1
3、{73c24DD5-D70A-438B-8A42-98424B88AFB8}
网上有将组件改名的方法,如果需要可以去找找。我的方法是上面三个危险组件全部卸载,只保留FSO和XML
IIS WEB目录用户权限设定(重点)
假设,WEB目录在D盘下的WEBSERVER目录
1、新建一个用户,假设为用户名为:asp163 给他一个复杂密码,比如数字+英文+特殊符号组成20位密码(这个密码要保留,以后要用)
2、设置上面新建用户的权限,让他隶属于Guests组
3、右键点击“D盘”-“安全”选项卡,只保留以下组或用户名称:
Administrators 完全控制
SYSTEM 完全控制
asp163 完全拒绝←就是上面新建的用户,禁止D盘任何操作
4、进入“Internet 信息服务(IIS) 管理器”→“目录安全性”选项卡。在“身份验证和访问控制”栏点击“编辑”,浏览并选择刚才创建的用户名(asp163),并填上密码,点击“确定”完成设置。
5、进入D盘,右键点击“WEBSERVER”目录→“属性”→“安全”选项卡→点“高级”→将“允许父项的继承权限传播到该对象和所有子对象。包括那些在明确定义的项目”前面的勾去掉,在弹出的对话框中有三个选项“复制”、“删除”、“取消”,选择“删除”
添加以下组或用户名
SYSTEM 安全权限
Users 读取和运行,列出文件夹目录,读取
asp163 完全控制←就是上面新建的用户
6、将其它盘,比如C盘,E盘等等,删除Everyone,添加Guests用户,权限设为“完全拒绝”。
7、对于系统盘,可以再做精细的权限设置。不过最好在虚拟机上测试,防止出现错误或意外。
站长要说的话:网站服务器的安全,最麻烦的莫过于系统盘权限设置和网站目录的权限设置。关于系统盘权限的设置,强烈建议不要照搬网上的教程不加思索的照搬。这里我提供两个方法:1、直接在服务器设置,每一步设置后,都要确认网站是否正常(最好是设置一个权限进行一次重启,以确保网站运行正常——我就测试过,设置某个目录权限后,一切正常,但重启后网站就不正常了。一般是涉及到某组件或ISAPI筛选器加载的DLL),如果不正常,则恢复上一步设置。实践中我就有一次这样的经历,设置完成后,网站访问不了,也不确定是哪一步设置出了问题,导致系统不得不还原。2、在虚拟机练习设置,确保系统盘的安全和网站的正常访问。关于系统盘权限设置可以访问本站其它相关文章,仅做参考。另外,关于网站目录权限设置,我认为网站目录权限设置要讲究安全与方便原则。本篇文章关于网站权限设置针对一两个网站是方便的,但如果有很多网站,我认为设置起来不太方便,我曾经看过一个朋友服务器,他是使用默认的IIS用户,目录中一个administror,一个system,另一个就是everyone,配置这个everyone权限同user的权限相同。这个方法比较方便,特别在多个网站的情况下,基本不需做过多设置。但是everyone是个敏感的东西,任何用户都可以访问,我认为这种情况比较冒险。所以我又回来我这个方法来,我考虑:增加一个用户组,将不同网站的不同帐户,都加入这个组,在配置权限中就根据这个组来设置权限。这样,以后增加网站,我只需设置帐户和将IIS的匿名访问帐户设置为该用户,并将该用户添加到这个组中,不就OK了吗?不过最近忙,也没时间来测试,以后确定在补充吧。
架设FTP服务器
本人不建议使用第三方FTP服务器软件,建议windows2003自带的FTP服务器,支持多用户,具体我会写一篇关于架设FTP服务器的方法。(链接以后加上)
安装并配置Mcafee
如果你是一名服务器管理者,我建议你必须熟练掌握Mcafee的配置及使用,配置的好,可以为你省下很多麻烦的事情。以后整理并提供本人服务器的Mcafee设置以及服务器安装mcafee涉及的一些小问题的解决方案。(链接以后增加)
测试服务器安全
1、通过一些工具扫描服务器,是否存在漏洞
2、通过阿江写的ASP探针检测服务器WEB方面的安全性。ASP探针演示ASP探针下载
3、通过一些工具检查WEB程序的安全性和防止SQL注入。
不得不说的话
服务器安全设置完成,并不代表你的服务器就决对的安全,你就可以高枕无忧了。服务器的安全是一个持久的事,你必须要经常查看系统和应用程序生成的日志并分析;要打上微软最新公布的重要安全补丁;要解决一些遗漏的危及安全的设置;要花时间研究你的程序是否安全;另外,不要在服务器上进行一些软件操作,除非你有200%的保证;远程登陆的客户机也要注意,否则你在复杂的密码,人家也是一清二楚。一切与你服务器直接交互的操作,都要注意。
由于这文章是多年前总结的内容,可能有些地方会出现纰漏,如果有问题,或者你对本文有什么疑问,或者有什么心得体会,欢迎与我交流。同时,我也会将最新的经验和心得,结合本篇文章加以总结。所以,你看到的内容,也可能在今后某天会有所变化。我希望我这些所谓的经验不要误人子弟。感谢你看到这里,谢谢。