Squid Proxy: полный контроль офисного интернета и фильтрация трафика
Меня зовут Семёнов Евгений Сергеевич, директор АйТи Фреш. 15+ лет я внедряю интернет-контроль в офисах от 20 до 500 рабочих мест. Squid остаётся моим любимым инструментом — бесплатный, железно стабильный, гибкий до предела. Выдерживает офис на 300 человек с HTTPS-инспекцией на скромном сервере. Покажу, как собрать боевую конфигурацию: с доменной аутентификацией, SSL bump, категорийными списками, квотами и автоотчётами.
Когда нужен прокси и что он даёт
У нас на практике офис ставит прокси из-за трёх причин: хочется видеть, кто сколько трафика жжёт на YouTube, нужно блокировать типовые отвлекалочки и требуется доказательная база на случай утечек. Плюсом идёт кэш — он экономит до 15% внешнего трафика, а если провайдер лимитирован, это ощутимо.
Squid умеет: аутентифицировать пользователей через AD, писать детализированные логи, блокировать сайты по категориям и регулярным выражениям, применять квоты по мегабайтам и по времени суток, инспектировать HTTPS с помощью SSL bump.
Архитектура и железо
| Размер офиса | CPU/RAM | Диск | Канал |
|---|---|---|---|
| до 50 ПК | 2 vCPU / 4 ГБ | 80 ГБ SSD | 100 Мбит/с |
| 50–150 ПК | 4 vCPU / 8 ГБ | 200 ГБ SSD | 200 Мбит/с |
| 150–500 ПК | 8 vCPU / 16 ГБ | 500 ГБ SSD | 500 Мбит/с |
Для клиента на 300 мест я недавно разместил Squid на Dell с Xeon Platinum 8280 в дата-центре МТС: виртуалка с 8 vCPU, 16 ГБ RAM, NVMe-диски, 40G Mellanox между гипервизорами — запас по производительности трёхкратный.
Установка на Ubuntu 22.04
sudo apt update
sudo apt install squid-openssl squidguard sarg krb5-user
# Генерация CA для SSL bump
sudo mkdir /etc/squid/ssl_cert
cd /etc/squid/ssl_cert
sudo openssl req -new -newkey rsa:4096 -sha256 -days 3650 -nodes -x509 \
-keyout itfresh-ca.pem -out itfresh-ca.pem \
-subj "/C=RU/ST=Moscow/O=ITfresh/CN=ITfresh Proxy CA"
sudo /usr/lib/squid/security_file_certgen -c -s /var/lib/squid/ssl_db -M 20MB
sudo chown -R proxy:proxy /var/lib/squid/ssl_db
Этот CA потом раскатаем по доменным машинам через GPO как Trusted Root — иначе браузеры будут ругаться на подменные сертификаты.
Базовый squid.conf
# /etc/squid/squid.conf (фрагмент)
http_port 3128 ssl-bump cert=/etc/squid/ssl_cert/itfresh-ca.pem \
generate-host-certificates=on dynamic_cert_mem_cache_size=16MB
# Kerberos auth для AD
auth_param negotiate program /usr/lib/squid/negotiate_kerberos_auth -s HTTP/proxy.corp.local@CORP.LOCAL
auth_param negotiate children 20 startup=5 idle=2
auth_param negotiate keep_alive on
acl AuthUsers proxy_auth REQUIRED
acl localnet src 10.0.0.0/16
# Bump-правила
acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump bump all
sslcrtd_program /usr/lib/squid/security_file_certgen -s /var/lib/squid/ssl_db -M 20MB
# Базовая фильтрация
acl blacklist dstdomain "/etc/squid/blacklist.txt"
http_access deny blacklist
http_access allow AuthUsers localnet
http_access deny all
cache_dir ufs /var/spool/squid 10000 16 256
access_log daemon:/var/log/squid/access.log squid
Интеграция с Active Directory
Я всегда делаю Kerberos-авторизацию — она прозрачна для пользователя. Рабочая станция сама отдаёт доменный тикет, никаких всплывающих окон с паролем.
# На контроллере домена
ktpass -princ HTTP/proxy.corp.local@CORP.LOCAL -mapuser squid@corp.local \
-crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass MyStrongPass123 \
-out squid.keytab
# На прокси
sudo mv squid.keytab /etc/squid/
sudo chown proxy:proxy /etc/squid/squid.keytab
echo 'KRB5_KTNAME=/etc/squid/squid.keytab' | sudo tee -a /etc/default/squid
sudo systemctl restart squid
SquidGuard: категорийная фильтрация
Голый Squid не знает, что такое «соцсети» или «онлайн-кинотеатры». Знает SquidGuard с базой Shalla или URLBlacklist.
sudo wget http://www.shallalist.de/Downloads/shallalist.tar.gz
sudo tar xzf shallalist.tar.gz -C /var/lib/squidguard/db/
# /etc/squidguard/squidGuard.conf
dest social { domainlist BL/socialnet/domains }
dest adult { domainlist BL/porn/domains }
dest ads { domainlist BL/adv/domains }
acl {
default {
pass !adult !social !ads all
redirect http://proxy.corp.local/blocked.html?url=%u&user=%s
}
}
sudo squidGuard -C all
sudo chown -R proxy:proxy /var/lib/squidguard/db
Квоты и расписание
Через delay_pools можно зарезать скорость для определённых ACL, через time-ACL — запретить доступ в обеденное время или только для нерабочих часов:
acl work_hours time MTWHF 09:00-18:00
acl video dstdomain .youtube.com .rutube.ru
http_access deny video work_hours !AdminUsers
delay_pools 1
delay_class 1 2
delay_parameters 1 -1/-1 2000000/2000000
delay_access 1 allow AuthUsers
Отчёты SARG для руководства
Руководителю нужен не лог, а сводка: кто больше всех сидел на развлекательных ресурсах. SARG делает красивые HTML-отчёты по access.log.
sudo apt install sarg
sudo sed -i 's|# access_log .*|access_log /var/log/squid/access.log|' /etc/sarg/sarg.conf
sudo sed -i 's|# output_dir .*|output_dir /var/www/html/sarg|' /etc/sarg/sarg.conf
# Ежедневная генерация
echo '0 7 * * * root sarg-reports daily' | sudo tee /etc/cron.d/sarg
Отчёт доступен на http://proxy.corp.local/sarg/, защищаем basic-auth.
Мини-кейс: офис логистической компании, 120 ПК
В марте 2025 года к нам обратилась логистическая компания в Мытищах — 120 сотрудников, выделенный канал 200 Мбит/с постоянно в потолке, начальство жалуется, что работники «залипают в видео». За 4 дня развернули Squid+SquidGuard+SARG на виртуалке в дата-центре МТС. Первый отчёт показал: 38% офисного трафика уходило на YouTube и TikTok, один сотрудник скачал 47 ГБ торрентов за неделю. После блокировки категории «video» в рабочие часы и квоты 200 МБ/день на «development» пиковая загрузка канала упала с 190 Мбит/с до 110, жалобы на медленный 1С прекратились. Стоимость работ — 68 000 руб. с годовым сопровождением.
Типичные ошибки при внедрении
- SSL bump без распространения CA. Все браузеры ругаются, сотрудники не могут работать — CA нужно раскатать через GPO в Trusted Root.
- Отсутствие исключений для банкинга и госуслуг. Bump банковских сайтов — прямой путь к жалобам в ФСТЭК. Добавляйте
splice-правила. - Логи без ротации.
access.logрастёт до десятков ГБ, забивает диск. - Нет бэкапа конфигов.
/etc/squid/*.confобязательно в git. - Разрешённые методы CONNECT. По умолчанию Squid пропускает CONNECT на любые порты — туннелирование SSH и IRC. Ограничивайте портами 443 и 80.
Развернём Squid Proxy под ключ
Я лично настраиваю прокси для офисов от 30 РМ: AD-авторизация, SSL bump, категорийные фильтры, квоты, отчёты для руководства. От 55 000 руб. за проект, 10–14 рабочих дней.
Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш
FAQ — частые вопросы по Squid Proxy
- Зачем офису свой прокси-сервер?
- Прокси даёт точные логи кто-куда-ходил, экономит трафик за счёт кэша, позволяет блокировать соцсети, рекламу, сайты-категории и применять квоты по пользователям из AD.
- Законно ли инспектировать HTTPS через SSL bump?
- Законно, если сотрудники подписали уведомление об использовании служебного интернета только для рабочих задач и согласны с контролем трафика.
- Сколько ресурсов нужно Squid на 100 пользователей?
- 2 vCPU, 4 ГБ RAM, 100 ГБ SSD для кэша и логов. Интернет-канал от 100 Мбит/с. Для 300+ — 4 vCPU и 8 ГБ RAM.
- Работает ли Squid с Active Directory?
- Да, через Kerberos authentication helper или ntlm_auth. Пользователи авторизуются прозрачно через доменную учётку.
- Какие альтернативы Squid?
- Kerio Control, UserGate, Mikrotik Web Proxy, pfSense + Squid-пакет, Traffic Inspector. Squid — самый гибкий и бесплатный.