«Как сделать бинарник из bash скрипта» и ««Прозрачный» Squid с фильтрацией HTTPS ресурсов без подмены сертификатов»: разница между страницами

Материал из support.qbpro.ru
(Различия между страницами)
imported>Vix
Нет описания правки
 
imported>Vix
Нет описания правки
 
Строка 1: Строка 1:
Появилась необходимость, скомпилировать '''bash''' скрипт в бинарный исполняемый файл. Смысл и цели этих манипуляций каждый может найти себе сам, вдруг понадобится. Нашелся такой [http://www.datsi.fi.upm.es/~frosal/ проект], некоего '''Francisco Javier Rosales García'''. Утилита называется '''shc''', транслятор языка '''bash''' в '''C''', с последующей компиляцией в двоичный формат. Все манипуляции производим на виртуальной машине с '''debian 8 jessie''' на борту. Скачиваем архив, разархивируем, компилируем:
Данная инструкция позволяет скомпилировать как х86, так и х64 версии Squid'a и создать соответствующие пакеты. Инструкция будет разбита на несколько пунктов и подпунктов. Если интересно, идем под кат:<br>
'''1.''' Подготовка.<br>
'''1.1''' Для начала, подготовимся к сборке пакетов:
apt-get install git fakeroot checkinstall build-essential devscripts patch
apt-cache policy squid3
apt-get build-dep squid3
apt-get build-dep libecap2
apt-get install libssl-dev libgnutls28-dev


root@debian8:~ # wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9b.tgz
Не забудьте перейти в ту папку, где вы будете собирать исходники, чтобы не загадить себе Хоум.
root@debian8:~ # tar -xzf ./shc-3.8.9b.tgz
root@debian8:~ # cd shc-3.8.9b
root@debian8:~/shc-3.8.9b # make
cc -Wall  shc.c -o shc
***    ▒Do you want to probe shc with a test script?
***    Please try...  make test


Собственно инструмент готов, можно использовать.
'''1.2''' Далее скачаем Libressl:
Использование '''shc'''
wget http://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.1.6.tar.gz
Список возможных опций:
tar -xzvf libressl-2.1.6.tar.gz
cd libressl-2.1.6


  root@debian8:~/shc-3.8.9b # ./shc -help
'''1.3''' А теперь собираем:
  shc Version 3.8.9b, Generic Script Compiler
./configure
  shc Copyright (c) 1994-2015 Francisco Rosales
make
  shc Usage: shc [-e date] [-m addr] [-i iopt] [-x cmnd] [-l lopt] [-rvDTCAh] -f script
  checkinstall --pkgname libressl --pkgversion 2.1.6
 
'''2.''' Теперь можно установить Libressl:
dpkg -i libressl_2.1.6-1_amd64.deb
ldconfig
 
 
'''2.1''' После установки необходимо настроить использование LibreSSL по-умолчанию:
mv /usr/bin/openssl /usr/bin/openssl-1
update-alternatives --install /usr/bin/openssl openssl /usr/bin/openssl-1 10
update-alternatives --install /usr/bin/openssl openssl /usr/local/bin/openssl 50
update-alternatives --config openssl
 
'''*''' Проверим, получилось ли поставить Libressl:
openssl version
    LibreSSL 2.1.6
 
Если выхлоп консоли похожий, то все получилось. Идем дальше.
 
'''3.''' На очереди Libecap.<br>
'''3.1''' Необходимо отредактировать sources.list, включив туда исходники из ветки testing (это необходимо, так как нам нужно компилировать новый libecap, который в свою очередь необходим для сборки Squid):
deb-src http://ftp.de.debian.org/debian/ testing main contrib non-free
 
'''3.2''' Обновим кеш пакетов:
apt-get update
 
'''3.3''' А теперь скачаем из Testing нужные исходники:
apt-get source libecap3/testing
 
'''3.4''' Далее соберем libecap:
cd libecap-1.0.1/
dpkg-buildpackage -us -uc -nc -d
 
'''3.5'''  Удалим старье, и установим новье:
apt-get purge libecap2
libecap3_1.0.1-2_amd64.deb
libecap3-dev_1.0.1-2_amd64.deb
 
'''4.''' Подобрались к компиляции самого Squid'a.<br>
'''4.1''' Качаем последний самый работающий снэпшот Squid'a:
wget http://www.squid-cache.org/Versions/v3/3.5/squid-3.5.8.tar.gz
 
'''4.2''' Распакуем:
tar -xf squid-3.5.8.tar.gz
  cd squid-3.5.8
 
'''4.3''' Качаем патч для bio.cc, и патчим:
wget -O bug-4330-put_cipher_by_char-t1.patch http://bugs.squid-cache.org/attachment.cgi?id=3216
patch -p0 -i bug-4330-put_cipher_by_char-t1.patch
»  patching file src/ssl/bio.cc
 
'''5.''' А этот этап один из самых ответственных. Необходимо сконфигурировать Squid с нужными опциями. В предыдущей статье использовался файл debian/rules, но компилировать Squid в этой инструкции мы будем с помощью make, и создавать пакеты будем с помощью checkinstall. Поэтому опций будет побольше. И вот какие:
./configure --build=x86_64-linux-gnu \
--prefix=/usr \
--includedir=${prefix}/include \
--mandir=${prefix}/share/man \
--infodir=${prefix}/share/info \
--sysconfdir=/etc \
--localstatedir=/var \
--libexecdir=${prefix}/lib/squid \
--srcdir=. \
--disable-maintainer-mode \
--disable-dependency-tracking \
--disable-silent-rules \
--datadir=/usr/share/squid \
--sysconfdir=/etc/squid \
--mandir=/usr/share/man \
--enable-inline \
--disable-arch-native \
--enable-async-io=8 \
--enable-storeio=ufs,aufs,diskd,rock \
  --enable-removal-policies=lru,heap \
--enable-delay-pools \
--enable-cache-digests \
--enable-icap-client \
--enable-follow-x-forwarded-for \
--enable-auth-basic=DB,fake,getpwnam,LDAP,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB \
--enable-auth-digest=file,LDAP \
--enable-auth-negotiate=kerberos,wrapper \
--enable-auth-ntlm=fake,smb_lm \
--enable-external-acl-helpers=file_userip,kerberos_ldap_group,LDAP_group,session,SQL_session,unix_group,wbinfo_group \
--enable-url-rewrite-helpers=fake \
--enable-eui \
--enable-esi \
--enable-icmp \
--enable-zph-qos \
--enable-ecap \
--disable-translation \
--with-swapdir=/var/spool/squid \
--with-logdir=/var/log/squid \
--with-pidfile=/var/run/squid.pid \
--with-filedescriptors=65536 \
--with-large-files \
--with-default-user=proxy \
--enable-ssl \
--enable-ssl-crtd \
--with-openssl \
--enable-linux-netfilter \
'CFLAGS=-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wall' \
'LDFLAGS=-fPIE -pie -Wl,-z,relro -Wl,-z,now' \
'CPPFLAGS=-D_FORTIFY_SOURCE=2' \
'CXXFLAGS=-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security'
 
'''*''' Будьте предельно внимательны. Нас больше интересуют, как и в предыдущей статье, три опции: --enable-ssl, --enable-ssl-crtd, --with-openssl. Остальные опции можете изменять в соответствие с вашими предпочтениями (если хотите их менять, обязательно прочитайте документацию по конфигурированию).
 
'''6.''' Теперь мы добрались до компилирования.
'''6.1''' Компилируем.
make
 
'''6.2''' Неоднозначный этап. Необходимо создать директории /usr/share/squid/ и /usr/share/squid/icons, иначе следующий этап не выполнится из-за отсутствия этих папок (почему checkinstall их сам не создает, я не разбирался, к сожалению):
  mkdir -p  /usr/share/squid/icons
 
'''6.3''' А теперь создаем установочные пакеты:
checkinstall --pkgname squid --pkgversion 3.5.8
 
'''7.''' Мы подходим к финалу. Устанавливаем Squid:
dpkg -i squid_3.5.8-1_amd64.deb
 
'''8.''' Пробуем запустить squid:
systemctl start squid
 
'''*''' И видим большую ФИГУ! Надо же… Пробуем по-старинке:
service squid start
 
'''*''' И тоже видим большую ФИГУ. Почему? Потому что checkinstall не включил в пакет файлы сервиса Squid. Не беда. <br>
'''8.1''' Создадим сами нужный сервис  systemd:
touch /etc/systemd/system/squid.service
nano /etc/systemd/system/squid.service
 
'''*''' Со следующим содержимым:
 
## Copyright (C) 1996-2015 The Squid Software Foundation and contributors
##
## Squid software is distributed under GPLv2+ license and includes
## contributions from numerous individuals and organizations.
## Please see the COPYING and CONTRIBUTORS files for details.
##
   
   
    -e %s Expiration date in dd/mm/yyyy format [none]
  [Unit]
    -m %s Message to display upon expiration ["Please contact your provider"]
  Description=Squid Web Proxy Server
    -f %s  File name of the script to compile
  After=network.target
    -i %s Inline option for the shell interpreter i.e: -e
    -x %s  eXec command, as a printf format i.e: exec('%s',@ARGV);
    -l %s  Last shell option i.e: --
    -r    Relax security. Make a redistributable binary
    -v    Verbose compilation
    -D    Switch ON debug exec calls [OFF]
    -T    Allow binary to be traceable [no]
    -C    Display license and exit
    -A    Display abstract and exit
    -h    Display help and exit
   
   
    Environment variables used:
[Service]
    Name    Default Usage
  Type=simple
    CC      cc      C compiler command
ExecStart=/usr/sbin/squid -sYC -N
    CFLAGS    C compiler flags
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
   
   
    Please consult the shc(1) man page.
[Install]
WantedBy=multi-user.target
   
   
Для проверки накидаем скрипт '''script.sh''' в пару строк:
'''8.2''' Включим созданный сервис
systemctl enable squid


  #!/bin/bash
'''9.''' Да, вы правы, это еще не все. Так как мы компилировали полностью оригинальные исходники (за исключением патча на bio.cc), конфигурационные файлы у нас установились вида squid.conf.default, mime.conf.default и т.п. Конечно же, Squid о них и не слышал. Переименуем их в Squid'очитаемый вид:
  echo $1
cp /etc/squid/squid.conf.default /etc/squid/squid.conf
  cp /etc/squid/mime.conf.default /etc/squid/mime.conf
  cp /etc/squid/cachemgr.conf.default /etc/squid/cachemgr.conf
cp /etc/squid/errorpage.css.default /etc/squid/errorpage.css


Скрипт просто выводит строку, переданную ему в качестве параметра
'''10.''' И это еще не все=) Необходимо вручную создать папку для логов Squid'a и назначить ей соответствующие права:
mkdir /var/log/squid
chown proxy /var/log/squid


