Пробую использовать squid чтобы заблокировать некоторые адреса сайтов

Установка, обновление, настройка Linux

Модераторы: Olej, adminn

Muravev
Писатель
Сообщения: 28
Зарегистрирован: 07 окт 2019, 15:40
Контактная информация:

Пробую использовать squid чтобы заблокировать некоторые адреса сайтов

Непрочитанное сообщение Muravev » 31 дек 2020, 17:27

Нужно заблокировать некоторые скрипты, блокировка по домену устраивает, но не полностью.

Для этого в программе firefox можно было бы использовать расширения, не нравится слово "расширения", ну да ладно.

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

Что из этого получилось:

1. по инструкции https://losst.ru/prozrachnyj-proksi-dlya-https-v-squid я собрал squid с опциями "--enable-ssl --enable-ssl-crtd --with-openssl"

2. и дальше создал сертификаты, установил корневой der сертификат в программу firefox

Код: Выделить всё

mkdir /etc/squid/ssl
cd /etc/squid/ssl
sudo openssl genrsa -out /etc/squid/ssl/squid.key
sudo openssl req -new -key /etc/squid/ssl/squid.key -out /etc/squid/ssl/squid.csr
sudo openssl x509 -req -days 3650 -in /etc/squid/ssl/squid.csr -signkey /etc/squid/ssl/squid.key -out /etc/squid/ssl/squid.pem
sudo openssl x509 -in /etc/squid/ssl/squid.pem -outform DER -out squid.der
chown -R proxy:proxy /etc/squid/ssl
3. и дальше ввел, не знаю для чего команды iptables из той же инструкции

Код: Выделить всё

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3129
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 3130
4. файл настроек пробовал настраивать по разному, сейчас файл выглядит следующим образом

Код: Выделить всё

acl localnet src 0.0.0.1-0.255.255.255	# RFC 1122 "this" network (LAN)
acl localnet src 10.0.0.0/8		# RFC 1918 local private network (LAN)
acl localnet src 100.64.0.0/10		# RFC 6598 shared address space (CGN)
acl localnet src 169.254.0.0/16 	# RFC 3927 link-local (directly plugged) machines
acl localnet src 172.16.0.0/12		# RFC 1918 local private network (LAN)
acl localnet src 192.168.0.0/16		# RFC 1918 local private network (LAN)
acl localnet src fc00::/7       	# RFC 4193 local private network range
acl localnet src fe80::/10      	# RFC 4291 link-local (directly plugged) machines
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

# добавлено
acl blacklist url_regex -i "/etc/squid/blacklist"
acl whitelist url_regex -i "/etc/squid/whitelist"

http_access deny !Safe_ports
http_access allow CONNECT SSL_ports
http_access deny CONNECT !SSL_ports

# добавлено
#http_access allow whitelist
http_access deny blacklist

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


#iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3129
#iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 3130
http_port 3128
http_port 3129 intercept
https_port 3130 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid/ssl/squid.pem key=/etc/squid/ssl/squid.key

always_direct allow all
sslproxy_cert_error allow all
sslproxy_flags DONT_VERIFY_PEER

# добавлено
acl blacklist_ssl ssl::server_name_regex -i "/etc/squid/blacklist_ssl"
acl whitelist_ssl ssl::server_name_regex -i "/etc/squid/whitelist_ssl"

ssl_bump server-first all
ssl_bump none 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
Вопросы:

1. В программе firefox в разделе "Параметры сети" что нужно выбрать? "Без прокси" или "Автоматически определять" или "Использовать системные настройки" или "Указать вручную"

2. Команды iptables надо вводить или не надо? У меня после ввода команд, насколько я понял не происходит никаких изменений

Код: Выделить всё

sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination  
3. По нагрузке на компьютер, сквид мало потребляет ресурсов?

4. Возможно ли с помощью сквид заблокировать определенный скрипт, допустим https://домен/скрипт.js не блокируя весь домен?

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Пробую использовать squid чтобы заблокировать некоторые адреса сайтов

