Pull to refresh

Comments 46

хоть какое то решение но…
первая же в нем проверка… не учитывает что вообще то — на одном IP может быть более одного SSL-сайта (SNI в том числе для того и придуман), используют shared-хостинги и CDN
вторая же — в случае если сайт за CDN — даст ошибку
как пример — допустим у вас в логах посещение https://test.anatra.me/ — ваш скрипт скажет что это CloudFlare и все. а какой именно сайт воспользовался этой CDN — не скажет.

Я ожидал подобный комментарий. К сожалению, пока это единственный способ…
С чего такая уверенность?

http://www.squid-cache.org/Doc/config/logformat/
Changes to logformat in Squid-3.5:
New format code %credentials to log the client credentials token.

New format code %ssl::>sni to TLS client SNI sent to Squid.


В итоге

root@sar-proxy-01 squid]# cat squid.conf|grep log
logformat squid %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %[un %Sh/%<a %mt %ssl::>sni


и получаем в итоге чтото вроде этого
Заголовок спойлера



И просто парсер рихтуем, без хуизов и прочего
$re = "/(?<date>\\d+\\.\\d+)\\s+(?<responce_time>\\d+)\\s+(?<client>\\d+\\.\\d+\\.\\d+\\.\\d+)\\s+(?<miss>\\w+)\\/(?<code>\\d+)\\s+(?<size>\\d+)\\s+(?<method>\\w+)\\s+(?<url>[^\\s]*)\\s+(?<user>[^\\s]+)\\s+(?<hier>[^\\s]+)\\s+(?<mime>[^\\s]+)\\s+(?<sni>[^\\s]+)/m";  
preg_match_all($re, $log_file, $m);
А ничего, что у Вас в логах будет куча пробелов вместо доменных имен? Проверено на версии 3.5.8 еще в то время, когда статья про прозрачное проксирование не была выложена мной на Хабр
Почитай на досуге про регулярные выражения, и почему данная регулярка

\s*(\d)\s+(\d)


корректно выдернет числа из следующих записей

с пробелами и табуляцией
      2            4  

и без лишних пробелов
2 5

и в таком виде
2            2


если соединение было http, то там будет прочерк, в случае ssl — имя_хоста
да дело не в этом… многие ssl дают тоже прочерк. Ну это в моем случае. И не только у меня. И это именно с 3.5.8.
значит на хосте только один ssl сайт
Маленький патч для sams2
diff squidlogline.cpp ../squidlogline.cpp
225c225
< if (cnt_fields < 11)
---
> if (cnt_fields < 10)
230c230
< if (cnt_fields > 11)
---
> if (cnt_fields > 10)
257,266d256
< if (fields[10] == "-")
< {
< _url = fields[6];
<
< }
< else
< {
< if(cnt_fields==11)
< _url = fields[10];
< }



и sams2 нормально парсит логи
спасибо! срок голосования кончился, плюсанул бы
Огромное спасибо за данный комментарий. Исправил статистику на squidanalyzer подставив
logformat squid %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ssl::>sni %[un %Sh/%<a %mt

теперь все красиво

Странные люди сисадмины :)
Сначала изобретают SSL и прочих что бы скрыть то куда они ходят.
А потом изобретают вот такое :)
Ну, не совсем) мне не хочется знать, что там было внутри туннеля, а вот куда юзер заходил, очень даже хочется
Не скромный вопрос: для чего?
Все 'нормальные ' пользователи ходят по нужным сайтам с мобил планшетов.
Не у всех есть смартфон, планшет тем более. У нас целевая, так сказать, аудитория — именно такие люди, но все любят использовать корпоративный Интернет в личных целях. Это необходимо отслеживать. И это не прихоть сисадмина…
В свете последних законов — эта штука очень нужна, как бы не хотелось этим заниматься.
агент от DLP системы на компьютере пользователя решит проблемы с https, но естественно за деньги.
Речь идёт, во первых, о Squid, при чем здесь dlp? Тем более, что агенты ставятся на каждый пк, и довольно тормозят сам пк, и сеть. Во вторых, какие проблемы он решит?
агент будет получать данные до их шифрования
к тому же у вас основная цель, как я понял, узнать кто куда ходил, а не поиграться со squid…
А кто ему эти не шифрованные данные отдаст? Браузер?
Основная цель — узнать, кто куда ходил, и предотвратить дальнейшее посещение этих ресурсов. Поскольку, Squid настроен на прозрачное проксирование HTTPS, пользователи не могут влиять на мои наблюдения. Плюс ко всему, ПК лишний раз не нагружаются. Плюс ко всему, DLP вещь не дешевая, учитывая, сколько у меня в конторе ПК используется.
К тому же, разве DLP не использует MITM для HTTPS?
К тому же, разве DLP не использует MITM для HTTPS?

