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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ctrl+O, Ctrl+X

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

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

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

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

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

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

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

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

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

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

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

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

Ищем строку

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

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

Ctrl+O, Ctrl+X

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

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

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

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

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

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

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

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

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

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

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

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

Небольшое отступление перед написанием конфигурации. Файл конфигурации может быть различным и для каждого места индивидуальным. Я опишу свою схему работы 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, а так же возможность блокировать любые неугодные нам сайты для пользователей, возможность блокировать доступ в интернет за исключением белого списка адресов сайтов, ну и конечно создать группу определенных адресов, которых не будут касаться никакие запреты.

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

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

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

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

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

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

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

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

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

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

 

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

 

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

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

  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’) можно изменить адрес на папку с картинкой ?

    1. Руслан /

      В файле /etc/squid/errorpage.css стили css блокировки странице squida
      /usr/share/squid-langpack/ папки с текстовыми файлами об ошибках

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

        Спасибо!

  40. Игорь /

    Делал по вашему мануалу на 18.04. Работает но блек листы не отрабатывает
    1545309485.923 0 10.21.160.96 TCP_DENIED/407 4167 CONNECT vk.com:443 — HIER_NONE/- text/html
    1545309485.925 0 10.21.160.96 TCP_DENIED/407 4167 CONNECT vk.com:443 — HIER_NONE/- text/html
    1545309486.593 667 10.21.160.96 TCP_TUNNEL/200 4343 CONNECT vk.com:443 user@home.loc HIER_DIRECT/22.22.22.22 —
    1545309486.683 747 10.21.160.96 TCP_TUNNEL/200 4342 CONNECT vk.com:443 user@home.locHIER_DIRECT/22.22.22.23 —

    # Путь к белому списку сайтов
    acl WhiteList dstdomain «/etc/squid/acl/white_list»
    # Путь к черному списку сайтов
    acl BlackList dstdomain «/etc/squid/acl/black_list»
    #########################
    # Параметры DNS записей #
    #########################
    # Список DNS серверов(IP адреса), которые будут использоваться вместо тех, что определены в /etc/resolv.conf файле
    dns_nameservers 22.22.22.22
    dns_nameservers 22.22.22.23
    #########################################
    # Правила ограничений доступа клиентов #
    #########################################
    # Запретить доступ к портам, отсутствующим в списке выше
    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 PROXY_ADMINS

    http_access allow PROXY_WHITE !BlackList
    # Блокировать интернет всем кто в указанной ниже группе AD
    http_access deny PROXY_BLOCK
    # Блокировать запрещенные сайты
    # http_access deny BlackList
    # Правила разрешающего доступ в интернет только авторизованным пользователям AD
    http_access allow auth
    # Блокирует все, что не было разрешено выше
    http_access deny all
    ################################################
    # Правила подключений клиентов к прокси-серверу#
    ################################################
    # Подключения через прозрачный порт
    http_port 10.21.160.9:3128 intercept options=NO_SSLv3:NO_SSLv2
    # Подключение через указания прокси-сервера на строне клиента
    http_port 10.21.160.9:3130 options=NO_SSLv3:NO_SSLv2
    # Подключение по HTTPS через прозрачный порт с параметрами подставки сертификата
    https_port 10.21.160.9: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/acl/black_list»
    # Устанавливаем защищенное соединение
    acl step1 at_step SslBump1
    # Cчитываем заголовок HTTP
    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. Жаконда / Автор записи

      На первый взгляд все ок.. а как в файле /etc/squid/acl/black_list указываете адреса для блокировки ? Покажите пример (не весь 300-метровый файл :))

  41. Игорь /

    .odnoklassniki.ru
    .ok.ru
    .vk.me
    .vk.com
    .vk.ru
    .vk.me
    .vk.cc
    .vkadre.ru
    .vkuservideo.net
    .facebook.com
    .mycdn.me

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

    Вот тут:

    acl blocked ssl::server_name «/etc/squid/acl/black_list»

    Измените ковычки с «» на ""

    И попробуйте

    1. Игорь /

      Замените пожалуйста предыдущий мой комментарий ( не хочу кэширования в яндексе) на
      .odnoklassniki.ru
      .ok.ru
      .vk.me
      .vk.com
      .vk.ru
      .vk.me
      .vk.cc
      .vkadre.ru
      .vkuservideo.net
      .facebook.com
      .mycdn.me
      А ковычкие нормальные , видимо такой текстовый редактор в вродпрессе

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

        Покажите ACL-ы все в конфиге, с виду вроде правильно все.

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

    Так у вас же за комментирована строка для блокировки сайтов из списка:

    # Блокировать запрещенные сайты
    # http_access deny BlackList

    снимите комментарий перед
    http_access deny BlackList

  44. Дмитрий /

    Я немного не понял этот момент:
    # Подключения через прозрачный порт
    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
    # Принимаем сертификаты, даже если они не прошли проверку.

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

    Так у нас HTTPS заработал или нет?
    Щас вот по статье делаю и через настройки на клиентах работает, а по-другому — нет.

  45. Серёга /

    # Путь к списку IP-адресов пользователей, для которых не действуют запреты
    acl AdminsIP src «/etc/squid/AdminsIP.txt»

    Тут у вас указаны айпишники, а как указать группу из AD, чтобы рулить не конкретными машинами, а авторизованными пользователями?
    Вы там выше в комментах где-то писали, что вы управляете группами из AD

  46. Vinsent /

    Хм.. почему то ругается на сертификат
    admen@proxy:~$ /usr/sbin/squid -NCd1

    2019/08/09 11:54:59| FATAL: No valid signing certificate configured for HTTPS_port 192.168.1.175:3129
    2019/08/09 11:54:59| Squid Cache (Version 4.8): Terminated abnormally.
    CPU Usage: 0.011 seconds = 0.008 user + 0.004 sys
    Maximum Resident Size: 59328 KB
    Page faults with physical i/o: 0

  47. Виталий /

    Вопрос такой, поставил систему Ubuntu 18.04 + squid Version 3.5.27 + поддержка https
    все работает и все замечательно, но вот захотел я тут оплатить с сайта билеты и при клике на кнопку оплатить страница улетела в ошибку ))))

    по логам смотрю нет с этого ip каких то ошибок и все сайты с кодом 200

    Но подозреваю что проблема с ssl сертификтаом.

    Какие могут быть нюансы с генерацией сертификата который мы создаем на сервере squid при работе с HTTPS/

    Заранее спасибо!

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

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

      Не смогу вам помочь в данном вопросе..

  48. Юрий /

    «Squid будет у нас работать в обычном режиме. (В идеале хотелось бы конечно работать по прозрачному протоколу, но как только не пытался, не удается завернуть трафик с Mikrotik на Squid на прозрачные порты 80, 443, поэтому я остановился на работе по обычному режиму работы Squid).»
    А что такое «обычный режим»? С указанием адреса прокси в браузерах?
    Я так понял, что сквид у вас подключен либо к коммутаторы, либо к бриджу микротике, тому же самому, что и вся подсеть. А если пользователи уберут из конфигов браузеров указание ходить через прокси, они же пойдут без контроля? Ведь для этого не нужны права администратора компьютера (если только не используется ослик, а хосты с доменной политикой). При транспарентом режиме мы на бридже могли бы заблокировать обращение к портам 80 и 443, а здесь у нас такой возможности нет.

  49. Григорий /

    Добрый день! Спасибо огромное за ваши подробнейшие статьи:)
    Подскажите пожалуйста, есть ли нюансы при обновлении squid 3.5.8 до 4.13?
    Стоит Ubuntu 14.04

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

      Добрый день! Рад что статьи приносят полезности для других 🙂
      Не думаю что есть какие то ньюансы при апгрейде версии squid. Скачиваете новую версию, собираете ее, выполняете удаление старой версии Squid, устанавливаете новую. (да, предварительно файл конфигурации старого Squid рекомендую сохранить)
      Рекомендую посмотреть мои свежие статьи:
      https://jakondo.ru/ustanovka-iz-ishodnikov-proksi-servera-squid-4-6-na-debian-9-stretch/
      https://jakondo.ru/perehvat-i-prosmotr-https-trafika-na-proksi-servere-squid-4-9/

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

пять × 3 =

© IT-блог Жаконды All Rights Reserved.
Яндекс.Метрика