Считаем Squid Proxy трафик через lightsquid

LightsquidДля контроля доступа в интернет в офисах и на крупных предприятиях используют proxy сервера. Обычно в unix окружении используется proxy сервер Squid. А для разбора логов squid сервера применяют различные программы, одной из которых и является lightsquid.
Одной из отличительных черт lightsquid перед остальными ее конкурентами является умение подбивать статистику по группам.

Установка

Перед установкой lightsquid убедитесь что у вас установлен и сконфигурирован сервер Apache (поддержка php и mysql необязательна).
Сама установка пакета очень проста. Устанавливаем пакет через репозитории (порты) своих дистрибутивов.
А я расскажу как ставить пакет из исходных текстов.
1. Скачиваем пакет с сервера sourceforge.net
2. Распаковываем архив например в папку /usr/local/lightsquid
3. Выставляем владельца папки /usr/local/lightsquid – root.


#chown -R /usr/local/lightsquid root

а также проверяем, чтобы скрипты в корне папке lightsquid *.cgi и *.pl были исполняемыми. Если это не так, выполняем


#chmod +x *.cgi
#chmod +x *.pl

4. Создаем ссылку в корне сайта apache на папку с программой. Я назвал симлинк по имени программы, но можно назвать и более просто, например stat. Если вы поставили программу прямо в директорию сайта, то создание симлинка не требуется.


#cd /usr/local/apache/htdocs
#ln -s /usr/local/lightsquid lightsquid

Таким образом для просмотра статистики мы будем пользоваться браузером, а ссылка будет называться http://имя_сервера/lightsquid/
5. Добавляем в конфиг apache httpd.conf строки, чтобы разрешить выполнение скриптов из папки с программой


<Directory "/usr/local/apache/htdocs/lightsquid">
       AddHandler cgi-script .cgi
       AllowOverride All
</Directory>

6. Перезапускаем сервер apache и можно проверить в браузере набрать http://имя_сервера/lightsquid/
Если все сделано правильно, то должно появиться примерно такое сообщение об ошибке

Пробный запуск lightsquid

Все, теперь переходим к настроеку конфига lightsquid.

Настройка lightsquid

Открываем в вашем любимом редакторе файл lightsquid.cfg (редактор следует запускать от пользователя root или sudo) и правим следующие строки. Пути подставляем свои 🙂


#путь до всех конфигурационных файлов 'cfg' lightsquid
$cfgpath             ="/usr/local/lightsquid";
#путь до папки `tpl`
$tplpath             ="/usr/local/lightsquid/tpl";
#путь до папки `lang`
$langpath            ="/usr/local/lightsquid/lang";
#путь до папки `report`. В этой папки будет храниться временные
#конфиги обработанной статистики.  Размер папки будет не очень большой.
$reportpath          ="/usr/local/lightsquid/report";
#путь до самого access.log  сервера squid
$logpath             ="/usr/local/squid-auth/var/logs";
#путь до папки `ip2name`
$ip2namepath         ="/usr/local/lightsquid/ip2name";

#При необходиости подправьте эту переменную, чтобы не считал трафик
#по этим сетям или серверам, доменам. Обратите внимание на синтаксис
#записи. Точки экранируются символом "\", а ресурсы разделяются "|".
#Для примера я запретил учитывать трафик сети mail.ru и сети 192.168.1.0/24
$skipurl             = 'mail\.ru|192\.168\.1\.';

#выставляем язык отчетов. По умолчанию кодировка windows1251,
#к примеру, чтобы изменить на koi8 надо писать "ru-koi8" ну и т.д.
$lang                ="ru";

#Также имеет смысл посмотреть на эти переменные
#вычисляем пользователей, кто качает большие файлы > 2Mb
$bigfilelimit        = 2*1024*1024;
#вычисляем пользователей, кто качает больше 10Mb в день
$perusertrafficlimit = 10*1024*1024;

После правки lightsquid.cfg обязательно запускаем проверку конфигурации – команда check-setup.pl.


#cd /usr/local/lightsquid
#./check-setup.pl
LightSquid Config Checker, (c) 2005-9 Sergey Erokhin GNU GPL

LogPath   : /usr/local/squid-auth/var/logs/
reportpath: /usr/local/lightsquid/report
Lang      : /usr/local/lightsquid/lang/ru
Template  : /usr/local/lightsquid/tpl/base
Ip2Name   : /usr/local/lightsquid/ip2name/ip2name.simple

no: GD.PM found, please install or set $graphreport=0 to disable

Упс! в моем дистрибутиве не оказалось модуля perl GD.PM. Что нас и предупреждает проверка. Либо выключаем графическую функцию $graphreport=0 в конфиге lightsquid.cfg либо ставим модуль GD.
Я предпочел второе, выполнив всего 2 команды


