LINUX.ORG.RU

Squid прозрачный, сборка и настройка Debian

 , ,


0

1

Сборка на виртуалке

  • apt install git fakeroot build-essential devscripts
  • apt build-dep squid3
  • apt install libssl-dev libgnutls28-dev
  • deb-src http://ftp.de.debian.org/debian/ testing main contrib non-free
  • apt source squid3/testing
  • в debian/rules добавляю --enable-ssl \ --enable-ssl-crtd \ --with-openssl \
  • dpkg-buildpackage -us -uc -nc

установка:

  • apt install squid-langpack
  • apt install libdbi-perl squid-langpack
  • dpkg -i squid-common_4.6-1_all.deb squid_4.6-1_amd64.deb
  • dpkg -i squid3_4.6-1_all.deb squidclient_4.6-1_amd64.deb
  • в каталоге /etc/squid : openssl req -new -newkey rsa:1024 -days 365 -nodes -x509 -keyout squidCA.pem -out squidCA.pem
  • ./usr/lib/squid/security_file_certgen -с -s /var/lib/ssl_db -M 4MB

Может есть какие ошибки или что добавить/убавить нужно. Кеш не нужен, может можно пересобрать без этой функции? Конфиг посмотрите, может подкорректировать нужно?

acl localnet src 192.168.1.0/24	# RFC1918 possible internal network

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

dns_nameservers 8.8.8.8
dns_nameservers 8.8.4.4
http_access deny !Safe_ports

http_access deny CONNECT !SSL_ports

http_access allow localhost manager
http_access deny manager

http_access allow localnet
http_access allow localhost
http_access deny all

http_port 192.168.1.1:3128 intercept
http_port 192.168.1.1:3130
https_port 192.168.1.1:3129 intercept ssl-bump connection-auth=off cert=/etc/squid/squidCA.pem

cache deny all
always_direct allow all
sslproxy_cert_error allow all

#укажем правило со списком блокируемых ресурсов (в файле домены вида .domain.com)
acl blocked ssl::server_name  "/etc/squid/blocked_https.txt"
acl step1 at_step SslBump1
ssl_bump peek step1

#терминируем соединение, если клиент заходит на запрещенный ресурс
ssl_bump terminate blocked 
ssl_bump splice all

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

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_dir aufs /var/spool/squid 20000 49 256
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
logfile_rotate 4

dns_v4_first on



Работал нормально, потом перестал писать логи, отрубил в iptables, снова врубил заработало, но стало сыпать в лог
*kid1| SECURITY ALERT: Host header forgery detected on local=64.233.162.105:443 remote=192.168.1.23:53096 FD 62 flags=33 (local IP does not match any domain IP)
*kid1| SECURITY ALERT: on URL: www.google.com:443

Это читали: https://wiki.squid-cache.org/KnowledgeBase/HostHeaderForgery ?

Там, среди прочего, чётко написано:

ensure that the commercial 8.8.8.8 service is not being used directly. This service is known to be particularly bad with rotation of lookup results on each query - much faster than even the TTL for the zones it is serving. If you really need to use this service at all a local DNS resolver should be setup that uses it as upstream forwarder. The local network machines can use that local resolver to access DNS.

mky ★★★★★ ()
Ответ на: комментарий от mky

Читал конечно. но ничего не понял. Пробовал прописывать только 8.8.8.8, результат тот же.

dnsmasq.conf

dhcp-range=192.168.1.2,192.168.1.50,24h
local=/homes/
domain=homes
expand-hosts
no-resolv
server=8.8.8.8
server=8.8.4.4

dotstal ()
Ответ на: комментарий от dotstal

Вам нужно, чтобы и клиент и прокси одинаково резолвили доменное имя, для этого и squid и клиенты должны обращаться к одному dns-серверу. Поэтому, если вы локально ставите dnsmasq, то squid должен обращаться к нему (127.0.0.1) и всех клиентов нужно на него определить (через --j REDIRECT для 53-го порта).

Либо отключить эту проверку в squid путём правки исходников и прересборки, как то так: https://habr.com/en/sandbox/99037/

mky ★★★★★ ()
Ответ на: комментарий от mky

Это все стоит на роутере (точнее мни-пк), все клиенты и так идут через dnsmasq - вроде бы так. Заворачиваю трафик на squid, через iptables

$IPT -t nat -A PREROUTING -p tcp -m tcp -s 192.168.1.0/24 --dport 443 -j REDIRECT --to-ports 3129
$IPT -t nat -A PREROUTING -p tcp -m tcp -s 192.168.1.0/24 --dport 80 -j REDIRECT --to-ports 3128

Все что нужно, это в squid прописать dns_nameservers 127.0.0.1, а в dnsmasq выставлять любые DNS, я правильно понимаю? или именно 8.8.8.8

dotstal ()
Ответ на: комментарий от dotstal

Пробовал dns_nameservers 127.0.0.1, а в dnsmasq выставлять DNS - стало меньше гадить в лог, но полностью не перестало.

dotstal ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.