Как привязать sarg к связке squid+rejik+apache

Автор shiko, 15 Сентября 2008, 22:28

« предыдущая тема - следующая тема »

0 Пользователей и 1 Гость просматривают эту тему.

shiko

Здравствуйте! Ситуация следующая связка squid+rejik+apache установлена и работает. Необходимо для учета трафика и бана пользователей привязать еще и sarg. Sarg был установлен из внешнего репозитария, размещение файлов следующее:
 1. /etc/sarg/sarg.conf
 2. /usr/share/sarg/sarg-php/
 3. /usr/share/sarg/user_limit_block
Для того что бы начать конфигурировать не могу понять порядок работы этой проги, а точнее как запускается (какой прогой т.е где прописывается ее запуск) или вот к примеру указанная выше директория №2 в каторгой размещены каталоги (fonfs, images, languages, sarg-php и файл user_limit_block), в катологе sarg-php находятся php скрипты. Я так понял что именно эта директория отвечает за вывод всей статистической инфы через web-браузер, отсюда вопрос сработает ли apache если все это оставить на своем месте или это надо все закинуть в /var/www/html/? :help:
  Потом мне непонятно чей access.log файл в этой связки должен обрабатывать sarg, squid'a, или все же rejika? Прошу разъясните пожалуйста мне эти моменты, а то я честно говоря не въезжаю.

Vicpo

access.log squida обрабатывается.
запускается скрипт по крону раз в сутки если из реп ставил то в /etc/cron.daily должен появиться скрипт запуска sarg
порядок работы сработал крон считали акцеслог посчитали сгенерировали страничку положили в каталог веб сервера в папку куда указано в конфиге если прописано ограничение по трафику и выявили нарушителя то пишем данные куда прописали в конфиге и рестартуем сквид.

shiko

ДА ЕСТЬ ТАКОЕ ДЕЛО /etc/cron.daily,  т.е если я правильно понял мне не надо переносить скрипты sarg'a в директорию /var/www/html, а необходимая страничка создается автоматом и падает в указанное в конфиге место, правильно?
 Интересно, а для чего тогда нужны вот эти скрипты, для обработки данных? ИХ НЕНАДО НЕКУДА ПЕРЕМЕЩАТЬ?
[root@stp1 cron.daily]# ls -l /usr/share/sarg/sarg-php
итого 60
-rw-r--r-- 1 root squid 17982 2008-03-28 01:55 COPYING
-rw-r--r-- 1 root squid   306 2008-03-28 01:55 INSTALL
-rwxr--r-- 1 root squid  1942 2008-03-28 01:55 language.php*
-rw-r--r-- 1 root squid   514 2008-03-28 01:55 LANGUAGES
drwxr-xr-x 6 root squid  4096 2008-09-05 09:38 locale/
-rwxr--r-- 1 root squid  1689 2008-03-28 01:55 sarg-block-it.php*
-rwxr-xr-x 1 root squid    30 2008-03-28 01:55 sarg-realtime.php*
-rwxr--r-- 1 root squid  1813 2008-03-28 01:55 sarg-squidguard-block2.php*
-rwxr--r-- 1 root squid  2869 2008-03-28 01:55 sarg-squidguard-block.php*
-rwxr--r-- 1 root squid  2087 2008-03-28 01:55 style.php*
-rw-r--r-- 1 root squid  2024 2008-03-28 01:55 translate.this

Vicpo

Да главное конфиг верно настроить, но тут уж гугл в помощь  ;)

shiko

Скажите, а вот вы пишете рестартануть после
Цитироватьто пишем данные куда прописали в конфиге и рестартуем сквид.
это что каждый раз как он обнаружит нарушителя мне вручную надо рестартовать squid и как я сразу определю что обнаружен этот нарушитель?

  Ну кое что в голове прояснилось спасибо, завтра воять буду, досвидания!

Vicpo

зачем вручную в конфиге прописывается команда рестарта

shiko

Закончил конфигигурить sarg.conf! Замучился пока разобрался, что к чему инфы  русcкой очень мало по данной теме и она весьма скудная. Есть моменты с которыми у меня трудности в понимании, нужна помощь! :help:
Конфиг sarg получился такой, к стати параметр который отвечает за перезагрузку как sarg так и squid-а после бана пользователя я так и не нашел:
language Russian_UTF-8
access_log /var/log/squid/access.log

# пример: graph_days_bytes_bar_color blue|green|yellow|orange|brown|red
#graphs yes
#graph_days_bytes_bar_color orange

