Active-Directory

Rabbitmq 不會與 Active Directory 對話

  • December 18, 2015

我有一個需要連接到 AD 的 rabbitmq 伺服器。

使用 puppet rabbitmq 模組設置配置,並進行一些小的手動更改(日誌級別):

% This file managed by Puppet
% Template Path: rabbitmq/templates/rabbitmq.config
[
 {rabbit, [
   {auth_backends, [rabbit_auth_backend_internal, rabbit_auth_backend_ldap]},
   {tcp_listen_options,
        [binary,
        {packet,        raw},
        {reuseaddr,     true},
        {backlog,       128},
        {nodelay,       true},
        {exit_on_close, false}]
   },
   {default_user, <<"guest">>},
   {default_pass, <<"guest">>}
 ]},
 {kernel, [

 ]}
,
 {rabbitmq_management, [
   {listener, [
     {port, 15672}
   ]}
 ]}
,
% Configure the LDAP authentication plugin
 {rabbitmq_auth_backend_ldap, [
   {other_bind, anon},
   {servers, ["ldap"]},
   {user_dn_pattern, "CN=Rabbitmq LDAP User,OU=Service Accounts,DC=very,DC=chill,DC=domain"},
   {use_ssl, false},
   {port, 389},
   {log, network}
 ]}
].
% EOF

當我嘗試登錄管理外掛的 Web 控制台時的錯誤日誌:

=INFO REPORT==== 18-Dec-2015::18:01:03 ===
LDAP CHECK: login for myuser

=INFO REPORT==== 18-Dec-2015::18:01:03 ===
       LDAP filling template "CN=Rabbitmq LDAP User,OU=Service Accounts,DC=very,DC=chill,DC=domain" with
           [{username,<<"myuser">>}]

=INFO REPORT==== 18-Dec-2015::18:01:03 ===
       LDAP template result: "CN=Rabbitmq LDAP User,OU=Service Accounts,DC=very,DC=chill,DC=domain"

=INFO REPORT==== 18-Dec-2015::18:01:03 ===
   LDAP connecting to servers: ["ldap.very.chill.domain"]

=INFO REPORT==== 18-Dec-2015::18:01:03 ===
   LDAP network traffic: Connect: "ldap.very.chill.domain" failed {error,
                                                                 eacces}

=INFO REPORT==== 18-Dec-2015::18:01:03 ===
   LDAP connect error: {error,"connect failed"}

=INFO REPORT==== 18-Dec-2015::18:01:03 ===
LDAP DECISION: login for myuser: {error,"connect failed"}

=ERROR REPORT==== 18-Dec-2015::18:01:03 ===
webmachine error: path="/api/whoami"
"Unauthorized"

這在 AD 的伺服器端沒有留下任何日誌,所以我執行了一個 tcpdump:

tcpdump -nnS -i ens160 | grep -vi arp | grep ldap.server.ip
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens160, link-type EN10MB (Ethernet), capture size 65535 bytes

這表明沒有任何數據包發送到 ldap:389 埠。

所以我從兔子伺服器機器上做了這個,以確保網路沒有問題:

ldapsearch -x -h 'ldap.very.chill.domain' -p 389 -w "VerySec*" -D "CN=Rabbitmq LDAP User,OU=Service Accounts,DC=very,DC=chill,DC=domain" -b "DC=very,dc=chill,dc=domain"

本次查詢的tcp轉儲顯示有數據包發往389,查詢成功。

所以我的假設是 rabbitmq 配置中有一些東西使它甚至不會嘗試向 ldap 伺服器的方向發送任何數據包。

將不勝感激任何線索。

SELinux 預設會阻止大多數守護程序連接出站。在 RHEL 7 中,這些策略變得更加具體(在某些情況下更具限制性)。

setenforce 0測試,然後如果它有效,用於sealert分析您的/var/log/audit/audit.log文件以確定要採取的行動方案。SELinux 上的 CentOS wiki 頁面可能是 Internet 上最好的 SELinux 資源:https ://wiki.centos.org/HowTos/SELinux

引用自:https://serverfault.com/questions/744051