Прокси для частных локаций
Прокси для частных локаций
В развертывание Ключ-АСТРОМ можно включать прокси-серверы, балансировщики нагрузки и обратные прокси-серверы. В частности, конфигурация АктивногоШлюза позволяет определить один или несколько прокси-серверов для исходящих соединений.
Для настройки прокси-сервера для связи с тестируемым ресурсом отредактируйте файл custom.properties и задайте свойства в соответствующем разделе [synthetic].
Чтобы настроить прокси-сервер только для внутренней связи с кластером Ключ-АСТРОМ, см. раздел «Настройки для связи только с кластером Ключ-АСТРОМ».
Чтобы настроить один и тот же прокси-сервер как для тестируемого ресурса, так и для кластера Ключ-АСТРОМ, задайте свойства в соответствующем разделе [http.client].
Свойства конфигурации прокси
При настройке прокси для АктивногоШлюза с поддержкой синтетических алгоритмов можно использовать следующие свойства:
| Свойство | Описание |
|---|---|
proxy-server
|
Адрес сервера (имя хоста или IP-адрес) |
proxy-port
|
Порт (необязательный). Если оставить поле пустым, будет использоваться порт по умолчанию 8080.
|
proxy-scheme
|
Схема (необязательный). Если поле оставить пустым, используется схема по умолчанию http. Применяется наиболее распространённая конфигурация, при которой соединение с прокси-сервером инициируется с использованием HTTP и автоматически преобразуется в защищённое. Вся дальнейшая связь АктивногоШлюза через прокси-сервер защищена протоколом SSL/TLS. Этот параметр необходимо установить в https для прокси-серверов, которые вообще не поддерживают HTTP.
|
proxy-user
|
Имя пользователя (необязательный) |
proxy-domain
|
Домен пользователя в случае аутентификации NTLM |
proxy-password
|
Пароль (необязательный). После перезапуска АктивногоШлюза пароль, указанный в свойстве proxy-password, шифруется, и зашифрованный пароль сохраняется в свойстве proxy-password-encr. Если запятая (,) является частью значения, перед ней необходимо добавить экранирующую обратную косую черту (\). Например, proxy-password = foo\,bar.
|
proxy-off
|
Если установить это значение true, прокси-сервер будет отключён для данного типа связи.
|
proxy-non-proxy-hosts
|
. В качестве символа-заменителя можно также использовать звёздочку (*). Допускается только один символ-заменитель, либо в начале, либо в конце имени хоста. Например, proxy-non-proxy-hosts=*.foo.com|localhost означает, что доступ ко всем хостам в домене foo.com и localhost должен осуществляться напрямую, даже если указан прокси-сервер. Полное описание допустимого синтаксиса см. в разделе «Свойства сети» http.nonProxyHosts для соответствующего параметра.
|
proxy-authentication-schemes
|
АктивныйШлюз версии 1.271+. Список схем аутентификации через прокси-сервер (необязательный). Это приоритетный список схем аутентификации через прокси-сервер, которые АктивныйШлюз должен использовать при аутентификации с прокси-сервером. Начиная с первой схемы в списке, АктивныйШлюз попытается выполнить аутентификацию и, в случае неудачи, перейдёт к следующей схеме в списке. Если это свойство не определено, АктивныйШлюз попытается выполнить аутентификацию, используя все доступные схемы. Поддерживаемые значения: NTLM, BASIC.
|
Сценарии подключения через прокси-сервер
Это возможные сценарии для вашей конфигурации прокси. Доступ к тестируемому ресурсу через прокси поддерживается только для браузерных мониторов и HTTP-мониторов.
Подключитесь к кластеру Ключ-АСТРОМ
[http.client] proxy-server=<proxy> proxy-port=8080 proxy-user=username proxy-password=password [synthetic] proxy-off=true
Подключитесь одновременно к кластеру Ключ-АСТРОМ и к тестируемому ресурсу
[http.client] proxy-server=<proxy> proxy-port=8080 proxy-user=username proxy-password=password
Подключитесь к кластеру Ключ-АСТРОМ и протестированным ресурсам через различные прокси-серверы
Подключитесь к кластеру Ключ-АСТРОМ:
[http.client] proxy-server=<proxy> proxy-port=8080 proxy-user=username proxy-password=password
Подключитесь к проверяемому ресурсу:
[synthetic] proxy-server=<прокси между AG и проверяемым ресурсом> proxy-port=9090 proxy-user=username_two proxy-password=password_two
Подключитесь к проверяемому ресурсу и/или Amazon S3
Для работы АктивногоШлюза с поддержкой синтетического анализа требуется доступ к сервису Amazon S3 для загрузки и просмотра снимков экрана браузера в закрытых помещениях.
[synthetic] proxy-server=<прокси между AG и проверяемым ресурсом> proxy-port=8080 proxy-user=username proxy-password=password
Для получения дополнительной информации см. файлы автоматической настройки прокси-сервера (PAC).
Настройте синтетический мониторинг с прямым подключением к другим ресурсам
[synthetic] proxy-server=<прокси между AG и проверяемым ресурсом> proxy-port=8080 proxy-user=username proxy-password=password proxy-non-proxy-hosts=my.corp.org|*.gdansk.astromkey.com
Файлы автоматической настройки прокси-сервера (PAC)
Для настройки сложных параметров прокси-сервера для мониторинга браузера в приватном режиме можно использовать файлы автоматической настройки прокси (PAC).
Что такое PAC-файл?
Файл автоматической настройки прокси (PAC) — это функция JavaScript, которая определяет, будут ли запросы веб-браузера (HTTP, HTTPS и FTP) направляться непосредственно к месту назначения или перенаправляться на веб-прокси-сервер (подробнее см. файл автоматической настройки прокси (PAC) на developer.mozilla.org).
Предоставьте PAC-файл мониторам вашего браузера
- Перейдите в раздел Синтетический мониторинг.
- (Необязательно) Чтобы отфильтровать таблицу по мониторам браузеров, выберите Браузер в разделе Параметры фильтра слева.
- Из списка мониторов браузера выберите тот монитор, для которого вы хотите предоставить PAC-файл. После этого справа отобразится панель предварительного просмотра.
- В правом верхнем углу панели предварительного просмотра выберите Редактировать.
- С этого момента вы будете перенаправлены на предыдущую страницу Ключ-АСТРОМ, где сможете указать URL-адрес PAC-файла.
- Переключитесь в режим сценария.
- Для создания clickpatch выберите Записанный clickpatch > Скрипт.
- Для мониторинга по одному URL-адресу выберите Скрипт монитора.
- Добавьте следующее в объект
configurationJSON-файла:
"proxy": {
"pacUrl": "https://www.example.com/test.pac"
}
pacUrlуказывает на ваш размещённый PAC-файл.
Совместимость конфигурации файла PAC
- Конфигурация PAC-файла применяется только к частным синтетическим локациям, а не к общедоступным.
- Конфигурация PAC-файла применяется только к настроенному вами монитору — для каждого отдельного монитора PAC-файл должен быть настроен в его скрипте; нет глобальной настройки для всех мониторов, позволяющей использовать PAC-файл для прокси-сервисов.
- Если вы настраиваете прокси-файл PAC для одного скрипта синтетического мониторинга, он применяется только к этому монитору.
- Если указан PAC-файл, он переопределяет настройки прокси-сервера, заданные на уровне АктивногоШлюза для связи с тестируемым ресурсом. В частности, он переопределяет свойства в соответствующем разделе
[synthetic]. - Файл PAC должен передаваться по протоколу HTTP/S.
Настройка прокси-сервера для режима FIPS
При установке синтетической локации в режиме FIPS трафик монитора браузера должен маршрутизироваться через локальный перехватывающий прокси-сервер, чтобы весь трафик, покидающий хост, шифровался с помощью криптографической библиотеки, сертифицированной по стандарту FIPS:
В этом примере мы используем прокси-сервер Squid, подключённый к встроенной библиотеке OpenSSL, но вы можете использовать другое прокси-программное обеспечение, если его криптографическая библиотека сертифицирована по стандарту FIPS.
Установите прокси-сервер на том же хосте, что и синтетический движок:
Red Hat
sudo dnf install squid
Ubuntu Pro
sudo apt install squid-openssl
Предоставьте сертификат центра сертификации для повторной подписи перехваченных запросов:
Red Hat
sudo mkdir /etc/squid/ssl_cert sudo mv ~/prepared_ca_cert.pem /etc/squid/ssl_cert/squid.pem sudo chown --recursive squid:squid /etc/squid/ssl_cert sudo chmod 700 /etc/squid/ssl_cert sudo chmod 600 /etc/squid/ssl_cert/squid.pem
Ubuntu Pro
sudo mkdir /etc/squid/ssl_cert sudo mv ~/prepared_ca_cert.pem /etc/squid/ssl_cert/squid.pem sudo chown --recursive proxy:proxy /etc/squid/ssl_cert sudo chmod 700 /etc/squid/ssl_cert sudo chmod 600 /etc/squid/ssl_cert/squid.pem
Если включена функция SELinux, может потребоваться корректировка меток файлов. Подробности см. в документации Red Hat для Red Hat Enterprise Linux 8 или Red Hat Enterprise Linux 9.
Создать временный кэш сертификатов:
Red Hat
sudo /usr/lib64/squid/security_file_certgen -c -s /var/spool/squid/ssl_db -M 4MB sudo chown --recursive squid:squid /var/spool/squid/ssl_db
Ubuntu Pro
sudo /usr/lib/squid/security_file_certgen -c -s /var/spool/squid/ssl_db -M 4MB sudo chown --recursive proxy:proxy /var/spool/squid/ssl_db
Настройте прокси-сервер для перехвата SSL-сообщений (по умолчанию /etc/squid/squid.conf):
acl SSL_ports port 443 acl Safe_ports port 80 443 1025-65535 acl CONNECT method CONNECT
http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost http_access deny all http_port 3128 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid/ssl_cert/squid.pem
acl step1 at_step SslBump1 ssl_bump peek step1 ssl_bump bump all cache deny all
Для вступления изменений в силу перезапустите прокси-сервер:
sudo systemctl enable squid sudo systemctl restart squid
Убедитесь, что прокси-сервер работает корректно:
curl --proxy localhost:3128 https://example.com
(Необязательно) Если вы выбрали другой порт прокси, вам необходимо настроить синтетическую конфигурацию (по умолчанию /var/lib/astromkey/synthetic/config/user.properties):
com.vuc.fips.proxy.port=3128
Настройка прокси-сервера для режима FIPS с использованием корпоративного прокси
Если в вашей организации требуется использование корпоративного прокси-сервера, вам необходимо настроить второй локальный экземпляр Squid из-за ограничений Squid:
Если вы используете другое прокси-программное обеспечение, это может быть к вам неактуально.
- Настройте прокси-сервер для FIPS, как описано в предыдущем разделе.
- Требуется определённая версия Squid 5+, поэтому версии Red Hat 8 и Ubuntu 20 не поддерживаются.
- На том же хосте создайте второе определение службы Squid:
Red Hat
/usr/lib/systemd/system/squid2.service [Unit] Description: Squid with upstream proxy. After=network.target network-online.target nss-lookup.target [Service] Type=notify LimitNOFILE=16384 PIDFile=/run/squid2.pid ExecStart=/usr/sbin/squid --foreground -n squid2 -f "/etc/squid/squid2.conf" ExecReload=/usr/bin/kill -HUP $MAINPID KillMode=mixed NotifyAccess=all [Install] WantedBy=multi-user.target
Ubuntu Pro
/lib/systemd/system/squid2.service [Unit] Description: Squid with upstream proxy. After=network.target network-online.target nss-lookup.target [Service] Type=notify PIDFile=/run/squid2.pid Group=proxy RuntimeDirectory=squid2 RuntimeDirectoryMode=0775 ExecStart=/usr/sbin/squid --foreground -sYC -n squid2 -f "/etc/squid/squid2.conf" ExecReload=/bin/kill -HUP $MAINPID KillMode=mixed NotifyAccess=all [Install] WantedBy=multi-user.target
Создайте вторую конфигурацию прокси-сервера (/etc/squid/squid2.conf) и укажите хост, порт и аутентификацию вашего корпоративного прокси-сервера:
acl SSL_ports port 443 acl Safe_ports port 80 443 1025-65535 acl CONNECT method CONNECT
http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost http_access deny all http_port 3129
access_log daemon:/var/log/squid/access2.log squid cache_log /var/log/squid/cache2.log pid_filename /run/squid2.pid
cache_peer upstream-proxy.example.com parent 443 0 default no-digest proxy-only login=proxyuser:proxypass tls tls-min-version=1.2 tls-options=NO_SSLv3 never_direct allow all visible_hostname squid2 cache deny all
Обновите конфигурацию первого прокси-сервера (/etc/squid/squid.conf), чтобы использовать второй прокси-сервер в качестве родительского, добавив следующие строки:
cache_peer localhost parent 3129 0 default no-digest proxy-only never_direct allow all visible_hostname squid1
Перезапустите обе службы Squid:
sudo systemctl daemon-reload sudo systemctl enable squid2 sudo systemctl start squid2 sudo systemctl restart squid
Убедитесь, что цепочка прокси-серверов работает корректно:
curl --proxy localhost:3128 https://example.com
Вопросы распределения ресурсов
- Каждому сервису Squid требуется дополнительно 500 МиБ оперативной памяти, что необходимо учитывать при выборе размера экземпляра для конкретной рабочей нагрузки.
- Запросы, проходящие через несколько прокси-серверов, будут выполняться дольше, поэтому показатели производительности будут хуже, чем у запросов от экземпляра, не соответствующего стандарту FIPS.