If i help You, send me BTC please 1CJGz4UGyL7hTjPeN8j7fu9LRmmWiWSRHi

Прокси сервер Squid, аналитика его логов Sarg на FreeBSD

Постов 157 из 174

squid and sarg

В процессе моего внедрения ubuntu и freeBSD на предприятии возникла таки необходимость отслеживать насколько рационально используется интернет канал: куда и сколько ходят в интернет. Настроить систему я решил на давно и исправно работающем компьютере под управлением freeBSD 7.1, единственная функция которого до этого была шлюз интернета для локальной сети.
Итак, в качестве исходных данных —
— freeBSD 7.1;
— локальная сеть 192.168.0.0/24;
— желание смотреть кто и сколько ходит в интернет.:) Пока только смотреть — меры по ограничению и запретам можно будет прикрутить позже.

Для этого мне понадобятся:
1. прозрачный прокси squid;
2. веб сервер apache;
3. анализатор логов прокси сервера sarg.

Перед установкой я скачал и установил новое дерево портов, удалив старое:

cd /usr
wget 'ftp://ftp.freebsd.org/pub/FreeBSD/ports/ports/ports.tar.gz'
rm -rf ./ports
tar xvfz ports.tar.gz

1. Установка squid:

cd /usr/ports/www/squid
make install clean

Чтоб получить минимальный конфиг squid, который позволит мне собирать статистику пользования интернет без дополнительных настроек браузеров пользователей (т.е. прокси — прозрачный), я так отредактировал файл /usr/local/etc/squid/squid.conf:

vi /usr/local/etc/squid/squid.conf

visible_hostname localhost.localdomain
http_port 3128 transparent
cache_effective_user squid
cache_effective_group squid
cache_dir ufs /usr/local/squid/cache 220000 64 512

#директория для кеша где 220000 - количество мегабайт для него,
#64 - количество каталогов первого уровня, 512 - второго
cache_access_log /var/log/squid/access.log squid
#собственно файл статистики
acl LocalNet src 192.168.0.0/24
acl all src 0.0.0.0/0.0.0.0

http_access allow LocalNet
http_access deny all

Потом создал директорию для кеша:

cd /usr/local
mkdir ./squid
cd ./squid
mkdir ./cache

Затем в файле фаервола (у меня — /etc/ipfw.rules) создал правило перед форвардингом NAT:

vi /etc/ipfw.rules
...
ipfw -q add 081 fwd 127.0.0.1,3128 tcp from $netin to any 80 via $oif
...

где
netin="192.168.0.0/24" — моя локальная сеть;
oif="age0" — сетевая, в которую включен провайдер интернета.

Для применения правила перезапустил фаервол:

/etc/rc.d/ipfw restart

и добавил в /etc/rc.conf строки:

squid_enable="YES"
#для сквида
apache22_enable="YES"
accf_http_load="YES"
#для веб сервера apache

2. Установка apache22:

cd /usr/ports/www/apache22
make install clean

В ходе установки, в появившемся окошке с выбором опций я пометил крестиками все пункты с упоминанием mod_proxy и mod_cgid — без них не хотел стартовать apache. После установки отредактировал в файле /usr/local/etc/apache22/httpd.conf
параметр ServerName до такого вида:

vi /usr/local/etc/apache22/httpd.conf
...
ServerName www.hostname:80
...

где hostname — параметр записанный в файле /etc/rc.conf

Затем выполнил в оболочке:

kldload accf_http

— загрузка модуля для работы apache.
Для запуска, перезапуска и остановки веб сервера используются команды:
apachectl start, apachectl restart, apachectl stop соответственно.

Запустил apache:

apachectl start

После выполнения, если нет ошибок, можно посмотреть запустился ли процесс httpd и если нет, то смотреть логи запуска:

vi /var/log/messages
vi /var/log/httpd-error.log

3. Установка Sarg:

cd /usr/ports/www/sarg
make install clean

После установки сначала создал на локальном сервере папку, куда sarg выведет аналитику логов squid:

cd /usr/local/www/
mkdir ./squid_reports

потом поправил конфиг sarg, где редактировал строки:

vi /usr/local/etc/sarg/sarg.conf
access_log /var/log/squid/access.log
#из настроек squid - файл статистики
temporary_dir /tmp
#временная директория
output_dir /usr/local/www/squid_reports
#сюда сарг сложит аналитику

Аналитика логов прокси сервера будет представлять из себя несколько связанных веб страничек — мини-сайт. Чтобы apache при обращении к себе понимал, куда ему перенаправлять пользователя — в моем случае меня на просмотр статистики, нужно либо по имени, либо по порту идентифицировать мою веб страницу со статистикой. Для этого я в файле конфига апача добавил порт для прослушивания и строку включения конфига «виртуального хоста» моей веб страницы со статистикой:

vi /usr/local/etc/apache22/httpd.conf
...
Listen 80
Listen 8001
...
Include /usr/local/etc/apache22/Includes/squid_reports.conf
#здесь положим конфиг виртуального хоста статистики

Т.е. теперь при обращении из браузера компьютера локальной сети по адресу http://локальный_IP_адрес_веб_сервера:8001 я должен попадать на гланую страницу своей статистики, осталось только создать сам конфиг виртуального хоста в моем случае такой:

vi /usr/local/etc/apache22/Includes/squid_reports.conf


DocumentRoot /usr/local/www/squid_reports
ServerName 192.168.0.1
#локальный IP адрес моего веб сервера


AddHandler cgi-script .cgi
AllowOverride All
order allow,deny
Allow from 192.168.0.223
Allow from 192.168.0.140
#доступ к просмотру будет только у тех, кому задам явно:)

Ну вот и все:)
Перезагрузил веб сервер, запустил в шелле:

sarg

и пошел из браузера смотреть кто сколько налазил по интеренетам и где:)

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

, , ,

Am16/12/2010 at 19:29Reply

Всё это конечно прекрасно, но вопрос такой: как удалить её с компьютера?? В какой она папке??:))) А то обнаружила у себя тут чисто случайно…

alex16/12/2010 at 19:45Reply

что удалить то????

ttys07/04/2012 at 22:45Reply

достаточно сделать
#portsnap fetch extract ; portsnap fetch update
вместо скачивания
а сарг очунь уж тугой парсер и если юзверей около 300 как в моём случае то он за неделю уже вылетает с ошибкой
рекомендую lightsquid ))

Andrey17/05/2012 at 17:45Reply

ttys — портснапом вы кажется лишь обновите порты, при чем тут удаление сквида или сарг?
Может я консервативен, но мне больше по душе nat с нарезкой скоростей если нужно)

Menu