Настройка прокси сервера Squid 3.3 на Ubuntu Server 14.04 LTS. Часть 9. Конфигурация LightSquid

imageВ этой части мы рассмотрим инструмент разбора логов Squid3 и построения отчетов о пользовательской активности в Интернет – LightSquid 1.8. LightSquid по сути своей является набором Perl-скриптов, выполняющих анализ лог-файлов access.log* и способных на основе данных этого анализа строить HTML-отчёты. Выбор именно этого инструмента был сделан после ряда сравнительных экспериментов в контексте сопоставления функциональности с другими программами выполняющими аналогичные задачи.

Немного предыстории. Поначалу я было уцепился за SARG, так как по истории выхода версий было предположено, что этот продукт развивается активней своих аналогов. Однако после его настройки и нескольких дней использования стали очевидны его недостатки, главным из которых оказался размер генерируемых отчетов даже при самых скромных настройках конфигурации. Размер ежедневного отчета сливаемого SARG на диск при количестве ~800 пользователей (не одновременно работающих, а в целом за день) составлял 1,2 – 1,5GB. Стало понятно, что если выпустить всех пользователей через Squid и рассчитывать при этом на хранение отчётов минимум за 3 месяца потребуется приличная дисковая ёмкость. LightSquid оказался в этом плане многократно скромнее при почти той-же функциональности отчетов, да ещё и выгодно отличился скоростью обработки access-лога.

Установка и базовая настройка LightSquid

Итак, перейдём к установке и настройке LightSquid 1.8 на Ubuntu Server 14.04 LTS. Для начала посмотрим какая версия пакета нам доступна из репозиториев Ubuntu и какие имеет зависимости:

sudo apt-cache show lightsquid

Package: lightsquid
Priority: extra
Section: universe/admin
Installed-Size: 305
Maintainer: Ubuntu Developers 
Original-Maintainer: TANIGUCHI Takaki 
Architecture: all
Version: 1.8-4
Depends: perl, libtime-local-perl, libdbi-perl, libgd-gd2-perl, apache2 | httpd
Filename: pool/universe/l/lightsquid/lightsquid_1.8-4_all.deb
Size: 64644
MD5sum: 6bc706cc952d2ba08b7ee4dcd9a17cd4
SHA1: ebbc82f4a854f09eb591dd11b9796e607b4474fa
SHA256: 909f29fd074419a2f3ceb20549485537c11f81fe6d050c222a36c4168b5a8590
Description-en: Lite and fast log analizer for squid proxy
 If you use SQUID, some time your want see how your user eat traffic.
 Lightsquid analyses SQUID's log file. You could see graphical reports
 through the web CGI. The reports show per user data and per site data.
 It is easy to customize output HTML.
Description-md5: 0e088b5215832ae8860ffd012b174362
Homepage: http://lightsquid.sourceforge.net/
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu

Устанавливаем:

sudo apt-get install lightsquid

Сохраняем используемый по умолчанию конфигурационный файл и открываем исходный файл на редактирование:

sudo cp /etc/lightsquid/lightsquid.cfg /etc/lightsquid/lightsquid.cfg.default
sudo nano -Y sh /etc/lightsquid/lightsquid.cfg

Редактируем (выведено содержимое конфигурационного файла без комментариев):

sudo cat /etc/lightsquid/lightsquid.cfg | grep -v  "^#"
$cfgpath             ="/etc/lightsquid";
$tplpath             ="/usr/share/lightsquid/tpl";
$langpath            ="/usr/share/lightsquid/lang";
$reportpath          ="/var/lib/lightsquid/report";
$logpath             ="/var/log/squid3";
$ip2namepath         ="/usr/share/lightsquid/ip2name";
$lockpath            =$reportpath;
$maxlocktime         = 30*60;
$debug               = 0;
$debug2              = 0;
$squidlogtype        = 0;
$skipurl             = 'zzz\.zzz';
$ip2name="UsersAndHostnames";
%month2dec = ( Jan => 1, Feb => 2, Mar => 3, Apr => 4, May => 5,Jun => 6,
               Jul => 7, Aug => 8, Sep => 9, Oct => 10, Nov => 11,Dec => 12);
