Прокси-сервер Squid давно пользуется заслуженной популярностью, как открытое и эффективное средство контроля интернет трафика, но тенденции последних лет по массовому использованию защищенных соединений доставляют администраторам массу хлопот. Дело в том, что пакеты Squid в репозиториях дистрибутивов основанных на Debian или Ubuntu собраны без поддержки SSL, что делает невозможной фильтрацию шифрованного трафика. Что же делать? Собрать пакет с поддержкой SSL самостоятельно и сегодня мы расскажем, как это сделать.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Многих современных пользователей 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
При этом сразу будут наложены все необходимые патчи и создана среда для сборки.
В директории build появится папка с именем squid3 и номером релиза, в нашем случае squid3-3.5.23, для осуществления сборки вы должны будете находится в ней.
Но перед тем, как собирать пакет укажем свои параметры сборки, а именно включим поддержку ssl, для этого во вложенной папке debain найдем файл rules и откроем его.
Найдем перечисление опций компиляции и добавим после них:
--enable-ssl \
--enable-ssl-crtd \
--with-openssl
Обратите внимание, что все строки, кроме последней, должны заканчиваться символом "\". Если вы все сделали правильно, у вас должно получиться так:
Сохраним этот файл, теперь можно собирать. Как мы уже писали выше, при сборке важно удостовериться, что вы находитесь в правильной директории, поэтому, на всякий случай, сменим ее принудительно:
cd ~/build/squid3-3.5.23
Совет: при наборе длинных путей используйте автодополнение по клавише Tab.
Для сборки пакетов выполните команду:
debuild -d
Теперь можно смело идти пить, нет не пиво, кофе. В зависимости от мощности компьютера сборка может занять от десятков минут до получаса и более. Хотя бывалые линуксоиды говорят, что можно бесконечно смотреть на горящий огонь, текущую воду и собирающийся код...
По окончании сборки вы столкнетесь с ошибкой подписи пакетов, это нормально, ведь у вас нет закрытого ключа разработчика.
Вернемся в директорию 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
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)
Debian 10 / Ubuntu 20.04
В Debian 10 представлена гораздо более свежая версия Squid - 4.6 (в Ubuntu 20.04 - 4.10), однако ее сборка ничем не отличается от предыдущих версий. Небольшим отличием является, также как и в Ubuntu 16.04, использование пакета libssl-dev вместо libssl1.0-dev:
apt install libssl-dev
Также в последующих командах следует указывать просто squid, а не squid3, однако это не является обязательным условием, система автоматически поправит вас в случае ошибки:
Готовые пакеты для Debian 10:
squid-common_4.6-1+deb10u6_all.deb (md5: de6b18253323de868252b22d3350f8a2)
squidclient_4.6-1+deb10u6_amd64.deb (md5: 91925da22fab7deb893a395164a5ae14)
squid_4.6-1+deb10u6_amd64.deb (md5: aff7058def1c79f65239f0df075d8927)
Готовые пакеты для Ubuntu 20.04:
squid-common_4.10-1ubuntu1.4_all.deb (md5: 0a4ec2c25972f164ca86c5e799442f94)
squidclient_4.10-1ubuntu1.4_amd64.deb (md5: 51daa5d24e795e31b08c38dd15e71919)
squid_4.10-1ubuntu1.4_amd64.deb (md5: 84bd3a2bcfe01ca3ca510f938a99be8b)
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Последние комментарии