Меню Рубрики

Установка squid из архива

Записки IT специалиста

Технический блог специалистов ООО»Интерфейс»

Сборка Squ >

  • Автор: Уваров А.С.
  • 15.05.2019

Прокси-сервер 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. После чего следует обновить список пакетов:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ubuntu 16.04

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

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

Debian 10

В Debian 10 представлена гораздо более свежая версия Squid — 4.6, однако ее сборка ничем не отличается от предыдущих версий. Небольшим отличием является, также как и в Ubuntu 16.04, использование пакета libssl-dev вместо libssl1.0-dev:

Также в последующих командах следует указывать просто squid, а не squid3, однако это не является обязательным условием, система автоматически поправит вас в случае ошибки:

Читайте также:  Установка беседки на винтовых сваях

источник

Установка из исходников прокси-сервера Squ > 06.03.2019 Автор:Жаконда

Рассмотрим как установить из исходников актуальную (на момент написания статьи) версию кеширующего прокси-сервера Squid 4.6 на Debian 9 Stretch.

Подготовка системы

Обновляем систему до актуального состояния:

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

Установка прокси-сервера Squid

Скачиваем исходник «squid», распаковываем его:

Выполняем конфигурацию «squid», с указанием каталогов размещения файлов «squid», а так же поддержку HTTPS:

Компилируем «squid» и по окончании компиляции выполняем установку:

Создаем необходимые каталоги, для работы «squid» и назначаем для них права доступа:

В файле конфигурации (/etc/squid/squid.conf), необходимо указать расположение каталога с файлами ошибок:

Теперь создаем стартовый скрипт прокси-сервера «squid»:

Вписываем в него следующее:

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

Запускаем прокси-сервер «squid»:

Проверим запустился ли демон «squid»:

На этом установка кешируешего прокси-сервера Squid 4.6 завершена. В рамках данной статьи, настройка «squid» не будет рассматриваться, с вариантом настройки можно ознакомится в этой статье.

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА

Всего комментариев: 15 Комментировать

Здравствуйте.
Все делаю по инструкции. При запуске ошибка. Помогите 🙁
https://yadi.sk/i/OJl3ZpMKaBRTCA

Поправил листинг INIT-файла, проверил сейчас нормально.

Почему при добавлении в конфиг HTTPS_PORT 3130 начинает ругаться

После всех манипуляций при запуске получаю ошибку:
————-
squid.service — LSB: Squid HTTP Proxy version 4.x
Loaded: loaded (/etc/init.d/squid; generated)
Active: failed (Result: exit-code) since Tue 2019-05-28 11:46:18 MSK; 1min 23s ago
Docs: man:systemd-sysv-generator(8)
Process: 1403 ExecStart=/etc/init.d/squ > Main P >

мая 28 11:46:16 chr1-proxy02 squid[1494]: Squid Parent: (squid-1) process 1527 started
мая 28 11:46:17 chr1-proxy02 (squid-1)[1527]: FATAL: I don’t handle this error well!
мая 28 11:46:17 chr1-proxy02 squid[1494]: Squid Parent: squid-1 process 1527 exited with status 1
мая 28 11:46:17 chr1-proxy02 squid[1494]: Squid Parent: (squid-1) process 1536 started
мая 28 11:46:18 chr1-proxy02 (squid-1)[1536]: FATAL: I don’t handle this error well!
мая 28 11:46:18 chr1-proxy02 squid[1494]: Squid Parent: squid-1 process 1536 exited with status 1
мая 28 11:46:18 chr1-proxy02 squid[1494]: Squid Parent: squid-1 process 1536 will not be restarted for 3600 secon
мая 28 11:46:18 chr1-proxy02 squid[1494]: Exiting due to repeated, frequent failures
мая 28 11:46:18 chr1-proxy02 systemd[1]: squ > мая 28 11:46:18 chr1-proxy02 systemd[1]: squid.service: Failed with result ‘exit-code’.
———
Подскажите, пожалуйста, как исправить!

Добрый день! Видимо не все манипуляции были выполнены корректно. Внимательно еще раз идите по шагам. Все что написано в статье 146% проверено и не раз разворачивалось.

«Выполняем конфигурацию «squid», с указанием каталогов размещения файлов «squid», а так же поддержку HTTS:»

вот тут важный опечаток 🙂
HTTP или HTTPS?

Опечатка 🙂 Поправил, спасибо!

