为了使我们这些程序员的日子比较好过,为了使我们高玄的心可以放下,希望对大家有所帮助。
安装WindowsNT
要想有效的建立一个安全的WindowsNT服务器,必须从安装是开始做起。如果已经安装了带文件分配表(FAT)的
WindowsNT,建议重新安装。
1. 安装一台干净的系统;系统在安装和配置时应该与公网断开,如果需要连接到网络,则需要保证网络是一个隔离的可
信任的网段;
2. 建议安装Windows NT4.00 US-ENGLISH;(原因:1.USA对PRC出口加密产品的限制,例如只允许出口IE (40bitRAS SSL)
到PRC 。2.MicroSoft对PRC用户的歧视。3.Microsft 产品一般只对English版本进行严格测试。4.双字节字符编码的特殊
性
(在NT4.0+SP4+IIS4.0版本中使用asp时,使用 http://www.xxx.org/test/ok.asp%
81 就可看到ok.asp的原码,其原因就是IIS不能正确处理%81这个半汉字字符)。不要
安装其他的操作系统,以免他人从别的系统上修改你的NT系统。只用NTFS文件系统;
3. 安装NT Server时选择独立成员服务器(Stand-Alone);服务器不能加入到域环境中;不安装IIS2.0,如果你想安装
IIS,可从选件包安装(NT Option pack)。
4. 在网络协议与服务中,只安装TCP/IP,不安装其它附加的网络服务。
安装其它软件
服务器就是专门做服务的,不要什么软件都装,因为由第三方软件产生的漏洞也很多,选几个必须的装上就可以了!
1. 安装第三方软件(如IIS4.0)
2. 安装最后的服务包。(目前是SP6)
3. 安装可以使用的热修补包(Hotfixes)ftp://ftp.microsoft.com/bussys/winnt/winntpublic/fixes/usa/nt40
删除不用的网络服务
多余的网络服务有时候也能产生安全问题。
打开控制板中的网络控制,删除所有网络服务,只保留RPC Configuration (RPCSS:for Port Mapper),IIS需要这种服
务。
删除工作站服务后(Workstation service),每次启动网络应用时,系统会弹出一个Message Box: “Windows NT
Networking is not Installed.Do you want to
install it now?” ,选择“No”.另一个问题是usrmgr.exe不能工作,可用工作站版的musrmgr.exe 代替。
Disable NETBIOS
不监听NETBIOS 端口,所有网卡上不绑定WINS Client
Network->Bindings->All protocola->WINS Client->Disable.
Disable WINS Client Driver
Control Panel->Devices->WINS Client->Disable
配置TCP/IP过滤
这样做你可能有很多服务被禁止,但可以减少许多许多不必要的麻烦,具体配置的方法是:控制面板->网络->协议-
.TCP/IP协议->属性->高级->启用安全机制->配置,你可以这样配置:TCP Ports 80和443(SSL的端口);不允许UDP端
口;IP协议6,这是一个典型的安全配置,推荐使用,但是,一定要知道你必须的其他服务的端口号并开启它,不然你的服
务也就被禁止了。NT系统重要的服务所使用的端口号见附录
使不用的服务Disable
除了以下服务外,关闭其它服务
EventLog
NT LM Security Support Privider
Plug and Play
Protected Storage
Remote Procedure All(RPC) Service
应运行的进程
smss.exe Session Manager
csrss.exe Client Server Subsystem
winlogon.exe The login Process
services.exe The Main service handler Process
pstores.exe Protected Storage
lsass.exe Local Security Authority
rpcss.exe The PRC end-point mapper
explorer.exe The Explorer GUI
loadwc.exe Explorer related
nddeagnt.exe Explorer related
加密系统帐号数据库
运行syskey.exe实用程序,它对帐号数据库提供附加保护,防止Crack工具直接提取用户信息
应用策略与访问控制列表
在命令行中运行微软安全配置编辑器(SCE),这一工具是NT SP4 CD中的一部分,在本文档的附件中有一配置Baston主机
的文件baston.inf。ASCII文本文件。
C:> secedit /configure /cfg baston.inf /db %TEMP%\secedit.sdb /verbose /log %TEMP%\scelog.txt
这一过程将改变很多系统配置,下面是其中主要变量:
Account Policies
Password Policy
Enhance password uniqueness by Remembering last passwords 6
Minimum password age 2
Maximum password age 42
Minimum password length 10
Complex Passwords(passfilt.dll) Enabled
User must logon to change password Enabled
Account lockout policy
Account lockout count 5
Reset lockout count after 720mins
Local Policies
Audit Policy
Audit object
Audit Process tracking
事件记录设置(EventLog)
应用、系统、安全记录文件大小设为100MB以上,匿名访问记录文件不允许。
[System Log]
MaximumLogSize = 100032
AuditLogRetentionPeriod = 1
RetentionDays = 30
RestrictGuestAccess = 1
[Security Log]
MaximumLogSize = 100032
AuditLogRetentionPeriod = 1
RetentionDays = 30
RestrictGuestAccess = 1
[Application Log]
MaximumLogSize = 100032
AuditLogRetentionPeriod = 1
RetentionDays = 30
RestrictGuestAccess = 1
注册表值
MACHINE\Software\Microsoft\Windows
NT\CurrentVersion\Winlogon\ShutdownWithoutLogon=1,0
MACHINE\System\CurrentControlSet\Control\Lsa\
FullPrivilegeAuditing=3,31
MACHINE\System\CurrentControlSet\Control\Lsa\SubmitControl=4,0
MACHINE\System\CurrentControlSet\Control\Lsa\AuditBaseObjects=4,1
MACHINE\Software\Microsoft\Windows
NT\CurrentVersion\Winlogon\AllocateCDRoms=1,1
MACHINE\Software\Microsoft\Windows
NT\CurrentVersion\Winlogon\AllocateFloppies=1,1
MACHINE\Software\Microsoft\Windows
NT\CurrentVersion\Winlogon\CachedLogonsCount=1,0
MACHINE\System\CurrentControlSet\Control\Session Manager\Memory
Management\ClearPageFileAtShutdown=4,1
MACHINE\System\CurrentControlSet\Control\Lsa\CrashOnAuditFail=4,1
MACHINE\Software\Microsoft\Windows
NT\CurrentVersion\Winlogon\DontDisplayLastUserName=1,1
MACHINE\Software\Microsoft\Windows
NT\CurrentVersion\Winlogon\LegalNoticeCaption=1,Hardened by HP
Consulting
MACHINE\Software\Microsoft\Windows
NT\CurrentVersion\Winlogon\LegalNoticeText=1,This is a private system.
Unauthorized use is prohibited.
MACHINE\System\CurrentControlSet\Control\Lsa\LmCompatibilityLevel=4,5
MACHINE\System\CurrentControlSet\Control\Session
manager\ProtectionMode=4,1
MACHINE\System\CurrentControlSet\Control\Lsa\RestrictAnonymous=4,1
MACHINE\System\CurrentControlSet\Services\Netlogon\Parameters\
SignSecureChannel=4,1
MACHINE\System\CurrentControlSet\Services\Netlogon\Parameters\
SealSecureChannel=4,1
MACHINE\System\CurrentControlSet\Services\Netlogon\Parameters\
RequireSignOrSeal=4,1
MACHINE\System\CurrentControlSet\Services\Rdr\Parameters\
EnableSecuritySignature=4,1
MACHINE\System\CurrentControlSet\Services\Rdr\Parameters\
RequireSecuritySignature=4,1
MACHINE\System\CurrentControlSet\Services\LanManServer\
Parameters\AutoShareWks=4,0
MACHINE\System\CurrentControlSet\Services\LanManServer\Parameters\
AutoShareServer=4,0
MACHINE\System\CurrentControlSet\Services\LanManServer\Parameters\
EnableSecuritySignature=4,1
MACHINE\System\CurrentControlSet\Services\LanManServer\Parameters\
RequireSecuritySignature=4,1
MACHINE\System\CurrentControlSet\Services\LanManServer\Parameters\
EnableForcedLogOff=4,1
MACHINE\System\CurrentControlSet\Services\LanManServer\Parameters\
AutoDisconnect=4,15
MACHINE\System\CurrentControlSet\Services\Rdr\Parameters\
EnablePlainTextPassword=4,0
MACHINE\System\CurrentControlSet\Control\Print\Providers\
LanMan Print Services\AddPrintDrivers=4,1
MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\
DisableIPSourceRouting=4,1
删除不用的和有潜在危险的组件
删除DOS,WIN16,/OS/2和Posix子系统
MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems\Optional 0000
MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems\
Os2 Remove it
MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems\Posix Remove it
MACHINE\System\CurrentControlSet\Control\Session Manager\WOW Remove it
删除以下文件:
%SystemRoot%\system32\ntvdm.exe
%SystemRoot%\system32\krnl386.exe
%SystemRoot%\system32\psxdll.dll
%SystemRoot%\system32\psxss.exe
%SystemRoot%\system32\posix.exe
%SystemRoot%\system32\os2.exe
%SystemRoot%\system32\os2ss.exe
%SystemRoot%\system32\os2srv.exe
%SystemRoot%\system32\os2 (directory)
删除以下具有潜在危险的工具
%SystemRoot%\system32\nbtstat.exe
%SystemRoot%\system32\tracert.exe
%SystemRoot%\system32\telnet.exe
%SystemRoot%\system32\tftp.exe
%SystemRoot%\system32\rsh.exe
%SystemRoot%\system32\rcp.exe
%SystemRoot%\system32\rexec.exe
%SystemRoot%\system32\finger.exe
%SystemRoot%\system32\ftp.exe
%SystemRoot%\system32\lpq.exe
%SystemRoot%\system32\lpr.exe
改变目录的默认权限
安装完NT后,默认地,每个目录都赋予了everyone组完全控制的权限,作为一个服务器放到Internet上,每个人都知道这
很危险,可是很多目录将其权限改变后很容易导致机器无法启动
首先删除everyone组,访问页面的用户名默认设置成IUSR_Machinename,只要给IUSR_Machinename以下权限就可以 IIS 很
好地工作了:
目录:Inetpub\Wwwroot
READ (RX)
目录:%SystemRoot%
READ (RX)
目录:%SystemRoot%\System32
READ (RX)
目录:%SystemRoot%\System32\Inetsrv
READ (RX)
目录:%SystemRoot%\System32\Inetsrv\Asp (and all subdirectories)
READ (RX)
目录:<Drive:>\Program Files\Common Files (and all
subdirectories)
READ (RX)
当然,还要给管理员和其它用户相应的权限!
删除你的网络共享,
你可以使用这样的命令net share /d,那些为了管理而设置的共享就必须通过
修改注册表的方法来实现了,HKEY_LOCAL_MACHINE\SYSTEM
\CurrentControlSet\Control\Services\LanmanServer\Parameters 的
AutoShareServer设置为0
严格审核Success/Failed Logon/Logoff日志,
修改办法:域用户管理器->规则->审核
隐藏上次登陆用户名
修改注册表HKEY_LOCAL_MACHINE\SOFTWARE \Microsoft\Windows NT\Current
Version\Winlogon 中的 DontDisplayLastUserName改为0
设定用户的口令长度
一般可以设到9位,密码位数到了这个数字再被猜出的可能性就很小了(除非弱智使用123456789之类的密码);关闭guest帐
号,将Administrator帐号改名,并为管理员设置一个强壮的口令
禁止允许未认证的用户进入网络列举域内用户
修改HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA 中的RestrictAnonymous ,将它的值改为1
关闭 NTFS 生成 8.3 文件名格式
为了向后兼容 16 位应用程序,NTFS 可以自动生成 8.3 文件名格式,16 位应用程序不应该运行在一个安全的 Web 服务
器上, 8.3 文件名格式可以安全地关闭掉。 也要注意, 关闭此项可以获得性能方面的好处
在HKEY_LOCAL_MACHINE\SYSTEM \CurrentControlSet\Control\FileSystem 中将
NtfsDisable8dot3NameCreation的值设为“1”。
系统引导时间设置为 0 秒
到 控制面板(专业提供视频软件下载)
系统 (专业提供视频软件下载)
启动/关闭 中,设置 "列表显示" 为0
锁定只允许管理员连接的网络
正常情况下,如果有骇客试图猜出 Administrator 口令, Administrator 帐号不会被锁定。然而,Windows NT Resource
Kit 提供的 PASSPROP 工具支持这个配置。如果你运行以下命令,那么在有骇客试图用较暴力的方式或使用字典攻击你
时,则 Administrator帐号将会被锁定。但是,管理员仍然可以在本地服务器上登陆: passprop /adminlockout
阻止未授权访问注册表
注册表编辑器支持远程 Windows NT 注册表访问。要想限制从网络访问注册表可使用注册表编辑器建立以下注册键
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurePipeServers
\winreg设置在这个键上的ACL安全权限定义了哪些用户或组可以联结到系统上进行远程注册表访问
下面是WindowsNT的搭档IIS 4.0的一些安全配置方法
安装一个能满足你需要的最小的IIS
设置正确的Server访问控制权限
.EXE, .CGI,.DLL, .CMD, .PL 权限设置Everyone (X),Administrators
(Full Control),System (Full Control)
.ASP 的权限设置 Everyone (X),Administrators (Full Control),
System (Full Control)
.INC, .SHTML, .SHTM 的权限设置Everyone (X),Administrators
(Full Control),System (Full Control)
.HTML, .GIF, .JPEG的权限设置 Everyone (R),Administrators
(Full Control),System (Full Control) 。
正确设置虚拟目录,建议把默认安装后的那些虚拟目录删除IIS --
c:\inetpub\iissamples,IIS SDK--c:\inetpub\iissamples\sdk,Admin
Scripts--c:\inetpub\AdminScripts,Data access--c:\Program Files\
Common Files\System\msadc\Samples,这些目录将给你的系统带来不必要的麻烦。
正确设置IIS日志访问权限,ACL:Administrators (Full Control),System
(Full Control)。
适当地设置IP拒绝访问列表,防止有些讨厌的家伙攻击你的Server。
设置并使用Secure Sockets Layer
删除一些你用不上的组件,regedit XXX.dll /u。
删除这个虚拟目录IISADMPWD,因为它允许你重新设置你的管理员口令,实在是比较危险,还是不要的好。
删除一些不必要的Scipt Mapping,象.htr,.idc,. .htw .shtm, .stm, .shtml,都可以在IIS服务管理器删除。
禁止RDS的支持,因为最近发现了一个他的bug,所以最好还是禁用的好,禁用办法:删除注册表中这三个键,
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters
\ADCLaunch\RDSServer.DataFactory ;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\
ADCLaunch\AdvancedDataFactory ;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\
ADCLaunch\VbBusObj.VbBusObjCls 。
使用IIS登陆日志,每天记录客户IP地址,用户名,服务器端口,方法,URI字根,HTTP状态,用户代理。
在你的ASP页面中加入对<FORM>输入的检测,很多站点使用input语句从客户方 获取所需数据以调用其它代码或是直接建立
SQL 语句。换句话说,他们认为输入的是合法数值、格式也对没有恶意的输入。 不该这样做,有很多攻击方式是针对它
的,特别要注意的是在UNIX平台上,用户输入的不正确数据被认做合法数据来处理, 这样用户不是获得了对服务器的访问
权限就是给系统造成损害。你应该在把用户数据传送到其它进程或在调用可能使用外部资源如文件系统或数据库之前总要
对所有用户在 <FORM> 中的输入进行检查。
可以使用新版 JScript 和 VBScript 正规表达式来处理输入的文字,以下所示代码会把字符串中无效字符(不是0-9a-zA-Z
和_)分离出来。
Set reg = New RegExp
reg.Pattern = "\W+" ' One or more characters which are NOT
0-9a-zA-Z or '_'
strUnTainted = reg.Replace(strTainted, "")
以下例子会把所有位于(专业提供视频软件下载)
操作符后面的文字分解开:
Set reg = New RegExp
reg.Pattern = "^(.+)\(专业提供视频软件下载)
(.+)" ' Any character from the start
of the string to a '(专业提供视频软件下载)
'
strUnTainted = reg.Replace(strTainted,"$1")
这种新式句法类似 Perl 5.0 中的规定,参考http://www.microsoft.com/
jscript 处的 v5 脚本引擎文档以获得详细说明,例子可在http://msdn.microsoft.com/workshop/languages/clinic/
scripting051099.asp 找到
禁止”Parent Paths”, 父目录允许你使用'..' 来调用类 似 MapPath 这样的函数,默认情况是启用了该项设置 ,它应
该被禁用掉,要想禁用此项设置,可以来到有疑问Web站点的root下, 点击右键选择属性 (专业提供视频软件下载)
Home 目录 (专业提供视频软件下载)
配置 (专业提供视频软件下载)
应用程
序设置 并把启用父目录项取消HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters
的 SSIEnableCmdDirective设置为1禁止远程调用command shell。
现在你的系统已相当地安全,通过网络进入系统的唯一途径是利用运行在系统上应用软件(也可能是MS的IP Stack)中存
在的弱点,执行一些危险代码,破坏系统安全特性(?)。
经过上述配置的系统从管理或普通应用角度来说,基本上不能操作。WINNT不提供远程注册功能(如UNIX Telnet)。NT的
管理工具象事件查看器和服务器管理器都是基于NETBIOS,而NETBIOS存在的问题使其不会被用于网络边界环境(SMB/CIFS,
管理和其它应用使用命名管道:Named pipes),你不可能在路由器访问控制列表中制定合理安全控制来分离这些使用同一
端口的应用。因此需要找到其他的方式来管理和监视WINDOWS NT主机。
附件Windows NT 4.0 使用的端口号列表
Browsing UDP:137.138
DHCP Lease UDP:67,68
DHCP Manager TCP:135
Directory Replication UDP:138 TCP/139
DNS Administration UDP/53
Event Viewer TCP:139
File Sharing TCP:139
Logon Sequence UDP:137,138 TCP139
NetLogon UDP:138
Pass Through Validation UDP:137,138 TCP:139
Performance Monitor TCP:139
PPTP TCP:1723 IP Protocol:47(GRE)
Printing UDP:137,138 TCP 139
Registry Editor TCP 139
Server Manager TCP:139
Trusts UDP:137,138 TCP:139
User Manager TCP:139
Winnt diagnostics TCP:139
WinnT Secure Channel UDP:137,138 TCP:139
WINS Replication TCP:42
WINS Manager TCP:135
WINS Registration TCP:137
Exchange
Client/Server Comm. TCP:135
Exchange Administrator TCP:135
IMAP TCP:143
IMAP(SSL) TCP:993
LDAP TCP:389
LDAP(SSL) TCP:636
MTA-X.400 Over TCP/IP TCP:102
POP3 TCP:110
POP3(SSL) TCP:995
RPC TCP:135
SMTP TCP:25
NNTP TCP:119
NNTP(SSL) TCP:563
Terminal Server
RDP Client (Microsoft) TCP:3389(pre Beta2:1503)
ICA Client (Citrix) TCP:1494
DCOM RPC高端口
缺省状态下DCOM为每个进程动态分配一个高端口(>1023),你可以限制端口映射范围,根据DCOM与外部连接的进程数来决
定在防火墙上允许的端口数,并且在防火墙上打开对应的TCP/UDP端口号,同时需要打开TCP/UDP 135。
另外,需要通过注册表主键告诉DCOM那些端口被保留。
HKEY_LOCAL_MACHINES\Software\Microsoft\Rpc\Internet
一个例子
将DCOM限制在10个端口内
Named value:Ports
Type :REG_MULTI_SZ
Setting :Rang of port.Can be multiple lines such as :3001-3010 135.
Named Value: PortInternetAvailable
Type :REG_MULTI_AZ
Setting :”Y”
Named Value: UseInternetPorts
Type :REG_MULTI_AZ
Setting :”Y”
……