WIN2003服务器端安全配置的一点简单经验
2005-08-12 08:59:41 来源:WEB开发网如下的一些配置主要是 针对 WIN2003和NTFS格式的,而且是提供网络服务的,不是客户端电脑(客户端电脑自己去安装一些防木马间谍病毒或防火墙或其他,注意跟踪目前的较新的反弹式木马技术,简单的木马的隐蔽无非就是注册表、Win.ini、System.ini、Autoexec.bat、Congfig.sys、Winstart.bat、Wininit.ini、启动组等地方,仔细点一般可找出)。
(1) 系统升级、打操作系统补丁,尤其是IIS 6.0补丁、SQL SP3a补丁,甚至IE 6.0补丁也要打。到教科网计算机安全网上下载,也可以自己到微软升级网站或用瑞星的最新版扫描或其他,工具很多。要早点下载下来。其实,服务器端,把不要的东西删除,如Telnet、Wins等一般禁用或删除。不要直接在服务器端运行和访问其他网站(至少可以防止jpeg、vbs病毒等,当然也要打上JPEG漏洞补丁)。基本这些问题就不大了。运行 netstat –an 一目了然。漏洞的通知速度,我倒建议除了微软外,到瑞星网站看看:http://it.rising.com.cn/newSite/Channels/Safety/LatestHole/index.htm
(2) 将fso、WSH、Ado..Stream、Ditction..、shell.application等禁止(如:Regsvr32 /u scrrun.dll)或修改注册表中名称(推荐后者!)。方法在后面会说明。地球人都知道。
(3) 停掉Guest 帐号、并给guest 加一个异常复杂的密码(反正不用,乱敲一通)。
(4) 把Adm…改名或伪装(比如改为guest6,那么最好同时创建10来个如guest1――guest10等不同的帐号,但权限都极低,密码超级复杂,在帐号安全策略中,甚至都不允许他们进行本极登录,干扰视线),创建陷阱帐号(假的Administrator帐号,实际权限非常低),并在试图尝试的login scripts上做点手脚。当然,真正的帐号密码必须设置特殊字符和足够强度。
(5) 关闭不必要的端口,在\\system32\\drivers\\etc\\services中有列表。网上邻居>属性>本地连接>属性>internet 协议(tcp/ip)>属性>高级>选项>tcp/ip筛选>属性 打开tcp/ip筛选,添加需要的tcp,udp,协议即可。
(6) 如果懒惰的话,最简单的方法是启用WIN2003的自身带的网络防火墙,并进行端口的改变。功能还可以!Internet 连接防火墙可以有效地拦截对Windows 2003服务器的非法入侵,防止非法远程主机对服务器的扫描,提高Windows 2003服务器的安全性。同时,也可以有效拦截利用操作系统漏洞进行端口攻击的病毒,如冲击波等蠕虫病毒。如果在用Windows 2003构造的虚拟路由器上启用此防火墙功能,能够对整个内部网络起到很好的保护作用。
网络->本地链接状态->高级->通过限制或阻止….来保护我的计算机,选中,并进行设置。剩下的就简单了。开必要的端口,如80、25、110等,要注意做安全日志。上面也有设置。但最好手工修改注册表。比如,把3389注册表中修改为××××端口,然后再通过防火墙映射为外部端口××××,内部端口××××。这样基本可以了。注册表中至少要修改4个地方,不过主要与PortNumber这个参数值有关,也方便找。我等会做个reg文件,运行一下就好了。
远程桌面端口:3389->××××->××××(这个肯定是要改变的)
SQL SERVER:1434->×××× 同时隐藏SQL 实例
FTP端口21->××××
(7) 打开审核策略!这个也非常重要,必须开启。当有人尝试入侵时,都会被安全审核记录下来。比如下表:
策略 设置
审核系统登陆事件 成功,失败
审核帐户管理 成功,失败
审核登陆事件 成功,失败
审核对象访问 成功
审核策略更改 成功,失败
审核特权使用 成功,失败
审核系统事件 成功,失败
(8)禁止建立空连接。可视化修改是这样:在管理工具->本地安全策略->选择本地策略->选择安全选项->网络访问:不允许SAM帐号和共享的匿名枚举(改成已启用)!
或者修改注册表来禁止建立空连接(等同上面):
Local_Machine\\System\\CurrentControlSet\\Control\\LSA-RestrictAnonymous 的值改成”1”即
可。
另外,本地安全策略一定要仔细看,有些功能要开启。反正,服务器端只运行必要的就可以了。
(9)关闭默认共享,编写一个deletenetshare.bat文件(如下表)
net share ipc$ /delete
net share admin$ /delete
net share C$ /delete
net share D$ /delete
net share E$ /delete
net share F$ /delete
net share PRint$ /delete
编写一个deletenetshare.reg 文件,把上面的bat写入启动项:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunServices]
"deletenetshare"="c:\\\\deletenetshare.bat"
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run]
"deletenetshare"="c:\\\\deletenetshare.bat"
(10)设置system32/cmd.exe访问权限!这个比较容易,自己尝试一下吧。
(11)模糊服务器的Banner信息,如修改IIS的Banner实现操作系统版本的隐藏,一般把IIS->APACHE。这个也比较容易,但高手还是容易看出来的。方法如下:利用资源修改工具来修改DLL,如exescope、ultraedit等(另外一种方法更专业,我在下面会讲)。存放IIS BANNER 的DLL 文件都是放在C:\\WINDOWS\\SYSTEM32\\INETSRV\\ 目录里,在IIS 5.0中的对应关系如下:
WEB 是:C:\\WINNT\\SYSTEM32\\INETSRV\\W3SVC.DLL
FTP 是: C:\\WINNT\\SYSTEM32\\INETSRV\\FTPSVC2.DLL
SMTP 是:C:\\WINNT\\SYSTEM32\\INETSRV\\SMTPSVC.DLL
例如用UltraEdit打开,查找Microsoft-IIS/5.0,修改为:Apache/1.3.29(Unix)或其它。
注意的地方就是:
1 在修改的时候请停止IIS 的服务,可以用iisreset /stop (当然,iisreset /start是启动)。
2 由于2000 系统后台的文件保护机制的作用,当系统一旦发现重要的DLL 文件被修改后就会尝试用%SYSTEMROOT%\\system32\\dllcache 目录下的备份文件来进行恢复,所以在修改前我们还需要事先删除或改名:%SYSTEMROOT%\\system32\\dllcache 目录下的同名文件。完成后WINDOWS 会出来一个对话框:系统文件被更改需要安装光盘恢复,不用理会点取消就好了。不过,想要完全隐藏还是不太现实,因为IIS 和APACHE 返回的代码格式还是相差较大的。
另一种模糊Banner信息的方法是使用插件,这些插件可以提供自定义的Http应答信息.比如ServerMask这个商业软件就可以提供这样的功能,它是IIS服务器的一个插件,ServerMask不仅模糊了Banner信息,而且会对Http应答头信息里的项的序列进行重新组合,从而来模仿Apache这样的服务器,它甚至有能力扮演成任何一个Http服务器来处理每一个请求.这个软件可以在以下地址找到:Http://www.port80software.com/products/servermask
目前的最新版本是ServerMask 2.2 for IIS 4/5/6 (Web Server Anonymization and Obfuscation),如下图。我的试用30天的下载地址如下:
http://www.port80software.com/products/ServerMask/try?cmd=download&email=zxz@zjnu.cn&c=787f065a4d3e81d8fdd46a3765a87972
尽管大家可以用ServerMask这样的软件来模糊指纹,但是仍然可以被Httprint这样利用统计学原理进行识别的的软件打败,具体知识请自己查阅相关资料。略。
(12)删除附件,删除“我的文档”所在的目录!如删除【C:\\Documents and Settings\\Default User\\「开始」菜单\\程序\\附件】IIS禁用未知CGI扩展和WebDev(这个的扫描器很多),如不用asp.net则也禁用掉,紧用WINS服务,删除传真服务、删除不必要的映射,删除IIS中的不用的程序映射,如htw, htr, idq, ida等等。
(13)SQL Server 2000安全配置,如修改1433端口监听、隐藏 SQL Server 实例(配置方法:SQL SERVER属性->网络配置->TCP/IP协议->默认端口,将1433改为你想要的数值,并点击隐藏实例)、禁止其他RPC连接到本地SQL SERVER等(配置方法:在远程服务链接处,取消RPC连接本机SQL即可)。这样可以禁止对试图枚举网络上现有的 SQL Server 实例的客户端所发出的广播作出响应,一定要打上最新的SP3补丁!(可以向本人索取)。在编程时一定要对编写的程序,尤其是ASP程序进行SQL 脚本注入攻击的防护!具体,看关于SQL 脚本注入攻击的相关参考文章。
(14)对SQL SERVER使用安全的帐号策略。
对sa配置一个健壮的密码,不要把sa的密码写在应用程序或者代码脚本中。如果数据库管理员不希望操作系统管理员通过登录来接触数据库的话,可以在帐号管理中把系统帐号“BUILTIN\\Administrators”删除。如我们的设置不采用sa帐号,而是创建YoursLikeNamesoft标准帐号,对KYCMIS/KYCBBS权限为Public+Dbowner。同时,加强数据库日志记录。审核数据库登录事件的“失败和成功”,在实例属性中选择“安全性”,将其中的审核级别选定为全部,这样在数据库系统和操作系统日志里面,就详细记录了所有帐号的登录事件。并定期查看SQL Server日志检查是否有可疑的登录事件发生,或者使用DOS命令。
findstr /C:"登录" d:\\Microsoft SQL Server\\MSSQL\\LOG\\*.*
管理扩展存储过程:对存储过程进行大手术,并且对帐号调用扩展存储过程的权限要慎重。其实在多数应用中根本用不到多少系统的存储过程,而SQL Server的这么多系统存储过程只是用来适应广大用户需求的,所以请删除不必要的存储过程,因为有些系统的存储过程能很容易地被人利用起来提升权限或进行破坏。如果你不需要扩展存储过程xp_cmdshell请把它去掉。使用这个SQL语句:
USE master
EXEC sp_dropextendedproc \'xp_cmdshell\'
xp_cmdshell是进入操作系统的一个捷径,是数据库留给操作系统的一个大后门。
如果你需要这个存储过程,请用这个语句也可以恢复过来。
EXEC sp_addextendedproc \'xp_cmdshell\', \'xpsql70.dll\'
在处理存储过程的时候,请确认一下,避免造成对数据库或应用程序的伤害。
强制协议加密(在实例属性->TCP/IP协议中或SQL服务器网络工具中),启用协议加密。加密是通过将数据更改为不可读形式而使敏感数据得以保密的方法。加密通过对每个人都隐藏信息而确保数据安全,即使有人直接查看加密数据。当然要有证书,如果没有,可能启动不了了。不过不必担心,进入企业管理器中修改属性即可。
(15)充分利用和配置好WINDOWS提供的IPSec!“Internet 协议安全性 (IPSec)”是一种开放标准的框架结构,通过使用加密安全服务以确保在 Internet 协议 (IP) 网络上进行保密而安全的通信。详细信息,请参阅WIN帮助。在管理工具->本地系统策略->IP安全策略在本地!使用操作系统自己的IPSec可以实现IP数据包的安全性。请对IP连接进行限制,只保证自己的IP能够访问,也拒绝其他IP进行的端口连接,把来自网络上的安全威胁进行有效的控制。
如:对SQL网络连接进行IP限制、拒绝来自1434、3389端口的探测等等(实现:在IPSec过滤拒绝掉1434端口的UDP通讯即可了)。所有IP通讯->源地址(任何IP),目标地址(我的IP),UDP协议,端口1434筛选,进行安全措施->请求安全->阻止即可等。
关于IPSec的使用请参看:http://www.microsoft.com/china/technet/security/ipsecloc.asp
(15)对于IIS的404等错误提示的一些代码脚本进行跳转。
比如在iishelp\\common\\404b.htm中头部增加<META HTTP-EQUIV=REFRESH CONTENT="0;URL=../Error.html;">
并用系统漏洞检测、网站漏洞检测工具、SQL注入攻击检测工具等对自己的服务器进行检测测试。。。。!这个也非常重要。
(16) 防止Content-Location标头暴露web服务器内部IP地址的方法是执行 cscript c:\\inetpub\\adminscripts\\adsutil.vbs set w3svc/UseHostName True (需重启IIS)
(17) IIS HTTP500内部错误大部分原因 是由于iwam账号的密码不同步造成的。只要同步iwam_myserver账号在com+应用程序中的密码即可解决问题(降低IIS权限为最低也可解决)。执行 cscript c:\\inetpub\\adminscripts\\synciwam.vbs –v
(18)增强IIS防御SYN Flood的能力。
[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters]
启动SynAttackProtect攻击保护,设成2。
其它,如"TcpMaxConnectResponseRetransmissions"、"TcpMaxDataRetransmissions"、"TCPMax
PortsExhausted"、"DisableIPSourceRouting"、"TcpTimedWaitDelay"等请参考相关资料。微软一般都有推荐的安全值。需手工添加修改。
(19)可以充分利用NFTS的安全性,将不同的虚拟目录设计成不同的权限。尤其bbs等公开源码的,这类往往有漏洞,那么入侵者即使上传了FSO,结果匿名访问的这个帐号权限只能对当前目录操作,一般也破坏不大了(假设FSO等还未禁止和修改的话)。
(20)SERV-U存在着几个安全隐患,如:远程溢出、默认账号LocalAdministrator的默认密码#l@$ak#.lk;0@P的本地提升权限的漏洞等等。如何防止,请参考相关资料。此略。
(21)禁止“WSH”提高系统安全性能,VBScript病毒,主要是由于Windows 中内嵌的 Windows Scripting Host (WSH),WSH 为 Visual Basic 脚本语言的自动运行提供了方便。
禁用 WSH 的步骤:对于Windows 2000 和2003,第一步:打开“我的电脑(My Computer)”;第二步:选择“工具(Tools)”菜单中的“文件夹选项(Folder Options)”;第三步:点击“文件类型(File Types)”项;第四步:找到“VBScript 脚本文件(VBScript Script File)”;第五步:选择“删除(Delete)”;第六步:点击“OK”确定。
(22)Inetpub默认目录要修改或者删除。时常关注微软网站关于DDOS/DOS等分布式拒绝服务攻击的新补丁。
如:
http://www.microsoft.com/technet/security/bulletin/MS04-030.mspx
选择中文或其他语言,当然,建议采用英文操作系统。英文的sp补丁快一些
微软在线更新
http://v4.windowsupdate.microsoft.com/zhcn/default.asp
(23)删除或禁止guests使用shell.application。
防范基于shell.application组件的asp木马
cacls为显示或者修改文件的访问控制列表(ACL)的命令。
cacls %systemroot%\\system32\\shell32.dll /e /d guests //禁止guests使用
regsvr32 shell32.dll /u /s //删除(推荐,毕竟一般编程用这个的很少)
cacls %systemroot%\\system32\\scrrun.dll /e /d guests //禁止guests使用
regsvr32 scrrun.dll /u /s //删除(不推荐,删除后,自己也没得用了,建议修改)
(24)修改FSO等的FSOSTREAMDICTION安全注册表.reg
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\Scripting.YoursLikeNameFileSystemObject]
@="FileSystem Object"
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\Scripting.YoursLikeNameFSO\\CLSID]
@="{0D43FE01-F093-11CF-8940-00A0C9054228}"
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\ADODB.YoursLikeNameStream]
@="ADODB.YoursLikeNameStream"
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\ADODB.YoursLikeNameStream\\CLSID]
@="{00000566-0000-0010-8000-00AA006D2EA4}"
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\ADODB.YoursLikeNameStream\\CurVer]
@="ADODB.YoursLikeNameStream.2.80"
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\ADODB.YoursLikeNameStream.2.5]
@="ADODB.YoursLikeNameStream"
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\ADODB.YoursLikeNameStream.2.5\\CLSID]
@="{00000566-0000-0010-8000-00AA006D2EA4}"
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\ADODB.YoursLikeNameStream.2.80]
@="ADODB.YoursLikeNameStream"
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\ADODB.YoursLikeNameStream.2.80\\CLSID]
@="{00000566-0000-0010-8000-00AA006D2EA4}"
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\Scripting.YoursLikeNameDictionary]
@="Scripting.YoursLikeNameDictionary"
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\Scripting.YoursLikeNameDictionary\\CLSID]
@="{EE09B103-97E0-11CF-978F-00A02463E06F}"
ASP代码中调用示例:Set TempFSO = CreateObject("Scripting.YoursLikeNameFSO")
(25)修改3389远程控制PortNumber
[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\WinStations\\RDP-Tcp]
"PortNumber"=dWord:00001f90
[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\Wds\\rdpwd\\Tds\\tcp]
………………….略。查找PortNumber把值改为10进制的相关值即可。
更多精彩
赞助商链接