Windows 2003服务器安全配置终极技巧 图文教程
程序员文章站
2022-06-27 18:51:59
网上流传的很多关于windows server 2003系统的安全配置,但是仔细分析下发现很多都不全面,并且很多仍然配置的不够合理,并且有很大的安全隐患,今天我决定仔细做下...
网上流传的很多关于windows server 2003系统的安全配置,但是仔细分析下发现很多都不全面,并且很多仍然配置的不够合理,并且有很大的安全隐患,今天我决定仔细做下极端bt的2003服务器的安全配置,让更多的网管朋友高枕无忧。
我们配置的服务器需要提供支持的组件如下:(asp、aspx、cgi、php、fso、jmail、mysql、smtp、pop3、ftp、3389终端服务、远程桌面web连接管理服务等),这里前提是已经安装好了系统,iis,包括ftp服务器,邮件服务器等,这些具体配置方法的就不再重复了,现在我们着重主要阐述下关于安全方面的配置。
关于常规的如安全的安装系统,设置和管理帐户,关闭多余的服务,审核策略,修改终端管理端口, 以及配置ms-sql,删除危险的存储过程,用最低权限的public帐户连接等等,都不说了
先说关于系统的ntfs磁盘权限设置,大家可能看得都多了,但是2003服务器有些细节地方需要注意的,我看很多文章都没写完全。
c盘只给administrators 和system权限,其他的权限不给,其他的盘也可以这样设置,这里给的system权限也不一定需要给,只是由于某些第三方应用程序是以服务形式启动的,需要加上这个用户,否则造成启动不了。
windows目录要加上给users的默认权限,否则asp和aspx等应用程序就无法运行。以前有朋友单独设置instsrv和temp等目录权限,其实没有这个必要的。
另外在c:/documents and settings/这里相当重要,后面的目录里的权限根本不会继承从前的设置,如果仅仅只是设置了c盘给administrators权限,而在all users/application data目录下会 出现everyone用户有完全控制权限,这样入侵这可以跳转到这个目录,写入脚本或只文件,再结合其他漏洞来提升权限;譬如利用serv-u的本地溢出提升权限,或系统遗漏有补丁,数据库的弱点,甚至社会工程学等等n多方法,从前不是有牛人发飑说:"只要给我一个webshell,我就能拿到system",这也的确是有可能的。在用做web/ftp服务器的系统里,建议是将这些目录都设置的锁死。其他每个盘的目录都按照这样设置,没个盘都只给adinistrators权限。
另外,还将:net.exe,cmd.exe,tftp.exe,netstat.exe,regedit.exe,at.exe,attrib.exe,cacls.exe,这些文件都设置只允许administrators访问。
把不必要的服务都禁止掉,尽管这些不一定能被攻击者利用得上,但是按照安全规则和标准上来说,多余的东西就没必要开启,减少一份隐患。
在"网络连接"里,把不需要的协议和服务都删掉,这里只安装了基本的internet协议(tcp/ip),由于要控制带宽流量服务,额外安装了qos数据包计划程序。在高级tcp/ip设置里--"netbios"设置"禁用tcp/ip上的netbios(s)"。在高级选项里,使用"internet连接防火墙",这是windows 2003 自带的防火墙,在2000系统里没有的功能,虽然没什么功能,但可以屏蔽端口,这样已经基本达到了一个ipsec的功能。
这里我们按照所需要的服务开放响应的端口。在2003系统里,不推荐用tcp/ip筛选里的端口过滤功能,譬如在使用ftp服务器的时候,如果仅仅只开放21端口,由于ftp协议的特殊性,在进行ftp传输的时候,由于ftp 特有的port模式和passive模式,在进行数据传输的时候,需要动态的打开高端口,所以在使用tcp/ip过滤的情况下,经常会出现连接上后无法列出目录和数据传输的问题。所以在2003系统上增加的windows连接防火墙能很好的解决这个问题,所以都不推荐使用网卡的tcp/ip过滤功能。
serv-u ftp 服务器的设置:
一般来说,不推荐使用srev-u做ftp服务器,主要是漏洞出现的太频繁了,但是也正是因为其操作简单,功能强大,过于流行,关注的人也多,才被发掘出bug来,换做其他的ftp服务器软件也一样不见得安全到哪儿去。
当然,这里也有款功能跟serv-u同样强大,比较安全的ftp软件:ability ftp server
设置也很简单,不过我们这里还是要迎合大众胃口,说说关于serv-u的安全设置。
首先,6.0比从前5.x版本的多了个修改本地localadministrtaor的密码功能,其实在5.x版本里可以用ultraedit-32等编辑器修改serv-u程序体进行修改密码端口,6.0修补了这个隐患,单独拿出来方便了大家。不过修改了管理密码的serv-u是一样有安全隐患的,两个月前臭要饭的就写了新的采用本地sniff方法获取serv-u的管理密码的exploit,正在网上火卖着,不过这种sniff的方法,同样是在获得webshell的条件后还得有个能在目录里有"执行"的权限,并且需要管理员再次登陆运行serv-u administrator的时候才能成功。所以我们的管理员要尽量避上以上几点因素,也是可以防护的。
另外serv-u的几点常规安全需要设置下:
选中"block "ftp_bounce"attack and fxp"。什么是fxp呢?通常,当使用ftp协议进行文件传输时,客户端首先向ftp服务器发出一个"port"命令,该命令中包含此用户的ip地址和将被用来进行数据传输的端口号,服务器收到后,利用命令所提供的用户地址信息建立与用户的连接。大多数情况下,上述过程不会出现任何问题,但当客户端是一名恶意用户时,可能会通过在port命令中加入特定的地址信息,使ftp服务器与其它非客户端的机器建立连接。虽然这名恶意用户可能本身无权直接访问某一特定机器,但是如果ftp服务器有权访问该机器的话,那么恶意用户就可以通过ftp服务器作为中介,仍然能够最终实现与目标服务器的连接。这就是fxp,也称跨服务器攻击。选中后就可以防止发生此种情况。
另外在"block anti time-out schemes"也可以选中。其次,在"advanced"选项卡中,检查 "enable security"是否被选中,如果没有,选择它们。
iis的安全:
删掉c:/inetpub目录,删除iis不必要的映射
首先是每一个web站点使用单独的iis用户,譬如这里,新建立了一个名为www.315safe.com ,权限为guest的。
在iis里的站点属性里"目录安全性"---"身份验证和访问控制"里设置匿名访问使用下列windows 用户帐户"的用户名密码都使用www.315safe.com 这个用户的信息.在这个站点相对应的web目录文件,默认的只给iis用户的读取和写入权限(后面有更bt的设置要介绍)。
在"应用程序配置"里,我们给必要的几种脚本执行权限:asp.aspx,php,
asp,aspx默认都提供映射支持了的,对于php,需要新添加响应的映射脚本,然后在web服务扩展将asp,aspx都设置为允许,对于php以及cgi的支持,需要新建web服务扩展,在扩展名(x):下输入 php ,再在要求的文件(e):里添加地址 c:/php/sapi/php4isapi.dll ,并勾选设置状态为允许(s)。然后点击确定,这样iis就支持php了。支持cgi同样也是如此。
要支持aspx,还需要给web根目录给上users用户的默认权限,才能使aspx能执行。
另外在应用程序配置里,设置调试为向客户端发送自定义的文本信息,这样能对于有asp注入漏洞的站点,可以不反馈程序报错的信息,能够避免一定程度的攻击。
在自定义http错误选项里,有必要定义下譬如404,500等错误,不过有有时候为了调试程序,好知道程序出错在什么地方,建议只设置404就可以了。
iis6.0由于运行机制的不同,出现了应用程序池的概念。一般建议10个左右的站点共用一个应用程序池,应用程序池对于一般站点可以采用默认设置,
可以在每天凌晨的时候回收一下工作进程。
新建立一个站,采用默认向导,在设置中注意以下在应用程序设置里:执行权限为默认的纯脚本,应用程序池使用独立的名为:315safe的程序池。
名为315safe的应用程序池可以适当设置下"内存回收":这里的最大虚拟内存为:1000m,最大使用的物理内存为256m,这样的设置几乎是没限制这个站点的性能的。
在应用程序池里有个"标识"选项,可以选择应用程序池的安全性帐户,默认才用网络服务这个帐户,大家就不要动它,能尽量以最低权限去运行大,隐患也就更小些。在一个站点的某些目录里,譬如这个"uploadfile"目录,不需要在里面运行asp程序或其他脚本的,就去掉这个目录的执行脚本程序权限,在"应用程序设置"的"执行权限"这里,默认的是"纯脚本",我们改成"无",这样就只能使用静态页面了。依次类推,大凡是不需要asp运行的目录,譬如数据库目录,图片目录等等里都可以这样做,这样主要是能避免在站点应用程序脚本出现bug的时候,譬如出现从前流行的upfile漏洞,而能够在一定程度上对漏洞有扼制的作用。
在默认情况下,我们一般给每个站点的web目录的权限为iis用户的读取和写入,如图:
但是我们现在为了将sql注入,上传漏洞全部都赶走,我们可以采取手动的方式进行细节性的策略设置。
1. 给web根目录的iis用户只给读权限。如图:
然后我们对响应的uploadfiles/或其他需要存在上传文件的目录额外给写的权限,并且在iis里给这个目录无脚本运行权限,这样即使网站程序出现漏洞,入侵者也无法将asp木马写进目录里去,呵呵, 不过没这么简单就防止住了攻击,还有很多工作要完成。如果是ms-sql数据库的,就这样也就ok了,但是access的数据库的话,其数据库所在的目录,或数据库文件也得给写权限,然后数据库文件没必要改成.asp的。这样的后果大家也都知道了把,一旦你的数据库路径被暴露了,这个数据库就是一个大木马,够可怕的。其实完全还是规矩点只用mdb后缀,这个目录在iis里不给执行脚本权限。然后在iis里加设置一个映射规律,如图:
这里用任意一个dll文件来解析.mdb后缀名的映射,只要不用asp.dll来解析就可以了,这样别人即使获得了数据库路径也无法下载。这个方法可以说是防止数据库被下载的终极解决办法了。
我们配置的服务器需要提供支持的组件如下:(asp、aspx、cgi、php、fso、jmail、mysql、smtp、pop3、ftp、3389终端服务、远程桌面web连接管理服务等),这里前提是已经安装好了系统,iis,包括ftp服务器,邮件服务器等,这些具体配置方法的就不再重复了,现在我们着重主要阐述下关于安全方面的配置。
关于常规的如安全的安装系统,设置和管理帐户,关闭多余的服务,审核策略,修改终端管理端口, 以及配置ms-sql,删除危险的存储过程,用最低权限的public帐户连接等等,都不说了
先说关于系统的ntfs磁盘权限设置,大家可能看得都多了,但是2003服务器有些细节地方需要注意的,我看很多文章都没写完全。
c盘只给administrators 和system权限,其他的权限不给,其他的盘也可以这样设置,这里给的system权限也不一定需要给,只是由于某些第三方应用程序是以服务形式启动的,需要加上这个用户,否则造成启动不了。
windows目录要加上给users的默认权限,否则asp和aspx等应用程序就无法运行。以前有朋友单独设置instsrv和temp等目录权限,其实没有这个必要的。
另外在c:/documents and settings/这里相当重要,后面的目录里的权限根本不会继承从前的设置,如果仅仅只是设置了c盘给administrators权限,而在all users/application data目录下会 出现everyone用户有完全控制权限,这样入侵这可以跳转到这个目录,写入脚本或只文件,再结合其他漏洞来提升权限;譬如利用serv-u的本地溢出提升权限,或系统遗漏有补丁,数据库的弱点,甚至社会工程学等等n多方法,从前不是有牛人发飑说:"只要给我一个webshell,我就能拿到system",这也的确是有可能的。在用做web/ftp服务器的系统里,建议是将这些目录都设置的锁死。其他每个盘的目录都按照这样设置,没个盘都只给adinistrators权限。
另外,还将:net.exe,cmd.exe,tftp.exe,netstat.exe,regedit.exe,at.exe,attrib.exe,cacls.exe,这些文件都设置只允许administrators访问。
把不必要的服务都禁止掉,尽管这些不一定能被攻击者利用得上,但是按照安全规则和标准上来说,多余的东西就没必要开启,减少一份隐患。
在"网络连接"里,把不需要的协议和服务都删掉,这里只安装了基本的internet协议(tcp/ip),由于要控制带宽流量服务,额外安装了qos数据包计划程序。在高级tcp/ip设置里--"netbios"设置"禁用tcp/ip上的netbios(s)"。在高级选项里,使用"internet连接防火墙",这是windows 2003 自带的防火墙,在2000系统里没有的功能,虽然没什么功能,但可以屏蔽端口,这样已经基本达到了一个ipsec的功能。
这里我们按照所需要的服务开放响应的端口。在2003系统里,不推荐用tcp/ip筛选里的端口过滤功能,譬如在使用ftp服务器的时候,如果仅仅只开放21端口,由于ftp协议的特殊性,在进行ftp传输的时候,由于ftp 特有的port模式和passive模式,在进行数据传输的时候,需要动态的打开高端口,所以在使用tcp/ip过滤的情况下,经常会出现连接上后无法列出目录和数据传输的问题。所以在2003系统上增加的windows连接防火墙能很好的解决这个问题,所以都不推荐使用网卡的tcp/ip过滤功能。
serv-u ftp 服务器的设置:
一般来说,不推荐使用srev-u做ftp服务器,主要是漏洞出现的太频繁了,但是也正是因为其操作简单,功能强大,过于流行,关注的人也多,才被发掘出bug来,换做其他的ftp服务器软件也一样不见得安全到哪儿去。
当然,这里也有款功能跟serv-u同样强大,比较安全的ftp软件:ability ftp server
设置也很简单,不过我们这里还是要迎合大众胃口,说说关于serv-u的安全设置。
首先,6.0比从前5.x版本的多了个修改本地localadministrtaor的密码功能,其实在5.x版本里可以用ultraedit-32等编辑器修改serv-u程序体进行修改密码端口,6.0修补了这个隐患,单独拿出来方便了大家。不过修改了管理密码的serv-u是一样有安全隐患的,两个月前臭要饭的就写了新的采用本地sniff方法获取serv-u的管理密码的exploit,正在网上火卖着,不过这种sniff的方法,同样是在获得webshell的条件后还得有个能在目录里有"执行"的权限,并且需要管理员再次登陆运行serv-u administrator的时候才能成功。所以我们的管理员要尽量避上以上几点因素,也是可以防护的。
另外serv-u的几点常规安全需要设置下:
选中"block "ftp_bounce"attack and fxp"。什么是fxp呢?通常,当使用ftp协议进行文件传输时,客户端首先向ftp服务器发出一个"port"命令,该命令中包含此用户的ip地址和将被用来进行数据传输的端口号,服务器收到后,利用命令所提供的用户地址信息建立与用户的连接。大多数情况下,上述过程不会出现任何问题,但当客户端是一名恶意用户时,可能会通过在port命令中加入特定的地址信息,使ftp服务器与其它非客户端的机器建立连接。虽然这名恶意用户可能本身无权直接访问某一特定机器,但是如果ftp服务器有权访问该机器的话,那么恶意用户就可以通过ftp服务器作为中介,仍然能够最终实现与目标服务器的连接。这就是fxp,也称跨服务器攻击。选中后就可以防止发生此种情况。
另外在"block anti time-out schemes"也可以选中。其次,在"advanced"选项卡中,检查 "enable security"是否被选中,如果没有,选择它们。
iis的安全:
删掉c:/inetpub目录,删除iis不必要的映射
首先是每一个web站点使用单独的iis用户,譬如这里,新建立了一个名为www.315safe.com ,权限为guest的。
在iis里的站点属性里"目录安全性"---"身份验证和访问控制"里设置匿名访问使用下列windows 用户帐户"的用户名密码都使用www.315safe.com 这个用户的信息.在这个站点相对应的web目录文件,默认的只给iis用户的读取和写入权限(后面有更bt的设置要介绍)。
在"应用程序配置"里,我们给必要的几种脚本执行权限:asp.aspx,php,
asp,aspx默认都提供映射支持了的,对于php,需要新添加响应的映射脚本,然后在web服务扩展将asp,aspx都设置为允许,对于php以及cgi的支持,需要新建web服务扩展,在扩展名(x):下输入 php ,再在要求的文件(e):里添加地址 c:/php/sapi/php4isapi.dll ,并勾选设置状态为允许(s)。然后点击确定,这样iis就支持php了。支持cgi同样也是如此。
要支持aspx,还需要给web根目录给上users用户的默认权限,才能使aspx能执行。
另外在应用程序配置里,设置调试为向客户端发送自定义的文本信息,这样能对于有asp注入漏洞的站点,可以不反馈程序报错的信息,能够避免一定程度的攻击。
在自定义http错误选项里,有必要定义下譬如404,500等错误,不过有有时候为了调试程序,好知道程序出错在什么地方,建议只设置404就可以了。
iis6.0由于运行机制的不同,出现了应用程序池的概念。一般建议10个左右的站点共用一个应用程序池,应用程序池对于一般站点可以采用默认设置,
可以在每天凌晨的时候回收一下工作进程。
新建立一个站,采用默认向导,在设置中注意以下在应用程序设置里:执行权限为默认的纯脚本,应用程序池使用独立的名为:315safe的程序池。
名为315safe的应用程序池可以适当设置下"内存回收":这里的最大虚拟内存为:1000m,最大使用的物理内存为256m,这样的设置几乎是没限制这个站点的性能的。
在应用程序池里有个"标识"选项,可以选择应用程序池的安全性帐户,默认才用网络服务这个帐户,大家就不要动它,能尽量以最低权限去运行大,隐患也就更小些。在一个站点的某些目录里,譬如这个"uploadfile"目录,不需要在里面运行asp程序或其他脚本的,就去掉这个目录的执行脚本程序权限,在"应用程序设置"的"执行权限"这里,默认的是"纯脚本",我们改成"无",这样就只能使用静态页面了。依次类推,大凡是不需要asp运行的目录,譬如数据库目录,图片目录等等里都可以这样做,这样主要是能避免在站点应用程序脚本出现bug的时候,譬如出现从前流行的upfile漏洞,而能够在一定程度上对漏洞有扼制的作用。
在默认情况下,我们一般给每个站点的web目录的权限为iis用户的读取和写入,如图:
但是我们现在为了将sql注入,上传漏洞全部都赶走,我们可以采取手动的方式进行细节性的策略设置。
1. 给web根目录的iis用户只给读权限。如图:
然后我们对响应的uploadfiles/或其他需要存在上传文件的目录额外给写的权限,并且在iis里给这个目录无脚本运行权限,这样即使网站程序出现漏洞,入侵者也无法将asp木马写进目录里去,呵呵, 不过没这么简单就防止住了攻击,还有很多工作要完成。如果是ms-sql数据库的,就这样也就ok了,但是access的数据库的话,其数据库所在的目录,或数据库文件也得给写权限,然后数据库文件没必要改成.asp的。这样的后果大家也都知道了把,一旦你的数据库路径被暴露了,这个数据库就是一个大木马,够可怕的。其实完全还是规矩点只用mdb后缀,这个目录在iis里不给执行脚本权限。然后在iis里加设置一个映射规律,如图:
这里用任意一个dll文件来解析.mdb后缀名的映射,只要不用asp.dll来解析就可以了,这样别人即使获得了数据库路径也无法下载。这个方法可以说是防止数据库被下载的终极解决办法了。
推荐阅读
-
windows 2003服务器安装 IIS6.0和IIS自带FTP服务器图文教程
-
使用远程桌面连接Windows 2003 & 2008服务器详细图文教程
-
Windows 2003 Server web 服务器系统安装图文教程
-
windows2003 DNS服务器配置(图文详解)
-
win2003服务器安全设置教程图文(系统+数据库)
-
Windows 2003 服务器安全设置图文教程
-
windows server 2008 r2 DNS服务器配置图文教程
-
Windows上SSH服务器配置图文教程
-
windows2003 服务器安全配置的建议
-
Windows server 2003证书服务器配置方法(图文)