title "Squid User Access Reports for proxy"
font_face Arial
header_color darkblue
header_bgcolor blanchedalmond
font_size 9px
header_font_size 9px
title_font_size 11px
background_color white
text_color #000000
text_bgcolor lavender
title_color green
logo_text_color #000000
image_size 80 45
output_dir /var/www/html/squid/squid_report/index.html
exclude_hosts 192.168.0.0
date_format e
#per_user_limit none
#lastlog 0
remove_temp_files yes
index yes
overwrite_report yes
topsites_num 100
topsites_sort_order CONNECT D
index_sort_order D
exclude_codes /etc/sarg/exclude_codes
max_elapsed 28800000
date_time_by bytes
charset Russian_UTF-8
topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
user_report_fields CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
#show_sarg_info yes
#show_sarg_logo yes
displayed_values abbreviation

# user_authentication no
# AuthUserFile /usr/local/sarg/passwd
# AuthName "SARG, Restricted Access"
# AuthType Basic
# Require user admin %u
 

проверить работу не магу по причине не поняток как все таки запустить sarg. У меня есть файл /etc/crontab, содержимое следующее:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root nice -n 19 run-parts --report /etc/cron.hourly
02 4 * * * root nice -n 19 run-parts --report /etc/cron.daily
22 4 * * 0 root nice -n 19 run-parts --report /etc/cron.weekly
42 4 1 * * root nice -n 19 run-parts --report /etc/cron.monthly
из прочитанного я понял, что именно в этом файле необходимо задать параметры для запуска sarg (где будут указанны время и период запуска), вопрос в следующем что делать со строками после (# run-parts). Для чего прописаны эти строки (если для запуска скриптов, то указанные директории пустые)? Нужно ли вносить какие нибудь изменения в строки в верхней части файла? Куда (т.е в каком месте файла) мне записать к примеру эти строки из статьи для запуска sarg-a:
используя Cron собираю статистику с нарастающим итогом ежедневно и обнуляю итоги в начале каждого месяца
для этого добивил в /etc/crontab следующие строки
0       0       *       *       *       erasha  /usr/local/bin/sudo /usr/local/bin/sarg
15       0       1       *       *       root    /usr/local/sbin/squid -k rotate
И в конце концов нигде не могу найти каким же образом в web-браузере просматривать этот отчет sarga?
   И еще вот я для отчета sarg'a создал директорию "output_dir /var/www/html/squid/squid_report/index.html" скажите какой владелец и группа должен быть у  squid_report/index.html , то ли squid'y или apache'y   совсем запутался!

Vicpo

02 4 * * * root nice -n 19 run-parts --report /etc/cron.dailyВот строка отвечающая за ежедневный запуск
в /etc/cron.daily лежит скрипт запуска сарга в нем же и прописана строка перезапуска сквида если память не изменяет
по поводу конфига чуточку позже отпишусь

shiko

Спасибо! Но вот что хочу сказать в дир /etc/cron.daily я ненашел никаких скриптов для запуска sarg:
[root@stp1 /]# ls -l /etc/cron.daily
итого 24
-rwxr-xr-- 1 root squid 487 2008-03-28 01:55 0sarg*
-rwxr-xr-x 1 root root  180 2007-07-20 02:57 logrotate*
-rwxr-xr-x 1 root root  410 2007-08-31 04:48 makewhatis.cron*
-rwxr-xr-x 1 root root  137 2007-09-24 21:26 mlocate.cron*
-rwxr-xr-x 1 root root  118 2007-10-02 16:09 rpm*
-rwxr-xr-x 1 root root  371 2007-08-08 21:35 tmpwatch*
а вот в дир /etc/cron.d/php - содержимое которого очень похоже на то что нужно:
#!/bin/bash
# /etc/cron.d/php: crontab fragment for php
# This purges session files older than X, where X is defined in seconds
# as the largest value of session.gc_maxlifetime from all your php.ini
# files, or 24 minutes if not defined.  See /usr/lib/php/maxlifetime

# Look for and purge old sessions every 30 minutes
09,39 * * * *  root [ -d /var/lib/php ] && find /var/lib/php/ -type f -mmin +$(/usr/lib/php/maxlifetime) -print0 | xargs -r -0 rm
что скажите?
  И еще скажите у меня все каталоги и файлы, буквально все с правами владельца = root:squid это так и должно быть или все исправить на squid:squid ???

Vicpo

Цитировать-rwxr-xr-- 1 root squid 487 2008-03-28 01:55 0sarg*
а это что по твоему? Права пока не трожь в директории /var/www/html должны быть права на файлы 644 на каталоги 755 владелец не имеет значение потому как сарг стартует от имени рута

shiko

В точности так и сделал:
Цитироватьна файлы 644 на каталоги 755 владелец
Содержимое Osarg:
#!/bin/bash

#Get current date
TODAY=$(date +%d/%m/%Y)

#Get one day ago today
YESTERDAY=$(date --date "1 day ago" +%d/%m/%Y)

mkdir -p /var/www/html/squid/daily
chown -R  apache.apache /var/www/html/squid/daily

NAAT="/var/www-naat/html/genfiles/modules/squid-reports/daily"
if [ -d ${NAAT} ]; then
    chown -R apache ${NAAT}
fi

export LC_ALL=C
/usr/sbin/sarg -f /etc/sarg/sarg.conf -l /var/log/squid/access.log -o /var/www/html/squid/daily -z -d $YESTERDAY-$TODAY > /dev/null 2>&1
ВООБЩЕ АТАСС!  :o И что здесь куда писать, вообще непонятно??? И по моему все равно это не то что нам нужно.? Что то не похоже

Vicpo

там ничего писать не надо если что.
Чтоб тебе проблем меньше было просто добавь в /etc/crontab строчку
02 5 * * * root nice -n 19 /usr/local/sbin/squid -k rotateИ все в 4.02 сарг сделает отчеты в 5.02 отработает сквид

shiko

Да в том то и дело что в директории
Цитировать02 5 * * * root nice -n 19 /usr/local/sbin/squid -k rotate
/usr/local/sbin/у меня нет никакого (squid'a), пусто!
Мне надо прописать путь к бинарнику squid'a, так?
Цитироватьв 4.02 сарг сделает отчеты
Что такое 4.02 (число и месяц или время)

  Я хотел бы отработать примерно такой сценарий
Если запускать этот скрипт по cron строкой:
    */40 8-20 * * 1-5 root /usr/local/bin/Sarg

То каждые 40 минут, с 8 по 20 часов с понедельника по
 пятницу у нас будет обновляться статистика sarg и
проверяться условие достижения лимита на каждую
рабочую станцию. И при этом "передергиваться" squid и rejik.
и никак не могу въехать куда что пишется и что обозначает (примеров валом, а описание везде разные) и что мне писать или что сделать в конечном итоге, хрен пойму.  :(

Vicpo

4.02 время
*/40 8-20 * * 1-5 root /usr/local/bin/Sarg читай man crontab
Да указать путь к squid

shiko

Нашел man crontab по русски, у меня вопрос:
ЦитироватьОчищать домашний каталог от файлов core каждый рабочий день в 3:15 утра: "15 3 * * 1--5 find $HOME -name core 2>/dev/null xargs rm -f".
Что значить отчистить дом каталог от файлов core? Что это за файлы?

Vicpo

Цитироватьфайл рухнувшей программы, собранной с включением отладочной информации
core - файл с core

shiko

Почитал man разобрался немного с этим файлом crontab, с датами то же все понятно,
02 4 * * * root nice -n 19 run-parts --report /etc/cron.dailyа вот с полями типа  (nice -n), (19), (--run-parts) ничего не нашел и значение их мне непонятно, ведь есть примеры как показано ниже где эти поля вообще не указываются, почему? Можно так или нет?
15       0       1       *       *       root    /usr/local/sbin/squid -k rotate И еще я так и не понял что он именно запускает этими строкам?
01 * * * * root nice -n 19 run-parts --report /etc/cron.hourly
02 4 * * * root nice -n 19 run-parts --report /etc/cron.daily
22 4 * * 0 root nice -n 19 run-parts --report /etc/cron.weekly
42 4 1 * * root nice -n 19 run-parts --report /etc/cron.monthly
понятно только то что в данных дир. лежат скрипты каторые он запускает раз в детнь, в неделю и месяц, так или нет? За что они отвечают, можно ли их за коментировать?

Vicpo

это служебные скрипты - ротация логов, проверка безопасности и тп и тд
nice -n 19 запуск с приоритетом 19 то есть с низким приоритетом, чтоб не влиять на работу других демонов и программ уступая им первоочередность
run-parts отрабатывать все скрипты в каталоге (если не научными терминами)
комментировать не рекомендую для системы они необходимы для выполнения служебных функций и тебе ничем не мешают, ты уже как то поубирал "лишнее"  :)

shiko

Спасибо за подробное разъяснение!
  У меня вопрос по поводу владельца, последнего каталога и файла:
output_dir /var/www/html/squid/squid_report/index.htmlвот в этой строчки я указываю sarg'у куда генерировать отчет, после чего через браузер я должен его просмотреть, стало быть он должен принадлежать (apache:apache) или как? Ведь прочитать эту дир. и записать в файл index.html sarg должен с уметь потому как запускается root'ом. А вот apache не сможет прочитать не свои файлы, я правильно мыслю или нет?

Iskander

насчет прочитать - возможно и сможет, если разрешение дано.
например 644 - прочитать смогут все, писать только владелец. От разрешения зависит.

cd /var/www/html/squid/squid_report/
ls -l index.html
Там и увидите, сможет ли читать апача файл.
Любовь и массовые расстрелы спасут мир.