一. 定制自己的Windows 2000 Server
(1)版本的选择:
Windows 2000有各种语言的版本,对于我们来说,可以选择英文版或简体中文版。强烈建议,在语言不成为障碍的情况下,请一定使用英文版。要知道,微软的产品是以Bug & Patch而著称的,中文版的Bug远远多于英文版,而补丁一般还会迟至少半个月(也就是说一般微软公布了漏洞后你的机子还会有半个月处于无保护状况)。
(2)分区和逻辑盘的分配:
有一些朋友为了省事,将硬盘仅仅分为一个逻辑盘,所有的系统文件、日志文件、应用软件都装在C盘上,而黑客的攻击通常就是利用应用程序所存在的漏洞进入系统,然后通过系统文件内的相关程序提升权限,从而来删除日志文件(防止管理员对其进行调查),对系统文件进行破坏。建议最少建立三个分区(NTFS格式),一个系统分区(只安装系统和杀毒软件,
(3)安装顺序的选择:Windows 2000在安装中有几个顺序是一定要注意的:
首先,何时接入网络。Windows 2000在安装时有一个漏洞,在你输入Administrator密码后,系统就建立了ADMIN$的共享,但是并没有用你刚刚输入的密码来保护它,这种情况一直持续到你再次启动后,在此期间,任何人都可以通过ADMIN$进入你的机器;同时,只要安装一完成,各种服务就会自动运行,而这时的服务器是满身漏洞,非常容易进入的,因此,在完全安装并配置好Windows 2000之前,一定不要把主机接入网络。
其次,补丁的安装。补丁的安装应该在所有应用程序安装完之后,因为补丁程序往往要替换/修改某些系统文件,如果先安装补丁再安装应用程序有可能导致补丁不能起到应有的效果。例如,IIS的HotFix就要求每次更改IIS的配置都需要安装。
Win2k系统正确的安装顺序应该是:
硬盘分区-选择操作系统安装-选择文件系统格式(NTFS)-选择组件及应用程序-安装各种系统补丁-安装防火墙等做好安全防范措施-接入internet
(4)操作系统组件的定制:
Windows 2000在默认情况下会安装一些常用的组件。但是,这个默认安装是极度危险的。你应该确切地知道你需要哪些服务,而且仅仅安装你确实需要的服务。根据安全原则,最少的服务+最小的权限=最大的安全。安装系统组件时不要选择”索引服务”组件。典型的Web服务器需要的最小组件选择是:只安装IIS的IIS Snap-In(IIS服务管理器)、WWW Server(WWW服务器)、ComFiles(公用文件)组件。如果你确实需要安装其他组件,请慎重,特别是Indexing Service、FrontPage 2000 Server Extensions、Internet Service Manager(HTML)这几个危险服务。另外,安装网卡添加协议时也要尽量少的选择相关协议。
(5)远程管理应用程序的选择:
选择一个好的远程管理软件是非常重要的事,这不仅仅是安全方面的要求,也是应用方面的需要。Windows 2000的终端服务是基于RDP(远程桌面协议)的远程控制软件,它速度快,操作方便,比较适合用来进行常规操作。但是,终端服务也有其不足之处,由于它使用的是虚拟桌面,当你使用终端服务进行安装软件或重启服务器等与真实桌面交互的操作时,往往会出现哭笑不得的现象,例如,使用终端服务重启微软的认证服务器(Compaq, IBM等)可能会直接关机。所以,为了安全起见,建议再配备一个远程控制软件作为辅助,与终端服务互补,如PcAnyWhere就是一个不错的选择。
(6)删除默认共享
在HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\SERVICES\LANMANSERVER\PARAMETERS目录下,创建Autoshareserver的键值,类型为DWORD(双字节)且值为0,来禁止这些共享;再创建一个键值为Autosharewks的双字节值,修改键值为0。最后,请重新启动计算机使更改生效
IPC$共享无法删除
(不选择“文件夹和打印机共享协议”)
(7)手动查找并清除木马程序
1.查看系统注册表。
通过查看以下主键:
HKEY_CURRENT_USER\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN或RUNSERVERS
HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN或RUNSERVERS
下面是否有Netsky.exe,空格.exe等可疑文件名,并手动删除键值和相应的程序。
2.使用第三方软件,如 The Cleaner等。
(8)禁止不必要的服务
Win2k有许多用不着的服务自动处于激活状态,为了系统的安全,应把该关的功能服务及时关闭,从而减少安全风险。
需要禁止的服务如下:
alerter
application management
clipbook
com+ event system
computer browser
distributed link tuacking client
distributed transaction coordinator
fax service
ftp publishing service
indexing service
messenger
net logon
network dde
network dde dsdm
network monitor
netmeeting remote desktop sharing
plug and play
remote procedure call(RPC)
remote registry service
removable storage
routing and remote access
runas service
server
smart card
smart card helper
task schedule
tcp/ip netbios helper
telephone service
windows management instrumentation
必要时需要禁止的服务如下:
Snmp service
snmp trap
ups
(9)操作系统日志的安全问题
系统日志文件保存目录默认位置:
安全日志文件存放位置:c:\winnt\system32\config\secevent.evt (*)
系统日志文件存放位置:c:\winnt\system32\config\sysevent.evt (*)
应用程序日志文件存放位置:c:\winnt\system32\config\appevent.evt (*)
ftp日志默认位置:c:\winnt\system32\logfiles\msftpsvc1\
www日志默认位置:c:\winnt\system32\logfiles\w3svc1\ (*)
定时(scheduler)服务日志默认位置:系统安装目录\schedlgu.txt
安全日志文件、系统日志文件、应用程序日志文件,这三个日志记录都由系统的event log服务生成的(其中安全日志文件、系统日志文件只有系统管理员才能访问),event log的作用时记录程序和windows发送的时间消息。事件日志包含对诊断问题有所帮助的信息。停止和启动该服务就停止或开始记录上述三个日志文件。
上述三个日志文件事件查看器的dos命令为:eventvwr.msc(修改日志文件大小及存储时间)。打开事件查看器,右键点击相应的项目的“属性”项,在“常规”标签页面下,对日志文件的大小和达到文件大小时相应的事件进行设置(记录60天)。
ftp日志和www日志均是在internet信息服务里面配置和控制。
限制一般用户对日志文件的访问,禁止一般权限的用户去查看日志文件。设置只有管理员才可以对以上提到的系统日志文件有操作权限;小心保护管理员的密码和用户。并养成定时、定期备份日志的习惯。
win2k提供了安全日志分析器(cybersafe log analyst CLA工具)
日志管理软件 surfstats log analyzer 4.6
(10)目录和文件选项
对可上传的目录和数据库目录均不可给“执行”权限,
日志目录,只许读取和写入
非系统分区的everyone着好的权限去掉,只给管理员权限,在系统分区,不给everyone等其他次要帐号写权限,可在适当地方给读权限,
其他文件的权限设置:如:c:/winnt/system32下的cmd.exe,format.exe,ftp和tftp.exe等,不给system(系统权限)对cmd的任何权限,只给管理员权限,也可设置为只读
1、权限是累计的,
2、拒绝的权限比允许的高(决决策略会先执行)
3、文件权限比文件目录权限高
4、仅给用户必需的权限,最小化原则
(11)进行系统日志审核
Windows 2k的默认安装是不开启任何安全审核的。到“本地安全策略”的“审核策略”中打开相应的审核。推荐的审核是:
策略更改成功/失败
登录事件 成功/失败
对象访问 失败
目录服务访问 失败
特权使用 失败
系统事件 成功/失败
账户登录事件 成功/失败
账户管理 成功/失败
对文件和文件夹访问的审核。首先该文件和文件夹必须位于NTFS分区上,其次必须为对象访问事件设置审核策略。设置的步骤如下:在“审核”页面上,点击“添加”,选择想对文件或文件夹访问进行审核的用户,单击“确定”;在“审核项目”对话框中,为想要审核的事件选择“成功”或“失败”复选框,选择“完成”后确定。
同时,terminal service(远程服务)的安全日志默认时也不开的,可以在“管理工具-terminal service configuration-权限-高级”中配置安全审核,只要记录登录、注销事件就可以了。
审核项目少的缺点时万一想看却发现没有记录就一点都没辙;审核项目太多不仅会占用系统资源而且会导致失去了审核的意义。
(12)端口和Ipsec(端口监控监听程序inzider)
端口是计算机和外部网络相连的逻辑接口,也是计算机的第一道屏障,端口配置正确与否直接影响到主机的安全。一般来说,仅打开你需要使用的端口会比较安全,配置的方法:打开“本地连接属性”对话框,依次点击“Internet协议(TCP/IP)→高级→选项→TCP/IP筛选→属性”,在打开的对话框中启用TCP/IP筛选(只开放tcp80端口)。
不过,对于win2k的端口过滤来说有一个不好的特性:只能规定开哪些端口,这样对于需要开大量的用户就比较麻烦。
dos命令:netstat –abnov
(13)Windows 2000 安全注意事项
检查、更新和部署提供的 Hisecweb.inf 安全模板
我们已在附带的 CD 上包括了名为 Hisecweb.inf 的安全模板,它可作为适用于多数安全 Web 站点的基准。该模板配置基本的 Windows 2000 全系统策略。
执行以下步骤,以使用该模板:
1. 将该模板复制到 %windir%\security\templates 目录。
2. 打开“安全模板”工具,查看这些设置。
3. 打开“安全配置和分析”工具,然后装载该模板。
4. 右键单击“安全配置和分析”工具,然后从上下文菜单中选择“立即分析计算机”。
5. 等候操作完成。
6. 查看结果,如有必要就更新该模板。
7. 如果您已对该模板满意,右键单击“安全配置和分析”工具,然后从上下文菜单中选择“立即配置计算机”。
配置 IPSec 策略
应该认真考虑在每台 Web 服务器上设置 Internet Protocol Security (IPSec) 数据包筛选策略。该策略可提供更高级别的安全性,以防止防火墙被破坏。使用多层安全技术通常是很好的做法。
通常,除那些希望支持的协议和要打开的端口之外,其它所有的 TCP/IP 协议都应闭锁。可以使用 IPSec 管理工具或 IPSecPol 命令行工具部署 IPSec 策略。
确保 Telnet Server 的安全
如果打算使用 Windows 2000 中包括的 Telnet Server,应该考虑限制可访问该服务的用户。要进行这一设置,可执行以下步骤:
1. 打开“本地用户和组”工具。
2. 右键单击“组”节点,然后从上下文菜单中选择“新建组”。
3. 在“组”名框中输入 TelnetClients。
4. 单击“添加”,然后添加对该计算机有远程登录权限的用户。
5. 依次“创建”和“关闭”。
TelnetClients 组存在时,Telnet 服务将只允许在组中定义的那些用户访问该服务器。
(14)系统安全小结
经常访问微软网站,学习相关信息、技术等
经常访问微软升级程序站点,了解补丁的最新发布情况。
订阅微软安全公告,及时了解最新的系统漏洞。
安装重要升级通告服务。定期运行安全扫描工具或经常阅读网上相关的漏洞分析资料。微软提供了一个叫microsoft baseline security analyzer的工具,可以定期检测系统漏洞、IIS漏洞、弱口令等(详见附录)。
二.确保 Internet 信息服务 5.0 和 5.1 的安全
(详见附录1)
三.ASP程序的安全问题
安全不仅是网管的事,编程人员也必须在安全细节上注意,养成良好的安全习惯,否则也会给黑客造成可乘之机。
目前大多数网站上的ASP程序多少都有安全漏洞,但是如果写程序的时候注意的话,还是可以避免的。 分分涉及用户名与口令的程序最好封装在服务器端,尽量少的在asp文件里出现,涉及到与数据库连接的用户名与口令应给予最小的权限。说明:用户名与口令是黑客们最感兴趣的东西,如果通过某种方式看到源代码,后果是严重的。因此要尽量减少它们在asp文件中的出现次数。出现次数多的用户名与口令可以写在一个位置比较隐蔽的包含文件中。如果涉及到与数据库连接,理想状态下只给它以执行存储过程的权限,不要直接给予该用户以修改、插入、删除记录的权限。
需要经过验证的asp页面,可跟踪上一个页面的文件名,只有从上一页面转进来的会话才能读取这个页面。说明:需要经过验证的asp程序多是在页面头部加一个判断语句,但这还不够,有可能被黑客绕过验证直接进入,因此有必要跟踪上一个页面。
防止asp主页.inc文件泄漏问题,当存在asp的主页正在制作并没有进行最后调试完成以前,可能被某些搜索引擎机动追加为搜索对象,如果这时有人利用搜索引擎对这些网页进行查找,会得到有关文件的定位,并能在浏览器中察看到数据库地点和结构的细节揭示完整的源代码。说明:程序员应该在网页发布前对其进行彻底的调试,安全专家需要固定asp包含文件以便外部的用户不能看它们。首先对.inc文件使用户无法从浏览器直接观看文件的源代码。.inc文件的文件名不能使用系统默认的或有特殊含义容易被用户猜测到的,尽量使用无规则的英文字母。
某些asp编辑器会自动备份asp文件,会被下载的漏洞在某些编辑asp程序的工具,当创建或修改一个asp文件时,编辑器会自动创建一个备份文件,比如:ultraedit就会备份一个..bak文件,如创建或修改了some.asp,编辑器自动生成一个叫some.asp.bak文件,如果没有删除这个bak文件,攻击有可能直接下载some.asp.bak文件,这样some.asp的源程序就会被下载。
在处理类似留言板、BBS等输入框的asp程序中,最好屏蔽掉HTML、javascript、vbscript语句,如无特殊要求,可以限定只允许输入字母与数字,屏蔽掉特殊字符;同时对输入字符的长度进行限制。而且不但在客户端进行输入合法性检查,同时要在服务器端程序中进行类似检查。说明:输入框是黑客利用的一个目标,它们可以通过输入脚本语言等对用户客户端造成损坏;如果该输入框涉及到数据查询,他们会利用特殊查询输入得到更多的数据库数据,甚至是表的全部。因此必须对输入框进行过滤,但如果为提高效率仅在客户端进行输入合法性检查,仍有可能被绕过,因此必须在服务器端再做一次检查。
四.数据库的安全问题
(1)ACCESS数据库的安全问题。
防止ACCESS mdb数据库有可能被下载的漏洞,在用ACCESS做后台数据库是,如果有人通过各种方法知道或猜到了服务器的ACCESS数据库的路径和数据库名称,那么他就能够下载这个ACCESS数据库文件,这是十分危险的。
解决方法:
a.为数据库取个复杂、非正规的名字
b.不要把数据库名写在程序内,否则万一给人拿到了源代码,那数据库的结构和名字就一览无遗。建议使用ODBC。
c.使用ACCESS对数据库进行编码和加密,这样即使他人得到了数据库,没有密码他也无法打开。
(2)SQL SERVER数据库的安全问题。
SQL SERVER是NT平台上使用最多的数据库系统,但是他的安全问题也必须引起重视。
及时更新补丁程序
说明:与NT 一样,SQL SERVER的许多漏洞会由补丁程序来弥补,建议在安装补丁程序前现在测试机器上做测试,同时提前作好目标服务器的数据备份。
给SA一个复杂的口令
说明:SA具有对SQL SERVER数据库操作的全部权限。但是编程人员往往只注重编写SQL语句本身,对SQL SERVER数据库的管理却不太重视,这样很有可能造成SA口令为空。这对数据库安全是个严重威胁。
严格控制数据库用户的权限,轻易不要给用户对于表的查询、更改、插入、删除等权限,可以给用户访问视图的权限,以及只具有执行存储过程的权限。
说明:用户如果对表有直接的操作权限,就会存在数据被破坏的危险。
(3)ASP中五种连接数据库的方法
第一种 - 这种方法用在ACCESS中最多
strconn = "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" & Server.MapPath("aspfree.mdb")
set conn = server.createobject("adodb.connection")
conn.open strconn
第二种-这种方法用在SQL SERVER中多
dim conn, conntol
conntol = "driver={SQL Server};server=服务器名字;uid=登陆帐号;pwd=登陆密码;database=数据库名字"
set conn=server.createobject("adodb.connection")
conn.open conntol
另一种连接方法:
dim conn
set conn=server.createobject("ADODB.connection")
conn.open "PROVIDER=SQLOLEDB;DATA SOURCE=IP;UID=帐号;PWD=密码;DATABASE=hcgood"
第三种
strconn="Driver={MicrosoftAccessDriver(*.mdb)};" &_
"DBQ=F:Inetpubwwwrootsomedirdb1.mdb;DefaultDir=f:Inetpubwwwrootsomedir;
&_ uid=LoginID;" &_
"pwd=Password;DriverId=25;FIL=MSAccess;" set conn = server.createobject("adodb.connection")
conn.open strconn
第四种运用系统数据源
The following uses a Data Source Name:
set conn = server.createobject("adodb.connection")
conn.open "Example"
第五种运用ODBC数据源,前提是你必须在控制面板的ODBC中设置数据源
set rs = server.createobject("adodb.recordset")
rs.open "tblname", "DSNName", 3, 3
常 数 常 数 值 说 明
AdOpenForwardOnly 0 启动只能向前( Forward-only )的游标,缺省值
AdOpenKeyset 1 启动 Keyset 类型的游标
AdOpenDynamic 2 启动 Dynamic 类型的游标
AdOpenStatic 3 启动 Static 类型的游标
LockType 参数表示采用的 Lock 类型。
常 数 常 数 值 说 明
AdLockReadOnly 1 以只读方式启动,无法运行 AddNew、Update、Delete 等方法,缺省值
AdLockPessimistic 2 当数据正在更新时,系统会暂时锁定其它用户
的动作,以确保数据一致性
AdLockOptimistic 3 当数据正在更新时,系统不会暂时锁定其它用户的动作
AdLockBatchOptimistic 4 当数据正在更新时,其它用户必须将 CursorLocation 属性设为 adUseBatch ,才能对数据库操作
Options 参数表示对数据库请求的类型。
常 数 常 数 值 说 明
AdCmdUnknown -1 所指定的 CommandText 参数类型无法确定,缺省值
AdCmdText 1 所指定的 CommandText 参数是一般的命令类型
AdCmdTable 2 所指定的 CommandText 参数是一个存在的表名称
AdCmdStoredProc 3 所指定的 CommandText 参数是 Stored Procedure 表名称
你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=5882376