Категория: Компьютерные сети

Кол-во просмотров: 14434

Теги: #linux


Squid с фильтрацией HTTPS ресурсов без подмены сертификатов

Внимание, данное решение работает только на debian or ubunto 32bit

Для ваше удобства сделал как можно проще, ниже представлен установочный файл

просто его запускаем

 

cd /var/
mkdir squid
cd squid
apt-get install -y git fakeroot build-essential devscripts
apt-get build-dep -y squid3
apt-get build-dep -y libecap2
apt-get install -y libssl-dev libgnutls28-dev   
wget http://ahmetshin.com/static/squid3.5.8_and_deps.tar.gz
tar -xvzf squid3.5.8_and_deps.tar.gz
cd root/squid/squid3.5.8/
dpkg -i libressl_2.1.6-1_i386.deb
mv /usr/bin/openssl /usr/bin/openssl-1
update-alternatives --install /usr/bin/openssl openssl /usr/bin/openssl-1 10
update-alternatives --install /usr/bin/openssl openssl /usr/local/bin/openssl 50
dpkg -i libecap3_1.0.1-2_i386.deb
dpkg -i libecap3-dev_1.0.1-2_i386.deb
dpkg -i squid_3.5.8-1_i386.deb
dpkg -i squid-common_3.5.8-1_all.deb
dpkg -i squid3_3.5.8-1_all.deb
dpkg -i squidclient_3.5.8-1_i386.deb
dpkg -i squid-dbg_3.5.8-1_i386.deb
dpkg -i squid-purge_3.5.8-1_i386.deb
dpkg -i squid-cgi_3.5.8-1_i386.deb
apt-get -f -y install
dpkg -i squid_3.5.8-1_i386.deb
dpkg -i squid-common_3.5.8-1_all.deb
dpkg -i squid3_3.5.8-1_all.deb
dpkg -i squidclient_3.5.8-1_i386.deb
dpkg -i squid-dbg_3.5.8-1_i386.deb
dpkg -i squid-purge_3.5.8-1_i386.deb
cd /etc/squid
openssl req -batch -new -newkey rsa:1024 -days 365 -nodes -x509 -keyout squidCA.pem -out squidCA.pem
rm -rf squid.conf
wget http://ahmetshin.com/static/squid/squid.conf
wget http://ahmetshin.com/static/squid/adslist.txt
wget http://ahmetshin.com/static/squid/blocked_https.txt
wget http://ahmetshin.com/static/squid/blocks.files.acl
wget http://ahmetshin.com/static/squid/cachemgr.conf
wget http://ahmetshin.com/static/squid/errorpage.css
wget http://ahmetshin.com/static/squid/mism_ssl
wget http://ahmetshin.com/static/squid/redirect.txt

Далее правим конфиг в /etc/squid/squid.conf

Меняем свою сеть

 

acl localnet src 10.20.2.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 5222		# whatsapp
acl Safe_ports port 5223		# whatsapp
acl Safe_ports port 2195		# whatsapp
acl Safe_ports port 2196		# whatsapp
acl Safe_ports port 5228		# whatsapp
acl Safe_ports port 591		# filemaker
acl Safe_ports port 777		# multiling http
acl blockfiles urlpath_regex "/etc/squid/blocks.files.acl"
acl CONNECT method CONNECT

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

#прозрачный порт указывается опцией intercept
http_port 10.20.2.1:3128 intercept options=NO_SSLv3:NO_SSLv2

#также нужно указать непрозрачный порт, ибо если захотите вручную указать адрес
#прокси в браузере, указав прозрачный порт, вы получите ошибку доступа, поэтому нужно
#указывать непрозрачный порт в браузере, если конечно такое желание будет, к тому же в логах 
#сыпятся ошибки о том, что непрохрачный порт не указан=) 
http_port 10.20.2.1:3130 options=NO_SSLv3:NO_SSLv2 

#и наконец, указываем HTTPS порт с нужными опциями
https_port 10.20.2.1: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/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/ssl_crtd -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



Весь трафик заворачиваем в прокси

iptables -t nat -A PREROUTING -p tcp -m tcp -s 10.20.2.0/24 --dport 443 -j REDIRECT --to-ports 3129
iptables -t nat -A PREROUTING -p tcp -m tcp -s 10.20.20.0/24 --dport 80 -j REDIRECT --to-ports 3128



Перезапускаем прокси

/etc/init.d/squid restart

 

 

Категория: Компьютерные сети

Кол-во просмотров: 14434

Дата создания: 8 октября 2015 г.

Теги: #linux