Установка 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 и вывод его в приятный глазу вид, который можно и начальству показать для наглядности куда кто ходит и чем занимается в рабочее время.
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Все делал по вашей инструкции, но на этапе установки пакета
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
Прошу помощи!
Да, два раза делал и перепроверял все. Не могу понять в чем проблема
А точно правильно собирали пакет Squid ?
Эти компоненты указывали при сборке ?
—with-openssl \
—enable-ssl \
—enable-ssl-crtd
ТАм так и есть, это просто не влезло
В этой строке:
# Подключение по 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
я пока не стал даже файлы менять, дописывать запреты и т.п, так как squid даже не запускается
######################################
# Обслуживаемые прокси-сервером сети #
######################################
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
Все делал по инструкции. При запуске 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
Покажите ваш конфиг
Только что посмотрел свой рабочий конфиг, у меня там вот так:
# Не ограничивать доступ администраторам
http_access allow AdminsIP
И все отрабатывает нормально. Все таки как первый раз написал исправить, верно. Должно все работать.
Верните значение на:
# Не ограничивать доступ администраторам
http_access allow AdminsIP BlackList
И попробуйте остановить Squid и запустить. Должно так работать, конфиг у вас правильный, можно сказать аналогичный как у меня, у меня то отрабатывает AdminsIP.txt
# Не ограничивать доступ администраторам
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
убрал сайты из blacklist и все работает не обрабатывается как будто Adminip
прошла минута и на первом перестал открываться youtube
Сори мой косяк, сразу не правильно указал. В конфиге вот так укажите:
# Не ограничивать доступ администраторам
http_access allow AdminsIP !BlackList
И все будет хорошо
Увы не сработало
А должно было, покажите еще раз конфиг свой
######################################
# Обслуживаемые прокси-сервером сети #
######################################
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 пустые
странно работает AdminIP.txt. добавил второй ip в список. на первом начал работать. а второй так и блокирует youtube. и можно ли блокировать определенный контент на определенном сайте?
А каким методом вы добавляете IP-адреса в файл AdminIP.txt ?
таким:
192.168.1.2
192.168.1.3
и т.д. ?
После внесения изменений обязательно выполняйте sudo service squid reload — для того чтобы сквид перечитал возможно внесенные изменения.
Можно блокировать загрузку картинок, музыки, видео и т.д., но при этом будет блокироваться все что попадает под критерии блокировки.
именно так и ввожу. но перезагрузку делаю /etc/init.d/squid restart. сообщает что запустился. но все равно сайт блочится для всех
если есть возможность. могу дать вам удаленный доступ и на сервер и на ком-р
не знаю в чем причина такой работы
спасибо. Завелось!
Скажите, а возможно ли проксировать https при том, когда прокси прописан в браузерах? И возможна ли ntlm авторизация при прозрачном squid?
Пожалуйста. Если делали все по заметке, то у вас проксируется https трафик. И так же будет блокироваться сайт если вы его внесете в файл блокировки. Только при блокировке https трафика не будет выдаваться пользователю страница Squid сообщающая о том что ресурс заблокирован и т.д., а у пользователя будет просто не открываться сайт.
Авторизация возможна, но к сожалению у меня не было необходимости в ней и я не разбирал как ее применить. Но разберу и выложу заметку.
######################################
# Обслуживаемые прокси-сервером сети #
######################################
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
В этой строке:
# Не ограничивать доступ администраторам
http_access allow AdminsIP BlackList
Уберите BlackList и будет все работать нормально.
это я потом поставил как проверку. при таком написании http_access allow AdminsIP не работает все равно
именно таким образом. а после выполняю /etc/init.d/squid restart. но все равно сайт блочится для всех
Добрый день. я новичок в настройке 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
Добрый день, покажите ваш конфиг.
В общем чем дальше тем не понятнее. Уже на реальной машине вернул исходную строку (с кавычками) и работает :/. Посмотрю что будет после перезагрузки системы.
Ясно одно, вы определенно что то делаете не так, но не понятно что 🙂
Если все делать как описано выше, то все работать будет. Проверено уже не однократно.
🙂 Я просто возвращаю конфиги на место из архива и рабочей системы. Всё. Сейчас, кстати работает и с кавычками, просто добавил кавычки и перезапустил squid и всё заработало. Я не знаю в чём дело. Ещё дополнительно на виртуальной машине экспериментировал, там чётко была разница, ставлю кавычки — ошибка, убираю — запускается. Но когда я вновь поставил кавычки и удалил все записи из файла blocklist, то squid нормально перезапустился, предупредив что данный файл пуст. Не увидев никакой логики, я оставил всё как есть.
Само по себе разрешилось, что уже хорошо ! Но все так же остался не понятным почему все таки Squid не воспринимал обозначенный acl с ковычками.. Будет время на тестовой машине, по экспериментирую.
По вашей статье (3.5.19). Тот самый пакет который выдавал ошибку. Кстати, я поставил на реальную машину, тоже была описанная выше ошибка, с тем же конфиг файлом. После того как убрал кавычки в acl blocked ssl::server_name «/etc/squid/blocklist», заработало…
А ради интереса попробуйте создать файл блокировки block.txt и указать
acl такой acl blocked ssl::server_name "/etc/squid/block.txt"
, заработает ли ?Пока могу проверить только на виртуалке. То же самое, ошибка в строке 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, снова заработал.
Я сейчас с той строки убрал кавычки, squid нормально запустился, сайты из blocklist вроде блочатся.
А версия Squid какая версия у вас ?
Да, файл на месте.
acl directlist url_regex -i «/etc/squid/directlist» — а это у вас для чего ?
Сейчас он пуст. Для «прямого захода», т.к. squid работает за privoxy.
Вот полный конфиг:
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
Делалось по мотивам этих двух статей:
(Сайты на сторонние ресурсы не надо указывать)
На сквиде в статьях, этот конфиг работает.
Вот эту строку
acl blocked ssl::server_name «/etc/squid/blocklist»
приведите к видуacl blocked ssl::server_name "/etc/squid/blocklist"
и попробуйте. Знаки«»
не допустимы в конфиге.Да и странно что вы судя по конфигу вводите список сайтов блокировки только для HTTPS соединений, а HTTP не блокируете.. Ну хотя может быть вы так и задумали 🙂
Это так скопировалось, в конфиге нормальные кавычки. Да, так задумано :). На squid 3.5.8 этот конфиг работает.
Да по идее и тут должно работать, строка вроде бы правильно прописана, смущают ковычки, но раз вы говорите что в конфиге они нормальные, то должно работать. А файл то создан и существует ?
Здравствуйте! Не подскажите, возникает ошибка:
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.
Добрый вечер !
Судя по ошибке, blocklist файл не верно указан в acl и поэтому конфиг не может принять данную строку. А то что комментируете строку acl blocked ssl::server_name «/etc/squid/blocklist» и следом выдает ошибку на ssl_bump terminate blocked это потому что последняя напрямую зависит от закомментированной строки.
Покажите конфиг