Elastic Stack 6.8 Apache 2.4.6 с использованием mod_ssl
Попытка воспользоваться преимуществами, включенными в ES 6.8 и выше.Я настроил Apache в качестве обратного прокси-сервера с аутентификацией по смарт-карте.Это хорошо работает с этой базовой настройкой.Пользователь переходит на https example.com и при запросе вводит свой пин-код для смарт-карты, и он успешно перенаправляет их на интерфейс kibana с экраном имени пользователя / пароля kibana.
Если я попытаюсь ограничить количество тех, кто может войтив случае со смарт-картой кажется, что она пытается войти в Кибану (это, безусловно, будет бонусом).Я получаю это сообщение в браузере для ожидаемого пользователя.Если пользователя нет в списке, я получаю сообщение о том, что.
statusCode: 401
error: "Unauthorized"
message "[security_exception] unable to authenticate user [/common name/ou/etc/of/authorized/user] for REST request [/_xpack/security/_authenticate], with { header={ WWW-Authenticate={ 0=\"Bearer realm=\\\"security"\\\"\ & 1=\"ApiKey\" & 2=\"Basic realm=\\\"security\\\" charset=\\\"UTF-8\\\"\" } } }"
У меня нет журналов, относящихся к нему в kibana илиasticsearch.Мой журнал Apache client_client_access показывает 3 события.включая отличительное имя с
GET / HTTP/1.1 380
GET /favicon.ico HTTP/1.1 380
, затем эта запись без отличительного имени
GET /favicon.ico HTTP/1.1 -
Отображается лог-файл Apache error_log на уровне журнала информации.
(client IP) - AH01964 Connection to child 3 established (server example.com:443)
-Через 2 секунды -
(client IP) - AH02221: Requesting connection re-negotiation
(client IP) - AH02226: Awaiting re-negotiation handshake
- через 4 секунды -
(client IP) - AH02036: Faking HTTP Basic Auth header: "Authorization: Basic --long string--"
(server IP) - AH01964: Connection to child 0 established (server
example:com:443)
(client IP) - AH02036: Faking HTTP Basic Auth header: "Authorization: Basic --same long string--"
(server IP) - AH01964: Connection to child 0 established (server example:com:443)
(client IP) - AH01964 Connection to child 7 established (server example.com:443)
(client IP) - AH02221: Requesting connection re-negotiation
(client IP) - AH02226: Awaiting re-negotiation handshake
(client IP) - AH02226: Re-negotiation handshake failed
(client IP) - AH01998: Connection closed to child 7 with abortive shutdown (server example:com:443)
(client IP) - AH01382: Request header read timeout
(client IP) - AH01991: SSL input filter read failed
Моя конфигурация виртуального хоста Apache выглядит следующим образом.
<VirtualHost example.com:443>
ServerAdmin Me
ServerName example.com
DocumentRoot "/var/www"
#activate HTTPS on the reverse proxy
SSLEngine On
SSLProxyEngine On
SSLCertificateFile /etc/pki/tls/certs/example.com.crt
SSLCertificateKeyFile /etc/pki/tls/certs/example.com.key
SSLCertificateChainFile /etc/pki/tls/certs/chainfile.pem
#activate the client certificate authentication
SSLCACertificateFile /etc/pki/tls/chainfile.pem
SSLCARevocationPath /etc/pki/tls/certs/CRL
CustomLog logs/client_access_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x %{SSL_CLIENT_S_DN}x %r %b"
<location />
SSLRequireSSL
SSLVerifyClient optional
SSLVerifyDepth 5
SSLOptions +FakeBasicAuth
SSLUserName SSL_Client_S_DN
#Initialize the special headers to a blank value to avoid http header forgeries
RequestHeader set SSL_CLIENT_S_CN ""
RequestHeader set SSL_CLIENT_I_DN ""
RequestHeader set SSL_SERVER_S_DN_OU ""
RequestHeader set SSL_CLIENT_VERIFY ""
#add all the SSL you need in the internal web applications
RequestHeader set SSL_CLIENT_S_DN "%{SSL_CLIENT_S_DN}s"
RequestHeader set SSL_CLIENT_I_DN "%{SSL_CLIENT_I_DN}s"
RequestHeader set SSL_SERVER_S_DN_OU "%{SSL_SERVER_S_DN_OU}s"
RequestHeader set SSL_CLIENT_VERIFY "%{SSL_CLIENT_VERIFY}s"
ProxyPass https://example.com:5601
ProxyPassReverse https://example.com:5601
AuthName "Restricted Access"
AuthType Basic
AuthBasicProvider file
AuthUserFile /etc/httpd/userlist.txt
Require valid-user
</location>
<proxy *>
AddDefaultCharset Off
Require all granted
</proxy>
</VirtualHost>
Если я закомментирую всеиз элементов RequestHeader это не дает мне ничего особенного.
Я пытаюсь, по крайней мере, разрешить вход в смарт-карту нужным пользователям.Еще лучше, если я смогу передать желаемую информацию о пользователе в Kibana и позволить им войти в систему и получить нужные права.