Сборка Squid 3.5 с поддержкой SSL из исходных кодов для Debian / Ubuntu

  • Автор:

Squid-build-Debian-Ubuntu-000.png

Прокси-сервер Squid давно пользуется заслуженной популярностью, как открытое и эффективное средство контроля интернет трафика, но тенденции последних лет по массовому использованию защищенных соединений доставляют администраторам массу хлопот. Дело в том, что пакеты Squid в репозиториях дистрибутивов основанных на Debian или Ubuntu собраны без поддержки SSL, что делает невозможной фильтрацию шифрованного трафика. Что же делать? Собрать пакет с поддержкой SSL самостоятельно и сегодня мы расскажем, как это сделать.

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

По этому поводу хотим еще раз напомнить: никогда не скачивайте пакеты из неизвестных источников, помните, что в такой пакет злоумышленники могут поместить вредоносное ПО. Также после скачивания всегда проверяйте контрольные суммы, чтобы удостовериться, что вы скачали именно то, что выложил автор.

Мы крайне не рекомендуем собирать пакеты на рабочей системе, так как вам придется установить для этого очень много стороннего ПО и пакетов для разработчиков. Оптимально выделить для этого отдельный компьютер или виртуальную машину с той же версией ОС, для которой вы собираете пакеты, также эту машину впоследствии желательно сохранить, чтобы потом можно было выполнять повторные сборки при обновлении пакетов в репозитории. Помните, что сопровождение собранных вами пакетов будет являться вашей заботой.

В данной статье мы будем считать, что читатель знаком с базовыми навыками работы в среде Debian / Ubuntu и не будем подробно останавливаться на этих вопросах. Все описанные действия следует выполнять с правами суперпользователя.

Debian 9 / Ubuntu 18.04

Прежде всего откроем список источников пакетов /etc/apt/sources.list и убедимся, что репозитории с исходными кодами подключены, от обычных они отличаются адресом, имея в начале deb-src, а не просто deb. Обычно в Debian они по умолчанию подключены, а в Ubuntu отключены, для включения следует просто раскомментировать строки начинающиеся на deb-src. После чего следует обновить список пакетов:

apt update

Затем поставим инструменты для сборки из исходных кодов:

apt install fakeroot build-essential devscripts

Добавим все необходимые пакеты для сборки Squid:

apt build-dep squid3

Установим библиотеку для поддержки SSL:

apt install libssl1.0-dev

Убедитесь, что все пакеты установлены без ошибок, отсутствие любого из них приведет к ошибкам при сборке.

Перейдем в домашнюю папку и создадим директорию для сборки, сразу установив на нее нужные права:

cd ~
mkdir build
chown _apt:root build

Перейдем в созданную директорию и скачаем исходные коды Squid:

cd build
apt source squid3

При этом сразу будут наложены все необходимые патчи и создана среда для сборки.

Squid-build-Debian-Ubuntu-001.pngВ директории build появится папка с именем squid3 и номером релиза, в нашем случае squid3-3.5.23, для осуществления сборки вы должны будете находится в ней.

Но перед тем, как собирать пакет укажем свои параметры сборки, а именно включим поддержку ssl, для этого во вложенной папке debain найдем файл rules и откроем его.

Squid-build-Debian-Ubuntu-002.png

Найдем перечисление опций компиляции и добавим после них:

--enable-ssl \
--enable-ssl-crtd \
--with-openssl

Обратите внимание, что все строки, кроме последней, должны заканчиваться символом "\". Если вы все сделали правильно, у вас должно получиться так:

Squid-build-Debian-Ubuntu-003.pngСохраним этот файл, теперь можно собирать. Как мы уже писали выше, при сборке важно удостовериться, что вы находитесь в правильной директории, поэтому, на всякий случай, сменим ее принудительно:

cd ~/build/squid3-3.5.23

Совет: при наборе длинных путей используйте автодополнение по клавише Tab.

Для сборки пакетов выполните команду:

debuild -d

Теперь можно смело идти пить, нет не пиво, кофе. В зависимости от мощности компьютера сборка может занять от десятков минут до получаса и более. Хотя бывалые линуксоиды говорят, что можно бесконечно смотреть на горящий огонь, текущую воду и собирающийся код...

