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

Материал из support.qbpro.ru
(Различия между страницами)
imported>Vix
Нет описания правки
 
imported>Vix
Нет описания правки
 
Строка 1: Строка 1:
Данная инструкция позволяет скомпилировать как х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


Не забудьте перейти в ту папку, где вы будете собирать исходники, чтобы не загадить себе Хоум.
Прежде всего обновите локальный список пакетов с помощью вашего пакетного менеджера, например на Ubuntu и Debian это можно сделать с помощью apt:
 
'''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.<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
  apt-get update


'''3.3''' А теперь скачаем из Testing нужные исходники:
Для установки выполните команду:
  apt-get source libecap3/testing
  apt-get install exim4


'''3.4''' Далее соберем libecap:
Примечание: если вам необходимо использовать ACL и другие расширенные функции, то установите exim4-daemon-heavy:
cd libecap-1.0.1/
  apt-get install exim4-daemon-heavy
  dpkg-buildpackage -us -uc -nc -d


'''3.5'''  Удалим старье, и установим новье:
Чтобы перейти к настройке, выполните команду:
  apt-get purge libecap2
  dpkg-reconfigure exim4-config
libecap3_1.0.1-2_amd64.deb
libecap3-dev_1.0.1-2_amd64.deb


'''4.''' Подобрались к компиляции самого Squid'a.<br>
Нажмите Ok для начала настройки.
'''4.1''' Качаем последний самый работающий снэпшот Squid'a:
'''РЕШЕНИЕ ПРОБЛЕМ'''
wget http://www.squid-cache.org/Versions/v3/3.5/squid-3.5.8.tar.gz
<hr>
 
* '''defer (-53): retry time not reached for any host'''
'''4.2''' Распакуем:
Повреждены ваши exim db Это возможно связанно с недоступостью почтового сервера какой-то время.
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.
##
[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 и назначить ей соответствующие права:
  cd /var/spool/exim/db
  mkdir /var/log/squid
  rm -f retry retry.lockfile
  chown proxy /var/log/squid
rm -f wait-remote_smtp wait-remote_smtp.lockfile
service exim restart


'''11.''' И вот он — финальный этап. Запуск Squid'a и проверка статуса сервиса!
В дальнейшим имеет смысл: внести изменения в /etc/exim/exim.conf
systemctl start squid
в раздел


  systemctl status -l squid
  begin retry
  ● squid.service - Squid Web Proxy Server
  *                      rcpt_451    F,1h,15m
     Loaded: loaded (/etc/systemd/system/squid.service; enabled)
*                      refused     F,1h,2m
    Active: active (running) since Пт 2015-12-04 23:32:04 YEKT; 2min 41s ago
*                      timeout_connect    F,2h,2m; F,6h,1h; F,4d,6h
  Main PID: 590 (squid)
  *                      *          F,2h,2m; G,16h,1h,1.5; F,4d,6h
    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.
также обратите внимание на запуск с какой опцией он стартует: -q5m
* [https://www.linuxshop.ru/forum/f7/t31431--resheno-remote-smtp-defer-53-retry-time-not-reached-for-any-host-exchange-exim.html взято тут]


'''*''' Также хочу отметить, что checkinstall позволяет создавать пакеты rpm, и вы можете этим воспользоваться. Единственное, нужно все пакеты собирать с помощью checkinstall, но я думаю, проблем с этим не будет, так как основное и самое сложное уже собрано именно checkinstall'ом.
* Для решения проблемы с ssl в exim4.conf.template изменить:
...
REMOTE_SMTP_SMARTHOST_TLS_VERIFY_HOSTS = *


* Пример рабочего /etc/squid/squid.conf
на
  acl localnet src 192.168.5.0/24 # RFC1918 possible internal network
  ...
   
  REMOTE_SMTP_SMARTHOST_TLS_VERIFY_HOSTS = !*
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:
* Если нужно жестко указать порт smtp, то:
   
  ...
dc_smarthost='mail.myhost.ru::25'
...


'''ИСТОЧНИКИ:'''
'''ИСТОЧНИКИ:'''
<hr>
<hr>
* [https://habr.com/ru/post/272733/ «Прозрачный» Squid с фильтрацией HTTPS ресурсов без подмены сертификатов (х86, х64 — универсальная инструкция)]
* [https://qna.habr.com/q/146009 Exim и внешний SMTP сервер, как заставить ходить почту?]
* [https://habr.com/ru/post/267851/ «Прозрачный» Squid с фильтрацией HTTPS ресурсов без подмены сертификатов (x86)]
* [https://1cloud.ru/help/linux/nastrojka-exim4 Настройка EXIM4 для отправки почтовых сообщений в Linux]
* [https://serverspace.by/support/help/nastroika-exim-4-na-ubuntu/ Ubuntu. Настройка Exim4]

Версия от 19:39, 20 июля 2022

Установка и настройка

Прежде всего обновите локальный список пакетов с помощью вашего пакетного менеджера, например на Ubuntu и Debian это можно сделать с помощью apt:

apt-get update

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

apt-get install exim4

Примечание: если вам необходимо использовать ACL и другие расширенные функции, то установите exim4-daemon-heavy:

apt-get install exim4-daemon-heavy

Чтобы перейти к настройке, выполните команду:

dpkg-reconfigure exim4-config

Нажмите Ok для начала настройки. РЕШЕНИЕ ПРОБЛЕМ


  • defer (-53): retry time not reached for any host

Повреждены ваши exim db Это возможно связанно с недоступостью почтового сервера какой-то время.

решение:

cd /var/spool/exim/db
rm -f retry retry.lockfile
rm -f wait-remote_smtp wait-remote_smtp.lockfile
service exim restart

В дальнейшим имеет смысл: внести изменения в /etc/exim/exim.conf в раздел

begin retry
*                      rcpt_451    F,1h,15m
*                      refused     F,1h,2m
*                      timeout_connect    F,2h,2m; F,6h,1h; F,4d,6h
*                      *           F,2h,2m; G,16h,1h,1.5; F,4d,6h

также обратите внимание на запуск с какой опцией он стартует: -q5m

  • Для решения проблемы с ssl в exim4.conf.template изменить:
...
REMOTE_SMTP_SMARTHOST_TLS_VERIFY_HOSTS = *

на

...
REMOTE_SMTP_SMARTHOST_TLS_VERIFY_HOSTS = !*
  • Если нужно жестко указать порт smtp, то:
...
dc_smarthost='mail.myhost.ru::25'
...

ИСТОЧНИКИ: