Настройка Squid прокси-сервера с фильтрацией HTTPS и интеграцией с Active Directory
Статья описывает настройку прокси-сервера Squid на CentOS 7 с следующими возможностями:
- Фильтрация HTTPS-трафика без подмены сертификата (технология peek-n-splice)
- Интеграция с Active Directory для аутентификации пользователей
- Автоматическая настройка прокси на клиентских компьютерах через WPAD
- Генерация статистики использования
Интересные особенности
- Использование технологии peek-n-splice для фильтрации HTTPS без MITM-атаки:
- Позволяет видеть доменные имена в статистике HTTPS-сайтов
- Не вызывает проблем с банк-клиентами и другими чувствительными приложениями
- Интеграция с Active Directory:
- Аутентификация пользователей через Kerberos
- Распределение прав доступа по группам AD
- Автоматическая настройка прокси через WPAD:
- Клиенты Windows автоматически получают настройки прокси
- Упрощает администрирование, особенно для мобильных пользователей
- Сбор статистики с помощью SARG:
- Генерация ежедневных отчетов
- Веб-интерфейс для просмотра статистики с авторизацией
- Настройка SELinux для работы с Squid:
- Использование SELinux в режиме enforcing
- Добавление необходимых правил для работы прокси
Основные этапы настройки
- Установка и настройка Squid
- Интеграция с Active Directory
- Настройка WPAD
- Установка и настройка SARG для статистики
- Настройка групповых политик в AD
Заключение
Автор отмечает, что данная конфигурация успешно работает с весны 2016 года и хорошо себя зарекомендовала.
Ссылки на ресурсы:
- Оригинальная статья на Habr
- Squid Cache
- SARG - Squid Analysis Report Generator
- Web Proxy Auto-Discovery Protocol
- Active Directory
Предварительные требования
- CentOS 8 или Rocky Linux 8 (как преемник CentOS)
- Доступ к серверу с правами root
- Доменный контроллер Active Directory (Windows Server 2019 или новее)
Шаг 1: Обновление системы и установка необходимых пакетов
sudo dnf update -y
sudo dnf install epel-release -y
sudo dnf install squid httpd krb5-workstation msktutil gcc gd gd-devel make wget -y
Шаг 2: Настройка Squid
- Создайте резервную копию конфигурационного файла Squid:
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bak
- Отредактируйте `/etc/squid/squid.conf`:
sudo nano /etc/squid/squid.conf
- Вставьте следующее содержимое (адаптируйте под свою сеть):
# �������������� ������������������
http_port 3130
cache_dir ufs /var/spool/squid 100 16 256
# Kerberos ����������������������������
auth_param negotiate program /usr/lib64/squid/negotiate_kerberos_auth -s HTTP/sq.example.ru@EXAMPLE.RU
auth_param negotiate children 10
auth_param negotiate keep_alive on
# ACL ������ ���������� AD
external_acl_type ad_group ttl=60 negative_ttl=60 grace=0 %LOGIN /usr/lib64/squid/ext_kerberos_ldap_group_acl -p -g
acl ad_full external ad_group Internet-full
acl ad_medium external ad_group Internet-medium
acl ad_low external ad_group Internet-low
# �������������� ��������������
http_access allow ad_full
http_access allow ad_medium
http_access allow ad_low
http_access deny all
# SSL Bump ������������������
sslcrtd_program /usr/lib64/squid/security_file_certgen -s /var/lib/ssl_db -M 4MB
sslcrtd_children 5
acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump bump all
Шаг 3: Настройка Kerberos
- Создайте файл `/etc/krb5.conf`:
sudo nano /etc/krb5.conf
- Добавьте следующее содержимое (замените EXAMPLE.RU на ваш домен):
[libdefaults]
default_realm = EXAMPLE.RU
dns_lookup_realm = false
dns_lookup_kdc = true
[realms]
EXAMPLE.RU = {
kdc = dc1.example.ru
admin_server = dc1.example.ru
}
[domain_realm]
.example.ru = EXAMPLE.RU
example.ru = EXAMPLE.RU
Шаг 4: Интеграция с Active Directory
- Присоединение к домену:
sudo msktutil -c -b "CN=COMPUTERS" -s HTTP/sq.example.ru -k /etc/krb5.keytab --computer-name sq-k --upn HTTP/sq.example.ru --server dc1.example.ru --enctypes 28
- Настройте автоматическое обновление пароля:
sudo crontab -e
Добавьте строку:
0 */4 * * * /usr/bin/msktutil --auto-update --computer-name sq-k
Шаг 5: Настройка WPAD
- Создайте файл `/var/www/html/wpad.dat`:
sudo nano /var/www/html/wpad.dat
- Добавьте следующее содержимое:
function FindProxyForURL(url, host) {
if (isInNet(host, "192.168.0.0", "255.255.0.0") ||
isInNet(host, "10.0.0.0", "255.0.0.0") ||
isPlainHostName(host))
return "DIRECT";
return "PROXY sq.example.ru:3130";
}
- Настройте Apache для отдачи WPAD:
sudo nano /etc/httpd/conf.d/wpad.conf
Добавьте:
<Files wpad.dat>
ForceType application/x-ns-proxy-autoconfig
</Files>
Шаг 6: Настройка SARG для статистики
- Установите SARG:
wget https://sourceforge.net/projects/sarg/files/latest/download -O sarg.tar.gz
tar -xzvf sarg.tar.gz
cd sarg-*
./configure
make
sudo make install
- Настройте SARG:
sudo nano /usr/local/etc/sarg.conf
Добавьте:
access_log /var/log/squid/access.log
output_dir /var/www/html/squid-reports
date_format e
overwrite_report yes
- Настройте ежедневную генерацию отчетов:
sudo crontab -e
Добавьте:
55 23 * * * /usr/local/bin/sarg -x
Шаг 7: Настройка SELinux
sudo setsebool -P squid_connect_any 1
sudo semanage port -a -t squid_port_t -p tcp 3130
Шаг 8: Запуск и включение служб
sudo systemctl enable --now squid httpd
sudo systemctl restart squid httpd
Шаг 9: Настройка групповых политик в Active Directory
- Создайте GPO для настройки прокси
- Настройте автоматическое обнаружение прокси:
- User Configuration > Policies > Administrative Templates > Windows Components > Internet Explorer
- Enable "Automatically detect intranet network"
Заключение
Эта конфигурация предоставляет современную настройку Squid с HTTPS-фильтрацией, интеграцией Active Directory и автоматической настройкой клиентов через WPAD. Не забудьте адаптировать все пути, имена доменов и IP-адреса под вашу конкретную среду.
Примечание: Всегда тестируйте конфигурацию в безопасной среде перед развертыванием в production.