Непрочитанное сообщение Olej » 31 дек 2020, 19:08

Muravev писал(а):
31 дек 2020, 17:27
3. и дальше ввел, не знаю для чего команды iptables из той же инструкции

Код: Выделить всё

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3129
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 3130
80 и 443 - это порты, соответственно HTTP и HTTPS (защищённого) ... вы их редиректите на другие порты, 3129 и 3130
P.S. инструкцию вашу по ссылке я не читал ... недосуг мне в предновогоднюю ночь :lol: - но комментирую то, что видно "на вскидку".

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Пробую использовать squid чтобы заблокировать некоторые адреса сайтов

Непрочитанное сообщение Olej » 31 дек 2020, 19:12

Muravev писал(а):
31 дек 2020, 17:27
1. В программе firefox в разделе "Параметры сети" что нужно выбрать? "Без прокси" или "Автоматически определять" или "Использовать системные настройки" или "Указать вручную"
Если вы хотите коннект через кэширующий прокси squid, то вы обязательно должны указать в настройках браузера (любого, в том числе и Firefox) использование прокси, с указанием IP адреса прокси-сервере (127.0.0.1 в вашем случае, предполагаю) и порта (3129 и 3130 для HTTP и HTTPS, соответственно, как было выше сказано).

Я бы сделал это указав вручную (помучившись :lol: ) ... но можете попробовать (для начала) "Автоматически определять" - может оно и сможет найти.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Пробую использовать squid чтобы заблокировать некоторые адреса сайтов

Непрочитанное сообщение Olej » 31 дек 2020, 19:31

Muravev писал(а):
31 дек 2020, 17:27
4. файл настроек пробовал настраивать по разному, сейчас файл выглядит следующим образом
Файл настроек кого? squid?
Muravev писал(а):
31 дек 2020, 17:27
2. Команды iptables надо вводить или не надо? У меня после ввода команд, насколько я понял не происходит никаких изменений
Возиться с правилами для netflter, правилами iptables - дело муторное, там слишком много возможностей.
Там с правилами забодаться можно... :oops:
Может поможет вам (больше по ссылкам на русскоязычные описания):
правила iptables
firewalld & iptables

В принципе, вы вполне можете управлять сетевой фильтрацией с помощью ufw (Ubuntu надстройка для упрощённого управления iptables), может доустановить придётся стандартными средствами apt... это гораздо проще для ваших простых целей.
Тут у нас есть тема подробная: файервол ufw

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Пробую использовать squid чтобы заблокировать некоторые адреса сайтов

Непрочитанное сообщение Olej » 31 дек 2020, 19:49

Muravev писал(а):
31 дек 2020, 17:27
3. По нагрузке на компьютер, сквид мало потребляет ресурсов?
Squid конечно будет достаточно сильно (ощутимо, по крайней мере) нагружать компьютер.
Но есть целый ряд гораздо более лёгких HTTP прокси, например polipo, который любят использовать с TOR (сетью и браузером): легко установить (стандартно из репозитория), легко использовать...

Вот здесь у нас в теме TOR сеть есть подробное описание экспериментов с установкой, использованием и настройками polipo.

Там же есть картинки как вручную настраивать использование и параметры HTTP/HTTPS прокси в браузере.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Пробую использовать squid чтобы заблокировать некоторые адреса сайтов

Непрочитанное сообщение Olej » 31 дек 2020, 20:04

Muravev писал(а):
31 дек 2020, 17:27
3. и дальше ввел, не знаю для чего команды iptables из той же инструкции
С iptables без минимального понимания что оно и как делает - не совладаете! :lol:
Вот сдесь есть простейшее описание "на пальцах": НАСТРОЙКА IPTABLES ДЛЯ ЧАЙНИКОВ
Muravev писал(а):
31 дек 2020, 17:27
2. Команды iptables надо вводить или не надо? У меня после ввода команд, насколько я понял не происходит никаких изменений
Там же и про то, как сохранить правила iptables после перезагрузки:
Все настройки iptables, которые вы указали с помощью этих команд сохранятся только до перезагрузки. После перезагрузки компьютера все изменения будут стерты. Поэтому чтобы сохранить правила iptables, нужно выполнить специальную команду. Только в разных дистрибутивах она отличается.
Правила фильтра у вас должны присутствовать.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Пробую использовать squid чтобы заблокировать некоторые адреса сайтов