пыхчу сейчас над конфигурацией прокси v4.8 с https
использую твои 2 статьи и еще несколько ресурсов познания.
вопрос. 🙂
кальмар ругается на опции ssl
ERROR: Directive ‘sslproxy_flags’ is obsolete.
sslproxy_flags : Remove this line. Use tls_outgoing_options flags= instead.
как теперь должна выглядеть следующая строка?
acl blocked ssl::server_name «/etc/squid/blsite/blacklist»
получается что из следующей статьи конфиг кальмара сюда уже не совсем подходит.

Там все проще, в первой статье этой первый опыт был работы со Squid, много считаю лишнего там в конфиге. Сейчас все проще сделано у меня и успешно контрится HTTP и HTTPS трафик. Попробую сегодня или завтра выложить конфиг пример.

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

это я сам_дурак называется.
ругается совсем на другую строчку.
sslproxy_flags DONT_VERIFY_PEER
вот на нее. отключил. все равно не запускается кальмар… причем squid -k parse не ругается и ошибок нет.
отключил все строки по https — завелось. Ковыряюсь дальше 🙂

Здравствуйте!
Аналогичная проблема, все по инструкции, и вот нате вам!

# service squid start
Job for squid.service failed because the control process exited with error code.
See «systemctl status squid.service» and «journalctl -xe» for details.
root@omv:

# service squid status
● squid.service — LSB: Squid HTTP Proxy version 4.x
Loaded: loaded (/etc/init.d/squid; generated; vendor preset: enabled)
Active: failed (Result: exit-code) since Sat 2019-10-12 21:34:33 +05; 34s ago
Docs: man:systemd-sysv-generator(8)
Process: 2465 ExecStart=/etc/init.d/squ >

