Содержание страницы
Готовый пакет Squid 4 можно установить на Debian 8, 9, 10 и 11, а пакет Squid 5 можно установить на Debian 12 и новее.
Можно скомпилировать 5ю версия под старую версию Debian, но что делать потом?
Предварительная подготовка
Подготовка сервера для работы это личные предпочтения, у каждого они свои, например вот
Установить корректное имя сервера
Указываем FQDN (Fully Qualified Domain Name) имя системы, в файлах
Отредактируйте nano /etc/hostname
proxy
Так же файл hosts приводим к виду таким образом, чтобы в нём была запись с полным доменным именем компьютера и с коротким именем, ссылающаяся на один из внутренних IP:
Отредактируйте nano /etc/hosts
127.0.0.1 localhost 192.168.10.10 proxy.notdev.local proxy
Проверка
hostname -f
#proxy.notdev.local
Установка Squid c поддержкой HTTPS
Нет необходимости больше самостоятельно собирать пакеты, достаточно поставить squid-openssl включающий опции enable-ssl-crtd и with-openssl, в некоторых случаях встречалась несколько раз и обычная версия squid из стандартных репозиториев с включенными опциями
apt install -y squid-openssl
Проверяем что поддержка SSL есть
squid -v | grep -c "enable-ssl-crtd" && squid -v | grep -c "with-openssl"
#1
#1
Делаем резервную копию конфигурации, создаем рабочий конфиг из дефолтного без комментариев
cp /etc/squid/squid.conf{,.bak} cat /etc/squid/squid.conf.bak | grep -v '^#' | sed '/^$/d' > /etc/squid/squid.conf
Настройка SSL Bumping в сервисе Squid
SSL Bumping в сервисе Squid используется для обработки шифрованных соединений. Если SSL Bumping не настроен, то прокси-сервер не может вмешаться в процесс установки шифрованного соединения.
Использование SSL Bumping может привести к неработоспособности некоторых программ или сервисов, использующих прокси-сервер. Для корректной работы требуется добавить их в исключения SSL Bumping или выделить отдельный порт без SSL Bumping.
Создание самоподписанного SSL-сертификата и приватного ключа
Сгенерируйте SSL-сертификат, приватный ключ в формате PEM в файл /etc/squid/ssl/squid.pem и файл параметров для алгоритма Diffie-Hellman /etc/squid/ssl/dhparam.pem. Настройте права на использование файла SSL-сертификата.
Ключ -subj заполняет ответы /C=Страна/ST=Край/Область/Республика/L=Город/O=Компания/OU=Подразделение/CN=Полное имя
mkdir /etc/squid/ssl cd /etc/squid/ssl/ openssl req -new -newkey rsa:2048 -sha256 -days 3650 -nodes -x509 \ -extensions v3_ca -keyout squid.pem -out squid.pem \ -subj "/C=RU/ST=KRM/L=SEV/O=NOTDEV.LTD/OU=IT/CN=proxy.notdev.local" openssl dhparam -outform PEM -out dhparam.pem 2048
chown -R proxy:proxy /etc/squid/ssl
chmod -R 0640 /etc/squid/ssl
Конвертируйте файл сертификата в доверенный сертификат формата DER для импорта в корневые доверенные центры сертификации или браузер.
openssl x509 -in squid.pem -outform DER -out squid.der
Скопируйте и импортируйте файл squid.der в список доверенных корневых центров сертификации на рабочих станциях (например используя GPO). При использовании Mozilla Firefox требуется также добавить сертификат в хранилище браузера.
Создание базы данных сертификатов
Создайте каталог для базы данных сертификатов, инициализируйте базу данных и назначьте необходимые права
mkdir -p /var/lib/squid rm -rf /var/lib/squid/ssl_db /usr/lib/squid/security_file_certgen -c -s /var/lib/squid/ssl_db -M 20MB chown -R proxy:proxy /var/lib/squid
Конфигурация Squid
Отредактируйте nano /etc/squid/squid.conf
Squid не может загружать сертификаты, кроме предоставляемых веб-сайтом. Некоторые сайты не предоставляют промежуточный сертификат. Это приводит к тому, что Squid препятствует получению страницы для клиента
Решение http://lists.squid-cache.org/pipermail/squid-users/2020-July/022425.html
Добавьте перед первой директивой http_access:
#FIX: sites do not deliver intermediate certificate: certificate issuer (CA) not known #allow fetching of missing intermediate certificates acl intermediate_fetching transaction_initiator certificate-fetching http_access allow intermediate_fetching
Замените директиву http_port 3128. Включайте порты 8443 без подмены сертификатов и 3128 с подменой сертификатов (SSL Bump)
# not bump http_port 8443 tcpkeepalive=60,30,3 #tls-cert & tls-key in one file - squid.pem, tls-dh 2048 bit - dhparam.pem
#STRONG SECURITY: don't work IE (TLS Error: dh key too small) cipher=HIGH:MEDIUM:!LOW:!RC4:!SEED:!IDEA:!3DES:!MD5:!EXP:!PSK:!DSS
#MEDIUM SECURITY:FIX: dh key too small:cipher=DEFAULT:@SECLEVEL=1
http_port 3128 tcpkeepalive=60,30,3 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=20MB tls-cert=/etc/squid/ssl/squid.pem cipher=DEFAULT:@SECLEVEL=1 options=NO_TLSv1,NO_SSLv3 tls-dh=prime256v1:/etc/squid/ssl/dhparam.pem
tls_outgoing_options min-version=1.1 cipher=DEFAULT:@SECLEVEL=1 options=NO_TLSv1,NO_SSLv3 flags=DONT_VERIFY_PEER
#allow connection even with certificate validation errors
sslproxy_cert_error allow all
acl step1 at_step SslBump1
ssl_bump splice localhost ssl_bump peek step1 ssl_bump bump all ssl_bump stare all
sslcrtd_program /usr/lib/squid/security_file_certgen -s /var/lib/squid/ssl_db -M 20MB sslcrtd_children 5
Флаг flags=DONT_VERIFY_PEER – позволяет принимать сертификаты, не прошедшие проверку, устанавливается флаг в параметре tls_outgoing_options
Проверьте конфиг и переконфигурируйте
squid -k parse
Либо перезапустите Squid
service squid restart
Настройка завершена и в текущей конфигурации уже можно пользоваться.
Текущая конфигурация
Итоговый конфигурационный файл squid.conf должен выглядеть примерно так
acl localnet src 192.168.0.0/16 # RFC 1918 local private network (LAN)
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
#FIX: sites do not deliver intermediate certificate: certificate issuer (CA) not known
#allow fetching of missing intermediate certificates
acl intermediate_fetching transaction_initiator certificate-fetching
http_access allow intermediate_fetching
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
include /etc/squid/conf.d/*.conf
http_access allow localhost
http_access allow localnet
http_access deny all
# not bump
http_port 8443 tcpkeepalive=60,30,3
http_port 3128 tcpkeepalive=60,30,3 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=20MB tls-cert=/etc/squid/ssl/squid.pem cipher=DEFAULT:@SECLEVEL=1 options=NO_TLSv1,NO_SSLv3 tls-dh=prime256v1:/etc/squid/ssl/dhparam.pem
tls_outgoing_options min-version=1.1 cipher=DEFAULT:@SECLEVEL=1 options=NO_TLSv1,NO_SSLv3 flags=DONT_VERIFY_PEER
#allow connection even with certificate validation errors
sslproxy_cert_error allow all
acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump splice localhost
ssl_bump bump all
ssl_bump stare all
sslcrtd_program /usr/lib/squid/security_file_certgen -s /var/lib/squid/ssl_db -M 20MB
sslcrtd_children 5
coredump_dir /var/spool/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
Возможные проблемы
Дополнительные настройки
- Как установить и настроить Squid 4.XX
- Фильтрация ресурсов — черный и белые списки
- Модульная конфигурация Squid 4.XX
- Аутентификация пользователей в Squid 4.XX – Kerberos, NTLM и Basic
- Мониторинг пользовательской активности Squid 4.XX – SqStat
-
Отчетность пользовательской активности Squid 4.XX – LightSquid
Дополнительная информация
- Wiki Squid
- SSL Bump: Peek and Splice
- Samba ntlm_auth ntlmssp and basic
- Squid Legacy Auth with Active Directory
- Интеграция Kaspersky Squid
- Web Safety (Diladele)
- Аналогичные статьи: _1_, _2_, _3_, _4_
- –
Добрый день!
Всё настроил как в статье. Перед запуском сквида проверяю конфиг на ошибки, и он ругается:
# sudo squid -k parse
…
2023/05/04 16:05:24| Processing: http_port 3128 tcpkeepalive=60,30,3 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=20MB tls-cert=/etc/squid/ssl/squid.pem cipher=DEFAULT:@SECLEVEL=1 options=NO_TLSv1,NO_SSLv3 tls-dh=prime256v1:/etc/squid/ssl/dhparam.pem
2023/05/04 16:05:24| WARNING: Failed to decode DH parameters ‘/etc/squid/ssl/dhparam.pem’
…
2023/05/04 16:05:24| SECURITY WARNING: Peer certificates are not verified for validity!
2023/05/04 16:05:24| UPGRADE NOTICE: The DONT_VERIFY_PEER flag is deprecated. Remove the clientca= option to disable client certificates.
2023/05/04 16:05:24| Initializing http_port [::]:3128 TLS contexts
2023/05/04 16:05:24| Using certificate in /etc/squid/ssl/squid.pem
2023/05/04 16:05:24| Using certificate chain in /etc/squid/ssl/squid.pem
2023/05/04 16:05:24| Adding issuer CA: /C=RU/ST=MSK/L=MSK/O=GS/OU=IT/CN=squid.golutvino.local
2023/05/04 16:05:24| Using key in /etc/squid/ssl/squid.pem
2023/05/04 16:05:24| ERROR: Unable to configure Ephemeral ECDH: error:0480006C:PEM routines::no start line
2023/05/04 16:05:24| Not requiring any client certificates
При этом, если запустить сквид, то он стартует. Но не может перечитать конфигурацию (sudo squid -k reconfigure)
Насколько понимаю либо у вас Squid 5 либо OpenSSL 3.0.X?
если, да то у него есть такая проблема.
Со Squid 4.XX и Openssl v 1.1.X все работает
Со Squid v. 5.X.X и Openssl v. 3.0.X есть предупреждение указанное вами.
Проблема связана с тем что OpenSSL 3.0 не может обработать параметры etc/squid/ssl/dhparam.pem