Непрочитанное сообщение Olej » 03 янв 2021, 22:59

Olej писал(а):
31 дек 2020, 19:49
Squid конечно будет достаточно сильно (ощутимо, по крайней мере) нагружать компьютер.
Если заботиться о нагруженности (разве что при очень большом потоке запросов ... или очень слабом процессоре, что-то типа Orange Pi / Rapsberry Py), то гораздо меньше нагрузку будет обеспечивать не HTTP/HTTPS прокси, а SOCKS 4/5, т.е. проксирование не на прикладном уровне сети, а на TCP.

P.S. Для очень больших нагрузок (потока автоматизированных запросов) я когда-то делал "проприетарный" :lol: прокси-фильтр соединений, функционирующий в ядре Linux (дистрибьютед прокси называют в литературе) ... для одного английского ... горе-учёного :lol: (я так понимаю на какую-то там "дигри") ... здесь даже тема есть где-то в форуме с описанием.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Пробую использовать squid чтобы заблокировать некоторые адреса сайтов

Непрочитанное сообщение Olej » 03 янв 2021, 23:14

Olej писал(а):
03 янв 2021, 22:59
P.S. Для очень больших нагрузок (потока автоматизированных запросов) я когда-то делал "проприетарный" прокси-фильтр соединений, функционирующий в ядре Linux (дистрибьютед прокси называют в литературе) ... для одного английского ... горе-учёного (я так понимаю на какую-то там "дигри") ... здесь даже тема есть где-то в форуме с описанием.
А вот и эта тема: Implementing a Distributed Firewall

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Пробую использовать squid чтобы заблокировать некоторые адреса сайтов

Непрочитанное сообщение Olej » 03 янв 2021, 23:16

Olej писал(а):
03 янв 2021, 22:59
Если заботиться о нагруженности (разве что при очень большом потоке запросов ... или очень слабом процессоре, что-то типа Orange Pi / Rapsberry Py), то гораздо меньше нагрузку будет обеспечивать не HTTP/HTTPS прокси, а SOCKS 4/5, т.е. проксирование не на прикладном уровне сети, а на TCP.
В принципе, простейший SOCKS-прокси для своих целей можно и самому себе создать ... вот как я для кого-то делал и здесь описано: программирование SOCKS5 обмена

Muravev
Писатель
Сообщения: 28
Зарегистрирован: 07 окт 2019, 15:40
Контактная информация:

Re: Пробую использовать squid чтобы заблокировать некоторые адреса сайтов

Непрочитанное сообщение Muravev » 10 янв 2021, 12:49

Идею использовать прокси для фильтрации видимо придется забыть, потому что:
1. фильтровать по урл можно в фирефокс, но установив доп екстеншн, а фильтрующий екстеншн лихо вешает комп с 2 ядрами по 3 ггц
2. я подумал, что с учетом распространенности яндекс.метрики, у меня сайты с метрикой грузятся на 10 секунд дольше, чем без неё, фильтрация урл должна быть встроена в любой нормальный браузер, но ее нет ни в фирефокс, ни в хромиум, ни в яндекс.браузер
3. если фильтровать через сквид, то как я понял надо платить разработчику сквид, может за 200-300 баксов и сделает фильтр по урл, но мне проще продать старый комп за 2000 руб и купить помощнее за 4000 руб.
4. на одном из сайтов я нашел решение фильтровать через сквид + сслстрип (преобразует https => http), но как я понял 2 программы будут грузить комп также или даже сильнее, чем доп екстеншн в фирефокс

Ответить

Вернуться в «Администрирование Linux»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей