LDAP(輕量級目錄訪問協議,Lightweight Directory Access Protocol)是爲了實現目錄服務的信息服務。
目錄服務是一種特殊的數據庫系統,其專門針對讀取,瀏覽和搜索操作進行了特定的優化。在網絡中應用了LDAP後,用戶只需要使用一個賬號和密碼就可以輕鬆訪問網絡中的所有服務,實現用戶身份的統一認證。簡單來說:拿LDAP來統一管理一些賬號,例如: Gitlab,JenKins,Samba,SVN,Zabbix等。
section1
LDAP數據傳輸默認是不加密的,即通過抓包工具可以輕而易舉將用戶數據信息截獲到,項目中通過Wireshark工具,與Linux端抓包命令tcpdump結合,可以很容易抓取用戶數據與密碼。
tcpdump可以再ldap客戶端和ldap服務端使用,抓包。
抓取到包,通過 Wireshark打開分析。當然Wireshark也可以抓包,但侷限於windows客戶端(可以通過java api讀取ldap用戶進行抓包,讀取方式參考之前博客https://blog.csdn.net/seulzz/article/details/103428327)
其中,Wireshark使用參考https://www.cnblogs.com/cocowool/p/wireshark_tcp_http.html ,https://www.cnblogs.com/lsdb/p/9254544.html
tcpdump使用參考https://www.cnblogs.com/-wenli/p/10126511.html
section2
簡單來說:拿LDAP來統一管理一些賬號,例如: Gitlab,JenKins,Samba,SVN,Zabbix等。項目中爲了解決抓包漏洞問題,將ldap採用加密傳輸方式,目前加密傳輸方式兩種:LDAP over SSL(ldaps) 與LDAP over TLS
關於SSL/TLS
LDAP over SSL
# LDAP over SSL 也就是 ldaps
# ldap默認不加密情況下是走的389端口
# 當使用ldaps的時候走的就是636端口了
# 可以簡單理解成http和https的關係
# 當然ldaps已經淘汰了,不然也不會有LDAP over TLS出來
LDAP over TLS
# TLS可以簡單理解爲ldaps的升級
# 它默認走389端口,但是會通訊的時候加密
# 客戶端連接LDAP時,需要指明通訊類型爲TLS,所以他可以跟不加密的模式一樣,任意端口都行
對比一下連接方式:
ldaps: ldapsearch -H ldaps://127.0.0.1 (ldaps啓動參考https://blog.csdn.net/seulzz/article/details/102963347)
TLS: ldapsearch -ZZ -H ldap://127.0.0.1 (ldap over tls,安裝啓動與不加密傳輸一樣,傳輸加密實現很簡單,ldap操作命令加上-ZZ即可。ldapsearch -x -ZZ -D "cn=LdapAdmin,dc=zdh,dc=com" -w Zdh@admin )(啓動tls加密傳輸 -ZZ)
執行ldapsearch -x -ZZ後,查看日誌,內容有 TLS established tls_ssf=256 ssf=256, 服務端配置正常
Jan 9 01:17:31 ldap-server slapd[12483]: conn=1067 fd=26 ACCEPT from IP=[::1]:52758 (IP=[::]:389)
Jan 9 01:17:31 ldap-server slapd[12483]: conn=1067 op=0 EXT oid=1.3.6.1.4.1.1466.20037
Jan 9 01:17:31 ldap-server slapd[12483]: conn=1067 op=0 STARTTLS
Jan 9 01:17:31 ldap-server slapd[12483]: conn=1067 op=0 RESULT oid= err=0 text=
Jan 9 01:17:31 ldap-server slapd[12483]: conn=1067 fd=26 TLS established tls_ssf=256 ssf=256
Jan 9 01:17:31 ldap-server slapd[12483]: conn=1067 op=1 BIND dn="" method=128
Jan 9 01:17:31 ldap-server slapd[12483]: conn=1067 op=1 RESULT tag=97 err=0 text=
Jan 9 01:17:31 ldap-server slapd[12483]: conn=1067 op=2 SRCH base="" scope=2 deref=0 filter="(objectClass=*)"
Jan 9 01:17:31 ldap-server slapd[12483]: conn=1067 op=2 SEARCH RESULT tag=101 err=32 nentries=0 text=
Jan 9 01:17:31 ldap-server slapd[12483]: conn=1067 op=3 UNBIND
Jan 9 01:17:31 ldap-server slapd[12483]: conn=1067 fd=26 closed
兩種方式均需要證書文件,證書製備參考:https://blog.csdn.net/u011607971/article/details/86153804,https://www.ibm.com/developerworks/cn/linux/1312_zhangchao_opensslldap/
項目測試過程中,這兩種方式都可以解決加密傳輸抓包問題,但是ldaps會引入其他nessus漏洞,如,51192 - SSL Certificate Cannot Be Trusted,57582 - SSL Self-Signed Certificate,ssl 重協商等。
項目最後採取ldap over TLS方式解決。