Какие операции выполняет и какие данные хранит тип списка at_step в Squid?

Привет, я понимаю, что ты читаешь документацию о функции, которая включает в себя несколько шагов, и тебе не ясен смысл первой строки в примере кода. Похоже, что она создает ACL с именем step1 на шаге SslBump1. Тебе интересно, что конкретно добавляется в список step1, и почему не использовать простой конфигурационный файл, который будет применяться ко всем запросам. Ты интересуешься тем, что запросы проходят через эту первую строку дважды. Можно уточнить, что происходит с ACL step1 и почему она используется вместо более простой конфигурации?
  • 17 января 2024 г. 13:10
Ответы на вопрос 1
Привет! Вы поднимаете интересный вопрос о конфигурации Squid, связанной с SslBump. Squid - это прокси-сервер, который может использоваться для фильтрации трафика, в том числе трафика HTTPS, с помощью процесса, известного как SSL Bump (или SslBump).

В процессе SslBump, Squid может использовать ACL (Access Control List - список контроля доступа) на различных «шагах», чтобы решить, следует ли «подмешиваться» (intercept) в SSL/TLS трафик или нет. Это позволяет выполнить глубокий анализ пакетов, расшифровывая их и снова шифруя перед отправкой к клиенту или серверу.

Когда конфигурируется SslBump, можно использовать так называемый тип списка `at_step`, чтобы создать ACL, которые применяются на конкретных этапах процесса перехвата SSL/TLS. В Squid процесс SslBump разбивается на несколько «шагов», таких как:

- SslBump1 (client_hello): первый этап, на котором Squid видит начальное приветствие от клиента.
- SslBump2 (server_hello): второй этап, на котором Squid видит ответное приветствие от сервера.
- SslBump3 (certificate): этап проверки сертификата сервера.

Пример конфигурационной строки с использованием `at_step`:
```
acl step1 at_step SslBump1
```
Это означает, что ACL с именем `step1` будет применяться на первом шаге SslBump (во время client_hello).

Список `step1` обычно не содержит конкретных данных сам по себе; он используется как метка или идентификатор этапа, на котором вы хотите применить определенные правила. Далее, в конфигурационном файле, вы используете `step1` для определения действий, которые должны произойти на этом шаге. Например, вы могли бы настроить Squid на пропуск шифрования на шаге SslBump1 для определенных сайтов.

```squid.conf
acl step1 at_step SslBump1
acl noBumpSites ssl::server_name .example.com
ssl_bump peek step1
ssl_bump splice noBumpSites
ssl_bump bump all
```

В примере выше, Squid сначала "взглянет" на трафик на первом шаге (`ssl_bump peek step1`), затем "пройдет" трафик для доменов .example.com без расшифровки (`ssl_bump splice noBumpSites`), а все остальные запросы будут проходить полный процесс SSL Bump (`ssl_bump bump all`).

Причина использования этой более сложной конфигурации вместо простого применения одних и тех же правил ко всем запросам заключается в том, что она предоставляет более тонкий контроль над тем, как именно трафик обрабатывается на разных этапах. Для высокоуровневых прокси-серверов, которые могут иметь дело с множеством различных сценариев трафика, такой подход предоставляет необходимую гибкость.

Запросы проходят через первую строку дважды, потому что в процессе SSL/Bump Squid перехватывает трафик на различ
Похожие вопросы