По окончании сборки вы столкнетесь с ошибкой подписи пакетов, это нормально, ведь у вас нет закрытого ключа разработчика.

Squid-build-Debian-Ubuntu-004.pngВернемся в директорию build в которой обнаружим достаточно много deb-пакетов, но нам нужны не все, будет достаточно squid-common (архитектура all), squid и squidclient (архитектура amd64 или i386).

Готовые пакеты для Debian 9:

squid-common_3.5.23-5+deb9u1_all.deb (md5: C0FAF3CBF4B5C6F1A2073F70AB44A28E)
squidclient_3.5.23-5+deb9u1_amd64.deb (md5: F2CD156298E3FCC63643BB4BF8E9867E)
squid_3.5.23-5+deb9u1_amd64.deb (md5: 034916E02E7B7AE7DB96D5FDC72EA241)

Готовые пакеты для Ubuntu 18.04:

squid-common_3.5.27-1ubuntu1.1_all.deb (md5: BAD808B1C0EBC43468AF443356FD4625)
squidclient_3.5.27-1ubuntu1.1_amd64.deb (md5: 4C2F2CEE6C4FEBCA904D6FC775C16CBB)
squid_3.5.27-1ubuntu1.1_amd64.deb (md5: F934542502AC74FF23C8B213CD2CCDCB)

Кстати, для проверки контрольной суммы MD5 в Linux можете воспользоваться командой:

md5sum filename

Squid-build-Debian-Ubuntu-005-1.png

Ubuntu 16.04

Процесс сборки Squid для Ubuntu 16.04 ничем не отличается от сборки для Debian9 / Ubuntu 18.04 за одним небольшим исключением, вместо пакета libssl1.0-dev следует установить libssl-dev:

apt install libssl-dev

Готовые пакеты для Ubuntu 16.04:

squid-common_3.5.12-1ubuntu7.6_all.deb (md5: 7D7CA3EECADEDD7572C4418D84574DBD)
squidclient_3.5.12-1ubuntu7.6_amd64.deb (md5: 65E261CCE66742D57FE8371F3B67D905)
squid_3.5.12-1ubuntu7.6_amd64.deb (md5: CFCEAF456AE456446A31A06E66668620)

Дополнительные материалы:


  1. Linux. Настройка роутера (NAT + DHCP + Squid)
  2. Ubuntu Server. Настраиваем роутер NAT + DHCP + Squid3
  3. Ubuntu Server. Настраиваем контент-фильтр роутера (DansGuardian)
  4. DansGuardian. Сложности фильтрации русскоязычного контента
  5. Ubuntu Server. Настраиваем антивирусный фильтр роутера (ClamAV)
  6. Ubuntu Server. Дополняем контент-фильтр роутера антивирусом (DansGuardian + ClamAV)
  7. Ubuntu Server. Настраиваем форвардинг портов на роутере
  8. Ubuntu Server. Настраиваем аутентификацию через Squid
  9. Ubuntu Server. Ограничиваем скорость клиентов через Squid
  10. SARG - анализируем логи прокси-севера Squid
  11. SAMS - веб-интерфейс для управления Squid и не только
  12. Squid - настраиваем URL-фильтрацию по спискам
  13. Squid - блокируем потоковое мультимедиа
  14. Как устроена и работает система контроля доступа в Squid
  15. Настраиваем Squid для работы с Active Directory. Часть 1 - базовые настройки
  16. Настраиваем Squid для работы с Active Directory. Часть 2 - Kerberos-аутентификация
  17. Настраиваем Squid для работы с Active Directory. Часть 3 - Авторизация на основе групп AD
  18. WPAD или автоматическая настройка параметров прокси
  19. Устраняем ошибки Windows Update при работе через прокси-сервер Squid
  20. Настраиваем ограничение скорости для пользователей в Squid
  21. Сборка Squid 3.5 с поддержкой SSL из исходных кодов для Debian / Ubuntu
  22. Настраиваем роутер NAT + DHCP + Squid3 с поддержкой фильтрации SSL-трафика