#perl -MCPAN -e shell
cpan[1]> install GD

cpan[2]> exit

Теперь после проверки у меня все ok


# ./check-setup.pl
LightSquid Config Checker, (c) 2005-9 Sergey Erokhin GNU GPL

LogPath   : /usr/local/squid-auth/var/logs/
reportpath: /usr/local/lightsquid/report
Lang      : /usr/local/lightsquid/lang/ru
Template  : /usr/local/lightsquid/tpl/base
Ip2Name   : /usr/local/lightsquid/ip2name/ip2name.simple

all check passed, now try access to cgi part in browser

Результаты статистики

Можно запускать парсер логов. Это команда lightparser.pl.
Данную команду можно запускать с параметрами логов lightparser.pl access.log.1 (например собрать статистику из старых логов squid).
Запуск команды lightparser.pl today будет считать статистику для текущего дня. Для больших организаций рекомендую данную команду запускать раз в день перед ротацией лога squid, а в маленьких офисах можно хоть через 15 минут запускать.
Команду  lightparser.pl today обязательно занесите в /etc/crontab. У меня сделано раз в день в 23-50


50 23  *   *  *   root    /usr/local/lightsquid/lightparser.pl today 1> /dev/null 2>&1

Теперь в нашем браузере http://имя_сервера/lightsquid/ появилась статистика.

Статистика интернет


Обратите внимание на конфиг skipuser.cfg. Обычно начальство не хочет, чтобы кто-то смотрел их статистику 🙂

Работа с реальными именами пользователей и группами

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


192.168.1.45     A. Popov
192.168.1.100    S. Ivanov

Для авторизации по имени данный файл будет выглядеть:


popov     A. Popov
its       S. Ivanov

Если у вас в squid авторизация через домен, то перед логином добавляем домен


domen\popov     A. Popov
domen\its         S Ivanov

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


192.168.0.17    01      Руководство
192.168.0.18    01      Руководство
192.168.0.19    01      Руководство
192.168.3.17    02      Бухгалтерия
192.168.3.18    02      Бухгалтерия
192.168.3.120   02      Бухгалтерия

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

Группы пользователей интернет

Рейтинг популярных сайтов

Детальная информация о текущем дне.

Временная информация по посещенным сайтам пользователя

Кто качал большие файлы

А теперь немного про автоматизацию сбора realname.cfg и group.cfg.
В случае маленькой организации автоматизация большого смысла не имеет, а вот в крупных конторах заносить 300 пользователей, да еще потом постоянно следить за этими файлами дело муторное. Поэтому я предлагаю готовые скрипты получения логинов и групп пользователей из базы mysql. (но я уверен при достаточной сноровке можно вытащить информацию из любой базы)

Скрипт создания realname.cfg, скрипт group.cfg.

Скрипты приведены чисто ради примера и врядли подойдут для вас. Но возможно посмотрев в них вы поймете как создавать свои конфиги. Обязательно добавьте в crontab свои скрипты для ежедневного формирования.

Запись опубликована в рубрике Proxy, Считаем трафик с метками , , , . Добавьте в закладки постоянную ссылку.

5 комментариев Считаем Squid Proxy трафик через lightsquid

  1. GN говорит:

    Спасибо, ваша инфа о lightsquid’e пригодилась 🙂

  2. novi4ok говорит:

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

  3. Вафлентин говорит:

    Две кружки чая тебе хороший человек за подробный фак!
    Было бы неплохо если бы изложил как сделать лайтскуид стартовой страничкой аппача. На 80 порту например.

    • mik говорит:

      имеется ввиду стартовой страничкой браузера пользователей?
      Или как настроить апач чтобы он в домашней страничке сразу выводил lightsquid?
      Если второе, то просто провести установку lightsquid в каталог htdocs апача..

  4. Вафлентин говорит:

    Спасибо за быстрый ответ, на самом деле я поторопился задаватоь вопрос, решил сам. Надо было сделать чтобы к обращению к прокси он сразу выводил lightsquid.
    Сам сервер не прозрачный. Lightsquid kt лежит в /var/www/html/
    Решаеться добавлением в httpd.conf блока:

    ServerName http://www.lightsquid.local
    ServerAlias “lightsquid.local”
    DocumentRoot /var/www/html/lightsquid/

    # Options Indexes + ExecCGI FollowSymLinks MultiViews
    AllowOverride All
    Options ExecCGI
    AddHandler cgi-script .cgi .pl
    Order allow,deny
    allow from all

    Решение взял тут http://unixforum.org/index.php?showtopic=110633&view=findpost&p=1039937

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *