Windows Server Web服务器安全配置 超完整版.docx
《Windows Server Web服务器安全配置 超完整版.docx》由会员分享,可在线阅读,更多相关《Windows Server Web服务器安全配置 超完整版.docx(14页珍藏版)》请在冰豆网上搜索。
WindowsServerWeb服务器安全配置超完整版
Windows2003ServerWeb服务器安全配置超完整版
发布时间:
2011-6-3
服务器安全防护,我们强烈推荐护卫神;护卫神一直专注服务器安全研究,自主开发入侵防护系统,从黑客入侵的每个环节进行拦截,让服务器和网站不再被入侵。
详细介绍>>>
第一步:
一、先关闭不需要的端口
我比较小心,先关了端口。
只开了338921801433(MYSQL)有些人一直说什么默认的3389不安全,对此我不否认,但是利用的途径也只能一个一个的穷举爆破,你把帐号改
了密码设置为十五六位,我估计他要破上好几年,哈哈!
办法:
本地连接--属性--Internet协议(TCP/IP)--高级--选项--TCP/IP筛选--属性--把勾打上然后添加你需要的端口即可。
PS一句:
设置完端口需要重新启动!
当然大家也可以更改远程连接端口方法:
WindowsRegistryEditorVersion5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\WinStations\RDP-Tcp]
"PortNumber"=dword:
00002683
保存为.REG文件双击即可!
更改为9859,当然大家也可以换别的端口,直接打开以上注册表的地址,把值改为十进制的输入你想要的端口即可!
重启生效!
还有一点,在2003系统里,用TCP/IP筛选里的端口过滤功能,使用FTP服务器的时候,只开放21端口,在进行FTP传输的时候,FTP特有的Port模式和Passive模式,在进行数据传输的时候,需要动态的打开高端口,所以在使用TCP/IP过滤的情况下,经常会出现连接上后无法列出目录和数据传输的问题。
所以在2003系统上增加的windows连接防火墙能很好的解决这个问题,所以都不推荐使用网卡的TCP/IP过滤功能。
所做FTP下载的用户看仔细点,表怪俺说俺写文章是垃圾...如果要关闭不必要的端口,在\\system32\\drivers\\etc\\services中有列表,记事本就可以打开的。
如果懒惰的话,最简单的方法是启用WIN2003的自身带的网络防火墙,并进行端口的改变。
功能还可以!
Internet连接防火墙可以有效地拦截对Windows2003服务器的非法入侵,防止非法远程主机对服务器的扫描,提高Windows2003服务器的安全性。
同时,也可以有效拦截利用操作系统漏洞进行端口攻击的病毒,如冲击波等蠕虫病毒。
如果在用Windows2003构造的虚拟路由器上启用此防火墙功能,能够对整个内部网络起到很好的保护作用。
二、关闭不需要的服务打开相应的审核策略
我关闭了以下的服务
ComputerBrowser维护网络上计算机的最新列表以及提供这个列表
Taskscheduler允许程序在指定时间运行
RoutingandRemoteAccess在局域网以及广域网环境中为企业提供路由服务
Removablestorage管理可移动媒体、驱动程序和库
RemoteRegistryService允许远程注册表操作
PrintSpooler将文件加载到内存中以便以后打印。
要用打印机的朋友不能禁用这项
IPSECPolicyAgent管理IP安全策略以及启动ISAKMP/OakleyIKE)和IP安全驱动程序
DistributedLinkTrackingClient当文件在网络域的NTFS卷中移动时发送通知
Com+EventSystem提供事件的自动发布到订阅COM组件
Alerter通知选定的用户和计算机管理警报
ErrorReportingService收集、存储和向Microsoft报告异常应用程序
Messenger传输客户端和服务器之间的NETSEND和警报器服务消息
Telnet允许远程用户登录到此计算机并运行程序
把不必要的服务都禁止掉,尽管这些不一定能被攻击者利用得上,但是按照安全规则和标准上来说,多余的东西就没必要开启,减少一份隐患。
在"网络连接"里,把不需要的协议和服务都删掉,这里只安装了基本的Internet协议(TCP/IP),由于要控制带宽流量服务,额外安装了Qos数据包计划程序。
在高级tcp/ip设置里--"NetBIOS"设置"禁用tcp/IP上的NetBIOS(S)"。
在高级选项里,使用"Internet连接防火墙",这是windows2003自带的防火墙,在2000系统里没有的功能,虽然没什么功能,但可以屏蔽端口,这样已经基本达到了一个IPSec的功能。
在运行中输入gpedit.msc回车,打开组策略编辑器,选择计算机配置-Windows设置-安全设置-审核策略在创建审核项目时需要注意的是如果审核的项目太多,生成的事件也就越多,那么要想发现严重的事件也越难当然如果审核的太少也会影响你发现严重的事件,你需要根据情况在这二者之间做出选择。
推荐的要审核的项目是:
登录事件成功失败
账户登录事件成功失败
系统事件成功失败
策略更改成功失败
对象访问失败
目录服务访问失败
特权使用失败
三、磁盘权限设置
1.系统盘权限设置
C:
分区部分:
c:
\
administrators全部(该文件夹,子文件夹及文件)
CREATOROWNER 全部(只有子文件来及文件)
system全部(该文件夹,子文件夹及文件)
IIS_WPG创建文件/写入数据(只有该文件夹)
IIS_WPG(该文件夹,子文件夹及文件)
遍历文件夹/运行文件
列出文件夹/读取数据
读取属性
创建文件夹/附加数据
读取权限
c:
\DocumentsandSettings
administrators全部(该文件夹,子文件夹及文件)
PowerUsers(该文件夹,子文件夹及文件)
读取和运行
列出文件夹目录
读取
SYSTEM全部(该文件夹,子文件夹及文件)
C:
\ProgramFiles
administrators全部(该文件夹,子文件夹及文件)
CREATOROWNER全部(只有子文件来及文件)
IIS_WPG(该文件夹,子文件夹及文件)
读取和运行
列出文件夹目录
读取
PowerUsers(该文件夹,子文件夹及文件)
修改权限
SYSTEM全部(该文件夹,子文件夹及文件)
TERMINALSERVERUSER(该文件夹,子文件夹及文件)
修改权限
2.网站及虚拟机权限设置(比如网站在E盘)
说明:
我们假设网站全部在E盘wwwsite目录下,并且为每一个虚拟机创建了一个guest用户,用户名为vhost1...vhostn并且创建了一个webuser组,把所有的vhost用户全部加入这个webuser组里面方便管理。
E:
\
Administrators全部(该文件夹,子文件夹及文件)
E:
\wwwsite
Administrators全部(该文件夹,子文件夹及文件)
system全部(该文件夹,子文件夹及文件)
service全部(该文件夹,子文件夹及文件)
E:
\wwwsite\vhost1
Administrators全部(该文件夹,子文件夹及文件)
system全部(该文件夹,子文件夹及文件)
vhost1全部(该文件夹,子文件夹及文件)
3.数据备份盘
数据备份盘最好只指定一个特定的用户对它有完全操作的权限。
比如F盘为数据备份盘,我们只指定一个管理员对它有完全操作的权限。
4.其它地方的权限设置
请找到c盘的这些文件,把安全性设置只有特定的管理员有完全操作权限。
下列这些文件只允许administrators访问
net.exe
net1.exet
cmd.exe
tftp.exe
netstat.exe
regedit.exe
at.exe
attrib.exe
cacls.exe
5.删除c:
\inetpub目录,删除iis不必要的映射,建立陷阱帐号,更改描述。
四、防火墙、杀毒软件的安装
我见过的Win2000/Nt服务器从来没有见到有安装了防毒软件的,其实这一点非常重要。
一些好的杀毒软件不仅能杀掉一些著名的病毒,还能查杀大量木马和后门程序。
这样的话,“黑客”们使用的那些有名的木马就毫无用武之地了。
不要忘了经常升级病毒库,我们推荐mcafree杀毒软件+blackice防火墙
五、SQL2000SERV-UFTP安全设置
SQL安全方面
1.SystemAdministrators角色最好不要超过两个
2.如果是在本机最好将身份验证配置为Win登陆
3.不要使用Sa账户,为其配置一个超级复杂的密码
4.删除以下的扩展存储过程格式为:
usemaster
sp_dropextendedproc'扩展存储过程名'
xp_cmdshell:
是进入操作系统的最佳捷径,删除
访问注册表的存储过程,删除
Xp_regaddmultistring Xp_regdeletekey Xp_regdeletevalue Xp_regenumvalues
Xp_regread Xp_regwrite Xp_regremovemultistring
OLE自动存储过程,不需要删除
Sp_OACreate Sp_OADestroy Sp_OAGetErrorInfo Sp_OAGetProperty
Sp_OAMethod Sp_OASetProperty Sp_OAStop
5.隐藏SQLServer、更改默认的1433端口
右击实例选属性-常规-网络配置中选择TCP/IP协议的属性,选择隐藏SQLServer实例,并改原默认的1433端口
serv-u的几点常规安全需要设置下:
选中"Block"FTP_bounce"attackandFXP"。
什么是FXP呢?
通常,当使用FTP协议进行文件传输时,客户端首先向FTP服务器发出一个"PORT"命令,该命令中包含此用户的IP地址和将被用来进行数据传输的端口号,服务器收到后,利用命令所提供的用户地址信息建立与用户的连接。
大多数情况下,上述过程不会出现任何问题,但当客户端是一名恶意用户时,可能会通过在PORT命令中加入特定的地址信息,使FTP服务器与其它非客户端的机器建立连接。
虽然这名恶意用户可能本身无权直接访问某一特定机器,但是如果FTP服务器有权访问该机器的话,那么恶意用户就可以通过FTP服务器作为中介,仍然能够最终实现与目标服务器的连接。
这就是FXP,也称跨服务器攻击。
选中后就可以防止发生此种情况。
六、IIS安全设置
IIS的相关设置:
删除默认建立的站点的虚拟目录,停止默认web站点,删除对应的文件目录c:
inetpub,配置所有站点的公共设置,设置好相关的连接数限制,带宽设置以及性能设置等其他设置。
配置应用程序映射,删除所有不必要的应用程序扩展,只保留asp,php,cgi,pl,aspx应用程序扩展。
对于php和cgi,推荐使用isapi方式解析,用exe解析对安全和性能有所影响。
用户程序调试设置发送文本错误信息给户。
对于数据库,尽量采用mdb后缀,不需要更改为asp,可在IIS中设置一个mdb的扩展映射,将这个映射使用一个无关的dll文件如C:
WINNTsystem32inetsrvssinc.dll来防止数据库被下载。
设置IIS的日志保存目录,调整日志记录信息。
设置为发送文本错误信息。
修改403错误页面,将其转向到其他页,可防止一些扫描器的探测。
另外为隐藏系统信息,防止telnet到80端口所泄露的系统版本信息可修改IIS的banner信息,可以使用winhex手工修改或者使用相关软件如banneredit修改。
对于用户站点所在的目录,在此说明一下,用户的FTP根目录下对应三个文件佳,wwwroot,database,logfiles,分别存放站点文件,数据库备份和该站点的日志。
如果一旦发生入侵事件可对该用户站点所在目录设置具体的权限,图片所在的目录只给予列目录的权限,程序所在目录如果不需要生成文件(如生成html的程序)不给予写入权限。
因为是虚拟主机平常对脚本安全没办法做到细致入微的地步,更多的只能在方法用户从脚本提升权限:
ASP的安全设置:
设置过权限和服务之后,防范asp木马还需要做以下工作,在cmd窗口运行以下命令:
regsvr32/uC:
\WINNT\System32\wshom.ocx
delC:
\WINNT\System32\wshom.ocx
regsvr32/uC:
\WINNT\system32\shell32.dll
delC:
\WINNT\system32\shell32.dll
即可将WScript.Shell,Shell.application,WScript.Network组件卸载,可有效防止asp木马通过wscript或shell.application执行命令以及使用木马查看一些系统敏感信息。
另法:
可取消以上文件的users用户的权限,重新启动IIS即可生效。
但不推荐该方法。
另外,对于FSO由于用户程序需要使用,服务器上可以不注销掉该组件,这里只提一下FSO的防范,但并不需要在自动开通空间的虚拟商服务器上使用,只适合于手工开通的站点。
可以针对需要FSO和不需要FSO的站点设置两个组,对于需要FSO的用户组给予c:
winntsystem32scrrun.dll文件的执行权限,不需要的不给权限。
重新启动服务器即可生效。
对于这样的设置结合上面的权限设置,你会发现海阳木马已经在这里失去了作用!
PHP的安全设置:
默认安装的php需要有以下几个注意的问题:
C:
\winnt\php.ini只给予users读权限即可。
在php.ini里需要做如下设置:
Safe_mode=on
register_globals=Off
allow_url_fopen=Off
display_errors=Off
magic_quotes_gpc=On[默认是on,但需检查一遍]
open_basedir=web目录
disable_functions=passthru,exec,shell_exec,system,phpinfo,get_cfg_var,popen,chmod
默认设置com.allow_dcom=true修改为false[修改前要取消掉前面的;]
MySQL安全设置:
如果服务器上启用MySQL数据库,MySQL数据库需要注意的安全设置为:
删除mysql中的所有默认用户,只保留本地root帐户,为root用户加上一个复杂的密码。
赋予普通用户updatedeletealertcreatedrop权限的时候,并限定到特定的数据库,尤其要避免普通客户拥有对mysql数据库操作的权限。
检查mysql.user表,取消不必要用户的shutdown_priv,relo
ad_priv,process_priv和File_priv权限,这些权限可能泄漏更多的服务器信息包括非mysql的其它信息出去。
可以为mysql设置一个启动用户,该用户只对mysql目录有权限。
设置安装目录的data数据库的权限(此目录存放了mysql数据库的数据信息)。
对于mysql安装目录给users加上读取、列目录和执行权限。
Serv-u安全问题:
安装程序尽量采用最新版本,避免采用默认安装目录,设置好serv-u目录所在的权限,设置一个复杂的管理员密码。
修改serv-u的banner信息,设置被动模式端口范围(4001—4003)在本地服务器中设置中做好相关安全设置:
包括检查匿名密码,禁用反超时调度,拦截“FTPbounce”攻击和FXP,对于在30秒内连接超过3次的用户拦截10分钟。
域中的设置为:
要求复杂密码,目录只使用小写字母,高级中设置取消允许使用MDTM命令更改文件的日期。
更改serv-u的启动用户:
在系统中新建一个用户,设置一个复杂点的密码,不属于任何组。
将servu的安装目录给予该用户完全控制权限。
建立一个FTP根目录,需要给予这个用户该目录完全控制权限,因为所有的ftp用户上传,删除,更改文件都是继承了该用户的权限,否则无法操作文件。
另外需要给该目录以上的上级目录给该用户的读取权限,否则会在连接的时候出现530Notloggedin,homedirectorydoesnotexist.比如在测试的时候ftp根目录为d:
soft,必须给d盘该用户的读取权限,为了安全取消d盘其他文件夹的继承权限。
而一般的使用默认的system启动就没有这些问题,因为system一般都拥有这些权限的。
七、其它
1.隐藏重要文件/目录可以修改注册表实现完全隐藏:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Current-Version\Explorer\Advanced\Folder\Hi-dden\SHOWALL”,鼠标右击“CheckedValue”,选择修改,把数值由1改为0
2.启动系统自带的Internet连接防火墙,在设置服务选项中勾选Web服务器;
3.防止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
4.禁止响应ICMP路由通告报文:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\interface
新建DWORD值,名为PerformRouterDiscovery值为0
5.防止ICMP重定向报文的攻击:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
将EnableICMPRedirects值设为0
6.不支持IGMP协议:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
新建DWORD值,名为IGMPLevel值为0
7.修改终端服务端口:
运行regedit,找到[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\Wds\rdpwd\Tds\tcp],看到右边的PortNumber了吗?
在十进制状态下改成你想要的端口号吧,比如7126之类的,只要不与其它冲突即可。
第二处HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\WinStations\RDP-Tcp,方法同上,记得改的端口号和上面改的一样就行了。
8.禁止IPC空连接:
cracker可以利用netuse命令建立空连接,进而入侵,还有netview,nbtstat这些都是基于空连接的,禁止空连接就好了。
打开注册表,找到Local_Machine\System\CurrentControlSet\Control\LSA-RestrictAnonymous把这个值改成”1”即可。
9.更改TTL值:
cracker可以根据ping回的TTL值来大致判断你的操作系统,如:
TTL=107(WINNT);
TTL=108(win2000);
TTL=127或128(win9x);
TTL=240或241(linux);
TTL=252(solaris);
TTL=240(Irix);
实际上你可以自己更改的:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters:
DefaultTTLREG_DWORD0-0xff(0-255十进制,默认值128)改成一个莫名其妙的数字如258,起码让那些小菜鸟晕上半天,就此放弃入侵你也不一定哦。
10.删除默认共享:
有人问过我一开机就共享所有盘,改回来以后,重启又变成了共享是怎么回事,这是2K为管理而设置的默认共享,必须通过修改注册表的方式取消它:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters:
AutoShareServer类型是REG_DWORD把值改为0即可
11.禁止建立空连接:
默认情况下,任何用户通过通过空连接连上服务器,进而枚举出帐号,猜测密码。
我们可以通过修改注册表来禁止建立空连接:
Local_Machine\System\CurrentControlSet\Control\LSA-RestrictAnonymous的值改成”1”即可。
12.禁用TCP/IP上的NetBIOS
网上邻居-属性-本地连接-属性-Internet协议(TCP/IP)属性-高级-WINS面板-NetBIOS设置-禁用TCP/IP上的NetBIOS。
这样cracker就无法用nbtstat命令来读取你的NetBIOS信息和网卡MAC地址了。
13.账户安全
首先禁止一切账户,除了你自己,呵呵。
然后把Administrator改名。
我呢就顺手又建了个Administrator账户,不过是什么权限都没有的那种,然后打开记事本,一阵乱敲,复制,粘贴到“密码”里去,呵呵,来破密码吧~!
破完了才发现是个低级账户,看你崩溃不?
创建2个管理员用帐号
虽然这点看上去和上面这点有些矛盾,但事实上是服从上面的规则的。
创建一个一般权限帐号用来收信以及处理一些日常事物,另一个拥有Administrators权限的帐户只在需要的时候使用。
可以让管理员使用“RunAS”命令来执行一些需要特权才能作的一些工作,以方便管理
14.更改C:
\WINDOWS\Help\iisHelp\common\404b.htm内容改为这样,出错了自动转到首页。
15.本地安全策略和组策略的设置,如果你在设置本地安全策略时设置错了,可以这样恢复成它的默认值
打开%SystemRoot%\Security文件夹,创建一个"OldSecurity"子目录,将%SystemRoot%\Security下所有的.log