Назад | Перейти на главную страницу

Обратный прокси-сервер Apache для одиночного vmware ESXi проблемы аутентификации

У меня есть единственный хост Vmware ESXi в частной сети, управление которым я предоставил общедоступному Интернету через конфигурацию обратного прокси-сервера Apache. Чтобы случайным людям было труднее обнаружить службу, работающую в домене, я применил базовую аутентификацию, которая работает, но мне пришлось отключить ее для некоторых сайтов, чтобы все функции консоли управления работали.

Вот моя конфигурация:

<IfModule mod_ssl.c>
SSLStaplingCache shmcb:/tmp/stapling_cache(128000)
<VirtualHost *:443>
    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
    Header always set X-Frame-Options SAMEORIGIN
    Header always set X-Content-Type-Options nosniff
    Header always set X-Xss-Protection "1; mode=block"
    ServerAdmin webmaster@example.org
    ServerName server.example.org
    ServerAlias vmware.example.org

    DocumentRoot /var/www

    Include /etc/apache2/conf-available/example.org-ssl-wildcard.conf

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

    ErrorLog ${APACHE_LOG_DIR}/vmware_error.log

    # Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/vmware_access.log combined

    #Modules needed: proxy, proxy_http, proxy_wstunnel
    SSLProxyEngine On
    ProxyRequests On
    ProxyVia On
    ProxyPreserveHost Off
    #Self signed Cert
    SSLProxyCheckPeerCN Off
    SSLProxyCheckPeerName Off
    ProxyPass /ticket/ wss://192.168.2.50/ticket/ retry=1 acquire=3000 timeout=600 Keepalive=On
    ProxyPassReverse /ticket/ wss://192.168.2.50/ticket/
    ProxyPass / https://192.168.2.50/ keepalive=On flushpackets=On
    ProxyPassReverse / https://192.168.2.50/

    <Location /ui>
        AuthType Basic
        AuthName "Restricted Content"
        AuthUserFile /etc/apache2/.htpasswd
        Require valid-user

        Options -Indexes
        Options FollowSymLinks

        ProxyPass https://192.168.2.50/ui keepalive=On flushpackets=On
        ProxyPassReverse https://192.168.2.50/ui
    </Location>
</VirtualHost>
</IfModule>

Как видите, мне пришлось открыть веб-корневой каталог /, чтобы он был доступен без пароля, чтобы он работал. В противном случае я попал в цикл перенаправления. Также порт веб-сокета должен был быть открыт без аутентификации. И что еще хуже: ESXi, похоже, также использует базовую аутентификацию, поэтому, когда я пытаюсь открыть веб-консоль, а пользователь на базе Apache не соответствует пользователю ESXi, мне нужно повторно пройти аутентификацию, используя имя пользователя и пароль ESXi, чтобы продолжить ! (Этого не происходит, когда я настраиваю пользователя Apache с тем же паролем, что и на стороне ESXi)

Любые идеи о том, как защитить весь сайт с помощью базовой аутентификации, не нарушая аутентификацию ESXi и, что более важно, веб-сокет