Комментарии 46
хоть какое то решение но…
первая же в нем проверка… не учитывает что вообще то — на одном IP может быть более одного SSL-сайта (SNI в том числе для того и придуман), используют shared-хостинги и CDN
вторая же — в случае если сайт за CDN — даст ошибку
как пример — допустим у вас в логах посещение https://test.anatra.me/ — ваш скрипт скажет что это CloudFlare и все. а какой именно сайт воспользовался этой CDN — не скажет.
первая же в нем проверка… не учитывает что вообще то — на одном IP может быть более одного SSL-сайта (SNI в том числе для того и придуман), используют shared-хостинги и CDN
вторая же — в случае если сайт за CDN — даст ошибку
как пример — допустим у вас в логах посещение https://test.anatra.me/ — ваш скрипт скажет что это CloudFlare и все. а какой именно сайт воспользовался этой CDN — не скажет.
Я ожидал подобный комментарий. К сожалению, пока это единственный способ…
С чего такая уверенность?
http://www.squid-cache.org/Doc/config/logformat/
В итоге
и получаем в итоге чтото вроде этого
И просто парсер рихтуем, без хуизов и прочего
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
https://regex101.com/r/mR7iO2/1
если соединение было http, то там будет прочерк, в случае ssl — имя_хоста
да дело не в этом… многие ssl дают тоже прочерк. Ну это в моем случае. И не только у меня. И это именно с 3.5.8.
значит на хосте только один ssl сайт
Маленький патч для sams2
и 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 и прочих что бы скрыть то куда они ходят.
А потом изобретают вот такое :)
Сначала изобретают SSL и прочих что бы скрыть то куда они ходят.
А потом изобретают вот такое :)
Ну, не совсем) мне не хочется знать, что там было внутри туннеля, а вот куда юзер заходил, очень даже хочется
Не скромный вопрос: для чего?
Все 'нормальные ' пользователи ходят по нужным сайтам с мобил планшетов.
Все 'нормальные ' пользователи ходят по нужным сайтам с мобил планшетов.
В свете последних законов — эта штука очень нужна, как бы не хотелось этим заниматься.
агент от DLP системы на компьютере пользователя решит проблемы с https, но естественно за деньги.
Речь идёт, во первых, о Squid, при чем здесь dlp? Тем более, что агенты ставятся на каждый пк, и довольно тормозят сам пк, и сеть. Во вторых, какие проблемы он решит?
агент будет получать данные до их шифрования
к тому же у вас основная цель, как я понял, узнать кто куда ходил, а не поиграться со squid…
к тому же у вас основная цель, как я понял, узнать кто куда ходил, а не поиграться со squid…
А кто ему эти не шифрованные данные отдаст? Браузер?
Основная цель — узнать, кто куда ходил, и предотвратить дальнейшее посещение этих ресурсов. Поскольку, Squid настроен на прозрачное проксирование HTTPS, пользователи не могут влиять на мои наблюдения. Плюс ко всему, ПК лишний раз не нагружаются. Плюс ко всему, DLP вещь не дешевая, учитывая, сколько у меня в конторе ПК используется.
К тому же, разве DLP не использует MITM для HTTPS?
К тому же, разве DLP не использует MITM для HTTPS?
проверил на примере MyDLP. Как и все другие системы, оно требует, чтобы оно было шлюзом для клиентов, и использует MITM для контроля HTTPS сайтов, что не тру. Так что, данные системы — слишком жирно для того, чтобы отслеживать и блокировать HTTPS ресурсы. К тому же, цель — прозрачное проксирование без установки всяких агентов и т.п. И вообще, данная статья не про Squid, а про парсинг его логов
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 а не на проксе
Мы не принадлежность IP к сети смотрим, а тянем (по запросу) сертификат и смотрим его CN и Altnames. Все-таки эта информация точнее.
я бы тоже хотел получать более точную информацию, ведь Кальмар ее «выковыривает» (SNI server_name). Проблема в том, что он их не логирует, а при включении соответствующей опции в логформате, логирует не все, а только то, что блокирует. Остальное (splice) он не логирует в виде нормальных имен сервера, а оставляет прочерки. Это исправлено в более новых версиях… Но не могу, к сожалению, добавить изменения в исходники версии 3.5.8. А как у вас организовано «тянем (по запросу) сертификат и смотрим его CN и Altnames»?
Обновил статью! Теперь можно получать более корректную статистику за счет получения информации о сертификате https хоста
Попробуйте 3.5.13 https://habrahabr.ru/post/267851/#comment_8793751 Работает полгода, не падает, в логах всё отрезолвлено, кроме сайтов из чёрного списка.
Черт возьми, я забыл про тот комментарий. Надо будет попробовать, я так думаю, крахи Кальмара исчезли именно из-за наложения патчей?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Доработка парсера логов Squid для корректного просмотра посещенных HTTPS ресурсов