Как настроить прозрачный прокси на Squid?



@Zeitgeber

Первое и самое важное, это то что нужно настроить именно прозрачный прокси, без необходимости каких либо манипуляций с браузером у сотрудников, потому как контора большая (есть ПК и на Linux и на Wundows), второе это то что нет необходимости глубоко лезть в трафик, нужно про кто куда заходит, то есть на какие сайта заходят сотрудники. С HTTP всё ок, работает и в прозрачном и в не прозрачном режиме. А вот HTTPS работает только если указать прокси в настройках браузера.
Я перепробовал уже кучу вариантов, и с сертификатами и без. Последний вариант, когда в прозрачном режиме, браузер открывает только http, squid пишет логи, sarg все это отображает. А, https при завороте его на squid перестаёт работать.
Браузер выдаёт ошибку: ssl_error_rx_record_too_long
Про неё много пишут, если поискать, но подходящего решения так и не нашёл.
В логах squid вот такая ошибка: NONE_NONE/400 3642 — error:invalid-request — HIER_NONE/- text/html при попытке открыть что либо по https.
При этом http открывается и вот так отображается в логах squid (например): TCP_MISS_ABORTED/000 0 GET kakoysegodnyadennedeli.ru/favicon.ico — ORIGINAL_DST/81.176.226.68 —
В общем буду раз любым предложениям и рекомендациям.

Сейчас остановился вот на таком конфиге Squid

spoiler

root@squid:/etc/squid# cat squid.conf | grep -v «^#» | grep -v «^$»
acl localnet src 10.168.0.0/24 # 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
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 3129
http_port 3128 transparent
#intercept тоже пробовал

coredump_dir /var/cache/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

И вот такой iptables

spoiler

root@squid:/etc/squid# iptables-save
# Generated by iptables-save v1.8.7 on Thu Sep 8 16:27:33 2022
*filter
:INPUT DROP [89894:18307366]
:FORWARD DROP [172:200195]
:OUTPUT ACCEPT [53544:27055027]
-A INPUT -p tcp -m tcp —dport 22 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -m state —state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -s 10.168.0.0/24 -p tcp -m multiport —ports 53 -j ACCEPT
-A INPUT -s 10.168.0.0/24 -p udp -m multiport —ports 53 -j ACCEPT
-A INPUT -s 10.168.0.0/24 -p udp -m multiport —ports 80 -j ACCEPT
-A INPUT -s 10.168.0.0/24 -p tcp -m multiport —ports 80 -j ACCEPT
-A INPUT -s 10.168.0.0/24 -p tcp -m multiport —ports 3128 -j ACCEPT
-A FORWARD -m state —state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p icmp -j ACCEPT
-A FORWARD -s 10.168.0.0/24 -p tcp -m multiport —ports 110,5190,25,21 -j ACCEPT
-A FORWARD -s 10.168.0.0/24 -p tcp -m multiport —ports 443,80,8080 -j ACCEPT
COMMIT
# Completed on Thu Sep 8 16:27:33 2022
# Generated by iptables-save v1.8.7 on Thu Sep 8 16:27:33 2022
*nat
:PREROUTING ACCEPT [955122:800367290]
:INPUT ACCEPT [5033:333707]
:OUTPUT ACCEPT [1669:160742]
:POSTROUTING ACCEPT [1668:159242]
-A PREROUTING -s 10.168.0.0/24 -p tcp -m multiport —dports 80,8080 -j REDIRECT —to-ports 3128
-A PREROUTING -s 10.168.0.0/24 -p tcp -m tcp —dport 443 -j DNAT —to-destination 10.168.0.1:3128
(два разных варианта, пробовал оба для 443 порта)
-A POSTROUTING
-A POSTROUTING -s 10.168.0.0/24 -j MASQUERADE
(-A POSTROUTING -p tcp -m tcp —dport 443 -j MASQUERADE — пробовал добавить, не помогло, потом убрал)
COMMIT
# Completed on Thu Sep 8 16:27:33 2022


Решения вопроса 0


Ответы на вопрос 3



@CityCat4

без необходимости каких либо манипуляций с браузером у сотрудников

нужно про кто куда заходит

Данная задача не имеет решения.

Чтобы раскрывать https-соединения, нужен bumping. Bumping не настроить без доверенного сертификата. Довернный сертификат нужно распространять по всем компьютерам. Первое условие — оно ведь на самом деле читается как «я не хочу заниматься инструктированием юзеров/я не умею настраивать глобальные политики/у меня нет авторитета и юзера меня шлют на … юг», потому что какая бы ни была большая контора — все это делается достаточно быстро — если конечно на это есть распоряжение начальства, а не собственная хотелка.

Технического решения нет, потому что задача не техническая, а административная.



@bigov

Вам следует вначале разобраться с тем, как работает HTTPS протокол. Тогда и прокси сможете настроить. Сразу огорчу, без манипуляции на компьютерах сотрудников сделать не получится — надо будет всем установить доверенный сертификат чтобы иметь возможность перенаправлять трафик.

В кратце схема работает так: запрос на внешний сайт пренаправляется на проси, расшифровывается, и прокси устанавливает от вашего имени соединение с внешним сайтом. Обратно пакеты проходят аналогичное преобразование — Сквид представляется браузеру клиента как внешний сайт и отдает полученный ранее контент.

Все подробно уже описано, например тут: https://losst.ru/prozrachnyj-proksi-dlya-https-v-squid



@dimonchik2013

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

второй варик — не е*ать мозги, сделать базу реверс DNS для каких IP получится, и вести базу «кто куда ходит» исходя из этого

третьего не дано, ибо твой вопрос звучит как «как забить на SSL протокол Дартаньяну»

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

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