$timereport          = 1;
$lang                ="ru-utf8";
$templatename        ="base";
$DecOutType="fine";
$decdelimiter        = " ";
$showgrouplink       = 1;
$showgroupid         = 1;
$showoversizelink    = 1;
$showputpost         = 1;
$putpostwarninglevel =15;
$userealname         = 1;
$bigfilelimit        = 2*1024*1024;
$perusertrafficlimit = 1*1024*1024*1024;
$weekendmode="both";
$topsiteslimit       = 500;
$usertimelimit       = 200;
$graphreport         = 1;
$graphmaxuser=0.05*(1024*1024*1024);
$graphmaxall =0.80*(1024*1024*1024);
$barcolor="orange";

sub CreateGroupFile($) {
  my $path=shift;

  open Fi,"<$cfgpath/group.cfg";
  open Fo,">$path/.group";
  while (<Fi>) {
    print Fo $_;
  }
  close Fo;
  close Fi;
}

sub CreateRealnameFile($) {
  my $path=shift;

  open Fi,"<$cfgpath/realname.cfg";
  open Fo,">$path/.realname";
  while (<Fi>) {
    print Fo $_;
  }
  close Fo;
  close Fi;
}

 

Файл преобразований имён LightSquid - ip2name

В переменной $ip2name указывается расширение файла описывающего схему отображения имён пользователей и компьютеров в генерируемых отчётах. Все возможные варианты таких файлов можно найти в каталоге, который указан в переменной $ip2namepath. После изучения всех доступных вариантов стало понятно, что каждый из них имеет свои недостатки, поэтому был создан собственный файл ip2name.UsersAndHostnames, который преобразует IP адреса компьютеров (запросы к прокси без аутентификации) в понятные имена (из DNS), а имена аутентифицированных пользователей отображает в виде логинов. Создадим такой файл:

sudo nano -Y sh /usr/share/lightsquid/ip2name/ip2name.UsersAndHostnames

Наполним его содержимым:

#contributor: crux
#do nothing
#simple version

use Socket;

sub StartIp2Name() {
}

sub Ip2Name($$$) {
  # $Lhost,$user,$Ltimestamp
  my ($ip, $user) = @_;
  return $user if $user ne "-";
  if (!defined $hIP{$ip}) {

    my $iaddr = inet_aton($ip);
    my $user  = scalar gethostbyaddr($iaddr, AF_INET);
    $user =~ s/\..+$// if defined $user;
    $user = uc($user) if defined $user;

    # if gethostbyaddr failed to get host, use ip
    $user = $ip unless defined $user;

    $hIP{$ip}=$user;
  }
  return $hIP{$ip};

}

sub StopIp2Name() {
}

#warning !!!
1;

 

Файл сопоставлений имён LightSquid - realname.cfg

При генерации отчётов по пользователям включенный параметр $userealname подразумевает добавление дополнительной колонки в которой будет отображаться полное имя (Ф.И.О.) пользователя. В нашем случае в анализируемом логе прокси-сервера access.log информация об аутентифицированных пользователях отображается в виде доменных логинов, и для того чтобы заполнить в отчётах LightSquid колонку с полным именем во время генерации этих отчётов используется специальный вспомогательный файл сопоставлений - /etc/lightsquid/realname.cfg. Каждая строка этого файла может содержать пару значений по принципу: <Что искать> <Чему соответствует>. Таким образом, если мы хотим в отчетах получить заполненной колонку с ФИО, - нужно наполнить файл сопоставлений, например:

artur Артур Вахтангович Пирожков
anov1 Алексей Сигизмундович Новацкий

Чтобы автоматизировать процесс заполнения и поддержания в актуальном состоянии этого файла создадим bash-скрипт, который будет при запуске очищать содержимое файла, а затем наполнять его информацией полученной из Active Directory (AD). Скрипт сделаем исполняемым и откроем на редактирование:

sudo touch /etc/lightsquid/realname-generate.sh
sudo chmod +x /etc/lightsquid/realname-generate.sh
sudo nano -Y sh /etc/lightsquid/realname-generate.sh

Наполним скрипт содержимым (не забываем изменить переменную groupdn):

#!/bin/bash

rnfile="/etc/lightsquid/realname.cfg";
groupdn="CN=KOM-Internet-AllUsers,OU=Security Groups,OU=KOM,DC=holding,DC=com";

if [ -f $rnfile ];then
   sudo rm $rnfile
