服务器安全配置

本配置仅适合Win2003,部分内容也适合于Win2000。很多人觉得3389不安全,其实只要设置好,密码够长,攻破3389也不是件容易的事情,我觉得别的远程软件都很慢,还是使用了3389连接。

  经测试,本配置在Win2003 + IIS6.0 + Serv-U + SQL Server 的单服务器多网站中一切正常。以下配置中打勾的为推荐进行配置,打叉的为可选配置。

  一、系统权限的设置

  1、磁盘权限

  系统盘只给 Administrators 组和 SYSTEM 的完全控制权限

  其他磁盘只给 Administrators 组完全控制权限

  系统盘Documents and Settings 目录只给 Administrators 组和 SYSTEM 的完全控制权限

  系统盘Documents and SettingsAll Users 目录只给 Administrators 组和 SYSTEM 的完全控制权限

  系统盘windowssystem32config 禁止guests组

  系统盘Documents and SettingsAll Users「开始」菜单程序 禁止guests组

  系统盘windownssystem32inetsrvdata 禁止guests组

  系统盘WindowsSystem32 at.exe、attrib.exe、cacls.exe、net.exe、net1.exe、netstat.exe、regedit.exe 文件只给 Administrators 组和 SYSTEM 的完全控制权限

  系统盘WindowsSystem32 cmd.exe、format.com 仅 Administrators 组完全控制权限

  把所有(Windowssystem32和WindowsServicePackFilesi386) format.com 更名为 format_nowayh.com

  2、本地安全策略设置

  开始菜单->管理工具->本地安全策略

  A、本地策略-->审核策略

  审核策略更改 成功 失败

  审核登录事件 成功 失败

  审核对象访问失败

  审核过程跟踪 无审核

  审核目录服务访问失败

  审核特权使用失败

  审核系统事件 成功 失败

  审核账户登录事件 成功 失败

  审核账户管理 成功 失败

  B、本地策略-->用户权限分配

  关闭系统:只有Administrators组、其它全部删除。

  通过终端服务拒绝登陆:加入Guests组

  通过终端服务允许登陆:加入Administrators、Remote Desktop Users组,其他全部删除

  C、本地策略-->安全选项

  交互式登陆:不显示上次的用户名 启用

  网络访问:不允许SAM帐户和共享的匿名枚举 启用

  网络访问:不允许为网络身份验证储存凭证 启用

  网络访问:可匿名访问的共享 全部删除

  网络访问:可匿名访问的命全部删除

  网络访问:可远程访问的注册表路径全部删除

  网络访问:可远程访问的注册表路径和子路径全部删除

  帐户:重命名来宾帐户重命名一个帐户

  帐户:重命名系统管理员帐户 重命名一个帐户

  D、账户策略-->账户锁定策略

  将账户设为“5次登陆无效”,“锁定时间为30分钟”,“复位锁定计数设为30分钟”

  二、其他配置

  √·把Administrator账户更改

  管理工具→本地安全策略→本地策略→安全选项

  √·新建一无任何权限的假Administrator账户

  管理工具→计算机管理→系统工具→本地用户和组→用户

  更改描述:管理计算机(域)的内置帐户

  ×·重命名IIS来宾账户

  1、管理工具→计算机管理→系统工具→本地用户和组→用户→重命名IUSR_ComputerName

  2、打开 IIS 管理器→本地计算机→属性→允许直接编辑配置数据库

  3、进入Windowssystem32inetsrv文件夹→MetaBase.xml→右键编辑→找到"AnonymousUserName"→写入"IUSR_"新名称→保存

  4、关闭"允许直接编辑配置数据库"

  √·禁止文件共享

  本地连接属性→去掉"Microsoft网络的文件和打印共享"和"Microsoft 网络客户端"前面的"√"

  √·禁止NetBIOS(关闭139端口)

  本地连接属性→TCP/IP属性→高级→WINS→禁用TCP/IP上的NetBIOS

  管理工具→计算机管理→设备管理器→查看→显示隐藏的设备→非即插即用驱动程序→禁用 NetBios over tcpip→重启

  √·防火墙的设置

  本地连接属性→高级→Windows防火墙设置→高级→第一个"设置",勾选FTP、HTTP、远程桌面服务

  √·禁止ADMIN$缺省共享、磁盘默认共享、限制IPC$缺省共享(匿名用户无法列举本机用户列表、禁止空连接)

  新建REG文件,导入注册表

  Windows Registry Editor Version 5.00

  [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceslanmanserverparameters]

  "AutoshareWks"=dword:00000000

  "AutoShareServer"=dword:00000000

  [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsa]

  "restrictanonymous"=dword:00000001

  √·删除以下注册表主键

  WScript.Network

  WScript.Network.1

  

  WScript.Shell

  WScript.Shell.1

  

  Shell.Application

  Shell.Application.1

  

  √·更改3389端口为12344

  这里只介绍如何更改,既然本端口公布出来了,那大家就别用这个了,端口可用windows自带的计算器将10进制转为16进制,16进制数替换下面两个的dword:后面的值(7位数,不够的在前面补0),登陆的时候用10进制,端口更改在服务器重启后生效。新建REG文件,导入注册表

  Windows Registry Editor Version 5.00

  [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWdsrdpwdTdstcp]

  "PortNumber"=dword:0003038

  [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp]

  "PortNumber"=dword:00003038

  最后别忘了Windows防火墙允许12344端口,关闭3389端口

  √·禁止非管理员使用at命令,新建REG文件,导入注册表

  Windows Registry Editor Version 5.00

  [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsa]

  "SubmitControl"=dword:00000001

  √·卸载最不安全的组件

  运行"卸载最不安全的组件.bat",重启后更名或删掉WindowsSystem32里的wshom.ocx和shell32.dll

  ----------------卸载最不安全的组件.bat-----------------

