Как настроить прозрачный прокси на 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 не будет опубликован.