STAcc/Установка и настройка

From SysadminWiki.ru
Jump to: navigation, search

Общая информация

Перед установкой STAcc убедитесь, что конфигурация сервера удовлетворяет предварительным требованиям


  • Некоторые распространённые проблемы, которые могут возникнуть, рассмотрены в статье Работа над ошибками.
  • При выполнении команды обратите внимание на приглашение командной строки:
    • mysql> - означает команду нужно выполнить в командной строке MySQL
    • $ - команду можно выполнить от имени не привилигированного пользователя
    • # - команда должна быть выполнена с административными правами, т.е. либо пользователем root, либо через команду sudo

Установка

  • Берём последнюю версию STAcc и распаковываем архив.

Создание базы данных

  • Создаём базу данных:
$ mysql -u root -p mysql < stacc_db.sql

По умолчанию скрипт настроен на MySQL 5, если у вас 4-я версия, то нужно раскомментировать соответствующую строку в скрипте. Проверить версию MySQL можно командой:

$ mysql --version

Проверить, что база создалась корректно можно командой:

$ mysql -u stacc -pstaccpass stacc

Если появилось приглашение mysql, то база существует и можно выполнить тестовый запрос:

 mysql> select * from groups; 

Настройка конфигурационных файлов

  • Копируем в /etc/squd3/ (у вас каталог Squid может отличаться) все файлы из каталога etc-squid.
  • Редактируем переменные в конфигурационном файле stacc.cfg.
  • Сделаем исполняемым и запустим небольшой настроечный скрипт setup.sh, предварительно проверив, что пути там указанные совпадают с действительными:
 # chmod +x ./setup.sh
 # ./setup.sh

Этот скрипт создаст каталоги для журналов и временных файлов (если меняли в stacc.cfg, то и здесь нужно), отдаст файлы stCheck.pl и stAdmin.pl пользователю root и присвоит права SUID, чтобы обеспечить возможность работать с Netfilter.

  • Для Netfilter нам понадобятся модули suid и DBD-mysql для подключения к MySQL.

Для Alt Linux:

 # apt-get install perl-suidperl perl-DBD-mysql

Для Debian4:

 # apt-get install perl-suid libclass-dbi-mysql-perl

Для Debian5 и 6:

 # apt-get install perl-suid libdbd-mysql-perl

В Suse модуль suid уже включен в базовый пакет Perl, но здесь нужно принудительно дать права на его исполнение, выполнив

 # chmod u+s /usr/bin/sperl5.8.9

или

 # chmod 4711 /usr/bin/sperl5.8.9

Импорт данных

  • Если у нас есть файл с квотами limits.txt (или другое имя) в формате [IP_Адрес Квота_В_Байтах], т.е. вида:
 10.0.0.15  10000000
 ...
 10.0.10.54 20000000

то его можно импортировать в базу данных:

 # ./stAdmin.pl import /etc/squid3/limits.txt

Подготовка веб интерфейса

  • Копируем веб интерфейс (содержимое каталога web-interface) в желаемый каталог доступного по локальной сети сайта, скажем /var/www/report.
  • Редактируем переменные в конфигурационном файле config.php . Опционально можно подключить статистику от LightSquid (не входит в STAcc). Массив $squid_acl содержит список файлов, которые мы хотим предоставить для редактирования через веб-интерфейс. Например, чёрный список сайтов или список доступа к сервису ICQ. Эти файлы должны быть доступны для записи для пользователя от имени которого запускается веб-сервер. Например, чтобы иметь возможность редактировать в браузере чёрный список сайтов, перечисленных в файле /etc/squid3/blacklist.txt, нужно иметь доступ в каталог /etc/squid3 (дадим всем пользователям право заходить в него и читать содержимое):
 # chmod o+rx /etc/squid3

и права на изменения файла blacklist.txt:

 # chmod 666 /etc/squid3/blacklist.txt

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

- Проверяем доступность веб интерфейсов пользователя (http://mydomain.ru/report) и администратора (http://mydomain.ru/report/admin). Если после установки модулей Apache не перезагружался, то сейчас это придётся сделать:

# /etc/init.d/apache2 restart

Настройка Squid

Для просмотра файла конфигураций /etc/squid3/squid.conf без строк с комментариями можно использовать комманду

 cat /etc/squid3/squid.conf | egrep -v "^\s*(#|$)" 

Настраиваем Squid, редактируя /etc/squid3/squid.conf. Подключаем редиректор:

 url_rewrite_program /etc/squid3/stCheck.pl
 url_rewrite_children 10

для squid версии < 3 можно использовать (а для совсем старых версий - придётся) опции

 redirect_program /etc/squid/stCheck.pl
 redirect_children 10

Параметр в redirect_children следует установить в зависимости от нагруженности proxy-сервера. Минимально рекомендуемое - 10

Так как контроль доступа к интернету теперь возьмёт на себя STAcc, то в squid.conf разрешаем подключаться всем (а не только локальным соединениям localhost):

 #http_access allow localhost
 #http_access deny all
 http_access allow all
  • Перезагружаем Squid:
 # /etc/init.d/squid3 restart

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

 # ps ax | grep squid

6183 ?        Ss     0:00 /usr/sbin/squid3 -D -YC
6185 ?        S      0:00 (squid) -D -YC
6187 ?        Ss     0:00 stacc_squid
6189 ?        Ss     0:00 stacc_squid
...

Если не запустился, то смотрим в журналы Squid (var/log/squid3) и STAcc (/var/log/stacc). Для удобства настроечный скрипт в /etc/squid3 сделал ссылки на эти каталоги.

- Чтобы использовать чёрные списки или вообще любые списки доступа, нужно вности изменения в конфигурацию squid. После заголовка "# INSERT YOUR OWN RULE(S) HERE TO ALLOW:" вставляем желаемые правила, например, запрещаем доступ к сайтам из чёрного списка и ограничиваем доступ к службе icq за исключением пользователей перечисленных в файле /etc/squid3/icq.txt:

acl pool_blacklist dstdomain '/etc/squid3/blacklist.txt'
http_access deny pool_blacklist

acl pool_icq src '/etc/squid3/icq.txt'
acl icq dstdomain .icq.com
http_access allow pool_icq icq
http_access deny icq

Настройка автозапуска

  • Настраиваем запуск по расписанию. Добавляем в crontab следующие строки:
# Squid. STAcc quota update ------
0 0 * * 1       root /etc/squid3/stAdmin.pl reset
* * * * *       root /etc/squid3/stAdmin.pl check >/dev/null

Первая строка очищает значения всех счётчиков в понедельник в полночь. Если нам нужно не понедельное квотирование, то меняем эту строку на то, что нам нужно. Можно вообще её не писать, тогда счётчики автоматически обнулятся не будут.Вторая строка ежеминутно обновляет счётчики в базе данных и обрывает соединения у пользователей превысивших квоту.

  • Ограничиваем доступ к административному каталогу admin при помощи файла .htaccess (см в этом каталоге):
 Order Deny,AllowDeny from allAllow from 10.10.0.15
  • Добавляем в автозагрузку команду создания счётчиков. В разных дистрибутивах Линукса разные файлы автозапуска.
    • Для Alt linux: /etc/rc.d/rc.local
    • Для Debian: /etc/rc.local
    • Для Suse: /etc/rc.d/boot.local
# set Internet quotas for STAcc (Squid redirector)
/etc/squid3/stAdmin.pl chains

Разрешаем выполнение скрипта из веб-интерфейса

- Чтобы можно было запускать stAdmin.pl c администранивной страницы (для добавления счётчиков), нужно настроть sudo. Добавляем в /etc/sudoers:

 apache2 ALL=NOPASSWD: /etc/squid3/stAdmin.pl
 apache2 ALL=NOPASSWD: /etc/squid3/apply_changes.sh

где apache2 - пользователь от которого работает Apache. Чтобы узнать от какого пользователя он запущен выполним:

 # ps axo euid,ruid,tty,pid,comm | grep httpd2
 111   111 ?        23079 httpd2

Демон апача обычно называется apache2 или httpd2 иначе см. в /etc/init.d/. Другой способ: посмотреть при запущенном апаче какой демон сейчас активен:

ps ax | grep apache
ps ax | grep httpd

Теперь посмотрим у какого пользоватея id=111

 # cat /etc/passwd | grep 111
 apache2:x:111:118:Apache2 WWW server:/var/www/apache2:/dev/null

и видим, что это пользователь apache2.

Запуск

Всё. STAcc готов к использованию.

- Создаём счётчики (цепочки в Netfilter):

 # /etc/squid3/stAdmin.pl chains

- Перезагружаем Squid и проверяем работу со стороны клиента

# /etc/init.d/squid3 restart

- В случае возникновения проблем смотрим журналы cache.log (Squid) и stacc.log

Обновление

  • Для обновления STAcc достаточно заменить его файлы в /etc/squid3 и веб интерфейс.
  • После замены обязательно перезагрузить squid и посмотреть журнал cache.log
  • Проверить веб интерфейсы администратора и пользователя


Обновление до версии 1.3

В версии 1.3 был добавлен столбец в таблицу MySQL, поэтому простого копирования файлов будет не достаточно. Необходимо внести изменение в структуру БД:

$ mysql -ustacc -pstaccpass stacc
mysql> ALTER TABLE quotas ADD (inactive int(10) unsigned DEFAULT '0' NOT NULL);

Перенос

При обновлении сервера или переносе базы данных STAcc на другой сервер нужно при установке STAcc загрузить дамп базы данных с предыдущего места, а не создавать новую. Так как счётчики трафика на интерфейсах занимают большой объём (со временем), то имеет смысл почистить эту таблицу перед переносом (если, конечно, нам эта информация не нужна). Очистить MySQL таблицу можно командой:

mysql> DELETE FROM interfaces_stat;

Дамп делается командой:

$ mysqldump -u root -p stacc > stacc.sql

Подбробней про дамп БД см в статье про MySQL.