Wscript.Shell和shell.application的主要作用是可以通过WEB程序调用exe程序,这个权限非常大,一般的网站是用不到这个服务的,但是如果被黑客利用,却能获得更大的权限,对服务器十分危险!(weste)

下面是运行和卸载这两个组件的方法:

1、运行(打开)Wscript.Shell
regsvr32 %windir%\system32\wshom.ocx

2、卸载(关闭)Wscript.Shell
regsvr32 /u %windir%\system32\wshom.ocx

3、运行(打开)Wscript.Shell
regsvr32 %windir%\system32\shell32.dll

4、卸载(关闭)Wscript.Shell
regsvr32 /u %windir%\system32\shell32.dll
 

 

  -------------------------------------------------------

  √·Windows日志的移动

  打开"HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlog"

  Application 子项:应用程序日志

  Security 子项:安全日志

  System 子项:系统日志

  分别更改子项的File键值,再把System32config目录下的AppEvent.Evt、SecEvent.Evt、SysEvent.Evt复制到目标文件夹,重启。

  √·Windows日志的保护

  1、移动日志后的文件夹→属性→安全→高级→去掉"允许父系的继承权限……"→复制→确定

  2、保留System账户和User组,System账户保留除完全控制和修改之外的权限,User组仅保留只读权限

  3、AppEvent.Evt、SysEvent.Evt保留Administrator、System账户和User组,Administrator、System账户保留除完全控制和修改之外的权 限,User组仅保留只读权限;

  DnsEvent.Evt、SecEvent.Evt保留System账户和User组,System账户保留除完全控制和修改之外的权限,User组仅保留只读权限

  √·要手动停止/禁用的服务:Computer Browser、Error reporting service、Microsoft Serch、Print Spooler、Remote Registry、Server 、TCP/IP NetBIOS Helper、Workstation

  √·解决在 IIS 6.0 中,无法下载超过4M的附件(现改为10M)

  停止IIS服务→打开WINDOWSsystem32inetsrv→记事本打开MetaBase.xml→找到 AspBufferingLimit 项→值改为 10485760

  √·设置Web上传单个文件最大值为10 MB

  停止IIS服务→打开WINDOWSsystem32inetsrv→记事本打开MetaBase.xml→找到 AspMaxRequestEntityAllowed 项→值改为 10485760

  ×·重新定位和设置 IIS 日志文件的权限

  1、将 IIS 日志文件的位置移动到非系统分区:在非系统的NTFS分区新建一文件夹→打开 IIS 管理器→右键网站→属性→单击"启用日志 记录"框架中的"属性"→更改到刚才创建的文件夹

  2、设置 IIS 日志文件的权限:浏览至日志文件所在的文件夹→属性→安全→确保Administrators和System的权限设置为"完全控制"

  ×·配置 IIS 元数据库权限

  打开 WindowsSystem32InetsrvMetaBase.xml 文件→属性→安全→确认只有 Administrators 组的成员和 LocalSystem 帐户拥有对元 数据库的完全控制访问权,删除所有其他文件权限→确定

  解释 Web 内容的权限

  打开IIS管理器→右键想要配置的网站的文件夹、网站、目录、虚拟目录或文件

  脚本源文件访问,用户可以访问源文件。如果选择"读",则可以读源文件;如果选择"写",则可以写源文件。脚本源访问包括脚本的源代码 。如果"读"或"写"均未选择,则此选项不可用。

  读(默认情况下选择):用户可以查看目录或文件的内容和属性。

  写:用户可以更改目录或文件的内容和属性。

  目录浏览:用户可以查看文件列表和集合。

  日志访问:对网站的每次访问创建日志项。

  检索资源:允许检索服务检索此资源。这允许用户搜索资源。

  √·关闭自动播放

  运行组策略编辑器(gpedit.msc)→计算机配置→管理模板→系统→关闭自动播放→属性→已启用→所有驱动器

  √·禁用DCOM

  运行Dcomcnfg.exe。控制台根节点→组件服务→计算机→右键单击“我的电脑”→属性”→默认属性”选项卡→清除“在这台计算机上启用分布式 COM”复选框。

  √·启用父路径

  IIS管理器→右键网站→属性→主目录→配置→选项→启用父路径

  √·IIS 6.0 系统无任何动作超时时间和脚本超时时间

  IIS管理器→右键网站→属性→主目录→配置→选项→分别改为40分钟和180秒

  √·删除不必要的IIS扩展名映射

  IIS管理器→右击Web站点→属性→主目录→配置→映射,去掉不必要的应用程序映射,主要为.shtml, .shtm, .stm

  √·增加IIS对MIME文件类型的支持

  IIS管理器→选择服务器→右键→属性→MIME类型(或者右键web站点→属性→HTTP头→MIME类型→新建)添加如下表内容,然后重启IIS,扩展名MIME类型

  .iso application/octet-stream

  .rmvb application/vnd.rn-realmedia

  √·禁止dump file的产生

  我的电脑→右键→属性→高级→启动和故障恢复→写入调试信息→无。

  dump文件在系统崩溃和蓝屏的时候是一份很有用的查找问题的资料(不然我就照字面意思翻译成垃圾文件了)。然而,它也能够给黑客提供 一些敏感信息比如一些应用程序的密码等。

  三、Serv-U FTP服务的设置

  √·本地服务器→设置→拦截"FTP_bounce"攻击和FXP

  对于60秒内连接超过10次的用户拦截5分钟

  √·本地服务器→域→用户→选中需要设置的账号→右边的"同一IP只允许2个登录"

  √·本地服务器→域→设置→高级→取消"允许MDTM命令来更改文件的日期/时间"

  设置Serv-U程序所在的文件夹的权限,Administrator组完全控制,禁止Guests组和IIS匿名用户有读取权限

  服务器消息,自上而下分别改为:

  服务器工作正常,现已准备就绪...

  错误!请与管理员联系!

  FTP服务器正在离线维护中,请稍后再试!

  FTP服务器故障,请稍后再试!

  当前账户达到最大用户访问数,请稍后再试!

  很抱歉,服务器不允许匿名访问!

  您上传的东西太少,请上传更多东西后再尝试下载!

  四、SQL安全设置

  审核指向SQL Server的连接

  企业管理器→展开服务器组→右键→属性→安全性→失败

  修改sa账户密码

  企业管理器→展开服务器组→安全性→登录→双击sa账户

  SQL查询分析器

use master 
EXEC sp_dropextendedproc ‘xp_cmdshell‘ 
EXEC sp_dropextendedproc ‘Sp_OACreate‘ 
EXEC sp_dropextendedproc ‘Sp_OADestroy‘ 
EXEC sp_dropextendedproc ‘Sp_OAGetErrorInfo‘ 
EXEC sp_dropextendedproc ‘Sp_OAGetProperty‘ 
EXEC sp_dropextendedproc ‘Sp_OAMethod‘ 
EXEC sp_dropextendedproc ‘Sp_OASetProperty‘ 
EXEC sp_dropextendedproc ‘Sp_OAStop‘ 
EXEC sp_dropextendedproc ‘Xp_regaddmultistring‘ 
EXEC sp_dropextendedproc ‘Xp_regdeletekey‘ 
EXEC sp_dropextendedproc ‘Xp_regdeletevalue‘ 
EXEC sp_dropextendedproc ‘Xp_regenumvalues‘ 
EXEC sp_dropextendedproc ‘Xp_regread‘ 
EXEC sp_dropextendedproc ‘Xp_regremovemultistring‘ 
EXEC sp_dropextendedproc ‘Xp_regwrite‘ 
drop procedure sp_makewebtask

DECLARE @Object int; DECLARE @HR int; DECLARE @Property nvarchar(255); DECLARE @Return nvarchar(255); DECLARE @Source nvarchar(255), @Desc nvarchar(255); DECLARE @httpStatus int; DECLARE @response varchar(8000); --创建 OLE 对象的实例 EXEC @HR = sp_OACreate N'MSXML2.XMLHTTP.6.0',@Object OUT; IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; RAISERROR('Error Creating COM Component 0x%x, %s, %s',16,1, @HR, @Source, @Desc) GOTO END_ROUTINE END BEGIN --Open EXEC @HR = sp_OAMethod @Object,N'open',Null,'GET','http://localhost:1728/HttpServer/submit.aspx',FALSE; IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; RAISERROR('Open 0x%x, %s, %s',16,1, @HR, @Source, @Desc) GOTO CLEANUP END --setRequestHeader EXEC @HR = sp_OAMethod @Object,N'setRequestHeader',Null,'Content-Type','text/xml'; IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; RAISERROR('setRequestHeader 0x%x, %s, %s',16,1, @HR, @Source, @Desc) GOTO CLEANUP END --send EXEC @HR = sp_OAMethod @Object,N'send',Null,''; IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; RAISERROR('send 0x%x, %s, %s',16,1, @HR, @Source, @Desc) GOTO CLEANUP END --readyState EXEC @HR = sp_OAGetProperty @Object,'readyState', @httpStatus OUT; IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; RAISERROR('readyState 0x%x, %s, %s',16,1, @HR, @Source, @Desc) GOTO CLEANUP END --verify status IF @httpStatus 4 BEGIN RAISERROR('readyState http status bad', 16,1) GOTO CLEANUP END --status EXEC @HR = sp_OAGetProperty @Object,'status', @httpStatus OUT; IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; RAISERROR('getstatus 0x%x, %s, %s',16,1, @HR, @Source, @Desc) GOTO CLEANUP END --verify status IF @httpStatus 200 BEGIN Print Cast(@httpStatus As varchar) RAISERROR('Open http status bad', 16,1) GOTO CLEANUP END --responseText EXEC @HR = sp_OAGetProperty @Object, 'responseText', @response OUT IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; RAISERROR('responseText 0x%x, %s, %s',16,1, @HR, @Source, @Desc) GOTO CLEANUP END Print @response END CLEANUP: BEGIN EXEC @HR = sp_OADestroy @Object; IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; SELECT HR = convert(varbinary(4),@HR),Source=@Source,Description=@Desc; END END END_ROUTINE: RETURN; GO
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值