fi
sudo touch $rnfile;

for i in `sudo net ads search "(&(objectclass=person)(memberOf:1.2.840.113556.1.4.1941:=$groupdn))" samAccountName -P | grep "^sAMAccountName:" | sed "s/^sAMAccountName: //"`;
do
        login_low=`echo $i | tr "[:upper:]" "[:lower:]"`;
        full_name=`sudo net ads search "(sAMAccountName=$login_low)" name -P | grep "^name:" | sed "s/^name: //"`;
        echo "$login_low   $full_name" >> $rnfile;
done
#

Обратите внимание на то, что поиск пользователей в AD производится по их членству в доменной группе безопасности KOM-Internet-AllUsers, которую мы создали ранее в одной из предыдущих частей.

Немного позже мы вернёмся к этому скрипту, чтобы настроить его периодическое выполнение через планировщик Cron.

 

Языковой файл LightSquid

Теперь настало время объяснить почему в переменной $lang конфигурационного файла lightsquid.cfg у нас указано значение ru-utf8, хотя в поставке LightSquid нет такого языкового файла в каталоге указанном в переменной $langpath (/usr/share/lightsquid/lang/). Дело в том, что если мы будем использовать любой из предложенных ru*.lng файлов, то можем нарваться на ситуацию когда данные из файла сопоставлений realname.cfg не состыкуются по используемой кодировке с кодировкой языкового файла LightSquid. Так как в нашем случае в системе по умолчанию используется кодировка UTF-8, то и генерируемый файл realname.cfg будет содержать данные в этой кодировке, и чтобы не было разночтений с языковым файлом LightSquid сделаем свой языковой файл, сконвертировав его из уже имеющегося, после чего откроем получившийся файл на редактирование:

sudo iconv -f cp1251 -t utf8 /usr/share/lightsquid/lang/ru.lng -o /usr/share/lightsquid/lang/ru-utf8.lng
sudo nano -Y sh /usr/share/lightsquid/lang/ru-utf8.lng

Изменим одну строчку в начале файла указав его кодировку:

MSG_CODEPAGE=UTF-8

 

Интеграция LightSquid с веб-сервером Apache2

Теперь настало время интегрировать LightSquid в ранее установленный веб-сервер Apache2. Для этого к основной конфигурации Apache2 можно подключить конфигурационный модуль /etc/apache2/conf-available/lightsquid.conf. Как всегда сохраним копию и откроем исходный файл на редактирование:

sudo cp /etc/apache2/conf-available/lightsquid.conf /etc/apache2/conf-available/lightsquid.conf.default
sudo nano -Y sh /etc/apache2/conf-available/lightsquid.conf

Изменённое содержимое файла будет таким:

Alias   /lightsquid/    /usr/lib/cgi-bin/lightsquid/

<Location "/lightsquid/">
        AddHandler cgi-script .cgi
        Require all granted
</Location>

Подключаем этот конфигурационный модуль к основной конфигурации веб-сервера:

sudo a2enconf lightsquid

Enabling conf lightsquid.
To activate the new configuration, you need to run:
  service apache2 reload

При этом в каталоге /etc/apache2/conf-enabled/ (который в свою очередь обрабатывается из главного файла /etc/apache2/apache2.conf) будет создан линк на /etc/apache2/conf-available/lightsquid.conf

ls -la /etc/apache2/conf-enabled/lightsquid.conf
lrwxrwxrwx 1 root root 33 Jun 20 16:33 /etc/apache2/conf-enabled/lightsquid.conf -> ../conf-available/lightsquid.conf

***

Так как веб-страницы LightSquid формируются cgi-скриптами, для веб-сервера Apache2 потребуется включить модуль обработки CGI (будет создан линк в каталоге /etc/apache2/mods-enabled/):

sudo a2enmod cgi
Enabling module cgi.
To activate the new configuration, you need to run:
  service apache2 restart

***

После проделанных изменений перезагружаем конфигурацию веб-сервера Apache2 :

sudo service apache2 reload
 * Reloading web server apache2  *
 *

 

Генерация  отчетов

Теперь можно попробовать выполнить генерацию отчетов LightSquid:

sudo /usr/share/lightsquid/lightparser.pl

Результат проверяем открыв соответствующий URL http://kom-ad01-squid.holding.com/lightsquid/

 

