Установка Squid 3.5.19 на Ubuntu 14.04.5 LTS с поддержкой HTTPS протокола

Появилась необходимость на работе анализировать трафик интернета, с возможностью выставлять всякого рода запреты на пользование интернета сотрудникам и посещении сайтов как по HTTP протоколу, так и по HTTPS. Использовать будем для всех этих дел Squid 3.5.19 и развернут он будет на Ubuntu 14.04.5 LTS.

Первым делом обновляем систему до актуального состояния

sudo apt-get update
sudo apt-get upgrade

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

sudo apt-get -y install devscripts build-essential fakeroot debhelper dh-autoreconf cdbs

Устанавливаем зависимости для libecap и squid

sudo apt-get -y build-dep libecap
sudo apt-get -y build-dep squid3

Удаляем старую версию libecap

sudo apt-get -y --purge remove libecap2-dev libecap2

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

sudo apt-get -y install nettle-dev libgnutls28-dev libssl-dev libdbi-perl

Создаем папки где будем собирать libecap (чтобы не захламлять home)

mkdir -p build/libecap

Перейдем в созданный каталог

pushd build/libecap

Скачиваем исходники libecap3

wget http://jakondo.ru/wp-content/uploads/file-manager/squid_3.5.19/libecap_1.0.1-3.dsc
wget http://jakondo.ru/wp-content/uploads/file-manager/squid_3.5.19/libecap_1.0.1.orig.tar.gz
wget http://jakondo.ru/wp-content/uploads/file-manager/squid_3.5.19/libecap_1.0.1-3.debian.tar.xz

Распаковываем

sudo dpkg-source -x libecap_1.0.1-3.dsc

Открываем текстовым редактором файл libecap-1.0.1/debian/control

sudo nano libecap-1.0.1/debian/control

находим строку

Build-Depends: debhelper (>= 8.0.0), autotools-dev, cdbs, dh-autoreconf, g++ (>= 4:5.2)

и заменяем ее на

Build-Depends: debhelper (>= 8.0.0), autotools-dev, cdbs, dh-autoreconf

Сохраняем документ и выходим

Ctrl+O, Ctrl+X

Входим в каталог

cd libecap-1.0.1

И запускаем процесс создания пакета

sudo dpkg-buildpackage -rfakeroot -b

Выходим из каталога

popd

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

pushd build/libecap

Установим пакеты

sudo dpkg --install libecap3_1.0.1-3_amd64.deb
sudo dpkg --install libecap3-dev_1.0.1-3_amd64.deb

Выходим из каталога

popd

Теперь перейдем к основной нашей цели, это сборка и установка Squid 3.5.19.

Создадим каталог где мы будем собирать Squid

mkdir -p build/squid3

Перейдем в созданный каталог

pushd build/squid3

Скачаем исходники

wget http://jakondo.ru/wp-content/uploads/file-manager/squid_3.5.19/squid3_3.5.19-1.dsc
wget http://jakondo.ru/wp-content/uploads/file-manager/squid_3.5.19/squid3_3.5.19.orig.tar.gz
wget http://jakondo.ru/wp-content/uploads/file-manager/squid_3.5.19/squid3_3.5.19-1.debian.tar.xz

Распакуем исходный пакет

sudo dpkg-source -x squid3_3.5.19-1.dsc

Отредактируем файл правила сборки пакета rules. А конкретней добавим необходимые нам компоненты, для работы с HTTPS трафиком

sudo nano squid3-3.5.19/debian/rules

Ищем строку

--with-default-user=proxy

и вместо нее пишем

--with-default-user=proxy \
--with-openssl \
--enable-ssl \
--enable-ssl-crtd

Сохраняем документ и выходим

Ctrl+O, Ctrl+X

Перейдем в каталог для запуска сборки пакета

cd squid3-3.5.19

И запустим процесс сборки пакета Squid. (Процесс довольно продолжительный)

sudo dpkg-buildpackage -rfakeroot -b

После того как сборка пакета завершилась, выходим из каталога.

popd

Все готово для установки Squid. Перейдем в каталог где у нас находятся собранные пакеты Squid

pushd build/squid3

Сперва установим Squid langpack, чтобы была поддержка русского языка

sudo apt-get install squid-langpack

Устанавливаем пакеты Squid в очередности как указано ниже.

sudo dpkg --install squid-common_3.5.19-1_all.deb
sudo dpkg --install squid_3.5.19-1_amd64.deb
sudo dpkg --install squidclient_3.5.19-1_amd64.deb

Выходим из каталога.

popd

На этом установка Squid 3.5.19 завершена. Теперь нужно выполнить настройку его, создать сертификат для работы с HTTPS трафиком.

Файл конфигурации Squid находится /etc/squid/squid.conf. Файл огромный, главный его плюс это то что он очень хорошо комментирован, но редактирование его для меня не совсем удобное, поэтому я создаю бекап дефолтного файла конфигурации, удаляю оригинал и создаю новый текстовый файл в котором будем прописывать только нужные нам параметры для работы Squid. Поехали..

Создаем бекап дефолтного файла

sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.backup

Удаляем оригинальный файл конфигурации

sudo rm /etc/squid/squid.conf

И создаем новый файл будущей конфигурации

sudo nano /etc/squid/squid.conf

Небольшое отступление перед написанием конфигурации. Файл конфигурации может быть различным и для каждого места индивидуальным. Я опишу свою схему работы Squid и напишу какой в итоге у меня получился конфиг.

Организация сети и получение интернета. Имеется роутер Mikrotik, в который приходит интернет, так же на этом роутере развернут DHCP, локальная подсеть 192.168.5.0/24. В этой же подсети находится и нас свеже установленный Squid, с адресом 192.168.5.2. Squid будет у нас работать в обычном режиме. (В идеале хотелось бы конечно работать по прозрачному протоколу, но как только не пытался, не удается завернуть трафик с Mikrotik на Squid на прозрачные порты 80, 443, поэтому я остановился на работе по обычному режиму работы Squid).

Желаемая работа Squid будет заключаться в раздаче интернета только в пределах локальной сети 192.168.5.0/24, а так же возможность блокировать любые неугодные нам сайты для пользователей, возможность блокировать доступ в интернет за исключением белого списка адресов сайтов, ну и конечно создать группу определенных адресов, которых не будут касаться никакие запреты.

В итоге моего плана у меня получился вот такой конфигурации

