Как установить прокси сервер 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
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Делал по вашему мануалу на 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
сертификат есть. Что не так — не могу понять. Подскажите, инструкция то грамотная, расжевана, но я уткнулся и встал.
Добрый день !
А покажите ваш конфиг, может там где ошибка. Посмотрим