Настройка Squid 7.5: полное руководство с Kerberos, LDAP, SSL-Bump и JSON-логами
Настраивали когда-нибудь Squid? Если да, то вы точно знаете: чтобы всё заработало как надо, приходится лазить по десятку сайтов, форумов и старых гайдов. Кто-то пишет про SSL, кто-то про кэш, кто-то про авторизацию — и всё в разных местах, с разными версиями. Эта статья — попытка собрать всё важное

Настраивали когда-нибудь Squid? Если да, то вы точно знаете: чтобы всё заработало как надо, приходится лазить по десятку сайтов, форумов и старых гайдов. Кто-то пишет про SSL, кто-то про кэш, кто-то про авторизацию — и всё в разных местах, с разными версиями. Эта статья — попытка собрать всё важное в одном месте, на примере версии Squid 7.5. Здесь вы найдёте полную конфигурацию, пояснения к каждой опции и типичные грабли, которые мы уже обошли.
Подготовка и установка Squid 7.5
Начнём с установки. Для CentOS 9 или Rocky Linux 9 проще всего использовать EPEL: dnf install epel-release && dnf install squid. Если нужна именно версия 7.5, а не та, что в репозитории, придётся собрать из исходников: скачать архив с официального сайта Squid, распаковать, выполнить ./configure с нужными флагами — обязательно --enable-ssl --enable-ssl-crtd --enable-auth-kerberos --enable-ldap-helper и другими под ваш сценарий. После make && make install появится бинарник в /usr/local/squid/sbin/squid. Не забудьте создать пользователя и группу squid, а также каталоги для кэша и логов.
Базовая конфигурация и запуск
Файл конфигурации /etc/squid/squid.conf (или /usr/local/squid/etc/squid.conf при сборке) содержит директивы, которые определяют поведение прокси. Первым делом укажите httpport 3128 — стандартный порт. Для работы с HTTPS нужен httpsport 3129 cert=/path/to/cert.pem key=/path/to/key.pem. Генерация сертификата — тема отдельная, но для теста подойдёт самоподписанный: openssl req -new -x509 -days 365 -nodes -out cert.pem -keyout key.pem. Затем добавьте sslcrtdprogram /usr/local/squid/libexec/securityfilecertgen -s /var/cache/squid/ssldb -M 4MB. После этого инициализируйте базу сертификатов: squid -z. Запуск: squid -N -d 1 для отладки или systemctl start squid при установке из пакета.
Аутентификация через Kerberos и LDAP
Одна из частых задач — прозрачная авторизация пользователей домена. Squid поддерживает Kerberos через helper negotiatekerberosauth. В конфиге пропишите authparam negotiate program /usr/local/squid/libexec/negotiatekerberosauth -d -s HTTP/proxy.domain.com@DOMAIN.COM. Параметр -s задаёт SPN, который должен быть зарегистрирован в AD. Для LDAP-авторизации (например, чтобы проверять членство в группе) используется extldapgroupacl: externalacltype ldapgroup %LOGIN /usr/local/squid/libexec/extldapgroupacl -R -b "dc=domain,dc=com" -D "cn=admin,dc=domain,dc=com" -W /etc/squid/ldap.pass -f "(&(objectClass=user)(sAMAccountName=%u)(memberOf=cn=proxyusers,ou=Groups,dc=domain,dc=com))". Пароль администратора LDAP храните в отдельном файле с правами 600. Затем создайте ACL: acl allowedusers external ldapgroup и разрешите доступ: httpaccess allow allowedusers.
SSL-Bump: перехват и инспекция HTTPS
Для фильтрации HTTPS-трафика нужен SSL-Bump. Включите его директивами: sslbump peek all и sslbump bump all. Первая говорит Squid заглянуть в SNI, вторая — подменить сертификат. Обязательно настройте sslcrtdprogram (как выше) и sslcrtdchildren 8. Чтобы Squid мог генерировать сертификаты на лету, ему нужен корневой CA-сертификат, который вы должны установить на клиентах как доверенный. Без этого браузеры будут ругаться на недействительный сертификат. Важно: SSL-Bump нарушает сквозное шифрование, поэтому убедитесь, что это разрешено политикой безопасности вашей организации.
Как настроить SSL-Bump для конкретных сайтов?
Иногда требуется инспектировать только определённые домены, а остальные пропускать без расшифровки. Для этого используйте ACL в сочетании с sslbump. Например, создайте ACL acl trustedsites ssl::servername ".example.com" и укажите sslbump splice trustedsites — это пропустит трафик без подмены сертификата. Затем sslbump bump all для остальных. Такой подход снижает нагрузку и сохраняет приватность для доверенных ресурсов.
Логирование в JSON
По умолчанию Squid пишет логи в формате Squid native. Для интеграции с современными системами мониторинга (ELK, Splunk) удобнее JSON. Начиная с версии 4.0, Squid поддерживает logformat с кастомными полями. Пример: logformat json [{"time":"%tg","clientip":"%a","method":"%rm","url":"%ru","status":"%Hs","bytes":"%st","duration":"%tr"}]. Затем укажите accesslog /var/log/squid/access.json squid json. Обратите внимание: в версии 7.5 формат немного изменился — требуется экранирование кавычек внутри строки. Лучше проверить на небольшом трафике, чтобы убедиться, что парсеры принимают JSON.
Управление пропускной способностью (Delay pools)
Ограничение скорости для определённых пользователей или типов трафика делается через delay pools. Пример: delaypools 1, delayclass 1 1, delayparameters 1 10000/10000 (ограничение 10 КБ/с). Затем привяжите к ACL: delayaccess 1 allow limitedusers. Класс 1 означает единый пул для всех; класс 2 — разделение по IP; класс 3 — по IP и портам. Настройка гибкая, но требует аккуратности — неправильные параметры могут полностью заблокировать доступ.
Кэширование и оптимизация
Кэш ускоряет повторные запросы. Настройте cachedir ufs /var/spool/squid 100 16 256 (100 МБ, 16 каталогов первого уровня, 256 — второго). Для больших объёмов используйте aufs или rock. Не забудьте maximumobjectsize 4 MB и minimumobjectsize 0. Чтобы кэш не забивался динамикой, исключите URL с ? через ACL: acl dynamic urlregex \? и cache deny dynamic. Важно: при SSL-Bump кэшируется только расшифрованный трафик, что может быть проблемой для GDPR.
Кого затронет эта инструкция
В первую очередь — системных администраторов, которые обслуживают прокси-серверы в доменной среде. Разработчикам, которым нужен прозрачный прокси для отладки, тоже пригодится. В России и СНГ Squid по-прежнему популярен в госучреждениях и крупных компаниях, где требуется централизованный контроль доступа и аудит. Новички смогут развернуть рабочую конфигурацию за час, а не за неделю.
Что будет дальше
Squid 7.5 — не последняя версия. Разработчики активно работают над поддержкой HTTP/3 и улучшением производительности. В ближайших релизах ожидается более тесная интеграция с системами аутентификации на основе OAuth2. Пока же описанная конфигурация остаётся эталонной для большинства корпоративных сценариев. Следите за официальным репозиторием Squid и тестируйте обновления на стенде.
Итог
Мы собрали ключевые настройки Squid 7.5 для типового корпоративного прокси: установка, аутентификация через Kerberos и LDAP, SSL-Bump, JSON-логи, задержки и кэширование. Теперь у вас есть единый источник, который сэкономит часы поиска. Скопируйте конфиг, адаптируйте под свой домен и наслаждайтесь стабильной работой.