年前一直在赶项目,到最后几日才拿到新服务器新添加的硬盘,重做阵列配置生产环境,还要编写部署文档做好安全策略,交给测试部门与相关部门做上线前最后测试,然后将部署文档交给相关部门同事,让他根据部署文档再做一次系统,以保证以后其他同事能自己正常部署服务器,最后终于赶在放假前最后一天匆忙搞定测试后,简单的指导同事按部署文档将服务器重新部署了一次就先跑路回家了,剩下的就留给加班的同事负责将服务器托管到机房了。年后回来上班后按工作计划开始做文档(主要对之前编写的部署文档进行修正和将相关未添加的安全策略添加进文档中,并在测试环境进行安全测试)。等搞定后要对服务器做最后一次安全检查时,运营部门已将网站推广出去了,真是晕死,都不给人活了……只能是加班加点对已挂到公网的服务器日志和相关设置项做一次体检。当然一检查发现挂出去的服务器有着各种各样的攻击记录,不过还好都防住了,没有什么问题,然后就是继续添加一些防火墙策略和系统安全设置。
接下来还是不停的忙,要写《服务器安全检查指引——日常维护说明》。公司新项目要开发,得对新项目分析需求,编写开发文档,然后搭建前后端开发框架,旧系统要增加新功能,又得写V3、V4不同版本的功能升级开发文档……今天终于忙得七七八八了,回头一看,2月份就这样一眨眼就过去了,看来程序员老得快还是有道理的,时间都不是自己的了。
前面啰哩啰嗦的讲了一大堆费话,现在开始转入正题。
对于服务器的安全,相信很多开发人员都会碰到,但绝大多数人对安全都没有什么概念。记得10年前我刚接手服务器时,仅兴奋,又彷徨,而真正面对时,却无从下手,上百度和谷歌上找,也没有完整的说明介绍,对安全都是一头雾水。刚开始配置的服务器漏洞百出,那时几乎吃睡在机房,也避免不了服务器给黑的事情发生,而且大多被黑后还一无所知,想想都是郁闷~~~当然经验也是在被黑的过程中慢慢升级的,哈哈……
下面就将写好的《服务器安全部署文档》分享出来,希望能对大家有所帮助。当然本人不是黑客,也不知道所有的攻击手段,所以其中可能存在遗漏的地方,也请大家提出建议。按本文档的安全设置思想配置服务器(不同平台、操作系统不同版本的配置都有一定的不同之处,但安全设置思路是共通的),管理的众多服务器(其中包括各种Web服务器、数据库服务器、流媒体服务器、游戏服务器(Linux系统))从2005年到现在,还没发现给入侵成功的例子,当然也有可能没有非常利害的黑客来进行攻击有关,但从中也可以看到安全方面还是有一些保障的(呵呵…自夸的得多了,都不好意思了)。如果手上没有服务器的朋友,也可以在自己电脑用虚拟机安装配置试试(在我公司技术部,将文档发给大家后,不少同事都尝试按文档指引操作过,对提升服务器安全部署还是相当有帮助的)。当然虚拟机在配置时,有一些地方与实际服务器上操作还是有些细微的差别的。
目录 1. 前言.. 3 2. 部署环境.. 3 2.1 服务器环境信息.. 3 3. 磁盘阵列配置.. 4 4. 安装操作系统.. 4 5. 安装软件.. 4 5.1 安装磁盘碎片整理程序.. 4 5.2 安装虚拟光盘.. 6 5.3 安装IIS. 6 5.4 安装.NET Framework4. 9 5.5 安装SQL2008. 9 5.6 安装JMail 17 5.7 安装杀毒软件与防火墙.. 17 6. 服务器网站与安全配置.. 22 6.1. 修改系统默认帐户名.. 22 6.2. 配置帐户锁定策略.. 27 6.3. 服务器硬盘安全访问安全配置.. 28 6.4. 配置网站.. 29 6.5. 配置跨服务器同步更新图片网站.. 68 6.6. 屏蔽xplog70.dll漏洞.. 75 6.7. 设置网络访问策略.. 76 6.8. 设置用户权限分配策略.. 77 6.9. 关闭默认共享.. 79 6.10. 禁用不需要的和危险的服务.. 79 6.11. 修改审核策略.. 81 6.12. 系统防火墙安全设置.. 82 6.13. 开启远程桌面功能.. 83 6.14. 配置McAfee访问保护.. 90 6.15. 配置McAfee防火墙.. 97 7. 部署注意事项.. 103
1. 前言
其实要配置一台安全的服务器,简单来说就几句话:
能不开放的端口和可以不运行的服务全部关闭或禁用;
使用可进行端口通讯访问策略配置的防火墙;
严格控制系统中各种程序对各个目录创建、修改与删除可执行脚本、动态链接库与程序的权限;
对于网站目录,能写入的目录或文件不能有执行权限,有执行权限的目录不可以赋给写入权限。(这条最为关键)
2. 部署环境 2.1 服务器环境信息 服务器硬件配置:
服务器软件环境:
3. 磁盘阵列配置
具体配置请查看《RAID配置中文手册》,链接地址: http://support1.ap.dell.com/cn/zh/forum/thread.asp?fid=20&tid=61244 配置前,请提前备份好硬盘里的数据,重新做过阵列后,硬盘中的数据将全部丢失。 (笔者使用的是Dell R820服务器,Dell服务器的售后服务确实不错,服务器有什么问题,直接打几个售后电话就可以解决,非常方便)
4. 安装操作系统 具体安装操作步骤,请查看《R820服务器安装指南》 1) 通过Lifecycle 安装 windows 2008: http://zh.community.dell.com/support_forums/poweredge/f/279/t/2812.aspx 这个方法是开机直接按F10,进行安装操作系统,可以快速的安装。 其它官方支持的系统安装,只是在选择操作系统的时候,选择对应的就可以进行快速的安装。 2) 手动安装2012 : http://zh.community.dell.com/support_forums/poweredge/f/279/t/9621.aspx 这个方法是直接通过2012的安装光盘,从光驱启动进行安装的操作方法。 在选择安装磁盘时,可将本文档所在文件夹中的RAID驱动解压到U盘中,将U盘插入服务器后手动选择载入驱动进行安装。 其他安装过程的操作方法同平时安装操作系统一样,这里就不做详细描述了。
5.安装软件 5.1 安装磁盘碎片整理程序
由于服务器的相关文件、图片和各种日志文件会不停的创建与删除,服务器运行时间长了以后,磁盘上会存在很多文件碎片,这样就会降低服务器的性能,缩短硬盘寿命。 Diskeeper2011_ProPremier是一个实时碎片整理程序,它不干扰系统资源,自动化运行,可以自动防止关键系统文件产生碎片,实时监控磁盘,一旦产生碎片就进行整理,最大程度地保证系统稳定性和速度,而它的智能文件访问加速顺序技术I-FAAST2.0最高可将最常用文件的访问速度提高80%(平均10%~20%)。(具体介绍请查看官方相关文档) 运行安装:
5.2 安装虚拟光盘
略 5.3 安装IIS
打开服务器管理器,选择角色=》点击“添加角色”
选择Web服务器(IIS)
点下一步后,按下图所选内容进行勾选
5.4 安装.NET Framework4
运行dotNetFx40_Full_x86_x64.exe安装.net4框架(这个必须在IIS安装完成后才进行安装,这样才会在IIS的相关属性中自动绑定.net4框架)
5.5 安装SQL2008
安装SQL2008前,首先要安装.net3.5框架,打开服务器管理器,点击功能=》添加功能=》勾选.NET Framework3.5.1运行安装
继续安装SQL2008,请先操作第6.1修改系统默认帐户名步骤后的管理员用户再进行下面步骤
按6.1操作后,将SQL2008_CHS.iso载入虚拟光盘,运行安装 选择“安装”=》 “全新SQL Server 独立安装或向现有安装添加功能”
这里选择的帐户名是SYSTEM,密码为空
操作到这一步时请注意: 1)身份验证模式选择混合模式 2)设置的SA密码必须为长于32位的中英文(大小写)+数字,谁也记不住的乱码,设置好后都不再使用该账号与密码。 3)指定的SQL Server管理员为当前用户(必须是操作第6.1修改系统默认帐户名步骤后的管理员用户,如果不是的话有可能导致登陆不了SQL)
有时候运行到最后一步时会显示安装出错,这时重启后进入控制面板,点击卸载程序,将刚安装的SQL2008删掉后再次重启电脑,进行安装就可以了,当然我试过一次通过,也试过这样操作三四次后才成功,为什么会这样就不知道了。
5.6 安装JMail
略 5.7 安装杀毒软件与防火墙
杀毒软件与防火墙的安装,最好将 ”6.14.配置McAfee防火墙” 之前的所有步骤全部完成后才进行,不然可能会造成一些配置或操作无法成功的情况,因为防火墙安装成功后,会阻止系统软件的运行与操作。如果已经安装好了的话,则先打开杀毒软件控制台,将“访问保护”先禁用,而防火墙则先不开启。
防病毒+防火墙组合装 官网卖1年也才是80元,建议大家都购买正版来使用,由于本人是在虚拟机上进行的操作,所以使用的是免费版来做演示
具体也不进行细说,直接上图 安装杀毒软件:
安装防火墙
直接运行McAfeeHIP_ClientSetup.exe (注:正版的安装方法与下面是不一样的,有一些区别)
运行后不会有任何安装界面出来,等待一会后再运行补丁,如下图
双击鼠标左键就可以了,然后进入下图路径,找到已经安装好的防火墙程序
运行McAfeeFire.exe,就可以打开防火墙软件了
6. 服务器网站与安全配置 6.1. 修改系统默认帐户名
修改系统默认帐户名并新建一个Administrator帐户作为陷阱帐户,设置超长密码,并去掉所有用户组。(就是在用户组那里设置为空即可.让这个帐号不属于任何用户组),同样改名禁用掉Guest用户。
先对原Administrator用户进行重命名
修改为你自己喜欢的名称
然后新建一个Administrator欺骗帐户,设置混合超长密码
对它进行编辑
删除隶属的组
因这个是欺骗帐户,所以充许网络策略控制访问
将Guest也进行重命名操作
设置完成后必须重启电脑,不然安装SQL时可能会导致安装失败,需要重新安装的问题
6.2. 配置帐户锁定策略
在运行中输入gpedit.msc回车,打开组策略编辑器,选择计算机配置-Windows设置-安全设置-账户策略-账户锁定策略,将账户设为“三次登陆无效”,“锁定时间30分钟”,“复位锁定计数设为30分钟”。
6.3. 服务器硬盘安全访问安全配置
所有磁盘除CREATOR OWNER、administrators和system的用户权限全部删除(C盘必须保留Users用户组,理论上来说是要删除Users用户组的,但很多朋友如果这里直接删除,操作不当的话,网站有可能就访问不了,必须对系统目录下的不少目录重新配置权限非常麻烦,所以本文建议保留,只要按下面的一些设置做到位,这里也不会有多大的安全隐患的)
6.4. 配置网站
将网站代码与图片复制到指定文件夹里
(由于本站的前后端分开,图片站也是独立的,另外做了一个图片异步跨服务器更新程序,所以有下面四个文件夹)
打开服务器管理器,进入本地用户和组管理,为上面几个网站添加对应的绑定用户,并分别设置超长混合密码,并记录下来,后面备用
然后将创建好的几个帐户所隶属的默认组删除,添加Guests组
将远程控制去掉
将拨入设置为拒绝
打开IIS,将默认站点删除
对网站点右键,添加网站
创建好对应的站点
点击连接为按钮,设置访问帐户,设置路径凭据为:特定用户,然后输入用户名为刚才创建好的用户名,与相应的密码
设置身份验证
点击应用程序池,将刚创建好的网站对应程序池.NET Framework版本和托管管道模式
.NET Framework版本设置为.NET Framework v4.0.30319 托管管道模式设置为经典模式
设置网站的默认文档为Index.aspx
设置ISAPI和CGI限制
将Active Server Pages设置为不允许,将ASP.NET v4.0.30319设置为充许
进入C:\Windows\Microsoft.NET\Framework64\v4.0.30319目录,设置Temporary ASP.NET Files文件夹的访问权限
点右键=》属性
添加红框框住的用户,并设置为可修改
进入C:\Windows\Microsoft.NET\Framework64\v2.0.50727目录,对Temporary ASP.NET Files文件夹做同样的操作
然后为当前创建的网站设置相应的文件夹访问权限
添加刚才创建的,并在IIS里绑定的帐户、Authenticated Users和NETWORK SERVICE三个帐号
设置权限为默认权限(读取和执行、列出文件夹内容、读取)
启用父路径
双击ASP打开属性编辑,将启用父路径修改为True
附加数据库操作 打开SQL2008
附加数据库
找到数据库存放位置
删除数据库中原绑定用户
新建登陆名
将数据库链接的用户名与密码填写在SQL新建登陆名对应文本框中,并按下图进行设置
然后点击用户映射,勾选数据,并设置数据库拥有db_owner角色权限(注:点击确定后最好重新检查新建用户的属性,用户映射项,查看db_owner角色权限是否赋值成功,这里经常会出现创建后没有赋值成功的情况,需要手动重新设置过后才可以)
打开网站目录,找到Web.config文件,记事本打开,填上新创建的数据库用户名与密码
运行ASP.NET State Service服务,并将它设置为自动运行
其他几个网站也按上面的步骤与配置进行设置后,打开浏览器就可以正常该问了 为可写入目录设置写入权限
将红框框住的两个帐户设置可修改权限
禁用可写入目录的执行权限(也可以将所有不用运行ASPX脚本的目录都禁用执行权限,比如css、js等)
6.5. 配置跨服务器同步更新图片网站
6.6. 屏蔽xplog70.dll漏洞
进入安装好的SQL目录搜索 xplog70.dll 然后将找到的文件删除(这样操作会使SQL代理服务停止运行,所以如果使用代理功能的朋友请不要删除)
6.7. 设置网络访问策略
在运行中输入gpedit.msc回车,打开组策略编辑器,选择计算机配置-Windows设置-安全设置-本地策略-安全选项,将 网络访问:可匿名访问的共享; 网络访问:可匿名访问的命名管道; 网络访问:可远程访问的注册表路径; 网络访问:可远程访问的注册表路径和子路径; 以上四项清空
6.8. 设置用户权限分配策略
在运行中输入gpedit.msc回车,打开组策略编辑器,选择计算机配置-Windows设置-安全设置-本地策略-用户权限分配 将“从网络访问此计算机”策略中的“Everyone”删除
在“拒绝通过远程桌面服务登陆”策略中,添加下面用户组和用户
另外,在添加新站点时,也必须将创建的新用户添加到这里
6.9. 关闭默认共享
打开注册表 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters] 新建DOWRD值,名称为“AutoShareServer”、“AutoShareWKs”,设置值为“0”
6.10. 禁用不需要的和危险的服务
打开服务器管理器,进入“服务”管理,将下列服务禁用(用黄色标识的服务在2008系统中可能不存在)
6.11. 修改审核策略
6.12. 系统防火墙安全设置
开启系统防火墙(控制面板=》系统和安全=》Windwos防火墙=》打开或关闭Windows防火墙),如果远程操作的话就要小心,不要将自己的连接也给禁用了
关闭“文件和打印共享”功能
注:如果为了更安全的话,最好是将远程桌面关闭,使用更安全的第三方远程登陆程序。或者修改远程连接端口,一般来说做了前面的设置后,就算留了“肉鸡”在,问题也不是很大。 添加新的防火墙规则,请参考6.13的相关操作
6.13. 开启远程桌面功能
对我的电脑点击左键=》属性,打开系统属性窗口
修改远程桌面链接端口 点击开始菜单,输入regedit打开注册表 将HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp项的PortNumber值由3389修改为比如:12345这些高端端口
将HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp项的PortNumber值由3389修改为12345
修改了远程桌面端口后,原防火墙的远程桌面规则就会失效了,需要重新创建规则 打开Windows防火墙,点击“高级设置”
设置后重新电脑就马上生效了 注:如果是远程修改端口的话,需要同时修改McAfee防火墙,添加新的端口规则,这样才不会出现无法远程登陆的情况
6.14. 配置McAfee访问保护
打开VirusScan控制台
启用访问保护
打开访问保护属性
添加用户定义的规则
要排除的进程:
csc.exe, DTSWizard.exe, Explorer.EXE, FrameworkService.exe, HIPSvc.exe, McScript_InUse.exe, SqlWb.exe, Ssms.exe, vbc.exe, w3wp.exe
要排除的进程:
FrameworkService.exe, mmc.exe, svchost.exe
开启防火墙的各项阻止规则
按下面要求,在对应的规则里添加排除的进程
这些规则的添加,需要经常查看“访问保护日志”,看那些程序是我们请允许执行的,但却给防火墙阻止了,将它们到对应的排除进程当中(具体操作如果不懂的可以查查百度,或者查看我下一篇文章《服务器安全检查指引——日常维护说明》,它属性服务器的日常维护内容)
6.15. 配置McAfee防火墙
按下面路径进入防火墙文件夹
运行McAfeeFire.exe打开防火墙软件
点击解除锁定,密码默认为abcde12345
解锁后对防火墙的相关选项进行设置
启用防火墙功能——如果是远程桌面操作的话,这一步操作后远程桌面会马上无法联接,需要在服务器本地设置请允许才能再联接上
启用后用远程桌面联接一下,并给予授权
点击充许后,再用远程桌面联接就可以登陆了,其他端口、软件或网站的授权访问也是一样的操作,在给予授权操作时,请仔细留意一下是否是我们请允许的程序访问的,不是的话或不明白的一律给予拒绝,拒绝后发现网站某项功能无法访问或出问题时,再来这里进行排查和修改规则,以保证服务器的安全。
7. 部署注意事项
1、更新前一定要经过自测和测试部门人员测试通过; 2、修改网站任何配置都必须提前做好备份,方便回档; 3、修改了服务器端的任何设置都必须提交做好拷屏与记录,方便网站出现任何问题时快速的找出问题; 4、对服务器端的相关端口进行变动时,必须提前在Windows防火墙和McAfee防火墙提前开通对应的端口,修改好端口重启服务器或软件后,记得关闭原端口,并且做好测试工作,防止发生无法访问的情况,特别对于远程访问端口的修改必须小心,不然可能会造成无法远程登陆的情况; 5、当发生某功能无法运行或出错的时候,请先检查Windows防火墙、McAfee访问保护和防火墙,看看是否是给访问保护规则阻止了。 6、必须定期检查用户管理查看是否有多余的用户和用户隶属组是否改变;检查应用程序日志、安全日志、系统日志、IIS访问日志、网站后台管理记录的日志、网站目录中记录的操作日志与充值日志、McAfee访问保日志等,并做好备份工作;查看Windows防火墙、McAfee访问保护和防火墙是否运行中,有没有不小心关闭后忘记开启了;检查SQL的相关日志与记录增长量,检查SQL备份情况,备份空间是否足够等;(具体可查看我下一篇文章《服务器安全检查指引——日常维护说明》) 7、除了做好服务器安全相关配置外,代码的安全也是非常重要的,所有提交的数据必须做好过滤操作,防SQL注入和XSS攻击,客户端定期杀毒查木马,定期修改登陆密码,以保证系统安全。
8. 结束语
服务器的安全无小事,事事须小心,一出问题就是大问题,所以真正操作时需要非常细心+小心。
作为一个服务器维护人员,除了日常的维护工作外,有时间的话还须学习掌握各种常用的黑客工具,熟悉各种攻击手段,多点上上乌云网等这种类型的网站,去看看别人是怎么入侵的,以做到更好的防护。
由于公司网站的一些特殊性,所以发布的内容是经过删减过的,有一些特殊配置和设置没有发布出来,呵呵……不过基本的安全防护描述的差不多了。里面是否还存在有安全问题就不太清楚了,希望有经验的朋友多多指教。
原文链接:https://cloud.tencent.com/developer/article/1507674