Настраиваем Squid как прозрачный и обычный прокси на Debian и разрешаем доступ пользователям только к определенным доменам и IP-адресам
Инструкции протестированы на Debian 12 and Squid 5.9
устанавливаем необходимые для компиляции пакеты
apt build-dep squid
скачиваем и распаковываем исходный код
cd /root
curl -O -L http://www.squid-cache.org/Versions/v5/squid-5.9.tar.gz
tar -x -f squid-5.9.tar.gz
выполняем компиляцию
cd squid-5.9
./configure --prefix=/opt/squid --enable-ssl-crtd --with-openssl --with-systemd --with-default-user=proxy --enable-removal-policies=lru,heap
make
make install
создаем самоподписанный сертификат
openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -keyout /opt/squid/etc/bump.key -out /opt/squid/etc/bump.crt
генерируем DH-параметры
openssl dhparam -outform PEM -out /opt/squid/etc/dhparam.pem 2048
инициализируем базу данных для сертификатов
mkdir /opt/squid/var/db
/opt/squid/libexec/security_file_certgen -c -s /opt/squid/var/db/ssl_db -M 512MB
создаем файл /opt/squid/etc/whitelisted_domains
.microsoft.com
.google.com
создаем файл /opt/squid/etc/whitelisted_ips
104.16.0.0/13
104.24.0.0/14
создаем файл /opt/squid/etc/squid.conf
http_port 192.168.100.254:3128
http_port 192.168.100.254:80 intercept
https_port 192.168.100.254:443 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=512MB tls-cert=/opt/squid/etc/bump.crt tls-key=/opt/squid/etc/bump.key tls-dh=prime256v1:/opt/squid/etc/dhparam.pem
append_domain .domain.lan
cache_mgr [email protected]
httpd_suppress_version_string on
visible_hostname proxy.domain.lan
coredump_dir /opt/squid/var/spool
cache_mem 2048 MB
maximum_object_size_in_memory 50 MB
memory_replacement_policy heap LFUDA
maximum_object_size 50 MB
cache_replacement_policy heap LFUDA
refresh_pattern . 0 20% 4320
logfile_rotate 0
sleep_after_fork 100000
netdb_filename none
#####
acl whitelist_domains_exp dstdomain "/opt/squid/etc/whitelist_domains"
acl whitelist_domains_trans ssl::server_name "/opt/squid/etc/whitelist_domains"
acl whitelist_ips dst "/opt/squid/etc/whitelist_ips"
acl step1 at_step SslBump1
acl ssl_connections connections_encrypted
#####
sslcrtd_program /opt/squid/libexec/security_file_certgen -s /opt/squid/var/db/ssl_db -M 512MB
ssl_bump peek step1 all
ssl_bump bump whitelist_domains_trans
ssl_bump bump whitelist_ips
ssl_bump terminate all
#####
acl intermediate_fetching transaction_initiator certificate-fetching
http_access allow intermediate_fetching
http_access allow whitelist_domains_exp
http_access allow whitelist_ips
http_access allow ssl_connections
http_access deny all
#####
http_reply_access allow
изменяем владельцев файлов и папок
chown -R proxy:proxy /opt/squid
создаем файл /usr/lib/systemd/system/squid.service
[Unit]
Description=Squid Web Proxy Server
After=network.target network-online.target nss-lookup.target
[Service]
Type=notify
PIDFile=/opt/squid/var/run/squid.pid
ExecStartPre=/opt/squid/sbin/squid --foreground -z
ExecStart=/opt/squid/sbin/squid --foreground -sYC
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
NotifyAccess=all
[Install]
WantedBy=multi-user.target
запускаем службу
systemctl start squid
настраиваем сетевой экран на перенаправление нешифрованного и шифрованного трафика на Squid на порты 80/TCP and 443/TCP соответственно