######################################
# Обслуживаемые прокси-сервером сети #
######################################
acl localnet src 192.168.5.0/24
#################################################
# Правила какие порты разрешены прокси-сервером #
#################################################
# Порт SSL для подключений по HTTPS-протоколу
acl SSL_ports port 443
# Список портов, к которым разрешен доступ через прокси-сервер по протоколу HTTP
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
################################################################
# Пути к файлам запрещающих, разрешающих определенные действия #
################################################################
# Путь к списку IP-адресов пользователей, для которых не действуют запреты
acl AdminsIP src "/etc/squid/AdminsIP.txt"
# Путь к черному списку сайтов
acl BlackList dstdomain "/etc/squid/BlackList.txt"
# Путь к списку адресов которым запрещен интернет
acl BlockInetExlWhite src "/etc/squid/BlockInetExlWhite.txt"
# Путь к белому списку сайтов
acl WhiteList dstdomain "/etc/squid/WhiteList.txt"
#########################
# Параметры DNS записей #
#########################
# Список DNS серверов(IP адреса), которые будут использоваться вместо тех, что определены в /etc/resolv.conf файле
dns_nameservers 192.168.5.3
########################################
# Правила ограничений доступа клиентов #
########################################
# Запретить доступ к портам, отсутствующим в списке выше
http_access deny !Safe_ports
# Запретить метод CONNECT не на SSL-порт
http_access deny CONNECT !SSL_ports
# Разрешить только локальное управление кэшем
http_access allow localhost manager
http_access deny manager
# Не ограничивать локальный доступ с сервера
http_access allow localhost
# Не ограничивать доступ администраторам
http_access allow AdminsIP
# Блокировать интернет конкретным пользователям
http_access deny BlockInetExlWhite !WhiteList
# Блокировать запрещенные сайты
http_access deny BlackList
# Правила разрешающего доступ в интернет из локальной сети указанной в localnet
http_access allow localnet
# Блокирует все, что не было разрешено выше
http_access deny all
#############################################
# Правила подключений клиентов к прокси-серверу#
#############################################
# Подключения через прозрачный порт
http_port 192.168.5.2:3128 intercept options=NO_SSLv3:NO_SSLv2
# Подключение через указания прокси-сервера на стороне клиента
http_port 192.168.5.2:3130 options=NO_SSLv3:NO_SSLv2
# Подключение по HTTPS через прозрачный порт с параметрами подставки сертификата
https_port 192.168.5.2: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.txt"
# Устанавливаем защищенное соединение и считываем заголовок HTTP
acl step1 at_step SslBump1
ssl_bump peek step1
# Закрываем соединение, если клиент заходит на ресурс указанные в blocked
ssl_bump terminate blocked
ssl_bump splice all
sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB
#########################################
# Дополнительные параметры конфигурации #
#########################################
# Путь для дискового кеширования
cache_dir aufs /var/spool/squid 20000 49 256
# Путь сохранения дампов аварийного завершения
coredump_dir /var/spool/squid
# Время жизни объектов для протоколов FTP и GOPHER
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
maximum_object_size 61440 KB
minimum_object_size 3 KB
cache_swap_low 90
cache_swap_high 95
# Максимальный размер объекта, сохраняемого в оперативной памяти
maximum_object_size_in_memory 512 KB
memory_replacement_policy lru
# Количество ротаций лог-файлов (0 - отключена ротация, 15 - максимальное количество)
logfile_rotate 0
# E-mail адрес Cache менеджера, для отправки уведомлений и отображении в страницах ошибок
cache_mgr it@admin.ru

После того как конфиг Squid готов, нужно создать сертификат для работы с HTTPS протоколом

sudo openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 -keyout squidca.pem -out squidca.pem

Сертификат создан, почти все готово. Переместим созданный сертификат в папку Squid

sudo mv squidca.pem /etc/squid/squidca.pem

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

sudo touch /etc/squid/AdminsIP.txt — Список IP адресов без ограничений
sudo touch /etc/squid/BlackList.txt — Список блокированных сайтов (прим.: .mail.ru)
sudo touch /etc/squid/BlockInetExlWhite.txt - Список IP адресов которым запрещен интернет кроме белого списка
sudo touch /etc/squid/WhiteList.txt — Список белых сайтов для посещения (прим.: .jakondo.ru)

После того как заполнили все необходимые списки, торжественно запускаем Squid

sudo service squid start

Проверим статус работы запущенного нами Squid

sudo service squid status

Если видим сообщение — * squid is running, то все отлично Squid работает успешно. Если же иная запись с надписью Failed, то смотрите вывод статуса, всегда пишет в чем проблема, исправляем ошибку и снова пробуем запустить.

В моем случае осталось прописать на ПК пользователей в Свойствах обозревателя, параметры прокси-сервера и проверить работу. Если все было сделано как по инструкции то все будет работать правильно.

Так же можно посмотреть работу Squid в режиме реального времени выполнив команду

sudo taild -f /var/log/squid/access.log

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

 

Понравилась или оказалась полезной статья, поблагодари автора

 

