Настройка прозрачного прокси-сервера squid с поддержкой SSL в Debian 10

Некоторые подсказки:

  • Используйте evalдля интерпретации переменной.
  • Не зацикливайтесь на результатах find, а используйте find -exec.
  • Использовать удаление подстроки bashвместо cut.
  • Используйте rsyncвместо cp.
  • Создать каталоги перед копированием.
find backup -type f -exec sh -c '
    mkdir -p "$(eval dirname "${1#*/}")";
    rsync -av "$1" "$(eval printf "${1#*/}")"
' find-sh {} \;

Или лучше просто используйте rsyncв первую очередь, что делает именно то, что вы хотите:

rsync -av backup/\$HOME/ $HOME/
0
09.10.2020, 17:11
3 ответа

Не беспокойтесь; это пустая трата времени:

  • Строго говоря, это человек в середине атаки, и
  • количество попаданий в кеш ничтожно мало (Я подозреваю, что кеш браузера уже хорошо справляется с такими вещами, как логотип Google ).
0
18.03.2021, 22:59
# apt-get install openssl
# mkdir -p /etc/squid/cert
# cd /etc/squid/cert
# openssl req -new -newkey rsa:4096 -sha256 -days 365 -nodes -x509 -keyout myCA.pem -out myCA.pem
# openssl x509 -in myCA.pem -outform DER -out myCA.der
# chown -R proxy:proxy /etc/squid/cert
# chmod 700 /etc/squid/cert

# /usr/lib/squid/security_file_certgen -c -s /var/spool/squid/ssl_db -M 4MB
# chown -R proxy:proxy /var/spool/squid/ssl_db/

И вsquid.conf:

https_port 3129 intercept ssl-bump cert=/etc/squid/cert/myCA.pem generate-host-certificates=on dynamic_cert_mem_cache_si
ze=4MB
ssl_bump peek all
ssl_bump splice all

И для перехвата:

iptables -t nat -A PREROUTING -i br0 -p tcp --dport 443 -j DNAT --to 192.168.1.51:3129
iptables -t nat -A PREROUTING -i br0 -p tcp --dport 443 -j REDIRECT --to-port 3129

(Здесь br0моя внутренняя сеть.)

Вот команда для просмотра наиболее часто кэшируемых доменов. SSL отображаются пустыми.

awk 'BEGIN {FS="[ ]+"}; {print $7}' < /var/log/squid/access.log | awk 'BEGIN {FS="/"}; {print $3}' | sort | uniq -c |sort -k1,1nr -k2,2 | head
0
18.03.2021, 22:59

Это не прямой ответ на ваш вопрос, поскольку я просто использую squid в качестве локального кеширующего прокси. Несмотря на это, я разместил здесь, так как ваш вопрос был наиболее близок к тому, что мне было нужно, и теперь я его проработал, и я хотел поделиться.

В Debian 11/Bullseye необходимо установить пакет squid -openssl(Squid v4.x, скомпилированный--with-openssl).

apt install -y squid-openssl

Затем установите (собственный -подписанный )доверенный сертификат ЦС:

CERT_D=/etc/squid/cert/
CERT=$CERT_D/squid_proxyCA.pem
rm -rf $CERT
mkdir -p $CERT_D
# Generate local self-signed CA certificate/key (in the same file)
openssl req -new -newkey rsa:4096 -sha256 -days 365 -nodes -x509 -keyout $CERT -out $CERT
chown -R proxy:proxy $CERT_D
chmod 0400 $CERT

# add squid_proxyCA cert to system so it's trusted by default
CA_CERT_D=/usr/local/share/ca-certificates
rm -rf $CA_CERT_D/*
mkdir -p $CA_CERT_D
openssl x509 -inform PEM -in $CERT -out $CA_CERT_D/squid_proxyCA.crt
update-ca-certificates

Настройте squid для генерации сертификатов на лету:

/usr/lib/squid/security_file_certgen -c -s /var/spool/squid/ssl_db -M 4MB

Тогда это моя/etc/squid/squid.conf(заметка, она довольно минималистична и принимает соединения только с локального хоста и слушает только IPv4):

acl localhost src 127.0.0.1/255.255.255.255

acl SSL_ports port 443

acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 1025-65535  # unregistered ports

acl purge method PURGE
acl CONNECT method CONNECT

http_access allow manager localhost
http_access deny manager

http_access allow purge localhost
http_access deny purge

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

http_access allow localhost
http_access deny all

http_port 127.0.0.1:3128 ssl-bump cert=/etc/squid/certs/squid_proxyCA.pem generate-host-certificates=on options=NO_SSLv3,NO_TLSv1,NO_TLSv1_1,SINGLE_DH_USE,SINGLE_ECDH_USE
ssl_bump bump all

coredump_dir /var/spool/squid
logfile_rotate 0

refresh_pattern -i (/cgi-bin/|\?) 0 0%  0
refresh_pattern.       0   20% 4320

cache_dir ufs /var/spool/squid 200 16 256

Наконец, перезапустите squid:

systemctl reload squid

Еще одна вещь, о которой стоит упомянуть, это то, что URL-адрес прокси http://127.0.0.1:3028должен использоваться для как , так и http_proxy, и , https_proxy(, обратите внимание на http.-нет с ; даже при использовании в качестве https-прокси ). Если/когда используется с https, Squid обновит соединение для использования TLS/SSL.

1
22.11.2021, 05:15

Теги

Похожие вопросы