Для контроля доступа в интернет в офисах и на крупных предприятиях используют 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.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 свои скрипты для ежедневного формирования.
Спасибо, ваша инфа о lightsquid’e пригодилась 🙂
Добрый день, у меня есть вопрос, по поводу статистики, я сделал доступ по логину
паролю, после ввода пароля, пускает сразу ко всем группам как и показано в примерах, а руководству хочется, чтобы логин и пароль, у каждого руководителя отдела были свои, и при заходе на ip/stat у них высвечивались не все группы, а только непосредственно сотрудники отдела, которые относятся к данному руководителю, это вообще возможно сделать, домена не используется.
Две кружки чая тебе хороший человек за подробный фак!
Было бы неплохо если бы изложил как сделать лайтскуид стартовой страничкой аппача. На 80 порту например.
имеется ввиду стартовой страничкой браузера пользователей?
Или как настроить апач чтобы он в домашней страничке сразу выводил lightsquid?
Если второе, то просто провести установку lightsquid в каталог htdocs апача..
Спасибо за быстрый ответ, на самом деле я поторопился задаватоь вопрос, решил сам. Надо было сделать чтобы к обращению к прокси он сразу выводил 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