原理篇
我们将从入侵者入侵的各个环节来作出对应措施一步步的加固windows系统.加固windows系统.一共归于几个方面1.端口限制2.设置ACL权限3.关闭服务或组件4.包过滤5.审计
我们现在开始从入侵者的第一步开始.对应的开始加固已有的windows系统.
1.扫描这是入侵者在刚开始要做的第一步.比如搜索有漏洞的服务.对应措施:端口限制以下所有规则.都需要选择镜像,否则会导致无法连接我们需要作的就是打开服务所需要的端口.而将其他的端口一律屏蔽
2.下载信息这里主要是通过URL SCAN.来过滤一些非法请求对应措施:过滤相应包我们通过安全URL SCAN并且设置urlscan.ini中的DenyExtensions字段来阻止特定结尾的文件的执行
3.上传文件入侵者通过这步上传WEBSHELL,提权软件,运行cmd指令等等.对应措施:取消相应服务和功能,设置ACL权限如果有条件可以不使用FSO的.通过 regsvr32 /u c:/windows/system32/scrrun.dll来注销掉相关的DLL.如果需要使用.那就为每个站点建立一个user用户对每个站点相应的目录.只给这个用户读,写,执行权限,给administrators全部权限安装杀毒软件.实时杀除上传上来的恶意代码.个人推荐MCAFEE或者卡巴斯基如果使用MCAFEE.对WINDOWS目录所有添加与修改文件的行为进行阻止.
4.WebShell入侵者上传文件后.需要利用WebShell来执行可执行程序.或者利用WebShell进行更加方便的文件操作.对应措施:取消相应服务和功能一般WebShell用到以下组件WScript.NetworkWScript.Network.1WScript.ShellWScript.Shell.1Shell.ApplicationShell.Application.1我们在注册表中将以上键值改名或删除同时需要注意按照这些键值下的CLSID键的内容从/HKEY_CLASSES_ROOT/CLSID下面对应的键值删除
5.执行SHELL入侵者获得shell来执行更多指令对应措施:设置ACL权限windows的命令行控制台位于/WINDOWS/SYSTEM32/CMD.EXE我们将此文件的ACL修改为某个特定管理员帐户(比如administrator)拥有全部权限.其他用户.包括system用户,administrators组等等.一律无权限访问此文件.
6.利用已有用户或添加用户入侵者通过利用修改已有用户或者添加windows正式用户.向获取管理员权限迈进对应措施:设置ACL权限.修改用户将除管理员外所有用户的终端访问权限去掉.限制CMD.EXE的访问权限.限制SQL SERVER内的XP_CMDSHELL
7.登陆图形终端入侵者登陆TERMINAL SERVER或者RADMIN等等图形终端,获取许多图形程序的运行权限.由于WINDOWS系统下绝大部分应用程序都是GUI的.所以这步是每个入侵WINDOWS的入侵者都希望获得的对应措施:端口限制入侵者可能利用3389或者其他的木马之类的获取对于图形界面的访问.我们在第一步的端口限制中.对所有从内到外的访问一律屏蔽也就是为了防止反弹木马.所以在端口限制中.由本地访问外部网络的端口越少越好.如果不是作为MAIL SERVER.可以不用加任何由内向外的端口.阻断所有的反弹木马.
8.擦除脚印入侵者在获得了一台机器的完全管理员权限后就是擦除脚印来隐藏自身.对应措施:审计首先我们要确定在windows日志中打开足够的审计项目.如果审计项目不足.入侵者甚至都无需去删除windows事件.其次我们可以用自己的cmd.exe以及net.exe来替换系统自带的.将运行的指令保存下来.了解入侵者的行动.对于windows日志我们可以通过将日志发送到远程日志服务器的方式来保证记录的完整性.evtsys工具(https://engineering.purdue.edu/ECN/Resources/Documents)提供将windows日志转换成syslog格式并且发送到远程服务器上的功能.使用此用具.并且在远程服务器上开放syslogd,如果远程服务器是windows系统.推荐使用kiwi syslog deamon.
我们要达到的目的就是不让入侵者扫描到主机弱点即使扫描到了也不能上传文件即使上传文件了不能操作其他目录的文件即使操作了其他目录的文件也不能执行shell即使执行了shell也不能添加用户即使添加用户了也不能登陆图形终端即使登陆了图形终端.拥有系统控制权.他的所作所为还是会被记录下来.
额外措施:我们可以通过增加一些设备和措施来进一步加强系统安全性.1.代理型防火墙.如ISA2004代理型防火墙可以对进出的包进行内容过滤.设置对HTTP REQUEST内的request string或者form内容进行过滤将SELECT.DROP.DELETE.INSERT等都过滤掉.因为这些关键词在客户提交的表单或者内容中是不可能出现的.过滤了以后可以说从根本杜绝了SQL 注入2.用SNORT建立IDS用另一台服务器建立个SNORT.对于所有进出服务器的包都进行分析和记录特别是FTP上传的指令以及HTTP对ASP文件的请求可以特别关注一下.
本文提到的部分软件在提供下载的RAR中包含包括COM命令行执行记录URLSCAN 2.5以及配置好的配置文件IPSEC导出的端口规则evtsys一些注册表加固的注册表项.
实践篇
下面我用的例子.将是一台标准的虚拟主机.系统:windows2003服务:[IIS] [SERV-U] [IMAIL] [SQL SERVER 2000] [PHP] [MYSQL]描述:为了演示,绑定了最多的服务.大家可以根据实际情况做筛减
1.WINDOWS本地安全策略 端口限制A.对于我们的例子来说.需要开通以下端口外->本地 80外->本地 20外->本地 21外->本地 PASV所用到的一些端口外->本地 25外->本地 110外->本地 3389然后按照具体情况.打开SQL SERVER和MYSQL的端口外->本地 1433外->本地 3306B.接着是开放从内部往外需要开放的端口按照实际情况,如果无需邮件服务,则不要打开以下两条规则本地->外 53 TCP,UDP本地->外 25按照具体情况.如果无需在服务器上访问网页.尽量不要开以下端口本地->外 80C.除了明确允许的一律阻止.这个是安全规则的关键.外->本地 所有协议 阻止
2.用户帐号a.将administrator改名,例子中改为rootb.取消所有除管理员root外所有用户属性中的 远程控制->启用远程控制 以及终端服务配置文件->允许登陆到终端服务器c.将guest改名为administrator并且修改密码d.除了管理员root,IUSER以及IWAM以及ASPNET用户外.禁用其他一切用户.包括SQL DEBUG以及TERMINAL USER等等
3.目录权限将所有盘符的权限,全部改为只有administrators组 全部权限system 全部权限将C盘的所有子目录和子文件继承C盘的administrator(组或用户)和SYSTEM所有权限的两个权限然后做如下修改C:/Program Files/Common Files 开放Everyone 默认的读取及运行 列出文件目录 读取三个权限C:/WINDOWS/ 开放Everyone 默认的读取及运行 列出文件目录 读取三个权限C:/WINDOWS/Temp 开放Everyone 修改,读取及运行,列出文件目录,读取,写入权限现在WebShell就无法在系统目录内写入文件了.当然也可以使用更严格的权限.在WINDOWS下分别目录设置权限.可是比较复杂.效果也并不明显.
4.IIS在IIS 6下.应用程序扩展内的文件类型对应ISAPI的类型已经去掉了IDQ,PRINT等等危险的脚本类型,在IIS 5下我们需要把除了ASP以及ASA以外所有类型删除.安装URLSCAN在[DenyExtensions]中一般加入以下内容.cer.cdx.mdb.bat.cmd.com.htw .ida .idq .htr .idc .shtm .shtml .stm .printer 这样入侵者就无法下载.mdb数据库.这种方法比外面一些在文件头加入特殊字符的方法更加彻底.因为即便文件头加入特殊字符.还是可以通过编码构造出来的
5.WEB目录权限作为虚拟主机.会有许多独立客户比较保险的做法就是为每个客户,建立一个windows用户然后在IIS的响应的站点项内把IIS执行的匿名用户.绑定成这个用户并且把他指向的目录权限变更为administrators 全部权限system 全部权限单独建立的用户(或者IUSER) 选择高级->打开除 完全控制,遍历文件夹/运行程序,取得所有权 3个外的其他权限.
如果服务器上站点不多.并且有论坛我们可以把每个论坛的上传目录去掉此用户的执行权限.只有读写权限这样入侵者即便绕过论坛文件类型检测上传了webshell也是无法运行的.
6.MS SQL SERVER2000使用系统帐户登陆查询分析器运行以下脚本use master exec sp_dropextendedproc 'xp_cmdshell' exec sp_dropextendedproc 'xp_dirtree'exec sp_dropextendedproc 'xp_enumgroups'exec sp_dropextendedproc 'xp_fixeddrives'exec sp_dropextendedproc 'xp_loginconfig'exec sp_dropextendedproc 'xp_enumerrorlogs'exec sp_dropextendedproc 'xp_getfiledetails'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_makewebtaskgo删除所有危险的扩展.
7.修改CMD.EXE以及NET.EXE权限将两个文件的权限.修改到特定管理员才能访问,比如本例中.我们如下修改cmd.exe root用户 所有权限net.exe root用户 所有权现这样就能防止非法访问.还可以使用例子中提供的comlog程序将com.exe改名_com.exe,然后替换com文件.这样可以记录所有执行的命令行指令
8.备份使用ntbackup软件.备份系统状态.使用reg.exe 备份系统关键数据如reg export HKLM/SOFTWARE/ODBC e:/backup/system/odbc.reg /y来备份系统的ODBC
9.杀毒这里介绍MCAFEE 8i 中文企业版因为这个版本对于国内的许多恶意代码和木马都能够及时的更新.比如已经能够检测到海阳顶端2006而且能够杀除IMAIL等SMTP软件使用的队列中MIME编码的病毒文件而很多人喜欢安装诺顿企业版.而诺顿企业版,对于WEBSHELL.基本都是没有反应的.而且无法对于MIME编码的文件进行杀毒.在MCAFEE中.我们还能够加入规则.阻止在windows目录建立和修改EXE.DLL文件等我们在软件中加入对WEB目录的杀毒计划.每天执行一次并且打开实时监控.
10.关闭无用的服务我们一般关闭如下服务Computer BrowserHelp and SupportMessengerPrint SpoolerRemote RegistryTCP/IP NetBIOS Helper如果服务器不用作域控,我们也可以禁用Workstation
11.取消危险组件如果服务器不需要FSOregsvr32 /u c:/windows/system32/scrrun.dll注销组件使用regedit将/HKEY_CLASSES_ROOT下的WScript.NetworkWScript.Network.1WScript.ShellWScript.Shell.1Shell.ApplicationShell.Application.1键值改名或删除将这些键值下CLSID中包含的字串如{72C24DD5-D70A-438B-8A42-98424B88AFB8}到/HKEY_CLASSES_ROOT/CLSID下找到以这些字串命名的键值全部删除
12.审计本地安全策略->本地策略->审核策略打开以下内容审核策略更改 成功,失败审核系统事件 成功,失败审核帐户登陆事件 成功,失败审核帐户管理 成功,失败