@Zeitgeber
Сисадмин

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

Первое и самое важное, это то что нужно настроить именно прозрачный прокси, без необходимости каких либо манипуляций с браузером у сотрудников, потому как контора большая (есть ПК и на 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
  • Вопрос задан
  • 843 просмотра
Пригласить эксперта
Ответы на вопрос 4
CityCat4
@CityCat4
//COPY01 EXEC PGM=IEBGENER
без необходимости каких либо манипуляций с браузером у сотрудников

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

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

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

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

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

Все подробно уже описано, например тут: https://losst.ru/prozrachnyj-proksi-dlya-https-v-squid
Ответ написан
dimonchik2013
@dimonchik2013
non progredi est regredi
используй черный подход - делай как стиллеры делают, лошаре, конечно, придется скачать и запустить, но это можно виртуозно обыграть, а почту с корпоративной слать можно же

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

третьего не дано, ибо твой вопрос звучит как "как забить на SSL протокол Дартаньяну"
Ответ написан
Комментировать
@aroun
Возьмите готовое решение от dilaedele , оно чуть-чуть денег стоит но прозрачный прокси с красивыми админками, статами, графиками, гибкими ACL, антивирусной проверкой, кэшем и прочими плюшками стоит сильно больше чем несколько десятков баксов, которые они хотят за лицензию. Можно и на винду поставить и управлять через mmc-остнастку, можно на сервер. виртуалки у них готовые образы вроде тоже есть.

Я ставил примерно такую же схему как и у них только кустарно и без красивых админок (sams\sams 2 если кто знает) - помню сколько сил ушло на развертывание и отладку.

Советую также другие их репы глянуть, там много интересного.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы