o apache obteve um erro interno ao acessar o módulo ldap

1

Estou instalado no httpd 2.4 e no /etc/httpd/conf.d/ssl.conf como

WSGIScriptAlias /wsgi_app /trac/cgi-bin/wsgi_app.py
<Directory /trac/cgi-bin>                          
  Require all granted                                  
</Directory>                                           
WSGIScriptAlias /ldap_app /trac/cgi-bin/wsgi_app.py
<Location /ldap_app>
...
</Location>

Em uma máquina física, ela funciona para acessar http: /// wsgi_app e http: /// ldap_app. Eu quero clonar esse ambiente na minha pequena máquina virtual (incluindo arquivos de configuração e pacotes), mas tenho um erro quando tento acessar o URL ldap_app. Eu aumento a RAM da VM de 512M para 1024M, o problema ainda ocorre. Eu ligo nível de log 'debug' para httpd, não pode ajudar. Existe alguma dica para resolver / rastrear este erro? (Eu verifiquei /var/log/httpd/*.log nada relacionado a esse problema).

As únicas diferenças que eu encontrei podem ser úteis é o último número do log. Na máquina física / var / log / httpd / ssl_request_log

[14/Jul/2014:17:26:38 +0800] 192.168.2.160 TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 "GET /ldap_app HTTP/1.1" 2088

Na máquina / VM / log / httpd / ssl_request_log da VM

[14/Jul/2014:17:37:55 +0800] 192.168.2.160 TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 "GET /ldap_app HTTP/1.1" 527

O /etc/httpd/conf.d/ssl.conf é

<Location /ldap-status>
  SetHandler ldap-status
  AuthType Basic
  AuthName "LDAP Protected"
  AuthBasicProvider ldap
  AuthLDAPBindDN "CN=foo,CN=Users,DC=bar,DC=com,DC=tw"
  AuthLDAPBindPassword "pass"
  AuthLDAPURL "ldap://192.168.1.1:389/CN=Users,DC=taifex,DC=com,DC=tw?sAMAccountName?sub?(objectClass=*)"
  # Require valid-user
</Location>

Se eu ativar Exigir usuário válido, isso ocorrerá depois das mensagens de erro: Erro do Servidor Interno     O servidor encontrou um erro interno ou uma configuração incorreta e não conseguiu concluir sua solicitação.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.
    
por Daniel YC Lin 14.07.2014 / 11:54

2 respostas

1

Eu encontrei esse problema nos meus servidores RHEL 7 e CentOS 7 hoje.

É um problema com o SELinux, conforme identificado corretamente, que pode ser encontrado ao verificar o log de auditoria (inspiração deste post - link ), irritantemente não em qualquer log do Apache!

grep -m 1 httpd /var/log/audit/audit.log | audit2why 

retorna

type=AVC msg=audit(1447030307.379:374): avc:  denied  { name_connect } for  pid=1132 comm="httpd" dest=389 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:ldap_port_t:s0 tclass=tcp_socket
type=SYSCALL msg=audit(1447030307.379:374): arch=c000003e syscall=42 success=no exit=-13 a0=18 a1=7f0e86f6aa30 a2=10 a3=0 items=0 ppid=1029 pid=1132 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="httpd" exe="/usr/sbin/httpd" subj=system_u:system_r:httpd_t:s0 key=(null)

Desligar o SELinux, no entanto, não é a resposta.

O SELinux tem um número de opções de configuração que são aplicadas ao processo httpd, uma lista completa pode ser encontrada executando:

getsebool -a | grep httpd

Uma dessas opções de configuração é httpd_can_connect_ldap, cujo padrão é off. Executando o seguinte como root

setsebool -P httpd_can_connect_ldap on

permite que o processo httpd acesse servidores LDAP nas portas padrão.

    
por 09.11.2015 / 02:07
0

Desativar o SELinux permitirá que funcione. (Um método ruim, mas funciona. Na minha pergunta, a máquina funcional liga o SELinux)

Edite / etc / selinux / config e reinicie

SELINUX=didsabled
    
por 18.07.2014 / 11:39