Это факт. FalconGaze делает именно так.
проверил на примере MyDLP. Как и все другие системы, оно требует, чтобы оно было шлюзом для клиентов, и использует MITM для контроля HTTPS сайтов, что не тру. Так что, данные системы — слишком жирно для того, чтобы отслеживать и блокировать HTTPS ресурсы. К тому же, цель — прозрачное проксирование без установки всяких агентов и т.п. И вообще, данная статья не про Squid, а про парсинг его логов
UFO just landed and posted this here
LightSquid не такой удобный, как Screen Squid. Сарг лично мне не нравится по многим причинам. По поводу Вашего способа блокировки. ДНС неплохо, но я для себя выбрал Squid = )
Плюс ко всему, у меня несколько контор завязаны между собой, и Кальмар здесь мне удобнее. У каждого свои предпочтения.
Но за коммент спасибо, как-нибудь попробую Ваш способ
Вместо whois используйте jwhois, а если все равно много проверок IP в сутки, то используйте whois.cymru.com.
Вопрос не по теме, но в прошлую тему «Прозрачный Squid» я не успел написать. Возможно как то задать правила no_proxy для squid. Нигде нормальной информации я так и не нашел. А то приходится вручную писать в браузере и софтинах no_proxy параметр.
Что Вы имеете в виду? Вы хотите, чтобы браузер и софтины ходили минуя прокси, который настроен на работу в прозрачном режиме?
задать правила по которым он на определенные адреса ходил бы не через прокси, например к адресам по локальной сети. Нет, браузер у меня смотрит на прокси от скивида, но чтобы он заходил на адреса локальной сети нужно дописывать --no_proxy=«patterns». Возможно ли задать их в правилах самого скида, а не для каждой программы, которая обращается к локальному сквиду?
А в чем проблема добавить всю Вашу подсеть в «белый список» и не применять ограничения? Для чего нужно то, о чем Вы написали?
вот, именно это и нужно, как добавить подсеть в белый список, а все что не находится в ней, пускать через прокси.
как организована Ваша локальная сеть? дело в том, что в Кальмаре нужно в начале настроек указывать обслуживаемые подсети. Укажите отдельно ту, которую нужно пускать без ограничений, и ограничьте применение правил прокси только на ту подсеть, к которой ограничения применять НУЖНО
Обычно белый список настраивается в броузере, чтобы БРОУЗЕР туда не ходит для local.loc & 10.0.0.0/8 а не на проксе
а теперь смотрите, у меня 9 приложений, требующих одних и тех же no-proxy адресов, что лучше, поменять в одном месте, либо лезть в настройки к каждому приложению?
Мы не принадлежность IP к сети смотрим, а тянем (по запросу) сертификат и смотрим его CN и Altnames. Все-таки эта информация точнее.
я бы тоже хотел получать более точную информацию, ведь Кальмар ее «выковыривает» (SNI server_name). Проблема в том, что он их не логирует, а при включении соответствующей опции в логформате, логирует не все, а только то, что блокирует. Остальное (splice) он не логирует в виде нормальных имен сервера, а оставляет прочерки. Это исправлено в более новых версиях… Но не могу, к сожалению, добавить изменения в исходники версии 3.5.8. А как у вас организовано «тянем (по запросу) сертификат и смотрим его CN и Altnames»?
Перловый скрипт на коленке, который прикручен к lightsquid. Надо посмотреть, что скрывается за IP — нажимаем. Т.е. в lightsquid-овских отчетах фигурирует IP адрес.
ясно, нам так не подходит… КОгда требуется множество отчетов в СБ сдавать, причем готовых…
Обновил статью! Теперь можно получать более корректную статистику за счет получения информации о сертификате https хоста
Черт возьми, я забыл про тот комментарий. Надо будет попробовать, я так думаю, крахи Кальмара исчезли именно из-за наложения патчей?
Не скажу про крахи, а вот вместо гуглопереводчика частенько выдавало белый лист плюс страшную запись в логе. Может, ещё дело в разрядности: у меня старенький пенёк х86, а у вас вроде 64.
Sign up to leave a comment.

Articles