root@debian8:~/shc-3.8.9b # ./script.sh testing
'''11.''' И вот он — финальный этап. Запуск Squid'a и проверка статуса сервиса!
  testing
  systemctl start squid


Теперь скомпилируем бинарный файл.
systemctl status -l squid
● squid.service - Squid Web Proxy Server
    Loaded: loaded (/etc/systemd/system/squid.service; enabled)
    Active: active (running) since Пт 2015-12-04 23:32:04 YEKT; 2min 41s ago
  Main PID: 590 (squid)
    CGroup: /system.slice/squid.service
            ├─590 /usr/sbin/squid -sYC -N
            └─591 (logfile-daemon) /var/log/squid/access.log
дек 04 23:32:04 squidX64 squid[590]: Max Swap size: 0 KB
дек 04 23:32:04 squidX64 squid[590]: Using Least Load store dir selection
дек 04 23:32:04 squidX64 squid[590]: Current Directory is /
дек 04 23:32:04 squidX64 squid[590]: Finished loading MIME types and icons.
дек 04 23:32:04 squidX64 squid[590]: HTCP Disabled.
дек 04 23:32:04 squidX64 squid[590]: Pinger socket opened on FD 16
дек 04 23:32:04 squidX64 squid[590]: Squid plugin modules loaded: 0
дек 04 23:32:04 squidX64 squid[590]: Adaptation support is off.
дек 04 23:32:04 squidX64 squid[590]: Accepting HTTP Socket connections at local=[::]:3128 remote=[::] FD 14 flags=9
дек 04 23:32:05 squidX64 squid[590]: storeLateRelease: released 0 objects
'''*''' Если выхлоп консоли выглядит похоже, а точнее в нем нет ошибок и обязательно присутствует строка «Active: active (running)», то вы успешно установили себе Squid с поддержкой прозрачного проксирования HTTPS! Поздравляю!


root@debian8:~/shc-3.8.9b # ./shc -r -T -f ./script.sh
'''*''' Если не хочется ничего компилировать, то можете скачать архив с готовыми deb пакетами (x64 версия!). Если будете устанавливать из готовых пакетов, то вам нужны будут шаги: 2, 3(б), 7, 8, 9, 10, 11.


На выходе получаем 2 новых файла: '''script.sh.x''' - двоичный исполняемый файл '''script.sh.x.c''' - С код полученный из '''bash''' скрипта, при желании его можно подправить руками и скомпилировать штатными средствами системы. Проверяем бинарник:
'''*''' Также хочу отметить, что checkinstall позволяет создавать пакеты rpm, и вы можете этим воспользоваться. Единственное, нужно все пакеты собирать с помощью checkinstall, но я думаю, проблем с этим не будет, так как основное и самое сложное уже собрано именно checkinstall'ом.


  root@debian8:~/shc-3.8.9b # ./script.sh.x "binary file"
* Пример рабочего /etc/squid/squid.conf
  binary file
  acl localnet src 192.168.5.0/24 # RFC1918 possible internal network
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
dns_nameservers 127.0.0.1
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager                                                                                         
http_access deny manager                                                                                                     
                                                                                                                             
http_access allow localnet                                                                                                                                                                                                     
http_access allow localhost                                                                                                 
http_access deny all                                                                                                         
#прозрачный порт указывается опцией intercept
http_port 192.168.5.1:3128 intercept
http_port 192.168.5.1:3130
https_port 192.168.5.1:3129 intercept ssl-bump options=ALL:NO_SSLv3:NO_SSLv2 connection-auth=off cert=/etc/squid/squidCA.pem
 
