通过服务器防火墙,严格控制服务器对外的访问端口及可访问的IP地址,可以防止服务器被攻击、保护服务器安全。在远程环境中,可能需要临时对某些IP开放FTP、远程桌面等服务,比如在家远程登录服务器桌面,出差在外地临时使用FTP。因此远程实时配置服务器防火墙非常必要。在严格控制了访问范围的情况下,远程管理只能通过已开放的服务WEB来操作。在WINDOWS服务器IIS环境下,要实现这个功能有以下要点:
一、WEB服务,要配置脚本程序(如ASP、PHP、JSP、ASPX)
二、配置相应的DCOM组件和程序,如IIS://LocalHost、WScript.Shell、netsh.exe,这些要在服务器上可以正常运行。
三、编写相应的脚本
1.使用ASP,配置FTP访问IP:
Set SecObj = GetObject("IIS://LocalHost/MSFTPSVC/1/Root") Set MyIPSec = SecObj.IPSecurity MyIPSec.GrantByDefault = false MyIPSec.IPGrant = array("192.168.100.0,255.255.255.0","202.103.24.68") '允许访问的IP数组 SecObj.IPSecurity = MyIPSec SecObj.Setinfo GetObject("IIS://LocalHost/MSFTPSVC/1").stop GetObject("IIS://LocalHost/MSFTPSVC/1").start
2.使用ASP,配置防火墙:
cmd="%SystemRoot%\system32\netsh.exe firewall set portopening TCP 3389 远程桌面 ENABLE CUSTOM 192.168.100.0/255.255.255.0,202.103.24.68" Set objShell = CreateObject("WScript.Shell") set oCMD=objShell.Exec(cmd) response.write oCMD.StdOut.Readall()
三、重点在配置相关的权限
1.脚本所在文件夹,在IIS中建议启用匿名账户,并且不要用默认账户,而是另外设置一个账户,这个账户授予了对相关文件夹、系统的访问权限。
仅在此文件夹使用具有较高权限的账户,而不是对默认匿名账户增加权限,这样会带来风险。
启用匿名账户而不是在访问时进行身份验证,既可避免输入密码的麻烦、也可以避免明码发送密码导致密码泄露。
2.在运行 firewall配置时,会出现“拒绝访问”的错误,这个也是权限配置的问题。我在处理这个的时候费了很大周折,后来是在系统日志里看到错误信息:
事件类型: 错误
事件来源: DCOM
事件种类: 无
事件 ID: 10016
用户: A001\IWAM_A001
计算机: A001
描述:
应用程序-特定 权限设置未将 COM 服务器应用程序(CLSID 为
{BA126AD1-2166-11D1-B1D0-00805FC1270E}
)的 本地 激活 权限授予用户 A001 \IWAM_A001 SID (S-1-5-12345)。可以使用组件服务管理工具修改此安全权限。
这才知道是IWAM_A001p 1这个IIS进程的内置账户权限问题。按照错误提示,打开组件服务,注意在DCOM中找不到 CLSID 为 {BA126AD1-2166-11D1-B1D0-00805FC1270E} 组件,我是通过注册表,查找到这个clsid的名字叫 Network Connection Manager Class,但在组件服务的DCOM仍然没有,但在注册表中,这个组件的AppID是{27AF75ED-20D9-11D1-B1CE-00805FC1270E},在组件服务中,可以找到这个应用程序ID,其名称叫 netman ,右键选“属性”,在“安全”标签,对“启动和激活权限”选 自定义,点“编辑”按钮,将IIS进程账户(IWAM_打头)添加进来。
这个时候,再运行脚本,不再报拒绝访问问题。
当然,这个时候可以查看防火墙配置,执行set的时候仍然会报“拒绝访问”,这个时候 需要打开注册表 ,对
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy] 给予IWAM_账号完全权限。
五、windows2003防火墙配置
老版的windows2003防火墙配置与后来的不同,要注意在“例外”标签下,对开放的服务如远程桌面打上V。
在“高级”下,对所列的网卡,不能对同一服务再单独打开例外。比如如果将指定网卡的设置中远程桌面打上V,则前面设置的IP过滤对这块网卡就无效了,所有的IP都可以访问。