Исправление ошибки деления на 0

При первой же попытке генерации отчетов LightSquid нами была обнаружена ошибка – для некоторых пользователей/компьютеров с минимальным объёмом трафика отчёт отображался в виде пустой страницы. При этом в логе веб-сервера /var/log/apache2/error.log фиксировалась запись:

[Wed Jun 25 13:03:53.828886 2014] [cgi:error] [pid 53614] [client 10.160.100.100:52121] AH01215: Illegal division by zero at /usr/lib/cgi-bin/lightsquid/user_detail.cgi line 91.

Указанная проблема воспроизводится LightSquid 1.8 в том, случае случае если пользователь интернета имел какой-то минимальный трафик, и весь этот трафик попал к нему из кэша.

Чтобы исправить эту проблему, создаём файл патча:

sudo nano -Y sh /usr/lib/cgi-bin/lightsquid/user_detail.cgi.patch

…и наполняем его с содержимым:

# When user have only 'hit' traffic, $calculatedtotal become zero
# and script die with "Illegal division by zero" error
--- user_detail.cgi~    2014-06-25 13:26:16.576149494 +0400
+++ user_detail.cgi 2014-06-25 13:25:58.108485852 +0400
@@ -88,7 +88,7 @@
   $hit=$h{$site}{hit};
   $size=$h{$site}{size};
   $total+=$size;
-  $percent   =sprintf("%2.1f",int($size*1000/$calculatedtotal)/10);
+  $percent   =$calculatedtotal?sprintf("%2.1f",int($size*1000/$calculatedtotal)/10):'&infin;';
   $printhit  =FineDec($hit);
   $printsize =FineDec($size);
   $printtotal=FineDec($total);
@@ -145,4 +145,4 @@
 2006-06-28 ADD : die -> MyDie
 2006-06-28 ADD : &tpl= support
 2006-09-13 ADD : add &user= in bigfiles URL
-2006-11-20 ADD : /g for ##SITEURL_B## & ##SITEURL_L##, my need in some cases
\ No newline at end of file
+2006-11-20 ADD : /g for ##SITEURL_B## & ##SITEURL_L##, my need in some cases

Патчим предварительно сохранив оригинальный файл user_detail.cgi

cd /usr/lib/cgi-bin/lightsquid/
sudo cp user_detail.cgi user_detail.cgi.default
sudo patch user_detail.cgi user_detail.cgi.patch
patching file user_detail.cgi

 

Автоматизация обработки логов Squid

Перенесём файл описывающий правила ротации логов Squid для Logrotate в отельное месторасположение, например в каталог с конфигурационными файлами Squid.

sudo mv /etc/logrotate.d/squid3 /etc/squid3/squid.logrotate

Отредактируем файл squid.logrotate, немного увеличив срок хранения логов, убрав упоминания о SARG и расширив postrotate:

sudo nano -Y sh /etc/squid3/squid.logrotate

Изменённое содержимое файла будет таким:

