Назад | Перейти на главную страницу

прозрачные мифы и факты о SSL-прокси

Я уже много часов искал способ настроить прозрачный прокси для SSL (не Squid). Общий ответ: я не могу, но я знаю есть несколько способов, хотя. Моя цель только следующая:

  1. Черный список / белый список доменных имен (не IP-адресов). Контент вообще не будет фильтроваться или изменяться.
  2. Заставляйте пользователей просматривать эти списки. Если я изменю такие настройки в веб-браузерах, они могут просто отменить их.

На следующей странице говорится, что я могу передавать трафик без изменений, но не сказано, как именно: Iptables https прозрачный прокси с Privoxy?

На следующей странице показано правило iptables для 443, которое я сам не смог заставить работать: http://alien.slackbook.org/dokuwiki/doku.php?id=slackware:proxy

На следующей странице рассказывается, как заставить это работать только с Squid: http://www.rahulpahade.com/content/squid-transparent-proxy-over-ssl-https

РЕДАКТИРОВАТЬ: Один человек говорит здесь: Как мне использовать IPTABLES для создания сквозной передачи HTTPS (443) вокруг Squid? «Лучшее, что вы можете сделать, это заблокировать прямой доступ к порту 443 и сообщить вашим пользователям, что если они хотят использовать HTTPS, они должны настроить свой браузер для использования прокси». Но я просто знаю, как полностью заблокировать 443, чтобы тогда он не работал под прокси.

Если вы хотите отфильтровать доменные имена, у вас есть два возможных способа: вы можете взять имя из метода CONNECT, выданного клиентом, если он знает, что он должен использовать прокси-сервер для соединений HTTPS, и отфильтровать его (Squids поддерживает это Кстати). Или, если вы действительно действительно нужно сделать это прозрачно, вам нужно будет изучить (зашифрованные) заголовки запроса.

Если вы хотите видеть зашифрованные заголовки запросов, вам нужен ключ. Если вы хотите иметь ключ, вам нужен сертификат, который: а) доверяет клиенту как «правильный» сертификат и б) удостоверяет все возможные хосты (подстановочные знаки - все).

Итак, что вам нужно сделать, это

  1. настроить сертификат для вашего прокси. Как это сделать, зависит от вашего программного обеспечения - вы можете использовать станнель чтобы разорвать SSL-соединение на стороне прокси, установите за ним некоторый фильтрующий HTTP-прокси и повторно установите SSL для всего исходящего трафика, используя iptables DNAT target и снова stunnel. Также могут быть "коробочные" решения для проксирования MitM SSL.
  2. установите вышеупомянутый сертификат на всех ваших клиентах, которые будут использовать прокси

В основном, если вам нужно прозрачное прокси, это связано с тем, что вы не хотите или не можете перенастраивать клиентов для использования прокси. Если это относится и к вашему запросу, у вас, вероятно, не будет возможности устанавливать сертификаты на клиентов и отмечать их как «доверенные». Так что даже несмотря на то, что существует технический способ прозрачного SSL-проксирования, я подозреваю, что вы выиграете не так много.

Я знаю, что это старый вопрос, но если OP хочет только внести в черный / белый список определенные доменные имена, им вообще не нужно использовать прокси, они могут просто использовать черный список на основе DNS.

  • настройте свои локальные DNS-серверы, чтобы возвращать 127.0.0.1 для любого домена, который вы хотите внести в черный список
  • на вашем интернет-шлюзе заблокируйте все IP-адреса, кроме ваших DNS-серверов, от доступа к портам TCP / UDP 53, поэтому только ваши DNS-серверы могут делать DNS-запросы с интернет-серверов.

Любой другой домен будет разрешен. Весь веб-трафик SSL или иным образом будет проходить через шлюз без изменений.

Редактировать: Поскольку OP готов заставить пользователей просматривать свои списки, он может заблокировать другие методы доступа к DNS. Таким образом, если пользователь попытается использовать один из этих заблокированных методов DNS, веб-сайты просто не будут работать. он же 'Мой путь или шоссе'

Для DNS-over-HTTPS, упомянутого @wheeler, вы можете просто заблокировать регулярные поисковые запросы DNS на такие сайты, как https://dns.google.com и https://cloudflare-dns.com/dns-query и https://doh.cleanbrowsing.org/doh/family-filter/. Хотя это быстро станет неприемлемым, так как все больше и больше услуг будут подключены к сети.

Вам также может понадобиться способ блокировки типов MIME, таких как application / dns-udpwireformat, для других разрабатываемых методов DNS.

Делегат может работать как Человек посередине прокси для HTTPS.

Для прозрачного режима Встроенный IPS (Suricata, Snort) система может помочь вам заблокировать ssl-сайты.

https://redmine.openinfosecfoundation.org/projects/suricata/wiki/Setting_up_IPSinline_for_Linux

Блокировать правила SSL-сайта для конкретного пользователя:

drop ip any 443 -> 192.168.3.x any (content:".facebook.com"; msg:"Simplewall block facebook.com  ";sid:7;rev:1;)

drop ip any 443 -> 192.168.3.204 any (content:".youtube"; msg:"Simplewall block youtube.com" ;sid:4;rev:1;)

Блокировать правила загрузки файлов на основе расширений:

drop ip any any -> 192.168.3.63 any (msg:"File exe block"; fileext:"exe"; filestore ;sid:1;rev:1;)

drop ip any ssl -> 192.168.3.63 any (msg:"File mp3 block"; fileext:"mp3"; filestore ;sid:11;rev:1;)

drop ip any ssl -> 192.168.3.63 any (msg:"File pdf block"; fileext:"pdf"; filestore ;sid:21;rev:1;)

Попробуйте это с SimpleWall

Очень просто добавить правило блокировки с помощью веб-интерфейса Simplewall.

Вы также можете добавить правила в Simplewall => Content Filter используйте те же правила для IPS вместе с фильтром содержимого http.