Windows网站服务器的安全配置.docx
《Windows网站服务器的安全配置.docx》由会员分享,可在线阅读,更多相关《Windows网站服务器的安全配置.docx(31页珍藏版)》请在冰点文库上搜索。
Windows网站服务器的安全配置
Windows2003网站服务器的安全配置
一、系统权限设置
磁盘权限
1、系统盘赋给administrators和system用户组权限,删除其他用户组,其它盘也可以同样设置。
2、Windows目录要加上给users的默认权限,否则ASP和ASPX等应用程序就无法运行。
3、系统盘\DocumentsandSettings目录只给Administrators组和SYSTEM的完全控制权限
4、系统盘\DocumentsandSettings\AllUsers目录只给Administrators组和SYSTEM的完全控制权限
5、系统盘\Windows\System32\cacls.exe、cmd.exe、net.exe、net1.exe、ftp.exe、tftp.exe、telnet.exe、 netstat.exe、regedit.exe、at.exe、attrib.exe、、del文件只给Administrators组和SYSTEM的完全控制权限
6、如果安装了其他运行环境,比如PHP等,则根据PHP的环境功能要求来设置硬盘权限,一般是安装目录加上users读取运行权限就足够了,比如c:
\php的话,就在根目录权限继承的情况下加上users读取运行权限,需要写入数据的比如tmp文件夹,则把users的写删权限加上,运行权限不要,然后把虚拟主机用户的读权限拒绝即可
7、删除c:
\inetpub目录,删除C:
\WINDOWS\Web\printers目录,此目录的存在会造成IIS里加入一个.printers的扩展名,可溢出攻击,删除iisadmpwd目录,该文件夹内文件是用来更改密码之类的脚本,在作服务器的情况下,该文件夹不应该还存在,将其删除。
注意,删除改文件夹的时候需要关闭IIS。
本地安全策略设置
开始菜单—>运行输入gpedit.msc
依次展开计算机配置—>windows设置—>安全设置
A、本地策略——>审核策略
审核策略更改 成功 失败
审核登录事件 成功 失败
审核对象访问 失败
审核过程跟踪 无审核
审核目录服务访问 失败
审核特权使用 失败
审核系统事件 成功 失败
审核账户登录事件 成功 失败
审核账户管理 成功 失败
B、本地策略——>用户权限分配
关闭系统:
只有Administrators组、其它全部删除。
通过终端服务允许登陆:
只加入Administrators,RemoteDesktopUsers组,其他全部删除
C、本地策略——>安全选项
交互式登陆:
不显示上次的用户名 启用
网络访问:
不允许SAM帐户和共享的匿名枚举 启用
网络访问:
不允许为网络身份验证储存凭证 启用
网络访问:
可匿名访问的共享 全部删除
网络访问:
可匿名访问的命名管道 全部删除
网络访问:
可远程访问的注册表路径 全部删除
网络访问:
可远程访问的注册表路径和子路径 全部删除
帐户:
重命名来宾帐户 重命名一个帐户(可选)
帐户:
重命名系统管理员帐户 重命名一个帐户(可选)
D、账户策略-->账户锁定策略
将账户设为“5次登陆无效”,“锁定时间为30分钟”,“复位锁定计数设为30分钟(注:
可根据实际情况设定时间限定)
禁用不必要的服务(注:
可根据实际的情况进行操作)
开始-运行-services.msc
TCP/IPNetBIOSHelper提供TCP/IP服务上的NetBIOS和网络上客户端的NetBIOS名称解析的支持而使用户能够共享
文件、打印和登录到网络
Server支持此计算机通过网络的文件、打印、和命名管道共享
ComputerBrowser维护网络上计算机的最新列表以及提供这个列表
Taskscheduler允许程序在指定时间运行
Messenger传输客户端和服务器之间的NETSEND和警报器服务消息
DistributedFileSystem:
局域网管理共享文件,不需要可禁用
Distributedlinktrackingclient:
用于局域网更新连接信息,不需要可禁用
Errorreportingservice:
禁止发送错误报告
MicrosoftSerch:
提供快速的单词搜索,不需要可禁用
NTLMSecuritysupportprovide:
telnet服务和MicrosoftSerch用的,不需要可禁用
PrintSpooler:
如果没有打印机可禁用
RemoteRegistry:
禁止远程修改注册表
RemoteDesktopHelpSessionManager:
禁止远程协助
Workstation关闭的话远程NET命令列不出用户组
以上是在WindowsServer2003系统上面默认启动的服务中禁用的,默认禁用的服务如没特别需要的话不要启动。
修改注册表
1、隐藏重要文件/目录可以修改注册表实现完全隐藏
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Current-Version\Explorer\Advanced\Folder\Hi-dden\SHOWALL”,鼠标右击“CheckedValue”,选择修改,把数值由1改为0
2、防止SYN洪水攻击
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
新建DWORD值,名为SynAttackProtect,值为2
新建EnablePMTUDiscoveryREG_DWORD0
新建NoNameReleaseOnDemandREG_DWORD1
新建EnableDeadGWDetectREG_DWORD0
新建KeepAliveTimeREG_DWORD300,000
新建PerformRouterDiscoveryREG_DWORD0
新建EnableICMPRedirectsREG_DWORD0
3、禁止响应ICMP路由通告报文
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\interface
新建DWORD值,名为PerformRouterDiscovery值为0
4、防止ICMP重定向报文的攻击
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
将EnableICMPRedirects值设为0
5、不支持IGMP协议
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
新建DWORD值,名为IGMPLevel值为0
6、禁止IPC空连接:
cracker可以利用netuse命令建立空连接,进而入侵,还有netview,nbtstat这些都是基于空连接的,禁止空连接就好了。
Local_Machine\System\CurrentControlSet\Control\LSA-RestrictAnonymous把这个值改成”1”即可。
7、删除默认共享
有人问过我一开机就共享所有盘,改回来以后,重启又变成了共享是怎么回事,这是2K为管理而设置的默认共享,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters:
AutoShareServer类型是REG_DWORD把值改为0即可
8、禁止建立空连接
默认情况下,任何用户通过通过空连接连上服务器,进而枚举出帐号,猜测密码。
我们可以通过修改注册表来禁止建立空连接:
Local_Machine\System\CurrentControlSet\Control\LSA-RestrictAnonymous的值改成”1”即可。
9、建立一个记事本,填上以下代码。
保存为*.bat并加到启动项目中
netsharec$/del
netshared$/del
netsharee$/del
netsharef$/del
netshareipc$/del
netshareadmin$/del
禁止不必要的服务和增强网络连接安全性
把不必要的服务都禁止掉,尽管这些不一定能被攻击者利用得上,但是按照安全规则和标准上来说,多余的东西就没必要开启,减少一份隐患。
在"网络连接"里,把不需要的协议和服务都删掉,这里只安装了基本的Internet协议(TCP/IP),由于要控制带宽流量服务,额外安装了Qos数据包计划程序。
在高级tcp/ip设置里--"NetBIOS"设置"禁用tcp/IP上的NetBIOS(S)"。
二、IIS和WEB站点文件夹权限配置
首先在D:
根目录新建一个wwwroot文件夹,用来做为WEB服务器站点的根目录,里面存放不同网站的文件夹。
例如新建第一个网站存放文件的目录phpwind,为了杜绝跨站攻击等各种相关安全问题,实现各个虚拟主机目录有独立权限的访问机制,我们要给每个目录分配一个匿名访问的用户帐号。
依次右击桌面我的电脑----->管理------>本地用户与组,然后新建一个用户phpwind,选中用户不能更改密码和密码永不过期,去掉其余两项复选。
新增用户后因为默认新增用户自动加入Users组内,要分别去除掉它们User组的权限,并
重新分别把它们只归属于Guests组,这一步一定要记住了,安全问题很关键。
在wwwroot下新建文件夹phpwind,赋予networkserver及phpwind用户读取权限
在PHPwind下新建三个文件夹分别命名为web、db、log。
赋予db文件夹networkserver读取权限,phpwind读取写入权限;赋予log文件夹phpwind读取写入权限;赋予web文件夹network读取写入权限,phpwind读取写入权限。
所有文件夹取消允许父项的继承权限传播到该对象和所有子对象
iis新建FTP虚拟目录指向phpwind文件夹,赋予读取写入权限
iis新建站点,目录安全性添加phpwind用户
在应用程序扩展栏中删除必须之外的任何无用映射,只保留你确实需要用到的文件类型,比如ASP,ASPX,shtml等
对于php以及CGI的支持,需要新建web服务扩展,在扩展名(X):
下输入php,再在要求的文件(E):
里添加地址C:
/php/sapi/php4isapi.dll,并勾选设置状态为允许(S)。
然后点击确定,这样IIS就支持PHP了。
支持CGI同样也是如此。
另外在应用程序配置里,设置调试为向客户端发送自定义的文本信息,这样能对于有ASP注入漏洞的站点,可以不反馈程序报错的信息,能够避免一定程度的攻击。
在应用程序配置中,设置选项,启用父路径
可在IIS管理面板中的自定义错误栏修改404错误页的HTML文件路径并做相应修改。
(注:
其内容根据自己的实际情况填写)
自定义web站点的日志目录
修改上传文件的大小
Windowsserver2003服务器,当上传文件过大(超过200K)时,提示错误号2147467259。
原因是IIS6.0默认配置把上传文件限制在200k,超过即出错。
解决方法如下:
首先,停止以下服务:
IISadminservice
WorldWideWebPublishingService
HTTPSSL
然后找到:
C:
\Windows\system32\inesrv\metabase.xml\Windows\system32\inesrv\
编辑文件metabase.xml(不要用写字板,要用记事本编辑,否则容易出错。
)
找到:
ASPMaxRequestEntityAllowed默认为204800(200k),改成需要的!
保存。
最后,启动上面被停止的服务,就完成了!
注:
可能会碰到metabase.xml文件不能被保存,原因是你的服务未停干净,建议重启以后再进行上面的操作。
FTP服务器安全权限配置
FTP服务器端软件采用SERV-U6.0.2软件,安装并进行汉化(如果你的e文足够强,汉化
就可免了)。
这里主要讲SERV-U的安全设置,所以不会花费太多的功夫来介绍安装,只说一下要点。
SERV-U默认是安装在C:
\ProgramFiles\Serv-U目录下的,我们最好做一下变动。
安装并汉化完成后,启动主界面
点击“设置/更改密码”,因为是第一次使用,所以是没有密码的,也就是说原来的密码为空
不用在旧密码里输入字符,直接在下面的新密码和重复新密码里输入同样的密码再点OK就可以
了。
这里建议设置一个足够复杂的密码,以防止别人暴力破解。
自己记不得也没有关系,只要把ServUDaemon.ini里的LocalSetupPassword=这一行清除并保存,再次运行ServUAdmin.exe就不会提示你输入密码登录了。
Serv-U6.0.2还是存在有本地提升权限缺陷,ServUAdmin.exe是ftpserver管理界面,由
于ServUAdmin.exe对异常的不正确处理,导致在Serv-U被注册为系统服务的情况下,本地普
通用户进行权限提升,得到超级用户的权限。
远程用普通用户权限,可以通过3389登陆的也可
以进行提升。
要解决这个问题需要给程序动一下手术。
serv-u默认管理账号是LocalAdministrator,默认密码是"#l@$ak#.lk;0@P",这个密码在
同一个版本中是固定的,也许在不同的版本中也是固定的。
我们找来Ultraedit,开始动手术。
用Ultraedit打开ServUDaemon.exe查找Ascii:
LocalAdministrator,把默认的管理员帐号改成其它同长度的字符串就可以了。
#l@$ak#.lk;0@P的意思是指空密码,这个可以不用改动,ServUAdmin.exe也一样处理即可。
做完上面这一步,同时还要注意设置Serv-U安装目录的权限,不要让IIS匿名用户有读取的权限,否则别人下载走这两个文件,一样可以分析出你的管理员名和密码。
下面开始对SERV-U进行安全设置。
首先建立一个WINDOWS系统账号ServFTP,密码也需要足够的复杂。
密码要记住,配置系统服务启动权限时还要用到。
建好账号以后,双击建好的用户编辑用户属性,从“隶属于”里删除USERS组。
这里我们已经建好了账号。
现在就要用到刚才建立的这个账号。
打开管理工具中的服务。
在“Serv-UFTPServer服务”上右击选择属性继续。
然后点击“登录”进入登录账号选择界面。
选择刚才建立的系统账号名,并在下面重复输入2次该账号的密码,然后点“应用”,再次点确定,完成服务的设置。
接下来要先使用FTP管理工具建立一个域,再建立一个账号,建好后选择保存在注册表
接着,打开注册表来设置相应的权限,否则SERV-U是没办法启动的。
在开始->运行里输入regedt32点“确定”继续。
找到[HKEY_LOCAL_MACHINE\SOFTWARE\CatSoft]分
支。
在上面点右键,选择权限,然后点高级,取消[允许父项的继承权限传播到该对象和所有子对象,包括那些在此明确定义的项目]选项,点击“应用”继续,接着删除所有的账号。
接着点击添加按钮增加系统管理员Administrator帐号和我们建立的ServFTP账号到该子键的权限列表里,并给予完全控制权限。
到这里注册表已经设置完了。
接着再进行安装目录的权限设置。
现在就来设置一下,只保留你的系统管理员账号和ServFTP账号,并给予ServFTP帐号除了完全控制外的所有权限。
现在,打开管理工具的服务,重启Serv-UFTPServer服务就可以正常启动了。
当然,到这里还没有完全设置完,你的FTP用户因为没有权限还是登录不了的,所以还要设置一下FTP目录的权限。
假设网站目录是在d:
\wwwroot\WebSite1。
那么在这个目录的“安全”里除了Administrator管理员帐号和IIS用户,别的都删除掉,再加入ServFTP账号,切记SYSTEM账号也删除掉。
为什么要这样设置呢?
因为现在已经是用ServFTP账号启动的SERV-U,而不是用SYSTEM权限启动的了,所以访问目录不再是用SYSTEM而是用ServFTP,此时SYSTEM已经没有用了,这样就算真的溢出也不可能得到SYSTEM权限。
另外,d:
\wwwroot目录还要设置允许ServFTP账号的浏览和读取权限。
接着,我们在Serv-U域中建立一个FTP访问用户,按提示输入FTP用户名(例
如:
WebSite1_User1)和密码,接着选择d:
\wwwroot\WebSite1目录做为该用户的访问初始主目录,下一步,选择锁定用户于主目录,
点击完成。
这样在Serv-U域的用户栏中就出现了刚才WebSite1_User1用户,点击该用户,右侧出现相关FTP帐户的配置。
帐号页可以设置什么时候自动锁定该用户,通常用于收费的虚拟主机用户管理。
我想很多虚拟主机管理软件也是通过调用相关的配置文件进行FTP用户帐户管理的。
通常这一页面不需要更改。
在常规页可进行限制用户的上传下载速度,连接数,用户数等,比如限制同一IP的登数,可以限制一个用户同时下载的线程,适当的配置可减少服务器的承载。
在目录访问选项卡中,可以配置FTP帐户的读写目录权限,除了执行功能,通常应用于WEB目录管理全部开放
IP访问和上传/下载率跟据你的需求自己定制,一般默认即可。
功能比较有用的是配额功能,通常应用于虚拟主机的空间大小限制和管理。
另外,一般情况下禁止对FTP服务的匿名访问,如果允许对FTP服务做匿名访问,该匿名
帐户就有可能被利用来获取更多的信息,以致对系统造成危害。
至此,FTP服务器设置全部结束。
服务器上的FTP服务器主要是为WEB(IIS)服务器做
文件管理和维护使用,经过这样的配置,FTP与IIS使用不同的访问账号,WEB访问用户不管通过FSO或木马,都不可能访问SERV-U的安装目录,并且WEB站点目录(d:
\wwwroot\WebSite1)没有给予SYSTEM权限,所以SYSTEM账号也同样访问不了WEB目录,比如说,即使使用MSSQL得到备份的权限,拥有了SYSTEM的权限,也不能备份SHELL到你的WEB目录进行利用。
从现在开始,你可以安全的使用SERV-U了。