21.05.2024

Фильтрация ресурсов – черный и белые списки

Заметки в процессе установки

Добавление исключений для важных порталов и сервисов

Добавление исключений для SSL Bumping может потребоваться в следующих случаях:

  • Программное обеспечение использует протокол, отличный от HTTPS (например, SSH, RDP, VPN)
  • Программное обеспечение или веб-ресурс использует протокол WebSockets или HTTP/2.0
  • Для доступа к веб-ресурс используются национальные алгоритмы шифрования (GOST, SM2)
  • Программное обеспечение использует привязку серверного сертификата (pinning)
  • Программное обеспечение или веб-ресурс требует аутентификацию по клиентскому SSL-сертификату

Настройка Squid для исключения выбранных ресурсов

Создание и редактирование списка ресурсов, где не будет использоваться подмена сертификатов (SSL Bump). 

Создадим несколько файлов

  • whitelist.list – список ресурсов, где не будет использоваться подмена сертификатов (SSL Bump), например банковские платежные системы, мессенджеры и прочее
  • blacklist.list – cписок ресурсов, которые заблокированы
  • devnet.list – перечень локальных IP адресов и локальных имен, где подмена сертификата может негативно сказывается, например интерфейс управления СХД, FC-коммутаторами и подобным оборудованием

Для добавления в исключения домена со всеми поддоменами, укажите точку в начале значения например: .domain.com

touch /etc/squid/rules/whitelist.list
nano /etc/squid/rules/whitelist.list

Эти строки должны располагаться перед финальной директивой ssl_bump stare all

acl whitelist dstdomain "/etc/squid/rules/whitelist.list"
ssl_bump splice whitelist

Для доменных имен вместо dstdomain можно использовать blacklist ssl::server_name

acl whitelist dstdomain "/etc/squid/rules/whitelist.list"
acl blacklist ssl::server_name "/etc/squid/rules/blacklist.list"
acl devnet dstdomain "/etc/squid/rules/devnet.list"

Пересылать все запросы на указанные ресурсы не используя кэш прокси сервера

К таким ресурсам будут относится 2 списка whitelist  и devnet

Добавим соответствующее правило

# no cache
always_direct allow whitelist devnet

Добавим соответствующие действия SSL Bumping

Ничего не делаем с запросами к ресурсам, перечисленным в списке whitelist (у нас уже должно быть описано acl whitelist  dstdomain <domain list>). Это можно делать как по соображениям безопасности, так и в случае возникновения проблем при использовании ssl-bump с конкретными сайтами.

ssl_bump splice whitelist

Закрываем соединение с ресурсами из списка blacklist

ssl_bump terminate blacklist

С запросами ко всем остальными сайтам — на этапе SslBump1 смотрим на открытую информацию, на последующих этапах — влезаем в трафик

ssl_bump peek step1
ssl_bump bump all

ssl_bump splice devnet
ssl_bump splice whitelist
ssl_bump terminate blacklist

Текущая конфигурация

Итоговый конфигурационный файл squid.conf должен выглядеть примерно так

acl localnet src 192.168.0.0/16 # RFC 1918 local private network (LAN)

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 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

#FIX: sites do not deliver intermediate certificate: certificate issuer (CA) not known
#allow fetching of missing intermediate certificates
acl intermediate_fetching transaction_initiator certificate-fetching
http_access allow intermediate_fetching

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager

include /etc/squid/conf.d/*.conf
http_access allow localhost
http_access deny all

# not bump
http_port 8443 tcpkeepalive=60,30,3

http_port 3128 tcpkeepalive=60,30,3 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=20MB tls-cert=/etc/squid/ssl/squid.pem cipher=DEFAULT:@SECLEVEL=1 options=NO_TLSv1,NO_SSLv3 tls-dh=prime256v1:/etc/squid/ssl/dhparam.pem

tls_outgoing_options min-version=1.1 cipher=DEFAULT:@SECLEVEL=1 options=NO_TLSv1,NO_SSLv3 flags=DONT_VERIFY_PEER

#allow connection even with certificate validation errors
sslproxy_cert_error allow all

acl devnet dstdomain "/etc/squid/rules/devnet.list"
acl whitelist ssl::server_name "/etc/squid/rules/whitelist.list"
acl blacklist ssl::server_name "/etc/squid/rules/blacklist.list"

# no cache
always_direct allow whitelist devnet

acl step1 at_step SslBump1
ssl_bump peek step1
# localhost
ssl_bump splice localhost
# White list
ssl_bump splice devnet
ssl_bump splice whitelist
# Black list
ssl_bump terminate blacklist
#
ssl_bump bump all
ssl_bump stare all

sslcrtd_program /usr/lib/squid/security_file_certgen -s /var/lib/squid/ssl_db -M 20MB
sslcrtd_children 5

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

Дополнительные настройки


Дополнительная информация

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *