`

ldap协议资料收集

 
阅读更多

区分名(DN,Distinguished Name) 

在LDAP中,一个条目的区分名称叫做“dn”或者叫做区分名。在一个目录中这个名称总是唯一的。比如,我的dn是"uid=aghaffar, ou=People, o=developer.ch"。不可能有相同的dn,但是我们可以有诸如"uid=aghaffar, ou=Administrators, o=developer.ch"的dn。这同上面文件系统中/etc/passwd 和 /usr/passwd的例子很类似。 
    我们有独一无二的属性,在"ou=Administrators, o=developer.ch" 中uid和在"ou=People, o=developer.ch"中的uid。这并不矛盾。
CN=Common Name 为用户名或服务器名,最长可以到80个字符,可以为中文;
OU=Organization Unit为组织单元,最多可以有四级,每级最长32个字符,可以为中文;
O=Organization 为组织名,可以3?64个字符长
C=Country为国家名,可选,为2个字符长

 

 

LDAP目录以一系列“属性对”的形式来存储记录项,每一个记录项包括属性类型和属性值(这与关系型数据库用行和列来存取数据有根本的不同)。
mail = testmail@mccc.net
othermailbox = testmailother@mccc.com
givenname = givenname
sn = test sn
属性可添加,以下一个属性必须赋值:
objectclass=person (值为:person 或 server 或 organization 或 其他自定义的值)

 

LDAP简称对应

  1. o– organization(组织-公司)
  2. ou – organization unit(组织单元-部门)
  3. c - countryName(国家)
  4. dc - domainComponent(域名)
  5. sn – suer name(真实名称)
  6. cn - common name(常用名称)

*常用关键字及其对应的含义
【dc】-- Domain Component-- 域名的部分,其格式是将完整的域名分成几部分,如域名为example.com变成dc=example,dc=com

【uid】-- User ID-- 用户ID,如“tom”

【ou】-- Organization Unit-- 组织单位,类似于Linux文件系统中的子目录,是一个容器对象,组织单位可以包含其他各种对象(包括其他组织单元),如“market”

【sn】-- Surname-- 姓,如“Johansson”

【dn】-- Distinguished Name-- 唯一辨别名,类似于Linux文件系统中的绝对路径,每个对象都有一个唯一的名称,如“uid=tom,ou=market,dc=example,dc=com”,在一个目录树中DN总是唯一的

【rdn】-- Relative dn-- 相对辨别名,类似于文件系统中的相对路径,它是与目录树结构无关的部分,如“uid=ton”或“cn=Thomas Johansson”

【c】-- Country -- 国家,如“CN”或“US”等

【o】-- Organization -- 组织名,如“Example,Inc.”

 

 

假设有一个名为Example的公司(DNS名为example.com),其组织结构如下:
LDAP基础 - 塞外戎马 - Study Desk


     (1)首先要为目录树建立一个“根(Root)”。根是目录树的最顶层,后面建立的所有对象都是基于这个根的,所以它也称为基准DN。它可以有3种格式表示。
     *使用X.500标准格式:o=example,c=CN。 
     *直接使用公司的DNS域名:o=example.com。
     *使用公司的DNS域名的不同部分:dc=example,dc=com。
     第3种格式更利于以后目录树的扩展,如将来Example公司合并了abc公司,之需要将dc=com最为根即可,不需要修改原有的结构。

     (2)公司中的部门作为OU,如“ou=market”。OU是目录树的分枝节点,下面可以包含其他分枝节点或叶子节点。

     (3)用户是目录树的最底层(即叶子节点),可以根据用户所在的部门将其放置在不同的OU中,使用uid或cn描述都可以,如“uid=tom”或“cn=Thomas Johansson”。

 

 

 

Php如何操作LDAP
2.1 Php如何与LDAP连接和关闭
$ds=ldap_connect("ServerName")
ServerName是LDAP的服务器名,

例:
$ds=ldap_connect(“10.31.172.30:1000”)
返回值是:true 或 false

关闭连接
ldap_close($ds);

2.2 在php中如何搜索用户信息
$ds=ldap_connect("10.31.172.30:1000");
//首先连接上服务器
$justthese = array("cn","userpassword",”location”);
//搜索函数中的一个参数,要求返回哪些信息,
//以上传回cn,userpassword,location,这些都要求小写
$sr=ldap_search($ds,"o=jite", "cn=dom*",$justthese); 
//第一个参数开启LDAP的代号
//第二个参数最基本的 dn 条件值 , 例:”o=jite,c=cn”
//第三个参数 filter 为布林条件,它的语法可以在 Netscape 站上找一份 dirsdkpg.pdf 档案.
// ’o’为组织名,’cn’ 为用户名,用户名可用通配符 ’*’
echo "domadmin姓氏有".ldap_count_entries($ds,$sr)." 个<p>";
//ldap_count_entries($ds,$sr)传回记录总数

$info = ldap_get_entries($ds, $sr);
//LDAP的全部传回资料
echo "资料传回 ".$info["count"]."笔:<p>";
for ($i=0; $i<$info["count"]; $i++) {
echo "dn为:". $info[$i]["dn"] ."<br>";
echo "cn为:". $info[$i]["cn"][0] ."<br>"; //显示用户名
echo "email为:". $info[$i]["mail"][0] ."<p>"; //显示mail
echo "email为:". $info[$i][“userpassword"][0] ."<p>"; //显示加密后的密码
}
2.3 添加用户
$ds=ldap_connect("10.31.172.30:1000");
//首先连接上服务器
$r=ldap_bind($ds,"cn=domadmin,o=jite","password");
//系住一个管理员,有写的权限
// cn=domadmin,o=jite顺序不能变
$info["cn"]="aaa"; //必填 
$info["userpassword"]="aaa"; 
$info["location"]="shanghai";
$info["objectclass"] = "person"; //必填person为个人,还有server…
ldap_add($ds, "cn=".$info["cn"].",o=jite", $info);
ldap_unbind($ds);
//取消绑定
ldap_close($ds);
//关闭连接
2.4 删除用户
$ds=ldap_connect("10.31.172.30:1000");
//首先连接上服务器 
ldap_bind($ds,"cn=domadmin,o=jite","password");
//绑定管理员,有删除的权限
$dn="cn=dingxf,o=jite";
ldap_delete($ds, $dn);
//删除用户
ldap_unbind($ds);
//取消绑定
ldap_close($ds);
//关闭连接
2.5 修改用户资料
$ds=ldap_connect("10.31.172.30:1000");
//首先连接上服务器 
ldap_bind($ds,"cn=domadmin,o=jite","password");
//绑定管理员,有修改的权限
$dn="cn=dingxf,o=jite"; 
//用户dn
$info["userpassword"]="aaa"; //要修改的信息,放在数组变量中
$info["location"]="shanghaisdaf";

ldap_modify($ds, $dn , $info);
//修改函数
ldap_unbind($ds);
//取消绑定
ldap_close($ds);
//关闭连接
2.6 用户登录验证
$ds=ldap_connect("10.31.172.30:1000");
//首先连接上服务器 
if (ldap_bind($ds,"cn=dingxf,o=jite","dingxf")){
echo "验证通过";
}else{
echo "验证不通过";
}
ldap_unbind($ds);
//取消绑定
ldap_close($ds);
//关闭连接
分享到:
评论

相关推荐

    ldapdomaindump:通过LDAP的Active Directory信息转储

    这使LDAP成为在内部网络的渗透测试的搜集阶段中收集信息的有趣协议。 问题是来自LDAP的数据通常无法以易于阅读的格式获得。 ldapdomaindump是一个旨在解决此问题的工具,它通过收集和解析可通过LDAP获得的信息并将...

    java开源包3

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    网络工程师考试考点分析与真题详解.网络设计与管理篇.part5

    180 7.8.3 完全合格的域名 181 7.9 电子邮件 181 7.9.1 SMTP协议 181 7.9.2 POP3邮局协议 182 7.9.3 多用途因特网邮件扩展协议 185 7.9.4 因特网消息访问协议 186 7.9.5 LDAP协议 186 7.9.6...

    网络工程师考试考点分析与真题详解.网络设计与管理篇.part2

    180 7.8.3 完全合格的域名 181 7.9 电子邮件 181 7.9.1 SMTP协议 181 7.9.2 POP3邮局协议 182 7.9.3 多用途因特网邮件扩展协议 185 7.9.4 因特网消息访问协议 186 7.9.5 LDAP协议 186 7.9.6...

    网络工程师考试考点分析与真题详解.网络设计与管理篇.part6

    180 7.8.3 完全合格的域名 181 7.9 电子邮件 181 7.9.1 SMTP协议 181 7.9.2 POP3邮局协议 182 7.9.3 多用途因特网邮件扩展协议 185 7.9.4 因特网消息访问协议 186 7.9.5 LDAP协议 186 7.9.6...

    网络工程师考试考点分析与真题详解.网络设计与管理篇.part7

    180 7.8.3 完全合格的域名 181 7.9 电子邮件 181 7.9.1 SMTP协议 181 7.9.2 POP3邮局协议 182 7.9.3 多用途因特网邮件扩展协议 185 7.9.4 因特网消息访问协议 186 7.9.5 LDAP协议 186 7.9.6...

    网络工程师考试考点分析与真题详解.网络设计与管理篇

    180 7.8.3 完全合格的域名 181 7.9 电子邮件 181 7.9.1 SMTP协议 181 7.9.2 POP3邮局协议 182 7.9.3 多用途因特网邮件扩展协议 185 7.9.4 因特网消息访问协议 186 7.9.5 LDAP协议 186 7.9.6...

    网络工程师考试考点分析与真题详解.网络设计与管理篇.part3

    180 7.8.3 完全合格的域名 181 7.9 电子邮件 181 7.9.1 SMTP协议 181 7.9.2 POP3邮局协议 182 7.9.3 多用途因特网邮件扩展协议 185 7.9.4 因特网消息访问协议 186 7.9.5 LDAP协议 186 7.9.6...

    网络工程师考试考点分析与真题详解.网络设计与管理篇.part4

    180 7.8.3 完全合格的域名 181 7.9 电子邮件 181 7.9.1 SMTP协议 181 7.9.2 POP3邮局协议 182 7.9.3 多用途因特网邮件扩展协议 185 7.9.4 因特网消息访问协议 186 7.9.5 LDAP协议 186 7.9.6...

    java开源包6

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    flamingo:Flamingo捕获各种IT和安全产品在网络上传播的凭据

    当前支持SSH,HTTP,LDAP,DNS,FTP和SNMP凭据收集。鼓励请求拉取以获取其他协议和输出目标。用法从页面获取火烈鸟二进制文件或从源代码构建。 $ GOOS=win32 GOARCH=amd64 go build -o flamingo.exe$ go get -u -v ...

    Kn0ck:自动化工具渗透测试

    自动测试匿名LDAP访问 自动枚举SSL / TLS密码,协议和漏洞 自动枚举SNMP社区字符串,服务和用户 自动列出SMB用户和共享,检查NULL会话并利用MS08-067 自动利用易受攻击的JBoss,Java RMI和Tomcat服务器 自动...

    tls-scan:互联网规模,快速的SSLTLS扫描器(非阻塞,事件驱动)

    TLS和StartTLS协议支持:SMTP,IMAP,POP3,FTPS,SIEVE,NNTP,XMPP,LDAP,RDP,POSTGRES,MYSQL 快速燃烧-可以大规模运行并具有同时扫描大量服务器的能力(例如大规模扫描IoT设备) 检测SSLv2,SSLv3,TLSv1,...

    java开源包1

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    JAVA上百实例源码以及开源项目

    笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!此时此...

    java开源包11

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包2

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包5

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包10

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包4

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

Global site tag (gtag.js) - Google Analytics