Windows协议 LDAP篇 - 组&OU
LDAP搜索
LDAP查找 位操作
以userAccountControl
为例,CN=User-Account-Control,CN=Schema,CN=Configuration,DC=muxue,DC=com
https://docs.microsoft.com/zh-cn/troubleshoot/windows-server/identity/useraccountcontrol-manipulate-account-properties
属性标志 | 十六进制值 | 十进制值 |
---|---|---|
SCRIPT | 0x0001 | 1 |
ACCOUNTDISABLE | 0x0002 | 2 |
HOMEDIR_REQUIRED | 0x0008 | 8 |
锁定 | 0x0010 | 16 |
PASSWD_NOTREQD | 0x0020 | 32 |
PASSWD_CANT_CHANGE 无法通过直接修改 UserAccountControl 属性来分配此权限。 若要了解如何以编程方式设置权限,请参阅属性 标志说明 部分。 | 0x0040 | 64 |
ENCRYPTED_TEXT_PWD_ALLOWED | 0x0080 | 128 |
TEMP_DUPLICATE_ACCOUNT | 0x0100 | 256 |
NORMAL_ACCOUNT | 0x0200 | 512 |
INTERDOMAIN_TRUST_ACCOUNT | 0x0800 | 2048 |
WORKSTATION_TRUST_ACCOUNT | 0x1000 | 4096 |
SERVER_TRUST_ACCOUNT | 0x2000 | 8192 |
DONT_EXPIRE_PASSWORD | 0x10000 | 65536 |
MNS_LOGON_ACCOUNT | 0x20000 | 131072 |
SMARTCARD_REQUIRED | 0x40000 | 262144 |
TRUSTED_FOR_DELEGATION | 0x80000 | 524288 |
NOT_DELEGATED | 0x100000 | 1048576 |
USE_DES_KEY_ONLY | 0x200000 | 2097152 |
DONT_REQ_PREAUTH | 0x400000 | 4194304 |
PASSWORD_EXPIRED | 0x800000 | 8388608 |
TRUSTED_TO_AUTH_FOR_DELEGATION | 0x1000000 | 16777216 |
PARTIAL_SECRETS_ACCOUNT | 0x04000000 | 67108864 |
如果一个账户,有LOCKOUT,以及NOT_DELEGATED,其他的位都没有,那这个用户的属性userAccountControl的值就为0x0010+0x100000
。
如果我们要搜索域中所有设置了NOT_DELEGATED
的所有对象,就得使用以下语法
<Attribute name>:<BitFilterRule-ID>:=<decimal comparative value>
- Attribute name:属性名称
- BitFilterRule-ID
https://docs.microsoft.com/zh-cn/windows/win32/adsi/search-filter-syntax?redirectedfrom=MSDN
- decimal comparative value:十进制比较值
有两种按位运算 可扩展匹配规则,and
和 or
我们尝试搜索带有TRUSTED_FOR_DELEGATION
属性的对象
设置此标志后,Kerberos 委派信任运行服务的服务帐户(用户或计算机帐户)。任何此类服务都可以模拟请求该服务的客户端。要为 Kerberos 委派启用服务,您必须在服务帐户的 userAccountControl 属性上设置此标志
AdFind.exe -b dc=muxue,dc=com -f "(userAccountControl:1.2.840.113556.1.4.803:=524288)" -dn
AdFind也提供了一种简单的方法
LDAP查找 objectCategory和objectClass
objectClass
上个文我们说过这个类的,可以寻父类
CN=WIN7,CN=Computers,DC=muxue,DC=com
的objectClass
是top,person,organizationalPerson,user
,我们可以通过(objectClass=user)
,(objectClass=organizationalPerson)
都可以找到这个对象(别用top
,因为所有类都是他的子类)
-c是计数
objectCategory
在Windows Server 2008之前默认不对objectClass
属性进行索引。对objectCategory
建立索引
他包含的对象是其实例的类或其父类之一的专有名称;创建对象时,系统会将其objectCategory
属性设置为由其defaultObjectCategory
属性的值。无法更改objectCategory
属性。
CN=iis,CN=Users,DC=muxue,DC=com,dc.muxue.com
的defaultObjectCategory
属性值就是CN=Person,CN=Schema,CN=Configuration,DC=muxue,DC=com
如果我们想过滤所有objectCategory
属性的值为CN=Person,CN=Schema,CN=Configuration,DC=muxue,DC=com
的对象,我们就可以直接指定过滤条件为(objectCategory="CN=Person,CN=Schema,CN=Configuration,DC=muxue,DC=com")
我们也可以指定lDAPDisplayName
属性的值查询
组
查询组
AdFind.exe -b dc=muxue,dc=com -bit -f "(objectclass=group)" -c
查询到有46个组
查找组的类型通过groupType
决定
我以域本地组做例子
组范围
- 全局组
- 域本地组
- 通用组
组类型 | 可以授予权限 | 可包含 | 可包含于 | 成员是否在全局编录复制 |
---|---|---|---|---|
全局组 | 在同一林中或信任域或林中的任何域上。 | 来自同一域的帐户。 来自同一域的其他全局组 | 来自同一林中任何域的通用组。 来自同一域的其他全局组。 来自同一林中任何域或任何信任域的域本地组。 | 无 |
通用组 | 在同一林或信任林中的任何域上。 | 来自同一林中任何域的帐户。 来自同一林中任何域的全局组。 来自同一林中任何域的其他通用组。 | 同一林中的其他通用组。 在同一个林或信任林中域本地组。 | 是 |
域本地组 | 在同一个域中 | 来自任何域或任何受信任域的帐户。 来自任何域或任何受信任域的全局组。 来自同一林中任何域的通用组。 来自同一域的其他域本地组。 | 来自同一域的其他域本地组。 | 无 |
直接抄daiker的哈
常用组
Administrators(域本地组)
拥有对整个域最大的控制权,可以执行整个域的管理任务。Administrators
包括Domain Admins
和Enterprise Admins
Enterprise Admins(通用组)
域林中,只有林根域才有这个组,林中其他域没有这个组,但是其他域默认会把这个组加入到本域的Administrators里面去。Domain Admins(全局组)
也就是域管,默认域内所有机器会把Domain Admins
加入到本地管理员组里面。Domain Users(全局组)
也就是普通域用户。默认域内所有机器会把Domain Users
加入到本地用户组里面
这也就是为什么默认情况底下,啥都不配置。域用户可以登录域内任何一台普通成员机器。
组应用策略
A表示用户账号,G表示全局组,U表示通用组,DL表示域本地组,P表示资源权限。
常见的组应用策略:
AGP:将用户账户添加到全局组,然后赋予权限
ADLP:将用户账户添加到域本地组,然后赋予权限
AGLP:将用户账户添加到全局组,将全局组添加到本地组, 然后赋予本地组权限
AGDLP:将用户账户添加到全局组,将全局组添加到域本地组, 然后赋予域本地组权限
AGUDLP:将用户账户添加到全局组,将全局组添加到通用组,将通用组添加到域本地组, 然后赋予域本地组权限
参考链接:https://blog.51cto.com/ilanni/557207
查询组内用户以及用户所属的组
这里感谢daiker
师傅 遇到了一些问题给俺解答
架构
如果group2
是group1
的成员
那么group2
有个memberOf
属性,标识group2
是group1
的成员
group1
有个member
属性标识group2
是它的成员。
根据member
和memberOf
这俩属性 我们就可以用来当作过滤条件了
查询group1
有哪些成员
AdFind.exe -b dc=muxue,dc=com -f "(memberof="CN=group1,OU=IT,DC=muxue,DC=com")" -dn
AdFind.exe -b cn=group1,ou=it,dc=muxue,dc=com member
查询u1
属于哪个组
AdFind.exe -b DC=muxue,DC=com -f "(member="CN=u1,OU=IT,DC=muxue,DC=com")" -dn
AdFind.exe -b CN=u1,OU=IT,DC=muxue,DC=com memberof
OU
组织单位 (OU) 是Active Directory 中的一个细分,您可以在其中放置用户、组、计算机和其他组织单位。您可以创建组织单位来反映您组织的职能或业务结构。每个域都可以实现自己的组织单位层次结构。像我上面的IT就是一个OU
OU跟容器的区别
OU是专用容器,与常规容器的区别在于管理员可以将组策略应用于OU,然后系统将其下推到OU中的所有计算机。而普通容器是不能应用组策略的
所以可以将组策略应该于Domain Controllers,而Domain Computers是不能应用组策略的
OU和组的区别
这俩完全不一样,组是权限的集合,OU是管理对象的集合。
假如我们想给一个部门下发些东西,可以拉进一个OU里,然后进行集中管理。
查询OU
所有的OU都是organizationalUnit
类的实例,所以可以用(objectClass=organizationalUnit)
或者(objectCategory=organizationalUnit)
来指定这个类
AdFind.exe -b dc=muxue,dc=com -f "(objectClass=organizationalUnit)" -dn
AdFind.exe -b dc=muxue,dc=com -f "(objectCategory=organizationalUnit)" -dn
AdFind.exe -b ou=it,dc=muxue,dc=com -dn
Windows协议 LDAP篇 - 组&OU的更多相关文章
- Windows协议 LDAP篇 - Actite Directory
LDAP简介 先说下ldap,轻量目录访问协议.LDAP就是设计用来访问目录数据库的一个协议.也就是为了能访问目录数据库,ldap是其中一种协议 LDAP的基本模型 目录树:在一个目录服务系统中,整个 ...
- Windows协议 LDAP篇 - 域用户和计算机用户
域用户 查询域用户 通过SAMR协议查询(net user就是通过这种协议查询的),samr也不是一种专门的协议,是一个RPC接口 在impacket里有个脚本samrdump.py,就是专门调用这个 ...
- Windows协议 LDAP篇 - 域权限
windows 访问控制模型 也就是大名鼎鼎的ACM,access control mode 由两部分组成的. 访问令牌(access tokens) 其中包含有关登录用户的信息(User SID,G ...
- Windows协议 NTLM篇
NTLM 基础 介绍 LM Hash & NTLM Hash Windows本身是不会存储明文密码的,只保存密码的hash 其中本机用户的密码hash是放在本地的SAM文件里面,域内用户的密码 ...
- Windows协议 Kerberos篇
认证流程 角色 功能 Domain Controller 也就是域控 Key Distribution Center 秘钥分发中心,简称KDC,默认安装在域控里,包括AS.AD和TGS. Accoun ...
- Windows下LDAP服务器配置
LDAP即轻量级目录访问协议(Lightweight Directory Access Protocol),基础知识不再赘述,本文主要记录我的配置与安装过程. LDAP for windows下载 o ...
- Windows 7 封装篇(一)【母盘定制】[手动制作]定制合适的系统母盘
Windows 7 封装篇(一)[母盘定制][手动制作]定制合适的系统母盘 http://www.win10u.com/article/html/10.html Windows 7 封装篇(一)[母盘 ...
- SharePoint 2013 SqlException (0x80131904):找不到Windows NT 用户或组xxxx\administrator
过程描述: 在SharePoint 2013里配置创建搜索服务应用程序时报错: 配置 Search Service 应用程序期间遇到错误. System.Data.SqlClient.SqlExcep ...
- Android Studio2.0 教程从入门到精通Windows版 - 入门篇
http://www.open-open.com/lib/view/open1468121363300.html 本文转自:深度开源(open-open.com)原文标题:Android Studio ...
随机推荐
- 第14章:部署Java网站项目案例
1 说明 (1) 项目迁移到k8s平台的流程 1) 制作镜像 dockerfile.docker+jenkins持续集成.镜像分类:基础镜像.中间镜像.项目镜像 2) 控制器管理pod 控制器管理po ...
- linux密码策略
1.密码过期策略 # vim /etc/login.defs PASS_MAX_DAYS 99999 # 一个密码最长可以使用的天数: PASS_MIN_DAYS 0 # 更换密码的最小天数: PAS ...
- UVA 10689 Yet another Number Sequence 矩阵快速幂 水呀水
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...
- Python装饰器-给你的咖啡加点料
今天你的咖啡加糖了吗? 让我们通过一个简单的例子来引出装饰器的概念及用法.在引出装饰器之前,我们先来了解一下函数的概念. 一.函数回顾 1.在python中函数是一等公民,函数也是对象.我们可以把函数 ...
- hadoop学习(二)hadoop集群的启动
一.完全分布式集群环境的搭建 1.配置hosts文件:将三台集群服务器的主机名与IP的对应关系互相配置到对方的hosts文件中,以便对方服务器能通过主机名寻找IP,hosts文件在/etc目录下. 2 ...
- java基础---设计模式(2)
结构型模式 出处:https://blog.csdn.net/zhangerqing/article/details/8239539 一.适配器模式 适配器模式将某个类的接口转换成客户端期望的另一个接 ...
- Python获取list中指定元素的索引
在平时开发过程中,经常遇到需要在数据中获取特定的元素的信息,如到达目的地最近的车站,橱窗里面最贵的物品等等.怎么办?看下面 方法一: 利用数组自身的特性 list.index(target), 其中a ...
- python 15篇 面向对象
1.面向对象编程概念 面向对象是包含面向过程 面向过程编程 买车: 1.4s看车,买车 2.上保险 保险公司 3.交税 地税局 4.交管所 上牌面向对象编程 卖车处: 1.4s 2.保险 3.交税 4 ...
- 支持 Homebrew 安装和编辑器模式的 flomo 命令行工具
什么是 flomo-cli 这是一款可以在命令行中将笔记和想法保存到 flomo 的工具. 基于 Golang 实现,可通过 Homebrew 便捷安装. GitHub Repo:https://gi ...
- LeetCode 847. Shortest Path Visiting All Nodes
题目链接:https://leetcode.com/problems/shortest-path-visiting-all-nodes/ 题意:已知一条无向图,问经过所有点的最短路径是多长,边权都为1 ...