Установка 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 tail -f /var/log/squid/access.log
В следующей статье разберем как установить анализатор логов Squid и вывод его в приятный глазу вид, который можно и начальству показать для наглядности куда кто ходит и чем занимается в рабочее время.
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Делал по вашему мануалу на 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
На первый взгляд все ок.. а как в файле /etc/squid/acl/black_list указываете адреса для блокировки ? Покажите пример (не весь 300-метровый файл :))
Добрый день ! спасибо за статью, squid установился, при блокировке web странице или если страница не найдена squid выводит в браузере стандартное сообщение но без картинки, в css указан url на картинку backgraund: url(‘sams.perm.ru/squid-internal-static/icons/SN.png’) можно изменить адрес на папку с картинкой ?
В файле /etc/squid/errorpage.css стили css блокировки странице squida
/usr/share/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»
— система выдает сообщение: «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.
Здравствуйте! Извините может вопрос глупый но….
После того как вручную забили свою конфигурацию похожую на Вашу, Вы не описали как её сохранить и выйти
Добрый день! Все зависит от того какие текстовым редактором вы пользуетесь. Прим. если nano — Ctrl + O (Сохранить), Ctrl + X (Выйти), если vi\vim — :wr (Сохранить), :q (Выйти).
Не описал как сохранять документ, потому как это базовые вещи, которые как минимум должен знать человек который работает в командной строке.
Добрый день.
Все сделано по статье.
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
Добрый день.
Огромное спасибо за подробную инструкцию, всё заработало, хоть и не сразу)
Кальмар сперва не запускался, выдавал ошибку: open failed to shm_open(/squid-ssl_session_cache.shm).
Долго мучался, оказалось в конфиге нужно поменять местами вот эти строки:
maximum_object_size 61440 KB
minimum_object_size 3 KB
Может пригодится кому.
Спасибо за хорошую статью, действительно проблем с зависимостью в 14ой версии нет. По вашей инструкции все заработало.
Вижу что сквид кеширует, что от него и было необходимо.
Правда выходит подключатся только по 2130у порту (на стороне клиента, прописываю в браузере)Но меня и такой вариант устраивает.
Кеширующий сервер должен быть на работе, что бы кешировать один большой сайт.
Из дому подключиться не могу к прокси серверу, не подскажите где необходимо указать свой ИП что бы прокси сервер меня не блочил, в вайтлисте и админ листе?
подскажите, как понять, кешиурет сквид или нет?
кеш находится у меня в /var/spool/squid
смотрю, изначально она весила 48мб, за 20 минут работы 54 мб, поидее кеш пишется? Хотя я думаю она должна гораздо больше весить.
Я понял почему не нужный мне сайт, так как он 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
при выполненнии
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
Ну по всей видимости дело в зависимостях. Заметка корректно ставится на 14.04, на 16.04 без понятия что там за грабли могут возникать при установке.
Спасибо, попробую на 14ую установить.
Попробуйте, на 14.04 должно все встать, не однократно проверялось мной.
Делаем установку по Вашей статье, но доходя до:
«Устанавливаем пакеты 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»
Подскажите что надо сделать?
«dpkg: ошибка при обработке архива squid-common_3.5.19-1_all.deb …: No such file or directory»
У вас отсутствует файл squid-common_3.5.19-1_all.deb
А отсутствует он потому что вы не все шаги выполнили как написано в инструкции. А точнее вы не скомпилировали его из исходников. Пройдитесь заново по шагам, не упуская всех деталей и все получится у вас !
Спасибо большое за статью.
Возник нюанс. При использовании непрозрачного режима (явно указываю в браузере proxy ip:3130) сайты из BlackList.txt, доступные по http фильтруются с отображением страницы ошибки squid, доступные только по https — с ошибкой ERR_TUNNEL_CONNECTION_FAILED (в браузере на стороне клиента).
При этом, например, https://vk.com, который не указан в BlackList.txt недоступен с ошибкой ERR_NAME_RESOLUTION_FAILED
nslookup/ping отрабатывают корректно с консоли сервера с установленным squid.
Вопрос снимается, проблема была в настройке клиента
Неее, это там не причем. Все как я указал, сначала разрешаем, затем запрещаем.
У меня в работе правда в связке с AD работает сквид, но там принцип тот же сначала я разрешаю группе AD админов доступ везде, затем выставляю запрет Blocklist.txt.
Все обрабатывает как часы
Думаю что в связке с AD можно блокировать https без подмены сертификата на уровне доменных имен.
Не уверен на 100%, но думаю что нельзя. Т.к. в связке с AD идет только LDAP аутентификация
Приветствую.
Сделал все по вашей статье, все работает, но немного не так.
Добавил в BlackList два сайта с http и https, пытаюсь зайти на них, отсекает все работает прекрасно.
Затем если свой IP добавить в админы, то сайт с http стал открывается, а с 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
Полный конфиг.
######################################
# Обслуживаемые прокси-сервером сети #
######################################
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
Да вроде все правильно, должно нормально отрабатывать. В конфиге все правильно сразу разрешаем все админам:
# Не ограничивать доступ администраторам
http_access allow AdminsIP
А затем запрещаем сайты для всех остальных:
# Блокировать запрещенные сайты
http_access deny BlackList
Порядок правил правильный, у меня все отрабатывает точно так же как и в конфиге. Затрудняюсь ответить в чем у вас причина
У меня нормально отрабатывает для 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
Здравствуйте! Хотел бы задать вопрос не совсем по теме статьи, но по squid’у. Хочу сделать так чтоб к моему прокси могли подключаться снаружи, т.е. чтоб другой пользователь (мой знакомый например) мог прописать ip и порт моего прокси у себя в браузере и пользоваться. Но я не очень понимаю, но видимо данные между моим прокси и этим пользователем будут не шифрованы? Пользователь должен проходить авторизацию, в этом случае этот процесс тоже идёт в открытом виде?
добрый день. Такая проблема. Некоторые сайты долго открываются. Ютуб например вообще не открывается. В логах вот такое:
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
Может подскажете куда копнуть.
Я так подозреваю, что все https сайты не открываются ?
https сайты открываются, но не всё, ютуб не открывается. В acl пусто пока во всех. В логах что написал, stat.radar.imgsmail.ru это какие счётчики на сайте на который заходил. вот они отсекаются по чему то из-за этого некоторые сайты вообще очень долго открываются.
День добрый. Настроил, всё работает. Но очень долго открывает некоторые сайты. Вот частичка лога кэша. Может кто подскажет как решить?
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
Добрый день ! К сожалению с такой проблемой не сталкивался, я не использую Squid через прозрачное подключение.
Решил вернуться и добить по Вашей инструкции. Все работает=) Нашел свой косяк — squid не той версии.
Но возникает проблема — блочу клиентов, открываю только определенный сайт (например https://taxi.yandex.ru/)
при переходе на этот сайт ругаеться на сертификат. На клиенте ставлю сертификат в «корневые» но ситуация не изменяется.
Может есть идеи?
Отличная статья! Все получилось! Спасибо!!!
Большое спасибо за статью!
Но очень интересно было бы посмотреть настройки iptables
Можно глянуть, если не сложно?
На виртуалке был. Снапшот уже удалил. поставил по другой статье
Взял у Вас идею по правилам ограничений доступа клиентов.
Но все равно большое спасибо за содействие=)
(Отредактировано, ссылки на чужие ресурсы постить нельзя)
Доброго дня!
2 дня уже убил, сделал все по инструкции.
при переходе на https ресурсы — валит сообщение
TAG_NONE/400 4325 NONE error:invalid-request — HIER_NONE/- text/html
кальмар собран с
—with-openssl \
—enable-ssl \
—enable-ssl-crtd
сертификат есть. Что не так — не могу понять. Подскажите, инструкция то грамотная, расжевана, но я уткнулся и встал.
Добрый день !
А покажите ваш конфиг, может там где ошибка. Посмотрим