| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 
课件制作网.
收藏本站
设为首页
安全365
如何找到有远程访问权限的所有用户?
如何找到有远程访问权限的所有用户?
作者:佚名 文章来源:不详 点击数: 更新时间:2007-1-24 11:00:29
问:

您好,脚本专家!如何找到有远程访问权限的所有用户;也就是说,Dial-In or VPN(拨入或者 VPN)属性设置为 Allow(允许)的所有客户?

-- RC

答:

您好,RC。您知道,人们好像一直在寻求某些东西:真爱、幸福、生命的意义。在这些方面我们无法为您提供帮助。(我们原以为可以帮您找到生命的意义,但结果证明我们错了。)但是没关系;毕竟,我们可以帮您找到有远程访问权限的所有用户:

On Error Resume Next



Const ADS_SCOPE_SUBTREE = 2



Set objConnection = CreateObject("ADODB.Connection")

Set objCommand =   CreateObject("ADODB.Command")

objConnection.Provider = "ADsDSOObject"

objConnection.Open "Active Directory Provider"

Set objCommand.ActiveConnection = objConnection



objCommand.Properties("Page Size") = 1000

objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 



objCommand.CommandText = _

    "SELECT Name FROM 'LDAP://dc=fabrikam,dc=com' WHERE objectCategory='user' " & _

        "AND msNPAllowDialin = TRUE"

Set objRecordSet = objCommand.Execute



objRecordSet.MoveFirst

Do Until objRecordSet.EOF

    Wscript.Echo objRecordSet.Fields("Name").Value

    objRecordSet.MoveNext

Loop

我们总是给人们下面的一项建议:每次寻找什么东西时,最好先在 Active Directory 开始搜索。此脚本就是对此的良好例证。您要查找 Active Directory 中 Dial-in(拨入)选项卡上选择了 Allow access(允许访问)选项的用户:

Remote Access Permissions


我们发现,Remote Access Permission (Dial-in or VPN)(远程访问权限(拨入或 VPN))选项等同于 Active Directory 中的 msNPAllowDialin 属性。如果允许访问,msNPAllowDialin 将为 True。如果访问被拒绝,msNPAllowDialin 则将为 False。如果 msNPAllowDialin 没有值,则意味着已选择 Control access through Remote Access Policy(通过远程访问策略控制访问)选项。

换句话说,要找到具有远程访问权限的用户,我们要做的就是搜索 msNPAllowDialin 属性为 True 的用户帐户。我们不会对搜索 Active Directory 的代码进行冗长的说明;在两篇系列文章脚本故事Dude,我的打印机在哪儿? 中有对此的详细说明。但是,我们会为您提供搜索这些用户的查询:

objCommand.CommandText = _

    "SELECT Name FROM 'LDAP://dc=fabrikam,dc=com' WHERE objectCategory='user' " & _

        "AND msNPAllowDialin = TRUE"

正如您所看到的,我们在寻找 objectCategory 等于 user(换言之,我们在寻找用户帐户而不是组帐户或计算机帐户) msNPAllowDialin 属性为 True 的所有 Active Directory 对象。如果要找到已被拒绝访问的所有用户,则要搜索 msNPAllowDialin 值等于 False 的用户:

objCommand.CommandText = _

    "SELECT Name FROM 'LDAP://dc=fabrikam,dc=com' WHERE objectCategory='user' " & _

        "AND msNPAllowDialin = FALSE"

远程访问权限通过策略确定的用户又怎样呢?此种情况下,我们可以搜索没有配置 msNPAllowDialin 值的用户:

objCommand.CommandText = _

    "SELECT Name FROM 'LDAP://dc=fabrikam,dc=com' WHERE objectCategory='user' " & _

        "AND msNPAllowDialin <> '*'"

当然,这看上去有些奇怪,但在 ADSI 中星号是表示任何值的通配符。在此查询中,我们要获得一个 msNPAllowDialin 属性等于任何值的用户列表。换句话说,显示 msNPAllowDialin 属性没有值的所有用户;排除具有任何其他值(True 或 False)的用户。因此,此查询返回的用户将是通过策略确定远程访问的用户。(顺便说一下,这是默认设置。如果不指定别的方式,用户将由策略确定远程访问权限。)

嗯,您都清楚了吗?返回符合条件用户的记录集后,我们只需使用以下几行代码在列表中循环,回显每个用户的名称:

Do Until objRecordSet.EOF

    Wscript.Echo objRecordSet.Fields("Name").Value

    objRecordSet.MoveNext

Loop

正如前面所述,找到有远程访问权限的用户的列表并不同于找到生命的意义。但我们愿意相信它仅次于生命的意义。

【转自世纪安全网 http://www.21safe.com】
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
     
     
     
    CSO们如何应对新技术的安
    普通企业如何应对黑客攻
    企业该如何防范由VoIP引
    浅谈IT如何实现企业的应
    黑客与正规企业是如何串
    如何无限制申请Gmail 2.
    企业如何避免人为因素的
    社会工程学:如何利用黑客
    如何在一个文件被添加到
    如何将“珊瑚虫”好友请

    Copyright © 2006-2008 www.anquan365.com 安全365
    建议使用1024*768分辨率及第三方浏览器对本站进行浏览