БесполезноСлабоватоПриемлемоОтличноПревосходно (7 голос(ов), в среднем: 4,71 из 5)
Загрузка...

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

  1. vlad /

    Здравствуйте! Не подскажите, возникает ошибка:

    FATAL: Bungled /etc/squid/squid.conf line 69: acl blocked ssl::server_name «/etc/squid/blocklist»

    Если эту строку закомментировать, то следующая:

    FATAL: Bungled /etc/squid/squid.conf line 74: ssl_bump terminate blocked

    Правда ставил на 16.04, но в начале работало, потом переставил начисто чтоб убедиться что заработает на чистой системе, после этого и появилась эта ошибка. Всё делал в Oracle VM VirtualBox, недостающие зависимости ставил через apt-get install -f.

    1. Жаконда / Автор записи

      Добрый вечер !

      Судя по ошибке, blocklist файл не верно указан в acl и поэтому конфиг не может принять данную строку. А то что комментируете строку acl blocked ssl::server_name «/etc/squid/blocklist» и следом выдает ошибку на ssl_bump terminate blocked это потому что последняя напрямую зависит от закомментированной строки.

      Покажите конфиг

  2. vlad /

    Вот полный конфиг:
    acl localnet src 192.168.0.0/16
    acl localnet src fc00::/7
    acl localnet src fe80::/64
    acl globalIPv6 src ipv6
    acl ftp proto FTP
    acl SSL_ports port 443
    acl CONNECT method CONNECT
    acl directlist url_regex -i «/etc/squid/directlist»
    via off
    forwarded_for off
    follow_x_forwarded_for deny all
    request_header_access cache-control deny all
    request_header_access referer deny directlist
    http_access deny !Safe_ports
    http_access deny CONNECT !SSL_ports
    http_access allow localhost manager
    http_access deny manager
    http_access allow globalIPv6
    http_access allow localnet
    http_access allow localhost
    http_access deny all
    http_access allow directlist
    http_port 3128
    http_port 3129 intercept
    https_port 3130 intercept ssl-bump connection-auth=off options=ALL cert=/etc/squid/squidCA.pem
    sslproxy_flags DONT_VERIFY_PEER
    sslproxy_cert_error allow all
    acl blocked ssl::server_name «/etc/squid/blocklist»
    acl step1 at_step SslBump1
    ssl_bump peek step1
    ssl_bump terminate blocked
    ssl_bump splice all
    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_mem 1024 MB
    maximum_object_size_in_memory 512 KB
    cache_dir ufs /var/spool/squid 2048 16 256
    maximum_object_size 4 MB
    access_log daemon:/var/log/squid/access.log squid
    logfile_rotate 10
    error_directory /usr/share/squid/errors/ru
    cache_peer 127.0.0.1 parent 8118 7 no-query default
    always_direct allow ftp
    always_direct deny directlist
    always_direct deny all
    never_direct allow all
    cache_effective_user proxy
    cache_effective_group proxy

    Делалось по мотивам этих двух статей:
    (Сайты на сторонние ресурсы не надо указывать)
    На сквиде в статьях, этот конфиг работает.

    1. Жаконда / Автор записи

      Вот эту строку acl blocked ssl::server_name «/etc/squid/blocklist» приведите к виду acl blocked ssl::server_name "/etc/squid/blocklist" и попробуйте. Знаки «» не допустимы в конфиге.

      Да и странно что вы судя по конфигу вводите список сайтов блокировки только для HTTPS соединений, а HTTP не блокируете.. Ну хотя может быть вы так и задумали 🙂

      1. vlad /

        Это так скопировалось, в конфиге нормальные кавычки. Да, так задумано :). На squid 3.5.8 этот конфиг работает.

        1. Жаконда / Автор записи

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

  3. vlad /

    Да, файл на месте.

    1. Жаконда / Автор записи

      acl directlist url_regex -i «/etc/squid/directlist» — а это у вас для чего ?

      1. vlad /

        Сейчас он пуст. Для «прямого захода», т.к. squid работает за privoxy.

  4. vlad /

    Я сейчас с той строки убрал кавычки, squid нормально запустился, сайты из blocklist вроде блочатся.

    1. Жаконда / Автор записи

      А версия Squid какая версия у вас ?

  5. vlad /

    По вашей статье (3.5.19). Тот самый пакет который выдавал ошибку. Кстати, я поставил на реальную машину, тоже была описанная выше ошибка, с тем же конфиг файлом. После того как убрал кавычки в acl blocked ssl::server_name «/etc/squid/blocklist», заработало…

    1. Жаконда / Автор записи

      А ради интереса попробуйте создать файл блокировки block.txt и указать acl такой acl blocked ssl::server_name "/etc/squid/block.txt", заработает ли ?

      1. vlad /

        Пока могу проверить только на виртуалке. То же самое, ошибка в строке 69. Но я попробовал ещё раз вариант с кавычками, убрал, заработало и на виртуалке, т.е. просто оставил /etc/squid/blocklist без кавычек.
        Ещё, уже на реальной машине, после какой-то перезагрузки возникла ошибка:
        squid[494]: segfault at 308 ip 000055ea265d3afc sp 00007ffce7f9c1a0 error 4 in squid[55ea262b2000+674000]
        squid.service: Main process exited, code=dumped, status=11/SEGV
        squid.service: Unit entered failed state.
        squid.service: Failed with result ‘core-dump’.
        Запустил в ручную systemctl start squid, снова заработал.

  6. vlad /

    В общем чем дальше тем не понятнее. Уже на реальной машине вернул исходную строку (с кавычками) и работает :/. Посмотрю что будет после перезагрузки системы.

    1. Жаконда / Автор записи

      Ясно одно, вы определенно что то делаете не так, но не понятно что 🙂
      Если все делать как описано выше, то все работать будет. Проверено уже не однократно.

      1. vlad /

        🙂 Я просто возвращаю конфиги на место из архива и рабочей системы. Всё. Сейчас, кстати работает и с кавычками, просто добавил кавычки и перезапустил squid и всё заработало. Я не знаю в чём дело. Ещё дополнительно на виртуальной машине экспериментировал, там чётко была разница, ставлю кавычки — ошибка, убираю — запускается. Но когда я вновь поставил кавычки и удалил все записи из файла blocklist, то squid нормально перезапустился, предупредив что данный файл пуст. Не увидев никакой логики, я оставил всё как есть.

        1. Жаконда / Автор записи

          Само по себе разрешилось, что уже хорошо ! Но все так же остался не понятным почему все таки Squid не воспринимал обозначенный acl с ковычками.. Будет время на тестовой машине, по экспериментирую.

  7. Николай /

    Добрый день. я новичок в настройке sqiuda. сделал все по вашей статье. в AdminIP.txt прописал ip 172.16.32.13 а в файле BlackList.txt прописал .youtube.com он у меня заблочился и для 172.16.32.13. можете привести примеры заполнения всех файлов.
    в файерволе
    -A PREROUTING -s 172.16.32.0/24 -p tcp -m tcp —dport 80 -j REDIRECT —to-port 3128
    -A PREROUTING -s 172.16.32.0/24 -p tcp -m tcp —dport 443 -j REDIRECT —to-port 3129
    -A POSTROUTING -s 172.16.32.0/24 -o eth0 -j SNAT —to-source 10.0.88.12

    1. Жаконда / Автор записи

      Добрый день, покажите ваш конфиг.

  8. Николай /

    ######################################
    # Обслуживаемые прокси-сервером сети #
    ######################################
    acl localnet src 172.16.32.0/24
    #################################################
    # Правила какие порты разрешены прокси-сервером #
    #################################################
    # Порт SSL для подключений по HTTPS-протоколу
    acl SSL_ports port 443
    # Список портов, к которым разрешен доступ через прокси-сервер по протоколу HTTP
    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
    ################################################################
    # Пути к файлам запрещающих, разрешающих определенные действия #
    ################################################################
    # Путь к списку IP-адресов пользователей, для которых не действуют запреты
    acl AdminsIP src «/etc/squid/AdminsIP.txt»
    # Путь к черному списку сайтов
    acl BlackList dstdomain «/etc/squid/BlackList.txt»
    # Путь к списку адресов которым запрещен интернет
    acl BlockInetExlWhite src «/etc/squid/BlockInetExlWhite.txt»
    # Путь к белому списку сайтов
    acl WhiteList dstdomain «/etc/squid/WhiteList.txt»
    #########################
    # Параметры DNS записей #
    #########################
    # Список DNS серверов(IP адреса), которые будут использоваться вместо тех, что определены в /etc/resolv.conf файле
    dns_nameservers 8.8.4.4
    ########################################
    # Правила ограничений доступа клиентов #
    ########################################
    # Запретить доступ к портам, отсутствующим в списке выше
    http_access deny !Safe_ports
    # Запретить метод CONNECT не на SSL-порт
    http_access deny CONNECT !SSL_ports
    # Разрешить только локальное управление кэшем
    http_access allow localhost manager
    http_access deny manager
    # Не ограничивать локальный доступ с сервера
    http_access allow localhost
    # Не ограничивать доступ администраторам
    http_access allow AdminsIP BlackList
    # Блокировать интернет конкретным пользователям
    http_access deny BlockInetExlWhite !WhiteList
    # Блокировать запрещенные сайты
    http_access deny BlackList
    # Правила разрешающего доступ в интернет из локальной сети указанной в localnet
    http_access allow localnet
    # Блокирует все, что не было разрешено выше
    http_access deny all
    #############################################
    # Правила подключений клиентов к прокси-серверу#
    #############################################
    # Подключения через прозрачный порт
    http_port 172.16.32.1:3128 intercept options=NO_SSLv3:NO_SSLv2
    # Подключение через указания прокси-сервера на стороне клиента
    http_port 172.16.32.1:3130 options=NO_SSLv3:NO_SSLv2
    # Подключение по HTTPS через прозрачный порт с параметрами подставки сертификата
    https_port 172.16.32.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.txt»
    # Устанавливаем защищенное соединение и считываем заголовок HTTP
    acl step1 at_step SslBump1
    ssl_bump peek step1
    # Закрываем соединение, если клиент заходит на ресурс указанные в blocked
    ssl_bump terminate blocked
    ssl_bump splice all
    sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB
    #########################################
    # Дополнительные параметры конфигурации #
    #########################################
    # Путь для дискового кеширования
    cache_dir aufs /var/spool/squid 20000 49 256
    # Путь сохранения дампов аварийного завершения
    coredump_dir /var/spool/squid
    # Время жизни объектов для протоколов FTP и GOPHER
    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
    maximum_object_size 61440 KB
    minimum_object_size 3 KB
    cache_swap_low 90
    cache_swap_high 95
    # Максимальный размер объекта, сохраняемого в оперативной памяти
    maximum_object_size_in_memory 512 KB
    memory_replacement_policy lru
    # Количество ротаций лог-файлов (0 — отключена ротация, 15 — максимальное количество)
    logfile_rotate 0
    # E-mail адрес Cache менеджера, для отправки уведомлений и отображении в страницах ошибок
    #cache_mgr it@admin.ru

    1. Жаконда / Автор записи

      В этой строке:
      # Не ограничивать доступ администраторам
      http_access allow AdminsIP BlackList
      Уберите BlackList и будет все работать нормально.

      1. Николай /

        это я потом поставил как проверку. при таком написании http_access allow AdminsIP не работает все равно

        1. Николай /

          именно таким образом. а после выполняю /etc/init.d/squid restart. но все равно сайт блочится для всех

  9. Рустам /

    спасибо. Завелось!
    Скажите, а возможно ли проксировать https при том, когда прокси прописан в браузерах? И возможна ли ntlm авторизация при прозрачном squid?

    1. Жаконда / Автор записи

      Пожалуйста. Если делали все по заметке, то у вас проксируется https трафик. И так же будет блокироваться сайт если вы его внесете в файл блокировки. Только при блокировке https трафика не будет выдаваться пользователю страница Squid сообщающая о том что ресурс заблокирован и т.д., а у пользователя будет просто не открываться сайт.

      Авторизация возможна, но к сожалению у меня не было необходимости в ней и я не разбирал как ее применить. Но разберу и выложу заметку.

  10. Николай /

    странно работает AdminIP.txt. добавил второй ip в список. на первом начал работать. а второй так и блокирует youtube. и можно ли блокировать определенный контент на определенном сайте?

    1. Жаконда / Автор записи

      А каким методом вы добавляете IP-адреса в файл AdminIP.txt ?
      таким:
      192.168.1.2
      192.168.1.3
      и т.д. ?
      После внесения изменений обязательно выполняйте sudo service squid reload — для того чтобы сквид перечитал возможно внесенные изменения.

      Можно блокировать загрузку картинок, музыки, видео и т.д., но при этом будет блокироваться все что попадает под критерии блокировки.

      1. Николай /

        именно так и ввожу. но перезагрузку делаю /etc/init.d/squid restart. сообщает что запустился. но все равно сайт блочится для всех

        1. Николай /

          если есть возможность. могу дать вам удаленный доступ и на сервер и на ком-р

          1. Николай /

            не знаю в чем причина такой работы

  11. Николай /

    прошла минута и на первом перестал открываться youtube

    1. Жаконда / Автор записи

      Сори мой косяк, сразу не правильно указал. В конфиге вот так укажите:

      # Не ограничивать доступ администраторам
      http_access allow AdminsIP !BlackList

      И все будет хорошо

      1. Николай /

        Увы не сработало

        1. Жаконда / Автор записи

          А должно было, покажите еще раз конфиг свой

          1. Николай /

            ######################################
            # Обслуживаемые прокси-сервером сети #
            ######################################
            acl localnet src 172.16.32.0/24
            #################################################
            # Правила какие порты разрешены прокси-сервером #
            #################################################
            # Порт SSL для подключений по HTTPS-протоколу
            acl SSL_ports port 443
            # Список портов, к которым разрешен доступ через прокси-сервер по протоколу HTTP
            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
            ################################################################
            # Пути к файлам запрещающих, разрешающих определенные действия #
            ################################################################
            # Путь к списку IP-адресов пользователей, для которых не действуют запреты
            acl AdminsIP src «/etc/squid/AdminsIP.txt»
            # Путь к черному списку сайтов
            acl BlackList dstdomain «/etc/squid/BlackList.txt»
            # Путь к списку адресов которым запрещен интернет
            acl BlockInetExlWhite src «/etc/squid/BlockInetExlWhite.txt»
            # Путь к белому списку сайтов
            acl WhiteList dstdomain «/etc/squid/WhiteList.txt»
            #########################
            # Параметры DNS записей #
            #########################
            # Список DNS серверов(IP адреса), которые будут использоваться вместо тех, что определены в /etc/resolv.conf файле
            dns_nameservers 8.8.4.4
            ########################################
            # Правила ограничений доступа клиентов #
            ########################################
            # Запретить доступ к портам, отсутствующим в списке выше
            http_access deny !Safe_ports
            # Запретить метод CONNECT не на SSL-порт
            http_access deny CONNECT !SSL_ports
            # Разрешить только локальное управление кэшем
            http_access allow localhost manager
            http_access deny manager
            # Не ограничивать локальный доступ с сервера
            http_access allow localhost
            # Не ограничивать доступ администраторам
            http_access allow AdminsIP !BlackList
            # Блокировать интернет конкретным пользователям
            http_access deny BlockInetExlWhite !WhiteList
            # Блокировать запрещенные сайты
            http_access deny BlackList
            # Правила разрешающего доступ в интернет из локальной сети указанной в localnet
            http_access allow localnet
            # Блокирует все, что не было разрешено выше
            http_access deny all
            #############################################
            # Правила подключений клиентов к прокси-серверу#
            #############################################
            # Подключения через прозрачный порт
            http_port 172.16.32.1:3128 intercept options=NO_SSLv3:NO_SSLv2
            # Подключение через указания прокси-сервера на стороне клиента
            http_port 172.16.32.1:3130 options=NO_SSLv3:NO_SSLv2
            # Подключение по HTTPS через прозрачный порт с параметрами подставки сертификата
            https_port 172.16.32.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.txt»
            # Устанавливаем защищенное соединение и считываем заголовок HTTP
            acl step1 at_step SslBump1
            ssl_bump peek step1
            # Закрываем соединение, если клиент заходит на ресурс указанные в blocked
            ssl_bump terminate blocked
            ssl_bump splice all
            sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB
            #########################################
            # Дополнительные параметры конфигурации #
            #########################################
            # Путь для дискового кеширования
            cache_dir aufs /var/spool/squid 20000 49 256
            # Путь сохранения дампов аварийного завершения
            coredump_dir /var/spool/squid
            # Время жизни объектов для протоколов FTP и GOPHER
            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
            maximum_object_size 61440 KB
            minimum_object_size 3 KB
            cache_swap_low 90
            cache_swap_high 95
            # Максимальный размер объекта, сохраняемого в оперативной памяти
            maximum_object_size_in_memory 512 KB
            memory_replacement_policy lru
            # Количество ротаций лог-файлов (0 — отключена ротация, 15 — максимальное количество)
            logfile_rotate 0
            # E-mail адрес Cache менеджера, для отправки уведомлений и отображении в страницах ошибок
            #cache_mgr it@admin.ru

            /etc/squid/AdminsIP.txt
            172.16.32.13
            172.16.32.10

            /etc/squid/BlackList.txt
            .youtube.com
            .rutube.ru

            /etc/squid/BlockInetExlWhite.txt и /etc/squid/WhiteList.txt пустые

  12. Жаконда / Автор записи

    Только что посмотрел свой рабочий конфиг, у меня там вот так:
    # Не ограничивать доступ администраторам
    http_access allow AdminsIP

    И все отрабатывает нормально. Все таки как первый раз написал исправить, верно. Должно все работать.

    Верните значение на:
    # Не ограничивать доступ администраторам
    http_access allow AdminsIP BlackList

    И попробуйте остановить Squid и запустить. Должно так работать, конфиг у вас правильный, можно сказать аналогичный как у меня, у меня то отрабатывает AdminsIP.txt

    1. Николай /

      # Не ограничивать доступ администраторам
      http_access allow AdminsIP BlackList
      при таком конфиге в мозиле ошибка при установлении защищенного режима
      в хроме ERR_CONNECTION_CLOSED

      # Не ограничивать доступ администраторам
      http_access allow AdminsIP !BlackList
      при таком конфиге в мозиле ошибка при установлении защищенного режима
      в хроме ERR_CONNECTION_CLOSED

      # Не ограничивать доступ администраторам
      http_access allow AdminsIP
      при таком конфиге в мозиле ошибка при установлении защищенного режима
      в хроме ERR_CONNECTION_CLOSED

      ни один из вариантов не сработал. при этом stop выполняется дольше чем start

      1. Николай /

        убрал сайты из blacklist и все работает не обрабатывается как будто Adminip

  13. Александр /

    Все делал по инструкции. При запуске squid выдает ошибку: FATAL: Unknow http_port option ‘options=NO_SSLv3:NO_SSLv2’.
    FATAL: Bungled /etc/squid/squid.conf line 64: http_port 10.11.0.3:3128 intercept options=NO_SSLv3:NO_SSLv2

    1. Жаконда / Автор записи

      Покажите ваш конфиг

  14. Александр /

    ######################################
    # Обслуживаемые прокси-сервером сети #
    ######################################
    acl localnet src 10.10.0.0/22
    #################################################
    # Правила какие порты разрешены прокси-сервером #
    #################################################
    # Порт SSL для подключений по HTTPS-протоколу
    acl SSL_ports port 443
    # Список портов, к которым разрешен доступ через прокси-сервер по протоколу HTTP
    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
    ################################################################
    # Пути к файлам запрещающих, разрешающих определенные действия #
    ################################################################
    # Путь к списку IP-адресов пользователей, для которых не действуют запреты
    acl AdminsIP src «/etc/squid/AdminsIP.txt»
    # Путь к черному списку сайтов
    acl BlackList dstdomain «/etc/squid/BlackList.txt»
    # Путь к списку адресов которым запрещен интернет
    acl BlockInetExlWhite src «/etc/squid/BlockInetExlWhite.txt»
    # Путь к белому списку сайтов
    acl WhiteList dstdomain «/etc/squid/WhiteList.txt»
    #########################
    # Параметры DNS записей #
    #########################
    # Список DNS серверов(IP адреса), которые будут использоваться вместо тех, что $
    dns_nameservers 192.168.5.3
    ########################################
    # Правила ограничений доступа клиентов #
    ########################################
    # Запретить доступ к портам, отсутствующим в списке выше
    http_access deny !Safe_ports
    # Запретить метод CONNECT не на SSL-порт
    http_access deny CONNECT !SSL_ports
    # Разрешить только локальное управление кэшем
    http_access allow localhost manager
    http_access deny manager
    # Не ограничивать локальный доступ с сервер
    http_access allow localhost
    # Не ограничивать доступ администраторам
    http_access allow AdminsIP
    # Блокировать интернет конкретным пользователям
    http_access deny BlockInetExlWhite !WhiteList
    # Блокировать запрещенные сайты
    http_access deny BlackList
    # Правила разрешающего доступ в интернет из локальной сети указанной в localnet
    http_access allow localnet
    # Блокирует все, что не было разрешено выше
    http_access deny all
    #############################################
    # Правила подключений клиентов к прокси-серверу#
    #############################################
    # Подключения через прозрачный порт
    http_port 10.11.0.3:3128 intercept options=NO_SSLv3:NO_SSLv2
    # Подключение через указания прокси-сервера на стороне клиента
    http_port 10.11.0.3:3130 options=NO_SSLv3:NO_SSLv2
    # Подключение по HTTPS через прозрачный порт с параметрами подставки сертификата
    https_port 10.11.0.3:3129 intercept ssl-bump options=ALL:NO_SSLv3:NO_SSLv2 conn$
    # Принимаем сертификаты, даже если они не прошли проверку.
    always_direct allow all
    sslproxy_cert_error allow all
    sslproxy_flags DONT_VERIFY_PEER
    # Укажем список блокируемых ресурсов (в файле домены вида .domain.com) и правил$
    acl blocked ssl::server_name «/etc/squid/BlackList.txt»
    # Устанавливаем защищенное соединение и считываем заголовок HTTP
    acl step1 at_step SslBump1
    ssl_bump peek step1
    # Закрываем соединение, если клиент заходит на ресурс указанные в blocked
    ssl_bump terminate blocked
    ssl_bump splice all
    sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB
    #########################################
    # Дополнительные параметры конфигурации #
    #########################################
    # Путь для дискового кеширования
    cache_dir aufs /var/spool/squid 20000 49 256
    # Путь сохранения дампов аварийного завершения
    coredump_dir /var/spool/squid
    # Время жизни объектов для протоколов FTP и GOPHER
    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
    maximum_object_size 61440 KB
    minimum_object_size 3 KB
    cache_swap_low 90
    cache_swap_high 95
    # Максимальный размер объекта, сохраняемого в оперативной памяти
    maximum_object_size_in_memory 512 KB
    memory_replacement_policy lru
    # Количество ротаций лог-файлов (0 — отключена ротация, 15 — максимальное коли$
    logfile_rotate 0

  15. Александр /

    я пока не стал даже файлы менять, дописывать запреты и т.п, так как squid даже не запускается

  16. Жаконда / Автор записи

    В этой строке:
    # Подключение по HTTPS через прозрачный порт с параметрами подставки сертификата
    https_port 10.11.0.3:3129 intercept ssl-bump options=ALL:NO_SSLv3:NO_SSLv2 conn$

    Должно быть:
    # Подключение по HTTPS через прозрачный порт с параметрами подставки сертификата
    https_port 10.11.0.3:3129 intercept ssl-bump options=ALL:NO_SSLv3:NO_SSLv2 connection-auth=off cert=/etc/squid/squidca.pem

  17. Александр /

    ТАм так и есть, это просто не влезло

  18. Жаконда / Автор записи

    А точно правильно собирали пакет Squid ?
    Эти компоненты указывали при сборке ?
    —with-openssl \
    —enable-ssl \
    —enable-ssl-crtd

  19. Александр /

    Да, два раза делал и перепроверял все. Не могу понять в чем проблема

  20. ГерманК /

    Все делал по вашей инструкции, но на этапе установки пакета
    sudo dpkg —install squid_3.5.19-1_amd64.deb
    ошибка:
    invoke-rc.d: unknown initscript, /etc/init.d/squid3 not found.
    dpkg: ошибка при обработке пакета squid (—install):
    подпроцесс установлен сценарий post-installation возвратил код ошибки 100
    Обрабатываются триггеры для man-db (2.6.7.1-1ubuntu1) …
    Обрабатываются триггеры для ureadahead (0.100.0-16) …
    Обрабатываются триггеры для ufw (0.34~rc-0ubuntu2) …
    При обработке следующих пакетов произошли ошибки:
    squid

    Прошу помощи!

  21. Виталий /

    Доброго дня!
    2 дня уже убил, сделал все по инструкции.
    при переходе на https ресурсы — валит сообщение
    TAG_NONE/400 4325 NONE error:invalid-request — HIER_NONE/- text/html
    кальмар собран с
    —with-openssl \
    —enable-ssl \
    —enable-ssl-crtd
    сертификат есть. Что не так — не могу понять. Подскажите, инструкция то грамотная, расжевана, но я уткнулся и встал.

    1. Жаконда / Автор записи

      Добрый день !
      А покажите ваш конфиг, может там где ошибка. Посмотрим

  22. Виталий /

    На виртуалке был. Снапшот уже удалил. поставил по другой статье
    Взял у Вас идею по правилам ограничений доступа клиентов.
    Но все равно большое спасибо за содействие=)

    (Отредактировано, ссылки на чужие ресурсы постить нельзя)

  23. Владимир /

    Большое спасибо за статью!
    Но очень интересно было бы посмотреть настройки iptables
    Можно глянуть, если не сложно?

  24. Николай /

    Отличная статья! Все получилось! Спасибо!!!

  25. Виталий /

    Решил вернуться и добить по Вашей инструкции. Все работает=) Нашел свой косяк — squid не той версии.
    Но возникает проблема — блочу клиентов, открываю только определенный сайт (например https://taxi.yandex.ru/)
    при переходе на этот сайт ругаеться на сертификат. На клиенте ставлю сертификат в «корневые» но ситуация не изменяется.
    Может есть идеи?

  26. Артём /

    День добрый. Настроил, всё работает. Но очень долго открывает некоторые сайты. Вот частичка лога кэша. Может кто подскажет как решить?
    2017/03/06 12:29:34 kid1| SECURITY ALERT: Host header forgery detected on local=64.233.165.95:443 remote=192.168.1.2:62671 FD 173 flags=33 (local IP does not match any domain IP)
    2017/03/06 12:29:34 kid1| SECURITY ALERT: on URL: fonts.googleapis.com:443
    2017/03/06 12:29:34 kid1| SECURITY ALERT: Host header forgery detected on local=64.233.165.95:443 remote=192.168.1.2:62670 FD 167 flags=33 (local IP does not match any domain IP)
    2017/03/06 12:29:34 kid1| SECURITY ALERT: on URL: fonts.googleapis.com:443
    2017/03/06 12:30:06 kid1| SECURITY ALERT: Host header forgery detected on local=64.233.161.198:443 remote=192.168.1.2:62687 FD 124 flags=33 (local IP 57does not match any domain IP)
    2017/03/06 12:30:06 kid1| SECURITY ALERT: on URL: http://www.youtube.com:443
    2017/03/06 12:30:06 kid1| SECURITY ALERT: Host header forgery detected on local=64.233.161.198:443 remote=192.168.1.2:62688 FD 125 flags=33 (local IP does not match any domain IP)
    2017/03/06 12:30:06 kid1| SECURITY ALERT: on URL: http://www.youtube.com:443
    2017/03/06 12:30:06 kid1| SECURITY ALERT: Host header forgery detected on local=64.233.161.198:443 remote=192.168.1.2:62690 FD 138 flags=33 (local IP does not match any domain IP)
    2017/03/06 12:30:06 kid1| SECURITY ALERT: on URL: http://www.youtube.com:443

    1. Жаконда / Автор записи

      Добрый день ! К сожалению с такой проблемой не сталкивался, я не использую Squid через прозрачное подключение.

  27. Артём /

    добрый день. Такая проблема. Некоторые сайты долго открываются. Ютуб например вообще не открывается. В логах вот такое:
    2017/03/06 13:05:49 kid1| SECURITY ALERT: on URL: img.imgsmail.ru:443
    2017/03/06 13:05:49 kid1| SECURITY ALERT: Host header forgery detected on local=217.69.141.145:443 remote=192.168.1.2:64414 FD 150 flags=33 (local IP does not match any domain IP)
    2017/03/06 13:05:49 kid1| SECURITY ALERT: on URL: stat.radar.imgsmail.ru:443
    2017/03/06 13:05:49 kid1| SECURITY ALERT: Host header forgery detected on local=217.69.139.42:443 remote=192.168.1.2:64416 FD 154 flags=33 (local IP does not match any domain IP)
    2017/03/06 13:05:49 kid1| SECURITY ALERT: on URL: an.mail.ru:443
    2017/03/06 13:06:04 kid1| SECURITY ALERT: Host header forgery detected on local=40.77.226.246:443 remote=192.168.1.2:64417 FD 33 flags=33 (local IP does not match any domain IP)
    2017/03/06 13:06:04 kid1| SECURITY ALERT: on URL: client.wns.windows.com:443
    2017/03/06 13:06:22 kid1| SECURITY ALERT: Host header forgery detected on local=74.125.131.196:443 remote=192.168.1.2:64418 FD 31 flags=33 (local IP does not match any domain IP)
    2017/03/06 13:06:22 kid1| SECURITY ALERT: on URL: apis.google.com:443
    2017/03/06 13:06:23 kid1| SECURITY ALERT: Host header forgery detected on local=173.194.221.198:443 remote=192.168.1.2:64419 FD 35 flags=33 (local IP does not match any domain IP)
    2017/03/06 13:06:23 kid1| SECURITY ALERT: on URL: http://www.youtube.com:443

    Может подскажете куда копнуть.

    1. Жаконда / Автор записи

      Я так подозреваю, что все https сайты не открываются ?

      1. Артём /

        https сайты открываются, но не всё, ютуб не открывается. В acl пусто пока во всех. В логах что написал, stat.radar.imgsmail.ru это какие счётчики на сайте на который заходил. вот они отсекаются по чему то из-за этого некоторые сайты вообще очень долго открываются.

  28. vlad /

    Здравствуйте! Хотел бы задать вопрос не совсем по теме статьи, но по squid’у. Хочу сделать так чтоб к моему прокси могли подключаться снаружи, т.е. чтоб другой пользователь (мой знакомый например) мог прописать ip и порт моего прокси у себя в браузере и пользоваться. Но я не очень понимаю, но видимо данные между моим прокси и этим пользователем будут не шифрованы? Пользователь должен проходить авторизацию, в этом случае этот процесс тоже идёт в открытом виде?

  29. Кодер /

    Приветствую.
    Сделал все по вашей статье, все работает, но немного не так.
    Добавил в BlackList два сайта с http и https, пытаюсь зайти на них, отсекает все работает прекрасно.
    Затем если свой IP добавить в админы, то сайт с http стал открывается, а с https все равно не открывает, как бы https игнорирует админов)
    Подскажите что еще можно посмотреть?

    1. Жаконда / Автор записи

      Что то в конфиге напортачили, покажите свой конфиг

      1. Кодер /

        Похоже блокирует на этом уровне. Может там тоже нужно указать путь до айпи админов?

        # Укажем список блокируемых ресурсов (в файле домены вида .domain.com) и правила блокировки их
        acl blocked ssl::server_name «/etc/squid/BlackList.txt»
        # Устанавливаем защищенное соединение и считываем заголовок HTTP
        acl step1 at_step SslBump1
        ssl_bump peek step1
        # Закрываем соединение, если клиент заходит на ресурс указанные в blocked
        ssl_bump terminate blocked

        Полный конфиг.

        ######################################
        # Обслуживаемые прокси-сервером сети #
        ######################################
        acl localnet src 192.168.20.0/24
        #################################################
        # Правила какие порты разрешены прокси-сервером #
        #################################################
        # Порт SSL для подключений по HTTPS-протоколу
        acl SSL_ports port 443
        # Список портов, к которым разрешен доступ через прокси-сервер по протоколу HTTP
        acl Safe_ports port 80 # http
        acl Safe_ports port 8080 # 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
        ################################################################
        # Пути к файлам запрещающих, разрешающих определенные действия #
        ################################################################
        # Путь к списку IP-адресов пользователей, для которых не действуют запреты
        acl AdminsIP src «/etc/squid/AdminsIP.txt»
        # Путь к черному списку сайтов
        acl BlackList dstdomain «/etc/squid/BlackList.txt»
        # Путь к списку адресов которым запрещен интернет
        acl BlockInetExlWhite src «/etc/squid/BlockInetExlWhite.txt»
        # Путь к белому списку сайтов
        acl WhiteList dstdomain «/etc/squid/WhiteList.txt»
        #########################
        # Параметры DNS записей #
        #########################
        # Список DNS серверов(IP адреса), которые будут использоваться вместо тех, что определены в /etc/resolv.conf файле
        dns_nameservers 192.168.20.1
        ########################################
        # Правила ограничений доступа клиентов #
        ########################################
        # Запретить доступ к портам, отсутствующим в списке выше
        http_access deny !Safe_ports
        # Запретить метод CONNECT не на SSL-порт
        http_access deny CONNECT !SSL_ports
        # Разрешить только локальное управление кэшем
        http_access allow localhost manager
        http_access deny manager
        # Не ограничивать локальный доступ с сервера
        http_access allow localhost
        # Не ограничивать доступ администраторам
        http_access allow AdminsIP
        # Блокировать интернет конкретным пользователям
        http_access deny BlockInetExlWhite !WhiteList
        # Блокировать запрещенные сайты
        http_access deny BlackList
        # Правила разрешающего доступ в интернет из локальной сети указанной в localnet
        http_access allow localnet
        # Блокирует все, что не было разрешено выше
        http_access deny all
        #############################################
        # Правила подключений клиентов к прокси-серверу#
        #############################################
        # Подключения через прозрачный порт
        http_port 192.168.20.11:3128 intercept options=NO_SSLv3:NO_SSLv2
        # Подключение через указания прокси-сервера на стороне клиента
        http_port 192.168.20.11:3130 options=NO_SSLv3:NO_SSLv2
        # Подключение по HTTPS через прозрачный порт с параметрами подставки сертификата
        https_port 192.168.20.11: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.txt»
        # Устанавливаем защищенное соединение и считываем заголовок HTTP
        acl step1 at_step SslBump1
        ssl_bump peek step1
        # Закрываем соединение, если клиент заходит на ресурс указанные в blocked
        ssl_bump terminate blocked
        ssl_bump splice all
        sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB

        1. Жаконда / Автор записи

          Да вроде все правильно, должно нормально отрабатывать. В конфиге все правильно сразу разрешаем все админам:
          # Не ограничивать доступ администраторам
          http_access allow AdminsIP
          А затем запрещаем сайты для всех остальных:
          # Блокировать запрещенные сайты
          http_access deny BlackList

          Порядок правил правильный, у меня все отрабатывает точно так же как и в конфиге. Затрудняюсь ответить в чем у вас причина

          1. Кодер /

            У меня нормально отрабатывает для http сайтов.

            Возможно когда запрос дальше идет на сертификат по 443 порту, в действие вступает данный кусок правил. Т.к. получается он повторно блокирует? Потому что мы выше указали что блокировать, а в секции https указали повторную блокировку https ресурсов.

            # Укажем список блокируемых ресурсов (в файле домены вида .domain.com) и правила блокировки их
            acl blocked ssl::server_name «/etc/squid/BlackList.txt»
            # Устанавливаем защищенное соединение и считываем заголовок HTTP
            acl step1 at_step SslBump1
            ssl_bump peek step1
            # Закрываем соединение, если клиент заходит на ресурс указанные в blocked
            ssl_bump terminate blocked

  30. Жаконда / Автор записи

    Неее, это там не причем. Все как я указал, сначала разрешаем, затем запрещаем.

    У меня в работе правда в связке с AD работает сквид, но там принцип тот же сначала я разрешаю группе AD админов доступ везде, затем выставляю запрет Blocklist.txt.

    Все обрабатывает как часы

    1. Кодер /

      Думаю что в связке с AD можно блокировать https без подмены сертификата на уровне доменных имен.

      1. Жаконда / Автор записи

        Не уверен на 100%, но думаю что нельзя. Т.к. в связке с AD идет только LDAP аутентификация

  31. Михаил /

    Спасибо большое за статью.

    Возник нюанс. При использовании непрозрачного режима (явно указываю в браузере proxy ip:3130) сайты из BlackList.txt, доступные по http фильтруются с отображением страницы ошибки squid, доступные только по https — с ошибкой ERR_TUNNEL_CONNECTION_FAILED (в браузере на стороне клиента).
    При этом, например, https://vk.com, который не указан в BlackList.txt недоступен с ошибкой ERR_NAME_RESOLUTION_FAILED

    nslookup/ping отрабатывают корректно с консоли сервера с установленным squid.

    1. Михаил /

      Вопрос снимается, проблема была в настройке клиента

  32. Алексей /

    Делаем установку по Вашей статье, но доходя до:
    «Устанавливаем пакеты Squid в очередности как указано ниже.
    sudo dpkg —install squid-common_3.5.19-1_all.deb
    sudo dpkg —install squid_3.5.19-1_amd64.deb
    sudo dpkg —install squidclient_3.5.19-1_amd64.deb»
    — система выдает сообщение: «dpkg: ошибка при обработке архива squid-common_3.5.19-1_all.deb …: No such file or directory»
    Подскажите что надо сделать?

    1. Жаконда / Автор записи

      «dpkg: ошибка при обработке архива squid-common_3.5.19-1_all.deb …: No such file or directory»
      У вас отсутствует файл squid-common_3.5.19-1_all.deb

      А отсутствует он потому что вы не все шаги выполнили как написано в инструкции. А точнее вы не скомпилировали его из исходников. Пройдитесь заново по шагам, не упуская всех деталей и все получится у вас !

  33. Ihor /

    при выполненнии
    sudo dpkg-buildpackage -rfakeroot -b

    dpkg-buildpackage: предупреждение: неудовлетворительные зависимости/конфликты при сборке; прерываемся
    dpkg-buildpackage: предупреждение: (Используйте параметр -d, чтобы продолжить сборку.)

    после чего исполняю с -d

    configure: error: Basic auth helper LDAP … found but cannot be built
    /usr/share/cdbs/1/class/autotools.mk:42: ошибка выполнения рецепта для цели «debian/stamp-autotools»
    make: *** [debian/stamp-autotools] Ошибка 1
    dpkg-buildpackage: ошибка: debian/rules build возвратил код ошибки 2

    может это следствие того что не удается выполнить sudo apt-get -y build-dep squid3

    root@unix-server:/home/user/build/squid3/squid3-3.5.19# sudo apt-get -y build-dep squid3
    Чтение списков пакетов… Готово
    E: Вы должны заполнить sources.list, поместив туда URI источников пакетов

    п.с. Подскажите пожалуйста в чем проблема, ставлю на чистую убунту 16.04

    1. Жаконда / Автор записи

      Ну по всей видимости дело в зависимостях. Заметка корректно ставится на 14.04, на 16.04 без понятия что там за грабли могут возникать при установке.

      1. Ihor /

        Спасибо, попробую на 14ую установить.

        1. Жаконда / Автор записи

          Попробуйте, на 14.04 должно все встать, не однократно проверялось мной.

  34. Ihor /

    Спасибо за хорошую статью, действительно проблем с зависимостью в 14ой версии нет. По вашей инструкции все заработало.
    Вижу что сквид кеширует, что от него и было необходимо.
    Правда выходит подключатся только по 2130у порту (на стороне клиента, прописываю в браузере)Но меня и такой вариант устраивает.
    Кеширующий сервер должен быть на работе, что бы кешировать один большой сайт.
    Из дому подключиться не могу к прокси серверу, не подскажите где необходимо указать свой ИП что бы прокси сервер меня не блочил, в вайтлисте и админ листе?

    1. Ihor /

      подскажите, как понять, кешиурет сквид или нет?
      кеш находится у меня в /var/spool/squid
      смотрю, изначально она весила 48мб, за 20 минут работы 54 мб, поидее кеш пишется? Хотя я думаю она должна гораздо больше весить.

      1. Ihor /

        Я понял почему не нужный мне сайт, так как он https, и как я понял мне нужно выполнить подключение к прокси по 3129му порту. Но когда я в браузере его ввожу в настройках мне высвечивается следующее :
        «Ошибка при установлении защищённого соединения»
        Все успешно поставилось, ssl сертификат я сгенирировал. (может с ним проблема? к примеру когда на webadmin захожу, то там ssl сертификат пишет красным, или это тут не причем?)
        Ниже конфиг прикреплю, быть может сможете мне советом помочь.
        Сервер со сквидом находится в локальной сети 172.17.17.0
        Сам сквид сервер 172.17.17.75
        (на роутере я порты перебросил на сквид сервер, но из дому не выходит подключится к проксе)

        acl localnet src 172.17.17.0/24
        #################################################
        # Правила какие порты разрешены прокси-сервером #
        #################################################
        # Порт SSL для подключений по HTTPS-протоколу
        acl SSL_ports port 443
        # Список портов, к которым разрешен доступ через прокси-сервер по протоколу HTTP
        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
        ################################################################
        # Пути к файлам запрещающих, разрешающих определенные действия #
        ################################################################
        # Путь к списку IP-адресов пользователей, для которых не действуют запреты
        acl AdminsIP src «/etc/squid/AdminsIP.txt»
        # Путь к черному списку сайтов
        acl BlackList dstdomain «/etc/squid/BlackList.txt»
        # Путь к списку адресов которым запрещен интернет
        acl BlockInetExlWhite src «/etc/squid/BlockInetExlWhite.txt»
        # Путь к белому списку сайтов
        acl WhiteList dstdomain «/etc/squid/WhiteList.txt»
        #########################
        # Параметры DNS записей #
        #########################
        # Список DNS серверов(IP адреса), которые будут использоваться вместо тех, что определены в /etc/resolv.conf файле
        dns_nameservers 8.8.8.8
        ########################################
        # Правила ограничений доступа клиентов #
        ########################################

        # Запретить доступ к портам, отсутствующим в списке выше
        http_access deny !Safe_ports
        # Запретить метод CONNECT не на SSL-порт
        http_access deny CONNECT !SSL_ports
        # Разрешить только локальное управление кэшем
        http_access allow localhost manager
        http_access deny manager
        # Не ограничивать локальный доступ с сервера
        http_access allow localhost
        # Не ограничивать доступ администраторам
        http_access allow AdminsIP
        # Блокировать интернет конкретным пользователям
        http_access deny BlockInetExlWhite !WhiteList
        # Блокировать запрещенные сайты
        http_access deny BlackList
        # Правила разрешающего доступ в интернет из локальной сети указанной в localnet
        http_access allow localnet
        # Блокирует все, что не было разрешено выше
        http_access deny all

        #############################################
        # Правила подключений клиентов к прокси-серверу#
        #############################################
        # Подключения через прозрачный порт
        http_port 172.17.17.75:3128 intercept options=NO_SSLv3:NO_SSLv2
        # Подключение через указания прокси-сервера на стороне клиента
        http_port 172.17.17.75:3130 options=NO_SSLv3:NO_SSLv2
        # Подключение по HTTPS через прозрачный порт с параметрами подставки сертификата
        https_port 172.17.17.75: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.txt»
        # Устанавливаем защищенное соединение и считываем заголовок HTTP
        acl step1 at_step SslBump1
        ssl_bump peek step1
        # Закрываем соединение, если клиент заходит на ресурс указанные в blocked
        ssl_bump terminate blocked
        ssl_bump splice all
        sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB
        #########################################
        # Дополнительные параметры конфигурации #
        #########################################
        # Путь для дискового кеширования
        cache_dir aufs /var/spool/squid 20000 49 256
        # Путь сохранения дампов аварийного завершения
        coredump_dir /var/spool/squid
        # Время жизни объектов для протоколов FTP и GOPHER
        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
        maximum_object_size 61440 KB
        minimum_object_size 1 KB
        cache_swap_low 90
        cache_swap_high 95
        # Максимальный размер объекта, сохраняемого в оперативной памяти
        maximum_object_size_in_memory 4084 KB
        memory_replacement_policy lru
        # Количество ротаций лог-файлов (0 — отключена ротация, 15 — максимальное количество)
        logfile_rotate 0
        # E-mail адрес Cache менеджера, для отправки уведомлений и отображении в страницах ошибок
        #cache_mgr it@admin.ru
        icp_access allow all

  35. Горыныч /

    Добрый день.
    Огромное спасибо за подробную инструкцию, всё заработало, хоть и не сразу)
    Кальмар сперва не запускался, выдавал ошибку: open failed to shm_open(/squid-ssl_session_cache.shm).
    Долго мучался, оказалось в конфиге нужно поменять местами вот эти строки:
    maximum_object_size 61440 KB
    minimum_object_size 3 KB
    Может пригодится кому.

  36. Алексей /

    Добрый день.

    Все сделано по статье.
    https работает.

    При попытке открыть http — страница не открывается. В cache.log
    ERROR: NF getsockopt(ORIGINAL_DST) failed on local=192.168.8.254:3128 remote=192.168.8.101:52869 FD 32 flags=33: (92) Protocol not available
    ERROR: NAT/TPROXY lookup failed to locate original IPs on local=192.168.8.254:3128 remote=192.168.8.101:52869 FD 32 flags=33

  37. Дмитрий /

    Здравствуйте! Извините может вопрос глупый но….
    После того как вручную забили свою конфигурацию похожую на Вашу, Вы не описали как её сохранить и выйти

    1. Жаконда / Автор записи

      Добрый день! Все зависит от того какие текстовым редактором вы пользуетесь. Прим. если nano — Ctrl + O (Сохранить), Ctrl + X (Выйти), если vi\vim — :wr (Сохранить), :q (Выйти).

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

  38. Алекс /

    Устонавливал все по вашей инструкции но сквид так и не запустился

    При установке:

    «Устанавливаем пакеты Squid в очередности как указано ниже.
    sudo dpkg —install squid-common_3.5.19-1_all.deb
    sudo dpkg —install squid_3.5.19-1_amd64.deb
    sudo dpkg —install squidclient_3.5.19-1_amd64.deb»
    — система выдает сообщение: «dpkg: ошибка при обработке архива squid-common_3.5.19-1_all.deb …: No such file or directory»

    И в конце при запуске сквида выдаёт:

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

    Конфиг такой же как и в вашей статье

    При вводе команды «systemctl status squid.service» выдаёт лог:

    ● squid.service — LSB: Squid HTTP Proxy version 3.x
    Loaded: loaded (/etc/init.d/squid; generated; vendor preset: disabled)
    Active: failed (Result: exit-code) since Fri 2018-01-19 16:55:48 UTC; 1min 46s ago
    Docs: man:systemd-sysv-generator(8)
    Process: 32424 ExecStart=/etc/init.d/squid start (code=exited, status=3)

    янв 19 16:55:48 kali systemd[1]: Starting LSB: Squid HTTP Proxy version 3.x…
    янв 19 16:55:48 kali squid[32429]: Bungled /etc/squid/squid.conf line 66: http_port 192.168.0.1:3128 intercept options=NO_SSLv3
    янв 19 16:55:48 kali squid[32434]: Bungled /etc/squid/squid.conf line 66: http_port 192.168.0.1:3128 intercept options=NO_SSLv3
    янв 19 16:55:48 kali squid[32424]: FATAL: Unknown http_port option ‘options=NO_SSLv3:NO_SSLv2’. FATAL: Bungled /etc/squid/squid
    янв 19 16:55:48 kali systemd[1]: squid.service: Control process exited, code=exited status=3
    янв 19 16:55:48 kali systemd[1]: squid.service: Failed with result ‘exit-code’.
    янв 19 16:55:48 kali systemd[1]: Failed to start LSB: Squid HTTP Proxy version 3.x.

  39. Ruslan /

    Добрый день ! спасибо за статью, squid установился, при блокировке web странице или если страница не найдена squid выводит в браузере стандартное сообщение но без картинки, в css указан url на картинку backgraund: url(‘sams.perm.ru/squid-internal-static/icons/SN.png’) можно изменить адрес на папку с картинкой ?

Оставить ответ

семь − пять =