#
#       Logrotate fragment for squid3.
#
/var/log/squid3/*.log {
        daily
        compress
        delaycompress
        rotate 3
        missingok
        nocreate
        sharedscripts
        postrotate
              test ! -e /var/run/squid3.pid || test ! -x /usr/sbin/squid3 || /usr/sbin/squid3 -k rotate
sleep 120 /usr/share/lightsquid/lightparser.pl access.log.1 endscript }

Периодический запуск обработки логов Squid из LightSquid по расписанию реализован путём автоматического добавления файла lightsquid в /etc/cron.d/ в процессе установки пакета LightSquid.
Используемая по умолчанию конфигурация подразумевает ежедневный запуск скрипта lightparser.pl в 04:00 утра. Закомментируем данные настройки и добавим вызов logrotate с нашим конфигурационным файлом /etc/squid3/squid.logrotate

sudo nano -Y sh /etc/cron.d/lightsquid

Изменённое содержимое файла будет таким:

#
# Regular cron jobs for the lightsquid package
#
#0  4 * * *   root [ -x /usr/share/lightsquid/lightparser.pl ] && /usr/share/lightsquid/lightparser.pl
#30 * * * *   root /usr/share/lightsquid/lightparser.pl today
0 21  * * *   root /etc/lightsquid/realname-generate.sh
0 0   * * *   root /usr/sbin/logrotate /etc/squid3/squid.logrotate

То есть каждый день в 21:00 мы будем вызывать скрипт обновления файла сопоставления имён realname.cfg а в 00:00 будем вызывать ротацию логов, из которой в свою очередь (после ротации лога access.log) будет вызвана процедура генерации отчетов LightSquid за прошедшие сутки (из лога access.log.1).

Разумеется, на всякий случай можно проверить успешность выполнения запланированной в CRON команды:

sudo /usr/sbin/logrotate /etc/squid3/squid.logrotate

<

p align="center">***

PS: Отдельное Спасибо Владимиру Леттиеву (aka crux) за помощь в создании скриптов и исправлении ошибки LightSquid.

***

Предыдущие части цикла заметок:

Часть 1. Установка ОС на ВМ Hyper-V Gen2
Часть 2. Настройка диска для кэша Squid
Часть 3. Конфигурация DNS , NTP и установка Squid
Часть 4. Конфигурация Kerberos и NTLM
Часть 5. Конфигурация Squid 3
Часть 6. Настройка Proxy Auto Configuration (WPAD)
Часть 7. Кастомизация страниц ошибок
Часть 8. Конфигурация SqStat

Следующие части цикла заметок:

Часть 10. Отключаем IPv6

Всего комментариев: 44 Комментировать

  1. Kirill /

    Спасибо! перепробовал три мануала, заработал только Ваш.

  2. k3nguru /

    А не рассматривали как вариант SAMS2 (http://sams.perm.ru)? Тоже не плохой анализатор логов +веб-морда для управления доступом к сети

  3. MAGNet /

    Хороший у вас цикл статей, хочу сделать одно дополнение не конкретно по теме, но в общем.
    Делать копии конфигов гораздо удобнее вот такой строкой:
    # cp /etc/lightsquid/lightsquid.{cfg,.default}

    1. Алексей Максимов / Автор записи

      Это для искушённых :)

      1. MAGNet /

        ага ;)

    2. MAGNet /

      Сорри))
      # cp /etc/lightsquid/lightsquid.{cfg,cfg.default}

  4. Александр /

    Здравствуйте,
    Столкнулся с проблемой,

    LigthSquid diagnostic.
    Error : report folder '/var/lib/lightsquid/report' not contain any valid data! Please run lightparser.pl (and check 'report' folder content)

    Команда sudo /usr/share/lightsquid/lightparser.pl проходит, но папка report пустая

    1. Дмитрий /

      Попробуй добавить в lightsquid.cfg, мне помогло.
      $squidlogtype = 0;

  5. Николай /

    Папка report пустая тоже. При заходе на localhost выдается стартовая страница apache, localhost\lightsquid - страница не найдена. Что я сделал не так?

  6. sobakaed /

    а как в статистике отображать еще группы пользователей из ад, группировать в соотствествии групп из ад, статистика по группе, подразделению и тд?

    1. Алексей Максимов / Автор записи

      Как я понимаю для этого нужен ещё один файл соответствия пользователей группам - group.cfg. Наполнять его можете либо в ручную, либо опять же писать скрипт для его автоматического заполнения информацией из AD.

  7. sergei /

    Может кому пригодится ...
    Я тут взялся изучить регулярные выражения и с Perl познакомится по случаю. Так что если что - не взыщите. У меня около 70 пользователей, особо запретов нет, и это работает на ура.
    Сворачивание доменов до второго уровня и объединение кое каких сервисов mail.ru, ok.ru и еще несколько.
    Заменить этим, в lightparser.pl (от версии 1.8), строки с 239 по 257:
    #--------------------------------------------------------------------------------------------------------
    # Сначала проверка - не ip ли вместо домена. В виде http://XXX.XXX.XXX.XXX%5B:XXX%5D/abc
    if ($url !~ m/^([a-z]+:\/\/){1}([0-9]{1,3}\.)([0-9]{1,3}\.)([0-9]{1,3}\.)([0-9]{1,3})[:]{0,1}[0-9]{0,5}\/{0,1}.*/o){
    # Здесь смотрим которые по https, они представляютя в виде ex.rt.example.com:443
    if ($url =~ m/^[a-z0-9\.\-]*:[0-9]+$/){
    $url =~ m/([a-z0-9\-]+\.){0,1}([a-z0-9\-]+\.){1}([a-z0-9\-]+){1}(:[0-9]+)?$/o;
    $url = 'www.'.$2.$3;
    }else{
    # Тут все остальные ...
    if ($url =~ m/([a-z]+:\/\/)??([a-z0-9\-]+\.){1}(([a-z0-9\-]+\.){0,})([a-z0-9\-]+){1}(:[0-9]+)?\/(.*)/o) {
    $url = $2.$3.$5;
    $url =~ m/([a-z0-9\-]+\.){0,1}([a-z0-9\-]+\.){1}([a-z0-9\-]+){1}$/o;
    $url = 'www.'.$2.$3;
    }}

    # Далее подменяем сервисы или не сервисы (я хз как такие домены называюся), короче те на
    #которые mail.ru, или не mail.ru, лезут за картинками, видео и прочей дрянью.
    $url =~ s/www\.imgsmail\.ru/www.mail.ru/o;
    $url =~ s/www\.mradx\.net/www.mail.ru/o;
    $url =~ s/www\.appsmail\.ru/www.mail.ru/o;

    $url =~ s/www\.wambacdn\.net/www.mamba.ru/o;

    $url =~ s/www\.yandex\.net/www.yandex.ru/o;
    $url =~ s/www\.yastatic\.net/www.yandex.ru/o;

    $url =~ s/www\.vkontakte\.ru/www.vk.ru/o;
    $url =~ s/www\.vk\.me/www.vk.ru/o;
    $url =~ s/www\.vk\.com/www.vk.ru/o;

    $url =~ s/www\.odnoklassniki\.ru/www.ok.ru/o;
    $url =~ s/www\.mycdn\.me/www.ok.ru/o;

    $url =~ s/www\.taobaocdn\.com/www.taobao.com/o;

    $url =~ s/www\.googlevideo\.com/www.youtube.com/o;

    $url =~ s/www\.google\.ru/www.google.com/o;
    $url =~ s/www\.gstatic\.com/www.google.com/o;
    $url =~ s/www\.doubleclick\.net/www.google.com/o;
    $url =~ s/www\.googlesyndication\.com/www.google.com/o;
    $url =~ s/www\.googleapis\.com/www.google.com/o;

    $url =~ s/www\.facebook\.net/www.facebook.com/o;
    $url =~ s/www\.facebook\.ru/www.facebook.com/o;

    $site = $url;
    }else{
    #Это от строки с проверкой на IP адрес. Мона было разместить в начале, изменив условие, но как
    #тут прижилось и осталось.
    $site = $2.$3.$4.$5;
    }

    # Эта строка вроде как эквивалентна следующей в исходнике но я хз. Лучше подстраховаться.
    if($site eq ""){$site=$Lurl}

  8. sergei /

    Автору.
    Я смотрю после вставки комента некоторые символы не перенеслись или подменились. Может скинешь email чтоб я тебе оригинал переслал. Ты ведь мой адрес видешь? Штука то вроде полезная.
    В целом код вроде рабочий за исключением двойных кавычек в конце.

  9. SimWhite /

    Коллеги, а подскажите, почему в статистике есть нормальные USERID с логинами, а есть просто их IP-адреса, причем в большинстве со статусом DENIED?

    1. Алексей Максимов / Автор записи

      Могу предположить, что это не пользователь, а сам компьютер пытался пробиться через прокси. Например, работает на клиентском компьютере какой-либо процесс/служба от имени SYSTEM и пытается куда-либо пролезти наружу через прокси.

  10. Иван /

    Спасибо за цикл статей.
    Сейчас пишу скрипт для составление групп пользователям. вышла такая трудность.
    for g in `sudo net ads search "(&(objectclass=person)(sAMAccountName=$i))" memberOf -P | grep "^memberOf: CN=" `;
    Если имя группы разделено пробелом, то получается вывод>>
    memberOF:Администратор
    DHCP,CN=Users....

    То есть не получается получить имя Администратор DHCP поток вывода идёт не по строкам а по словам.

  11. Салават /

    Не открывался отчет по ссылке имя-сервера/lighsquid
    Оказалось, что, по привычке, не добавлял slash в конце ссылки (обычно она сама добавляется), в результате 404.
    Для того чтобы уйти от такой зависимости, можно поправить etc/apache2/conf-available/lightsquid.conf
    убрав для псевдонима косую черту т.о.
    Alias /lightsquid

  12. Neri /

    Спасибо за отличный мануал, просто блеск! До этого вообще ничего подобного не встречал, постоянно приходилось допиливать, доделывать, переделывать. Тут все прошло без сучка без задоринки.

    А можно ли как-то в настройках squid'a указать, что на эти адреса ходить напрямую НЕ через настройку wpad.dat?

    1. Алексей Максимов / Автор записи

      Вопрос не по теме поста. В следующий раз лучше задавайте вопросы либо в соответствующих постах (по конфигурации squid есть отдельная заметка), либо в форуме.

      Я сделал так (не факт что это самое изящное решение):

      Создал вспомогательный конфигурационный файл conf_param_sites_always_direct.txt с содержимым типа:

      #
      .domain1.com
      .sub.domin2.com
      #

      В основном конфигурационном файле squid.conf добавил следующие строки:

      acl localnetsites dstdomain "/путь к файлу/conf_param_sites_always_direct.txt"
      ...
      http_access allow localnetsites localnet
      ...
      http_access deny !auth

      Ну и плюс ко всему на всякий случай прописал исключения в WPAD.DAT типа:

      ...
      if (shExpMatch(url, "*/domain1.com*")) {return "DIRECT";}
      if (shExpMatch(url, "*/sub.domin2.com*")) {return "DIRECT";}
      ...

  13. Neri /

    И еще вопрос, хочу ограничить доступ к веб-морде отчетов LighSquid, как ограничить знаю, а вот где сама "папка" lightsquid'a лежит понять не могу?

    1. Салават /

      /usr/lib/cgi-bin/lightsquid/
      /usr/share/lightsquid/
      по первому пути лежит index.cgi

    2. Алексей Максимов / Автор записи

      Все используемые lightsquid пути прекрасно видны даже из текста заметки.

  14. Владимир /

    Ubuntu server 14.04
    Здравствуйте! Поставил по описанной статье до момента запуска lightparser.pl
    Выполнил sudo /usr/share/lightsquid/lightparser.pl
    Но при входе на http://www.maysait/lightsquid сообщение forbidden.
    Папка lightsquid в каталоге сайта не появилась.
    Сам сайт по адресу http://www.maysait открывается.
    Подскажите, пожалуйста, в чем может быть проблема

  15. kaskad /

    Попробуйте заходить по адресу http://www.maysait/lightsquid/. Тест на внимательность - у меня в конце стоит "/", а у вас нет :)

  16. alex25 /

    Добрый день!
    Подскажите как быть с русскими имена в AD, в отчетах lightsquid они отображаются некорректно.

    1. loshko /

      В свойствах файла с именами надо установить кодировку utf-8

    2. sergei /

      Пропатчил файл /usr/share/lightsquid/lightparser.pl

      nano ./lightparser.pl.patch

      *** lightparser.pl 2015-09-02 11:20:09.492836861 +0400
      --- lightparser.pl 2015-09-02 11:22:18.988841219 +0400
      ***************
      *** 29,34 ****
      --- 29,35 ----

      use File::Basename;
      use Time::Local;
      + use URI::Encode;

      push (@INC,(fileparse($0))[1]);

      ***************
      *** 53,58 ****
      --- 54,61 ----
      my $catname ="cat";
      my $filename ="access.log";

      + my $uri = URI::Encode->new( { encode_reserved => 0 } );
      +
      undef $workday;

      exit unless (LockLSQ()); #Lock LSQ (block multiple instance)
      ***************
      *** 228,234 ****
      }
      $daylines++;

      ! $user=lc $Luser;

      $user = Ip2Name($Lhost,$user,$Ltimestamp);

      --- 231,237 ----
      }
      $daylines++;

      ! $user=lc $uri->decode($Luser);

      $user = Ip2Name($Lhost,$user,$Ltimestamp);

      ***************
      *** 489,492 ****
      2007-01-05 FIX : Wrong modification data writen in .features
      2008-11-28 NEW : Odnoklasniki & Vkontakte agregator added
      FIX : Perl 5.10 fix. in several cases incorrect name was used, but size calculated correctly.
      ! 2009-06-30 NEW : .overuser support
      \ No newline at end of file
      --- 492,495 ----
      2007-01-05 FIX : Wrong modification data writen in .features
      2008-11-28 NEW : Odnoklasniki & Vkontakte agregator added
      FIX : Perl 5.10 fix. in several cases incorrect name was used, but size calculated correctly.
      ! 2009-06-30 NEW : .overuser support

      sudo cpan URI::Encode
      sudo patch /usr/share/lightsquid/lightparser.pl ./lightparser.pl.patch

  17. Александр /

    Спасибо большое автору за статьи.Все собрал по его статьям,но вот возник такой вопрос:
    1)У меня есть правило в сквиде в нерабочее время все разрешено,соответственно в рабочее запрещено согласно списку из файла.И если смотреть статистику в lighsquid то в нем учитывается весь трафик (в рабочее и не рабочее время), а как сделать только учет в рабочее время?
    2)И на сколько я понимаю squid в вашей конфигурации открывает и учитывает https трафик,или нет?

    1. Алексей Максимов / Автор записи

      1. LightSquid обрабатывает данные лога access.log, поэтому тут либо нужно модифицировать скрипты LightSquid (добавить условие относительно времени суток), либо думать над тем как изменить запись в access.log
      2. В описанной конфигурации Squid не логирует трафик идущий внутри HTTPS сессий, так как по сути своей это туннельный трафик.

  18. Александр /

    Не посчитайте за наглость, а не могли бы Вы пример и его реализацию показать.

    1. Дмирий /

      Добрый день. Статья полезная.
      У меня примерно такая же проблема. Подождем. Может есть какое то решение.

  19. Обратная ссылка: Настройка прокси сервера Squid 3.3 на Ubuntu Server 14.04 LTS. Часть 6. Настройка Proxy Auto Configuration (WPAD) | Блог IT-KB /

  20. Вадим /

    Добрый день. Спасибо за цикл статей.
    Столкнулся с проблемой: при запуске ротации логов через cron не создаются новые файлы access.log и cache.log, в результате чего squid останавливается с ошибкой. Если создать файлы вручную, назначить владельца и запустить прокси, то все снова работает. Немного смущает директива nocreate в конфиге.
    Подскажите куда копать.
    Спасибо.

  21. plastilincheg /

    Скажите, а как с помощью keytab поддерживать актуальную информацию о пользователях и группах?

  22. Павел /

    Алексей, подскажите все же каким должен быть скрипт для заполнения group.cfg очень буду благодарен если направите в какую сторону смотреть.

    1. Алексей Максимов / Автор записи

      У меня нет такого скрипта, так как я не использую group.cfg

  23. Обратная ссылка: Настройка прокси сервера Squid 3.3 на Ubuntu Server 14.04 LTS. Часть 4. Конфигурация Kerberos и NTLM | Блог IT-KB /

  24. Александр /

    дополню: необходимо установить пакет libcgi-session-perl, иначе lightsquid выдает ошибку 500

  25. hallomain /

    Приветствую!
    Возможно вопрос покажется банальным, но при запуске /usr/share/lightsquid/lightparser.pl Выдает ошибку, что такого файла не существует (/var/log/squid3/access.log).
    Проблема в пути, у меня путь для кальмара такой - /var/log/squid/access.log
    А где его поменять я так и не нашел.
    Подскажите пожалуйста, в каком файле править данный путь?

    1. hallomain /

      Нашел. Отбой.

      1. Ensay Tankado /

        Можете написать. В чем было ошибка?

  26. Сергей /

    Здравствуйте, спасибо за статьи.
    Вопрос. При использовании скрипта с группами безопасности часть отображает в виде IP а чать пользователей именами компьютеров. А вот имена пользователей не берет. В чем может быть упущение? Спасибо.

  27. Сергей /

    Доброго времени суток.

    В процессе эксплуатации обнаружилось, что сквид перестал обрабатывать/отображать статистику начиная с января 2021 года.

    здесь есть описание проблемы, но не совсем понятно как его применить: https://finisky.github.io/2021/01/03/lightsquidhardcodeyear.en/

    Можно ли здесь показать как исправить данную проблему?

    С уважением.

    1. Elnov /

      в строке - my $filterdatestop =timelocal(59,59,23,31,12-1,2020-1900)+1000;
      меняете вот так - my $filterdatestop =timelocal(59,59,23,31,12-1,2100-1900)+1000;

Добавить комментарий