окт 12 21:34:33 omv systemd[1]: Starting LSB: Squid HTTP Proxy version 4.x…
окт 12 21:34:33 omv squid[2465]: /etc/init.d/squid: 103: /etc/init.d/squid: Syntax error: «(» unexpected (expecting «>»)
окт 12 21:34:33 omv systemd[1]: squ > окт 12 21:34:33 omv systemd[1]: Failed to start LSB: Squid HTTP Proxy version 4.x.
окт 12 21:34:33 omv systemd[1]: squid.service: Unit entered failed state.
окт 12 21:34:33 omv systemd[1]: squid.service: Failed with result ‘exit-code’.

После выполнения команды «Make» и «Make Install» возникает сообщение
make: *** No targets specified and no makefile found. Stop.

config.status: creating Makefile
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands

Подскажите последние 2 вывода насчет depfiles и libtool, что они означают.

Читайте также:  Установка расширителей задних крыльев

Означают что выполняются depfiles и libtool команды

источник

«Прозрачный» Squ > Настройка Linux Системное администрирование

Не секрет, что в больших конторах тема фильтрации Интернета довольно актуальная. С этой задачей справляется немало программных и аппаратных решений. Но в настоящее время все те сайты, которые мы резали ранее, работают по протоколу HTTPS, т.е. порт 443. Как известно, данный протокол проследить, прослушать и т. п., невозможно. А любой кеширующий фильтрующий прокси-сервер, редиректор и т. п. фильтрует только HTTP, т.е. порт 80. Как же резать Вконтакте, Одноклассники, iphide.info и многие другие подобные сайты? Как блокировать доступ к личной почте в организации, если использование оной запрещено порядками в организации? Да, можно фильтровать по IP адресам, но они частенько меняются, да и на многих ресурсах несколько IP адресов. Блокировать их на уровне файрвола как-то совсем не православное решение, и не совсем удобное.

И вот, совсем недавно, мне один товарищ рассказал, что он поднимает у себя в конторе кеширующий прокси с фильтрацией HTTPS, меня это заинтересовало.

А поднимал он Squid 3.5.8. Как выяснилось, в нем переработана организация перехвата шифрованных HTTPS-сеансов (ssl_bump), вместо режимов перехвата («modes») введены в обиход действия («actions»), которые в том числе можно использовать в ACL. Режим «server-first», при котором вначале осуществляется соединение с целевым сервером, а потом создаётся защищённое соединение между клиентом и прокси, теперь доступен как действие «bump». Режим «none», при котором создаётся TCP-туннель без дешифровки трафика, теперь доступен как действие «splice».

Для обеспечения обратной совместимости добавлено действие «peek-and-splice», при котором решение о типе создаваемого вначале соединения (клиент-прокси или прокси-сервер) принимается на основе SSL hello-сообщений. Добавлены действия «peek» и «stare» для получения клиентского или серверного сертификата с сохранением возможности дальнейшего применения режимов «splice» и «bump» для соединений. Добавлено действие «terminate» для закрытия соединений к клиенту или серверу. Вот как раз SSL BUMP, PEEK-and-SPLICE и Terminate нам и нужны. Вообще, схема работы на самом деле довольно простая. Squid подключается к HTTPS ресурсу, получает его сертификат, и может «посмотреть» некоторые данные о ресурсе, в частности имя сервера, которое нам как раз и нужно для блокировки! Все мануалы, которые есть в Интернете, то и дело описывают Man in the middle (MITM) атаку с подменой сертификатов, при которой в принципе не работают некоторые сайты и банк-клиенты, да и юзеры явно видят, что за ними следят. Мы же с товарищем совместными усилиями добились сбособа фильтрации и отслеживания HTTPS без подмены сертификатов, без MITM и прочего, и все это в прозрачном режиме без настройки браузеров!

Впоследствии я столкнулся с некоторыми сложностями, в частности Squid начинал сегфолтиться на большой нагрузке. Но проблема была решена. Дело в том, что в Openssl имеются кое какие баги, которые исправлены в библиотеке Libressl. Поэтому необходимо сначала интегрировать в систему Libressl, потом уже после внесения патча в файл bio.cc в исходниках Squid приступать к компиляции последнего. Поехали! Оговорюсь, что у меня используется дистрибутив Debian Jessie x86, и Squid я в итоге собрал версии 3.5.9 (последняя на данный момент версия), и статья рассчитана на более-менее опытного пользователя Linux, так как некоторые моменты опускаются, а говорится лишь самое главное, так как мне лень все разжевывать.
Для начала, подготовимся к сборке пакетов:

Не забудьте перейти в ту папку, где вы будете собирать исходники, чтобы не засрать себе Хоум. Далее скачаем, скомпилируем и установим Libressl:

Собираем и устанавливаем, после чего перечитаем хеши библиотек:

Ну и надо настроить использование LibreSSL по-умолчанию:

Проверим, получилось ли поставить Libressl:

После выполнения этих действий, необходимо отредактировать sources.list, включив туда исходники из ветки testing (это необходимо, так как нам нужно компилировать новый libecap, который в свою очередь необходим для сборки Squid):

А теперь скачаем из Testing нужные исходники:

Удалим старье, и установим новье:

Качаем последний самый свежий и работающий снэпшот Squid’a:

Обновим полученные ранее исходники Squid’a до новых, и далее будем работать уже в директории с новоиспеченными исходниками:

Чтобы все нужные нам плюшки заработали, надо компилировать Squid с нужными опциями, поэтому внесем в debian/rules следующие опции компиляции:

Скачаем патч для bio.cc, который нужен для корректной работы с Libressl, отсюда bugs.squ >

Теперь можно приступать к компиляции и сборке Squid’а. Но не так быстро! Все скомпилируется без проблем, по крайней мере на х86 архитектуре, но в самом конце, на этапе сборки пакетов deb, вам любезно скажут в консоли: «ай ай ай, не могу понять, какие зависимости нужны для libssl.so.32» (это версия библиотеки из Libressl). Оно и понятно, откуда Debian’у знать о ней. Мы обманем систему, указав опцию «не проверять зависимости», вот так:

А вот теперь приступим к компиляции и сборке:

После сборки установим пакет с языками для Squid’a:

Далее установим новоиспеченные пакеты:

Читайте также:  Установка звена на цепи

Если система заматерилась на неудовлетворенные зависимости, сделаем:

Почти готово. Перейдем в каталог /etc/squid, кое-что там изменим. Создадим pem файлик, необходимый для SSL-Bump’инга:

И приведем squid.conf к следующему виду:

Немного расскажу про конфиг. Документация по ssl_bump, peek-n-splice довольно обширная, но для нашей задачи необходимо знать следующее. Есть несколько этапов «handshaking» (т.е. рукопожатие, взаимодействие с сервером). Описаны они в оф.документации. Нас интересует пример Peek at SNI and Bump. То есть, как следует из названия, мы смотрим SNI-информацию и бампим соединение. Перед этим, мы указываем опцией DONT_VERIFY_PEER, что необходимо принимать сертификаты даже, если они не прошли проверку и опцией sslproxy_cert_error указываем, что нужно отключить проверку сертификатов на сервере. Указанное правило «acl step1 at_step SslBump1» — это есть первый из трех возможных шагов ssl_bump’а. При выполнении этого шага мы получаем только SNI, и ничего более. Нам этого достаточно. Дальше мы используем этот ACL строкой ssl_bump peek step1, то есть непосредственно смотрим SNI, а уже после этого блокируем соединение, если в SNI найден server_name из списка blocked.

Далее завернем файрволом нужные порты на Squid:

Все готово! Можно торжественно запускать Squid:

Посмотрим, все ли со Squid’ом нормально:

Если ошибок нет, можно работать. К сожалению, при блокировке HTTPS ресурсов, не появляется сообщение Squid’a «Доступ запрещен», а вместо этого браузер выдает ошибку о невозможности создания соединения. Если кто-то подскажет, как это сделать, буду очень рад.

UPD: в версии Кальмара, которую компилировал я изначально, т.е. 3.5.9, найден досадный баг (или фича), из-за которого спустя время перестают открываться некоторые HTTPS сайты. Решение: компилировать версию 3.5.8.

UPD2: создал очередной багрепорт по проблеме в 3.5.9, тему буду обновлять, если что-то прояснится.
UPD3: вышла версия 3.5.10 с исправленными багами, по крайней мере, патч на файл bio.cc там уже применен. Не тестировал пока-что
UPD4: подредактировал статью немного.
UPD5: прямая ссылка для скачивания архива со всеми нужными пакетами (SQUID 3.5.8), пока-что это единственная рабочая версия! Остальные, которые версиями выше, имеют баг, из-за которого Squid перестает работать при прозрачном проксировании HTTPS. ВЕРСИЯ ДЛЯ Х86.

ВНИМАНИЕ. Во избежание недоразумений, ставьте версию 3.5.8! На ней нет никаких проблем, и если сделано все точно по статье, то все будет работать! Если ставите версию выше, то я не гарантирую правильной работы прозрачной фильтрации!

Очередное Update. в src-репозитарии Debian Testing теперь 3.5.10. добавляйте в sources.list src-репозитарий squeeze. Там версия 3.1, но ничего страшного, все обновится до версии 3.5.8 как надо, только пути к каталогам измените в соответствии с версией скачанных исходников!

UPD 02.12.15: Я прошу прощения, если заставил кого-то костылить. Перезалил архив squid 3.5.8, там не хватало одного deb пакета! squid 3.5.8_all.

UPD 02.12.15: Внимание! Если у вас проблема с установкой libressl, то нужно сделать так: сначала поставить openssl, а затем уже ставить libressl (если ставите версию из архива с пакетами, то не забывайте сделать замену openssl на libressl, как в статье!). Это решит проблему «невидения» библиотеки libssl.so.32

UPD 10.12.15: Появилась следующая версия статьи, с немного другим подходом к компиляции Кальмара и сборке пакетов. Вот тут

UPD 14.12.15: спешу поделиться с коллегами отличной новостью! Я нашел способ заставить работать новые версии Squid’а без особых танцев с бубном! Необходимо, чтобы у клиентов и в настройках Squid’а были одинаковые DNS! В моем случае, на шлюзе с Кальмаром крутится Bind. Назначил клиентам именно его, и Кальмару директивой:
. После чего все успешно заработало. Проверено на Squid 4.0.3, собрана БЕЗ Libressl!

UPD 14.12.15: не знаю почему, но в данный момент на Debian 8.2 при сборке Squid’a описанным выше способом выдается сообщение о том, что файл mime.conf не найден. И действительно, ведь в исходниках Кальмара есть mime.conf.default. Я нашел решение. Необходимо отредактировать два файлика:
1) debian/squid-common.install, и привести строку

2) Также необходимо сделать так, чтобы после установки пакета файл переименовался автоматом в «сквидочитаемый вид», т.е. в mime.conf. Для этого отредактируем файл debian/squid-common.postinst, приведя его в такой вид:

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

UPD 19.06.17: так как у меня спёрли домен linux-admin.tk, пришлось создать новый, уже «нормальный» домен, соответственно ссылку на скачивание архива изменил.

UPD 04.05.18: написал новую статью, где решается проблема глюков новых версий Squid + в логах красивые доменные имена вместо ip адресов + обход блокировок РКН.

Хочу сказать спасибо товарищу Дмитрию Рахматуллину, без него бы не получилось сделать то, что написано выше. Также, отдельное спасибо разработчикам Squid’а, которые оперативно ответили на мой баг-репорт об ошибке в libssl. И спасибо ребятам Nadz Goldman и gmax007 с Тостера, которые направили в нужное русло мои идеи по переносу Squid’а на физически отдельный от основного шлюза сервер.

источник