Как установить прокси сервер Squid на Debian 12
Squid — это программный пакет, реализующий функцию кэширующего прокси-сервера для протоколов HTTP, FTP, Gopher и (в случае соответствующих настроек) HTTPS.
В этом руководстве я покажу, как установить прокси сервер Squid на операционной системе Debian 12. Установку будем выполнять из исходников и актуальную на момент написания статьи версию Squid.
Установка зависимостей
Устанавливаем необходимые пакеты зависимостей.
apt-get update
apt-get install build-essential make automake autoconf libtool libtool-bin ed libssl-dev libkrb5-dev libldap2-dev libk5crypto3 libsasl2-dev libpam0g libcap2-dev git -y
Сборка и установка
Актуальную версию пакета можно посмотреть по ссылке:
Клонируем репозиторий Squid с GitHub:
cd /opt
git clone https://github.com/squid-cache/squid.git squid
Переходим в клонированный репозиторий.
cd squid
Актуальная версия
Если нужна самая актуальная версия релиза, то переключится на нее можно выполнив команду:
LATEST_TAG=$(curl -s https://api.github.com/repos/squid-cache/squid/releases/latest | grep -oP '"tag_name": "\K[^"]+')
git checkout $LATEST_TAG
Определенная версия
В случае если необходимо выполнить сборку какой то определенной версии, то сперва можно вывести список доступных релизов:
git tag | grep '^SQUID_' | sort -t_ -k2,2V -k3,3V -k4,4V
А затем переключаемся на нужную ветку:
git checkout SQUID_5_9
Подготовка
Выполним bootstrapping (подготовку) исходников к сборке.
configure
, Makefile
и других вспомогательных файлов, необходимых для сборки../bootstrap.sh
Успешный вывод:
automake (1.16.5) : automake
autoconf (2.71) : autoconf
libtool (2.4.7) : libtool
libtool path : /usr/bin
Bootstrapping primary Squid sources
Bootstrapping libltdl sub-project
Fixing configure recursion
Autotool bootstrapping complete.
Сборка
Выполняем конфигурирование с поддержкой HTTPS:
./configure --prefix=/usr \
--localstatedir=/var \
--libexecdir=/usr/lib/squid \
--datadir=/usr/share/squid \
--sysconfdir=/etc/squid \
--enable-ssl-crtd \
--with-openssl \
--enable-translation \
--enable-cpu-profiling \
--disable-dependency-tracking \
--disable-ipv6 \
--enable-removal-policies="lru,heap" \
--enable-delay-pools \
--enable-icmp \
--enable-linux-netfilter \
--enable-external-acl-helpers \
--with-large-files \
--with-default-user=proxy \
--with-logdir=/var/log/squid \
--with-pidfile=/var/run/squid.pid
Собираем и устанавливаем пакет Squid:
make
make install
Post-Install настройка
Создаем необходимые каталоги для работы Squid и назначаем для них соответствующие права доступа:
mkdir -p /var/log/squid /var/spool/squid /etc/squid/ssl
chown proxy:proxy /var/log/squid /var/spool/squid /etc/squid/ssl
chmod 750 /var/log/squid /var/spool/squid /etc/squid/ssl
Logrotate
Создаем файл ротации логов /etc/logrotate.d/squid
:
cat << EOF > /etc/logrotate.d/squid
/var/log/squid/access.log {
daily
compress
delaycompress
rotate 4
missingok
nocreate
sharedscripts
postrotate
/etc/init.d/squid reload
endscript
}
/var/log/squid/cache.log {
daily
compress
delaycompress
rotate 4
missingok
nocreate
sharedscripts
postrotate
/etc/init.d/squid reload
endscript
}
EOF
System V Init
Для управление запуском Squid создадим стартовый скрипт /etc/init.d/squid
для System V Init
.
#! /bin/sh
#
# squid Startup script for the SQUID HTTP proxy-cache.
#
# Version: @(#)squid.rc 1.0 07-Jul-2006 luigi@debian.org
#
# pidfile: /var/run/squid.pid
#
### BEGIN INIT INFO
# Provides: squid
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $network $remote_fs $syslog
# Should-Start: $named
# Should-Stop: $named
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Squid HTTP Proxy version 4.x
### END INIT INFO
NAME=squid
DESC="Squid HTTP Proxy"
DAEMON=/usr/sbin/squid
PIDFILE=/var/run/$NAME.pid
CONFIG=/etc/squid/squid.conf
SQUID_ARGS="-YC -f $CONFIG"
[ ! -f /etc/default/squid ] || . /etc/default/squid
. /lib/lsb/init-functions
PATH=/bin:/usr/bin:/sbin:/usr/sbin
[ -x $DAEMON ] || exit 0
ulimit -n 65535
find_cache_dir () {
w=" " # space tab
res=`$DAEMON -k parse -f $CONFIG 2>&1 |
grep "Processing:" |
sed s/.*Processing:\ // |
sed -ne '
s/^['"$w"']*'$1'['"$w"']\+[^'"$w"']\+['"$w"']\+\([^'"$w"']\+\).*$/\1/p;
t end;
d;
:end q'`
[ -n "$res" ] || res=$2
echo "$res"
}
grepconf () {
w=" " # space tab
res=`$DAEMON -k parse -f $CONFIG 2>&1 |
grep "Processing:" |
sed s/.*Processing:\ // |
sed -ne '
s/^['"$w"']*'$1'['"$w"']\+\([^'"$w"']\+\).*$/\1/p;
t end;
d;
:end q'`
[ -n "$res" ] || res=$2
echo "$res"
}
create_run_dir () {
run_dir=/var/run/squid
usr=`grepconf cache_effective_user proxy`
grp=`grepconf cache_effective_group proxy`
if [ "$(dpkg-statoverride --list $run_dir)" = "" ] &&
[ ! -e $run_dir ] ; then
mkdir -p $run_dir
chown $usr:$grp $run_dir
[ -x /sbin/restorecon ] && restorecon $run_dir
fi
}
start () {
cache_dir=`find_cache_dir cache_dir`
cache_type=`grepconf cache_dir`
run_dir=/var/run/squid
#
# Create run dir (needed for several workers on SMP)
#
create_run_dir
#
# Create spool dirs if they don't exist.
#
if test -d "$cache_dir" -a ! -d "$cache_dir/00"
then
log_warning_msg "Creating $DESC cache structure"
$DAEMON -z -f $CONFIG
[ -x /sbin/restorecon ] && restorecon -R $cache_dir
fi
umask 027
ulimit -n 65535
cd $run_dir
start-stop-daemon --quiet --start \
--pidfile $PIDFILE \
--exec $DAEMON -- $SQUID_ARGS < /dev/null
return $?
}
stop () {
PID=`cat $PIDFILE 2>/dev/null`
start-stop-daemon --stop --quiet --pidfile $PIDFILE --exec $DAEMON
#
# Now we have to wait until squid has _really_ stopped.
#
sleep 2
if test -n "$PID" && kill -0 $PID 2>/dev/null
then
log_action_begin_msg " Waiting"
cnt=0
while kill -0 $PID 2>/dev/null
do
cnt=`expr $cnt + 1`
if [ $cnt -gt 24 ]
then
log_action_end_msg 1
return 1
fi
sleep 5
log_action_cont_msg ""
done
log_action_end_msg 0
return 0
else
return 0
fi
}
cfg_pidfile=`grepconf pid_filename`
if test "${cfg_pidfile:-none}" != "none" -a "$cfg_pidfile" != "$PIDFILE"
then
log_warning_msg "squid.conf pid_filename overrides init script"
PIDFILE="$cfg_pidfile"
fi
case "$1" in
start)
res=`$DAEMON -k parse -f $CONFIG 2>&1 | grep -o "FATAL: .*"`
if test -n "$res";
then
log_failure_msg "$res"
exit 3
else
log_daemon_msg "Starting $DESC" "$NAME"
if start ; then
log_end_msg $?
else
log_end_msg $?
fi
fi
;;
stop)
log_daemon_msg "Stopping $DESC" "$NAME"
if stop ; then
log_end_msg $?
else
log_end_msg $?
fi
;;
reload|force-reload)
res=`$DAEMON -k parse -f $CONFIG 2>&1 | grep -o "FATAL: .*"`
if test -n "$res";
then
log_failure_msg "$res"
exit 3
else
log_action_msg "Reloading $DESC configuration files"
start-stop-daemon --stop --signal 1 \
--pidfile $PIDFILE --quiet --exec $DAEMON
log_action_end_msg 0
fi
;;
restart)
res=`$DAEMON -k parse -f $CONFIG 2>&1 | grep -o "FATAL: .*"`
if test -n "$res";
then
log_failure_msg "$res"
exit 3
else
log_daemon_msg "Restarting $DESC" "$NAME"
stop
if start ; then
log_end_msg $?
else
log_end_msg $?
fi
fi
;;
status)
status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit 3
;;
*)
echo "Usage: /etc/init.d/$NAME {start|stop|reload|force-reload|restart|status}"
exit 3
;;
esac
exit 0
Настройка Squid для автозапуска, обновление конфигурации systemd, запуск и проверка работы службы:
chmod a+x /etc/init.d/squid
update-rc.d squid defaults
systemctl daemon-reexec
systemctl daemon-reload
/etc/init.d/squid start
/etc/init.d/squid status
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Все делал по вашей инструкции, но на этапе установки пакета
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 это потому что последняя напрямую зависит от закомментированной строки.
Покажите конфиг