TECH DOC

Категории

Live CONF [1]
Squid [2]
Security [2]
Other [3]

Map

Теги

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Поделиться

Каталог статей

Главная » Статьи » FreeBSD » Squid

Squid2MySQL для FreeBSD 5.2 для учета трафика через squid
Squid2MySQL для FreeBSD 5.2 (08.07.2004 г)

Что такое Squid2MySQL? Это авторизация и учет траффика пользователей в
Интернет. Есть proxy-сервер Squid (http://www.squid-cache.org/)
и база данных MySQL, (http://dev.mysql.com/)
Squid занимается кэшированием информации, а MySQL хранит информацию о
пользователе (имя, пароль, скаченные URL и т.д).
Связующее звено - это Squid2MySQL (http://evc.fromru.com/squid2mysql/download.html) 1.0.0
от Eugene V. Chernyshev для Linux.

Для тех, кто использует Linux в качестве OS для серверов - лучше будет
посетить сайт автора Squid2MySQL и использовать информацию с
авторского (http://evc.fromru.com/squid2mysql/download.html) сайта.
Я лишь портировал squid2mysql под FreeBSD и исправил несколько ошибок,
о них было сообщено автору в переписке по e-mail.

Данная статья описывает этапы и особенности установки исправленной
версии squid2mysql под FreeBSD.
Поехали ...

1) Должен быть установлен MySQL, Squid и Perl. Проверьте
работоспособность данных программ: зайдите в MySQL, сделайте простой
запрос к таблице mysql; проверьте Perl командой perl -v; не забудьте
сделать для Squid базы командой squid -z. Проверьте DNS командой
nslookup host, если с DNS будут проблемы, то не будет работать Squid.


2) Скачайте архив squid2mysql (http://www.uvsw.narod.ru/project/squid2mysql_v.tar.gz)
под FreeBSD (~600 Kb) и распакуйте

# tar -zxvf squid2mysql_v.tar.gz


3) Зайдите в появившийся каталог squid2mysql_v. Перейдите в подкаталог
for_perl и установите модули для Perl DBI-1.42.tar.gz и
Msql-Mysql-modules-1.2219.tar.gz или скачайте более новые.

# tar -zxvf DBI-1.42.tar.gz
# cd DBI-1.42
# perl Makefile.PL
# make
# make test
# make install


аналогично установите модуль Msql-Mysql-modules-1.2219.tar.gz


4) Прочтите файл squid2mysql_v/install_info/INSTALL. Скопируйте
perl-скрипт squid2mysql и sh-скрипт sqauth в каталог с squid.

Например,

# cp squid2mysql /usr/local/squid/sbin/squid2mysql
# cp sqauth /usr/local/squid/sbin/sqauth


Измените при копировании путь к squid, если он у вас в другом каталоге.
Perl-скрипт squid2mysql - разбирает логи от Squid и заносит в базу MySQL.
Sh-скрипт sqauth - авторизационный скрипт проверяет имя, пароль и
сравнивает скаченный объем с лимитом. Если все OK - то скрипт
возвращает OK и Squid пускает в Интернет, иначе ERR. Этот скрипт писал
я (оригинальный скрипт больше и позволяет лимитировать по дням и
неделям), так что по его работе претензии предъявляйте мне на
e-mail. (mailto:vasilisc@rambler.ru?Subject=squid2mysql)


5) Создайте командой mkfifo pipe-канал.

# mkfifo /var/log/squid/access.log

Рекомендую путь оставить таким какой он есть.
Автор применил красивый ход. Вместо текстового файла будет находится
pipe-канал. Ничегонеподозревающий Squid будет писать логи о юзерах в
один конец трубы, а perl-скрипт squid2mysql считывать из другого конца
трубы, разбирать и заносить в базу данных MySQL. Если MySQL будет не
доступен, то информация временно будет записана в файл
/var/log/squid/backup.log


6) Скопируйте mysql.sh и squid.sh из каталога
squid2mysql_v/install_info/ в каталог /usr/local/etc/rc.d/
Сделайте эти скрипты запускаемыми для автозапуска MySQL и Squid после
рестарта FreeBSD.

# chmod +x mysql.sh
# chmod +x squid.sh

Посмотрите содержимое squid.sh с комментариями

#!/bin/sh
case "$1" in # разбираем параметр
start)

   /usr/local/squid/sbin/squid2mysql < /var/log/squid/access.log &
# Читаем логи Squid через pipe-канал
  /usr/local/squid/sbin/squid # запускаем Squid
   echo "Squid starting" # информируем
;;
stop)
 /usr/local/squid/sbin/squid -k shutdown # останавливаем Squid
 echo "Squid stoping" # информируем
;;
*)
 /usr/local/squid/sbin/squid -k reconfigure # рестартуем Squid
 echo "Squid restarting" # информируем
;;
esac
exit 0



7) Каталог site_php - это web-интерфейс для управления пользователями.
Для их работы нужно установить Apache и PHP, нужно в php.ini прописать
globalregister = on. Мне удобнее управляться с помощью SQL запросов
непосредственно к базе данных или с помощью графических программ,
поэтому я отказался от их использования. С помощью данных скриптов вы
можете дать возможность пользователям менять свой пароль и смотреть
свою (и только свою) статистику.