always_direct allow all
sslproxy_cert_error allow all
sslproxy_flags DONT_VERIFY_PEER
#укажем правило со списком блокируемых ресурсов (в файле домены вида .domain.com)
#acl blocked ssl::server_name  "/etc/squid/blacklist_https.conf"
  acl step1 at_step SslBump1
ssl_bump peek step1
#терминируем соединение, если клиент заходит на запрещенный ресурс
#ssl_bump terminate blocked deny_users
#ssl_bump bump all
ssl_bump splice all
sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB
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
cache_dir aufs /var/spool/squid 512 49 256
maximum_object_size 61440 KB
minimum_object_size 3 KB
cache_swap_low 90
cache_swap_high 95
maximum_object_size_in_memory 256 KB
memory_replacement_policy lru
logfile_rotate 4


Использовать полученный бинарник можно практически на любой версии linux. Скрипту можно установить срок годности (опция -e), по истечение которого файл будет выдавать сообщение (опция -m).
* не забываем создать ssl сертификат для squid:


ИСТОЧНИК:
'''ИСТОЧНИКИ:'''
<hr>
<hr>
* [https://vds-admin.ru/linux/%D0%BA%D0%B0%D0%BA-%D1%81%D0%B4%D0%B5%D0%BB%D0%B0%D1%82%D1%8C-%D0%B1%D0%B8%D0%BD%D0%B0%D1%80%D0%BD%D0%B8%D0%BA-%D0%B8%D0%B7-bash-%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B0 Как сделать бинарник из bash скрипта]
* [https://habr.com/ru/post/272733/ «Прозрачный» Squid с фильтрацией HTTPS ресурсов без подмены сертификатов (х86, х64 — универсальная инструкция)]
* [https://habr.com/ru/post/267851/ «Прозрачный» Squid с фильтрацией HTTPS ресурсов без подмены сертификатов (x86)]

Версия от 20:39, 3 мая 2019

Данная инструкция позволяет скомпилировать как х86, так и х64 версии Squid'a и создать соответствующие пакеты. Инструкция будет разбита на несколько пунктов и подпунктов. Если интересно, идем под кат:
1. Подготовка.
1.1 Для начала, подготовимся к сборке пакетов:

apt-get install git fakeroot checkinstall build-essential devscripts patch
apt-cache policy squid3
apt-get build-dep squid3
apt-get build-dep libecap2
apt-get install libssl-dev libgnutls28-dev

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

1.2 Далее скачаем Libressl:

wget http://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.1.6.tar.gz
tar -xzvf libressl-2.1.6.tar.gz
cd libressl-2.1.6

1.3 А теперь собираем:

./configure
make
checkinstall --pkgname libressl --pkgversion 2.1.6

2. Теперь можно установить Libressl:

dpkg -i libressl_2.1.6-1_amd64.deb	
ldconfig


2.1 После установки необходимо настроить использование LibreSSL по-умолчанию:

mv /usr/bin/openssl /usr/bin/openssl-1
update-alternatives --install /usr/bin/openssl openssl /usr/bin/openssl-1 10
update-alternatives --install /usr/bin/openssl openssl /usr/local/bin/openssl 50
update-alternatives --config openssl

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

openssl version
   LibreSSL 2.1.6

Если выхлоп консоли похожий, то все получилось. Идем дальше.

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

deb-src http://ftp.de.debian.org/debian/ testing main contrib non-free

3.2 Обновим кеш пакетов:

apt-get update

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

apt-get source libecap3/testing

3.4 Далее соберем libecap:

cd libecap-1.0.1/
dpkg-buildpackage -us -uc -nc -d

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

apt-get purge libecap2
libecap3_1.0.1-2_amd64.deb
libecap3-dev_1.0.1-2_amd64.deb

4. Подобрались к компиляции самого Squid'a.
4.1 Качаем последний самый работающий снэпшот Squid'a:

wget http://www.squid-cache.org/Versions/v3/3.5/squid-3.5.8.tar.gz

4.2 Распакуем:

tar -xf squid-3.5.8.tar.gz
cd squid-3.5.8

4.3 Качаем патч для bio.cc, и патчим:

wget -O bug-4330-put_cipher_by_char-t1.patch http://bugs.squid-cache.org/attachment.cgi?id=3216 
patch -p0 -i bug-4330-put_cipher_by_char-t1.patch
»  patching file src/ssl/bio.cc

5. А этот этап один из самых ответственных. Необходимо сконфигурировать Squid с нужными опциями. В предыдущей статье использовался файл debian/rules, но компилировать Squid в этой инструкции мы будем с помощью make, и создавать пакеты будем с помощью checkinstall. Поэтому опций будет побольше. И вот какие:

./configure --build=x86_64-linux-gnu \
--prefix=/usr \
--includedir=${prefix}/include \
--mandir=${prefix}/share/man \
--infodir=${prefix}/share/info \
--sysconfdir=/etc \
--localstatedir=/var \
--libexecdir=${prefix}/lib/squid \
--srcdir=. \
--disable-maintainer-mode \
--disable-dependency-tracking \
--disable-silent-rules \
--datadir=/usr/share/squid \
--sysconfdir=/etc/squid \
--mandir=/usr/share/man \
--enable-inline \
--disable-arch-native \
--enable-async-io=8 \
--enable-storeio=ufs,aufs,diskd,rock \
--enable-removal-policies=lru,heap \
--enable-delay-pools \
--enable-cache-digests \
--enable-icap-client \
--enable-follow-x-forwarded-for \
--enable-auth-basic=DB,fake,getpwnam,LDAP,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB \
--enable-auth-digest=file,LDAP \
--enable-auth-negotiate=kerberos,wrapper \
--enable-auth-ntlm=fake,smb_lm \
--enable-external-acl-helpers=file_userip,kerberos_ldap_group,LDAP_group,session,SQL_session,unix_group,wbinfo_group \
--enable-url-rewrite-helpers=fake \
--enable-eui \
--enable-esi \
--enable-icmp \
--enable-zph-qos \
--enable-ecap \
--disable-translation \
--with-swapdir=/var/spool/squid \
--with-logdir=/var/log/squid \
--with-pidfile=/var/run/squid.pid \
--with-filedescriptors=65536 \
--with-large-files \
--with-default-user=proxy \
--enable-ssl \
--enable-ssl-crtd \
--with-openssl \
--enable-linux-netfilter \
'CFLAGS=-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wall' \
'LDFLAGS=-fPIE -pie -Wl,-z,relro -Wl,-z,now' \
'CPPFLAGS=-D_FORTIFY_SOURCE=2' \
'CXXFLAGS=-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security'

* Будьте предельно внимательны. Нас больше интересуют, как и в предыдущей статье, три опции: --enable-ssl, --enable-ssl-crtd, --with-openssl. Остальные опции можете изменять в соответствие с вашими предпочтениями (если хотите их менять, обязательно прочитайте документацию по конфигурированию).

6. Теперь мы добрались до компилирования. 6.1 Компилируем.

make

6.2 Неоднозначный этап. Необходимо создать директории /usr/share/squid/ и /usr/share/squid/icons, иначе следующий этап не выполнится из-за отсутствия этих папок (почему checkinstall их сам не создает, я не разбирался, к сожалению):

mkdir -p  /usr/share/squid/icons 

6.3 А теперь создаем установочные пакеты:

checkinstall --pkgname squid --pkgversion 3.5.8

7. Мы подходим к финалу. Устанавливаем Squid:

dpkg -i squid_3.5.8-1_amd64.deb

8. Пробуем запустить squid:

systemctl start squid

* И видим большую ФИГУ! Надо же… Пробуем по-старинке:

service squid start

* И тоже видим большую ФИГУ. Почему? Потому что checkinstall не включил в пакет файлы сервиса Squid. Не беда.
8.1 Создадим сами нужный сервис systemd:

touch /etc/systemd/system/squid.service
nano /etc/systemd/system/squid.service

* Со следующим содержимым:

## Copyright (C) 1996-2015 The Squid Software Foundation and contributors
##
## Squid software is distributed under GPLv2+ license and includes
## contributions from numerous individuals and organizations.
## Please see the COPYING and CONTRIBUTORS files for details.
##

[Unit]
Description=Squid Web Proxy Server
After=network.target

[Service]
Type=simple
ExecStart=/usr/sbin/squid -sYC -N
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process

[Install]
WantedBy=multi-user.target

8.2 Включим созданный сервис

systemctl enable squid

9. Да, вы правы, это еще не все. Так как мы компилировали полностью оригинальные исходники (за исключением патча на bio.cc), конфигурационные файлы у нас установились вида squid.conf.default, mime.conf.default и т.п. Конечно же, Squid о них и не слышал. Переименуем их в Squid'очитаемый вид:

cp /etc/squid/squid.conf.default /etc/squid/squid.conf
cp /etc/squid/mime.conf.default /etc/squid/mime.conf
cp /etc/squid/cachemgr.conf.default /etc/squid/cachemgr.conf
cp /etc/squid/errorpage.css.default /etc/squid/errorpage.css

10. И это еще не все=) Необходимо вручную создать папку для логов Squid'a и назначить ей соответствующие права:

mkdir /var/log/squid
chown proxy /var/log/squid

11. И вот он — финальный этап. Запуск Squid'a и проверка статуса сервиса!

systemctl start squid
systemctl status -l squid
● squid.service - Squid Web Proxy Server
   Loaded: loaded (/etc/systemd/system/squid.service; enabled)
   Active: active (running) since Пт 2015-12-04 23:32:04 YEKT; 2min 41s ago
 Main PID: 590 (squid)
   CGroup: /system.slice/squid.service
           ├─590 /usr/sbin/squid -sYC -N
           └─591 (logfile-daemon) /var/log/squid/access.log

дек 04 23:32:04 squidX64 squid[590]: Max Swap size: 0 KB
дек 04 23:32:04 squidX64 squid[590]: Using Least Load store dir selection
дек 04 23:32:04 squidX64 squid[590]: Current Directory is /
дек 04 23:32:04 squidX64 squid[590]: Finished loading MIME types and icons.
дек 04 23:32:04 squidX64 squid[590]: HTCP Disabled.
дек 04 23:32:04 squidX64 squid[590]: Pinger socket opened on FD 16
дек 04 23:32:04 squidX64 squid[590]: Squid plugin modules loaded: 0
дек 04 23:32:04 squidX64 squid[590]: Adaptation support is off.
дек 04 23:32:04 squidX64 squid[590]: Accepting HTTP Socket connections at local=[::]:3128 remote=[::] FD 14 flags=9
дек 04 23:32:05 squidX64 squid[590]: storeLateRelease: released 0 objects

* Если выхлоп консоли выглядит похоже, а точнее в нем нет ошибок и обязательно присутствует строка «Active: active (running)», то вы успешно установили себе Squid с поддержкой прозрачного проксирования HTTPS! Поздравляю!

* Если не хочется ничего компилировать, то можете скачать архив с готовыми deb пакетами (x64 версия!). Если будете устанавливать из готовых пакетов, то вам нужны будут шаги: 2, 3(б), 7, 8, 9, 10, 11.

* Также хочу отметить, что checkinstall позволяет создавать пакеты rpm, и вы можете этим воспользоваться. Единственное, нужно все пакеты собирать с помощью checkinstall, но я думаю, проблем с этим не будет, так как основное и самое сложное уже собрано именно checkinstall'ом.

  • Пример рабочего /etc/squid/squid.conf
acl localnet src 192.168.5.0/24 # RFC1918 possible internal network

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

dns_nameservers 127.0.0.1
http_access deny !Safe_ports

http_access deny CONNECT !SSL_ports

http_access allow localhost manager                                                                                           
http_access deny manager                                                                                                      
                                                                                                                              
http_access allow localnet                                                                                                                                                                                                       
http_access allow localhost                                                                                                   
http_access deny all                                                                                                          

#прозрачный порт указывается опцией intercept
http_port 192.168.5.1:3128 intercept 
http_port 192.168.5.1:3130 
https_port 192.168.5.1:3129 intercept ssl-bump options=ALL:NO_SSLv3:NO_SSLv2 connection-auth=off cert=/etc/squid/squidCA.pem
 

always_direct allow all
sslproxy_cert_error allow all
sslproxy_flags DONT_VERIFY_PEER

#укажем правило со списком блокируемых ресурсов (в файле домены вида .domain.com)
#acl blocked ssl::server_name  "/etc/squid/blacklist_https.conf"
acl step1 at_step SslBump1
ssl_bump peek step1

#терминируем соединение, если клиент заходит на запрещенный ресурс
#ssl_bump terminate blocked deny_users
#ssl_bump bump all
ssl_bump splice all

sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB

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
cache_dir aufs /var/spool/squid 512 49 256
maximum_object_size 61440 KB
minimum_object_size 3 KB

cache_swap_low 90
cache_swap_high 95
maximum_object_size_in_memory 256 KB
memory_replacement_policy lru
logfile_rotate 4
  • не забываем создать ssl сертификат для squid:


ИСТОЧНИКИ: