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

Фильтрация HTTPS-трафика с открытым исходным кодом

Мы используем настройку фильтрации / прокси, которая была настроена таким образом, чтобы около 500 пользователей были перенаправлены через систему на основе Unix, на которой запущен SQUID с SquidGuard, чтобы блокировать сомнительный контент и регистрировать действия пользователей. Мы обнаружили, что некоторые люди могли обойти блокировку, перейдя на бесплатные онлайн-прокси, использующие протокол HTTPS. Я не мог найти способ заблокировать трафик HTTPS, не отключив его полностью, что не сработало бы для закупок и HR (или обычных пользователей с банковскими сайтами).

Есть ли способ заблокировать или отфильтровать HTTPS-трафик с помощью SQUID / Squidguard? Или какие-то другие программы мониторинга с открытым исходным кодом? Как с этим справляются другие, не прибегая к коммерческой технике?

РЕДАКТИРОВАТЬ: мы не пытаемся смотреть трафик. Мы пытаемся контролировать URL-адреса и заблокируйте их по мере необходимости. Нам не нужны номера кредитных карт и тому подобное ... мы хотели знать, когда Джонни заходил https://schoolssucksoweproxyforyou.com/playboy.com, добавьте домен в блок-файл и запретите им делать это снова. Смотрите некоторые добавленные комментарии ниже ...

РЕДАКТИРОВАТЬ2: (Re: говоря о кадрах, банковском деле и т. Д.) Вы можете не думать об этом таким образом, но у нас есть человек, который занимается покупкой, наш район охватывает 7 зданий, разбросанных по округу, поэтому у нас есть кто-то, кто отвечает за Распространяя материалы и инвентарь, у нас есть те же люди, которые работают с проверочными и банковскими записями, у нас есть люди, отвечающие за профсоюзы для сотрудников, а другие за преподавателей, у нас есть люди, отвечающие за работу с кадровой информацией, такой как страхование, претензии по травмам и ответственность ... . Есть много вещей, связанных с управлением школами, о которых я не думаю, что широкая публика когда-либо задумывается. Кроме того, у нас действительно есть проблемы, когда считалось чрезмерным препятствовать тому, чтобы персонал / преподаватели использовали онлайн-банкинг, или даже студенты не могли получить доступ к определенным сайтам для онлайн-использования (например, веб-квесты), которые иногда требовали подключения SSL для работы, поэтому запрет HTTPS прямо на роутере было бы нереально.

В любом случае, переходя к вашему предложению о блокировке только определенных людей, я не видел способа интегрировать функциональность аутентификации для каждого пользователя; если бы учетные данные могли быть переданы Windows, чтобы пользователям не приходилось продолжать аутентификацию с помощью еще одного пароля, это было бы работоспособным решением, но все, что я нашел, было беспорядочным и не работало надежно. Затем возникает проблема с тем, чтобы люди запомнили еще один пароль (или студенты / сотрудники крадут / обмениваются паролями). Мне лично понравилось, что фильтрация выполняется справедливо по всем направлениям для сотрудников и студентов, вместо того, чтобы делать это проблемой учителей, которые могут делать X, в то время как ученики не считаются достаточным человеком, чтобы делать то же самое.

В конце концов, я не смог найти способ заставить сервер надежно аутентифицироваться в Active Directory (чтобы централизовать управление пользователями и уменьшить запоминание их паролей), или если бы я использовал другую схему аутентификации, это означало бы, что другая база данных будет синхронизироваться с ... какими, по последним подсчетам, ~ 1200 пользователей или около того? с высоким оттоком, потому что каждый год у нас есть дети, которые приезжают и из округа, заканчивают учебу и приходят новые? ...

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

Если вы внесете в белый список, у вас будет множество ложных срабатываний - банки, о которых вы не задумывались, полезные сайты, требующие HTTPS для входа или доступа и т. Д. Если вы внесете в черный список, у вас будет множество ложноотрицательных результатов - появляются новые прокси-сайты. каждую секунду.

Это то, что необходимо решать на политическом уровне, а не на техническом. Если у кого-то лентяйничать на порно-сайты на работе и с помощью прокси-серверов, чтобы обойти фильтры, HR должен быть порка их на руке и угрожает прекращение, если оно продолжается.

Вот очень уродливое решение, реализованное коммерческим поставщиком:

  • Замените сертификаты CA в браузерах на свои собственные

  • Когда запрашивается соединение с неизвестным адресом, прокси соединяется со своим собственным клиентом и получает сертификат сайтов.

  • Затем сгенерируйте поддельный сертификат для этого сайта, подписанный вашим собственным центром сертификации.

  • Затем прокси-сервер фактически действует как MITM (человек посередине).

Вы не можете сделать это со стандартным Squid, но мне потребовалось бы около дня взлома mod_perl, чтобы реализовать это с Apache.

Какое решение может заключаться в том, чтобы делать то, что иногда делают IRC-серверы, если они видят соединение с XXX.XXX.XXX.XXX, они попытаются подключиться к этому IP-адресу и посмотреть, является ли это открытым прокси-сервером, и если он блокирует этот IP-адрес.

Это самое близкое, что я могу придумать, было бы полностью автоматическим решением, но потребовало бы работы с вашей стороны. Это в сочетании с другими предложениями, касающимися белого списка или просто ручного просмотра журналов, чтобы увидеть, а затем проверить удаленный IP-адрес https и посмотреть, может ли его хостинг сайта быть единственным решением.

Вы должны НЕ отслеживайте содержимое HTTPS-трафика, даже если можете, используя методы «человек посередине». Это ослабит безопасность всего и просто разрушит смысл использования HTTPS в первую очередь. Однако вы можете отслеживать трафик HTTPS извне.

Например, вы можете знать, к каким сайтам они подключаются, потому что весь трафик HTTPS через веб-прокси использует метод CONNECT для инициирования, который является начальным битом, передаваемым в открытом виде. Эта информация может использоваться, чтобы помочь решить, разрешать или запрещать соединение.

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

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

Это является возможно, обязательно нужно добавить биты для squid2, но AFAIK squid3 сделает это из коробки. Как и некоторые коммерческие поставщики веб-фильтров. Атака в стиле MITM - вообще единственный способ.

Вам может понадобиться прокси http ssl, например DeleGate как прокси-сервер Man-In-The-Middle

РЕДАКТИРОВАТЬ: возможно, добавьте новый способ работы

Возможно, вы можете попробовать передать весь трафик на порт ssl, а затем запустить процесс, чтобы определить, является ли целевой сервер прокси-сервером ssl или нет (это можно обнаружить, если аутентификация не требуется), а затем заблокировать его.

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

Я знаю, что это старый вопрос, но я считаю, что вам следует использовать DNS-прокси. Таким образом, вы можете занести в черный список все нежелательные домены (будь то SSL или нет).

dnsmasq хорошо работает, например. Вы можете настроить его как прозрачный DNS-прокси. Существует дистрибутив Linux с открытым исходным кодом, который называется Endian Firewall. Вы можете использовать его для этого, и его ЧРЕЗВЫЧАЙНО легко настроить.

Что вы точно не сможете сделать без MITM, так это иметь отчеты о HTTPS-сайтах (сколько их посещали, как часто, кем и т. Д.).