Отредактируйте include.php по своему усмотрению. Если у вас возникают
вопросы по поводу работы web-интерфейса для squid2mysql, то
обращайтесь на авторский (http://evc.fromru.com/squid2mysql/download.html) сайт.


8) Скопируйте
squid2mysql_v/var_arch/sqlogarch в /var/arch/squid/sqlogarch
squid2mysql_v/var_arch/sqlogupload в /var/arch/squid/sqlogupload

Данные скрипты используются из php-скриптов web-интерфейса для
управления backup и restore логов.


9) Для того чтобы Squid работал с squid2mysql нужно в squid.conf
прописать следующие параметры:

# параметры авторизации
auth_param basic program /usr/local/squid/sbin/sqauth # путь с скрипту,
# который возвращает OK или ERR
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours

# ВСЕХ загоняем под proxy
acl all src 0.0.0.0/0.0.0.0
acl users proxy_auth REQUIRED
http_access allow users
http_access deny all

# Заставляем Squid проверять не перекачал ли кто ?
authenticate_ttl 60 seconds


10) Запустите /usr/local/mysql/bin/mysql. Если вы достаточны сильны в
MySQL, то подредактируйте файл squid2mysql.sql

Например, такая строка разрешает подсоединяться к базе под именем
vasilisc и паролем 123456 c любого хоста сети.

GRANT ALL PRIVILEGES ON *.* TO vasilisc@"%" IDENTIFIED BY `123456`;

Такая строка дает по умолчанию 30 Mb в месяц лимит

maxmonthly bigint(15) NOT NULL default `31457280`

Примените схему, которая создаст необходимые таблицы.

mysql>\. /path_to/squid2mysql_v/install_info/squid2mysql.sql

Могут появляться сообщения об ошибках, но это нормально, так как схема
squid2mysql.sql содержит SQL команды удаления таблицы (DROP TABLE) и
создания новой (CREATE TABLE) с таким же именем. Но в первый раз таких
таблиц НЕТ, поэтому появляются сообщения об ошибках.


11) Рекомендую сделать в squid.conf следущее:
cache_effective_user nobody
cache_effective_group nogroup


То есть Squid будет работать от пользователя nobody и группа nogroup.
Не забудьте сделать nobody владельцем каталога Squid.
# chown -R nobody:nogroup /usr/local/squid/

Обеспечьте доступ пользователю nobody в каталоги:
/var/log/squid/
/var/arch/squid/



12) Добавьте тестового пользователя в базу данных либо с помощью
php-скриптов из каталога site_php, либо непосредственно с консоли
MySQL.

mysql>\u squidlog

mysql>INSERT INTO auth

VALUES(`vasilisc`,PASSWORD(`123456`),`N`,0,0,31457280);

mysql>INSERT INTO usernames VALUES(`vasilisc`,`Alekseenko V N`,`simple

user`,`OVIT`,`11-22-33`,`s@s.ru`,`2004-08-01`);

Или подправьте файл insert_user.sql и вызовите его.

mysql>\. /path_to/insert_user.sql


Проверьте работоспособность! Если не заработало пройдите все этапы еще
раз внимательно. Прочтите логи Squid, MySQL, FreeBSD. Просмотрите
содержимое файлов, особенно include.php, sqauth, perl-скрипт
squid2mysql, squid.conf. Загляните на оффициальные сайты продуктов,
прочтите FAQ.

Мои комментарии:

1) Я изменил во всех скриптах имя пользователя для коннекта к MySQL.
Был пользователь squidroot с паролем sqroot стал root (это не FreeBSD
root, а root MySQL - это разные вещи) c пустым паролем. Это связано с
тем, что портирование под FreeBSD происходило нелегко, прибавьте баги
в оригинальных скриптах.

2) sqauth - написанный мной авторизационный sh-скрипт. Его
работоспособность на моей совести. Он пока упрощен до определения
месячного лимита, хотя оригинальный скрипт проверял недельный и
дневной лимиты.

3) perl-скрипт squid2mysql - был мной изменен, так как там был баг с
удвоением первой URL. Вы посетили сайт первый раз в этот день и размер
скаченой html удваивался, потом проблема исчезала до следущего дня.

Вот и все, надеюсь все установилось и работает вам на благо!

Cкажите спасибо Eugene V. Chernyshev за Squid2MySQL (http://evc.fromru.com/squid2mysql/).

Категория: Squid | Добавил: Kogr (30.11.2009) | Автор: Алексеенко Василий W
Просмотров: 1609 | Рейтинг: 2.1/20

Поиск

Vir Actiy

IP

Узнай свой IP адрес

Scan File

Scan URL

+

Бесплатный анализ сайта

Статьи , новости информационных технологий , обзоры , описание ошибок , Операционные системы , системные ошибки , новые технологии , аутсорсинг , windows , Linux , VoIP , FreeBSD , Cisco , информационная безопасность , Win7 , Win8 , server , проблемы с серверами , ИТ , управление инфраструктурой и многое другое…