Squid3+SAMS+Samsredirector на Ubuntu-server 7.10

Март 01, 2008 I Howto.

Итак, необходимо поднять на Ubuntu-server 7.10 связку
SQUID3 + SAMS + Samsredirector
Реализация этого на обычном squid вопросов уже не вызывает почти ни у кого,
так как все описано на много раз …. а вот squid3 почему-то многих ставит в тупик, хотя непонятно ….

Итак начнем.

Исходные данные для установки:
Будущий сервер proxy.workgroup
ip 192.168.0.99 gt:192.168.0.77 dns:192.168.0.77

Установка:
При установке выбираем конфигурацию LAMP и OPENSSH-Server
В процессе установки вас спросят пароль для root mysql
После установки проверяем имя хоста в /ets/hostname ->> proxy.workgroup
и записи в /etc/hosts
127.0.0.1 localhost proxy
192.168.0.99 proxy.workgroup proxy
Записи, относящиеся к ipv6 можно удалить …

Проверяем установки времени:
date
Если нужно изменить -> man date

Редактируем список репозитариев в /etc/apt/sources.list
и обновляем систему
apt-get update
apt-get upgrade

Установка SQUID3 и SAMS
Ставим необходимые пакеты для сборки и работы sams:
apt-get install mc libpcre3 libpcre3-dev libmysqlclient15-dev php5-ldap php-fpdf squid3 squidguard gcc make php5-gd
(если нужна стабильность, ставим squid)

Итак, нам необходимы исходники sams
Идем на http://sams.irc.perm.ru/ и качаем Current Stable Release: sams-1.0.1.tar.bz2
cd /usr/src/
wget http://sams.perm.ru/downloads/sams-1.0.1.tar.bz2
bunzip2 sams-1.0.1.tar.bz2 && tar -xpf sams-1.0.1.tar && rm sams-1.0.1.tar
cd sams-1.0.1/

В файле samsdaemon.c
ищем строку squid -k reconfigure
и меняем на squid3 -k reconfigure
Кто плохо знаком с консольными редакторами, пользуйтесь mc
или после сборки sams делаем симлинк (но думаю это не правильно…)
ln -s /usr/sbin/squid3 /usr/sbin/squid
иначе демон samsdaemon
будет пытаться при реконфигурировании запустить /usr/sbin/squid вместо squid3

Теперь непосредственно конфигурирование:
./configure – -with-httpd-locations=/var/www
make
make install

Копируем файл запуска демона конфигурации
cp ./etc/samsd.debian /etc/init.d/samsd
update-rc.d samsd defaults

Займемся доступом к mysql
mysql -u root -p (тут спросят пароль root для mysql)
GRANT ALL ON squidctrl.* TO sams@localhost IDENTIFIED BY “sams”;
(вместо “sams” вписываем свой пароль для юзера sams)
GRANT ALL ON squidlog.* TO sams@localhost IDENTIFIED BY “sams”;
exit

Теперь отредактируем в конфиге пароли, логины и пути к squid3
vim /etc/sams.conf
Учтите, что в строке
SHUTDOWNCOMMAND=shutdown -h now
прописана команда на полный останов прокси!

Собственно редактируем следующие строки:
MYSQLPASSWORD=sams
SQUIDROOTDIR=/etc/squid3
SQUIDLOGDIR=/var/log/squid3
SQUIDCACHEDIR=/var/spool/squid3
(для обычного сквида правим только пароль)

Теперь импортируем таблицы в mysql
cd ./mysql
mysql -u root -p < sams_db.sql
mysql -u root -p < squid_db.sql

И идем редактировать конфиг сквида под свои нужды:
vim /etc/squid3/squid.conf
(vim /etc/squid/squid.conf все по аналогии)

Внимание! Ни в коем случае не менять структуру файла и не удалять каменты !
sams ориентируется в конфиге по его дефолтной структуре и тегам в коментариях.
Итак, поехали:

указываем адрес, который будет слушать/обслуживать наш прокси
http_port 192.168.0.99:3128

раскоментариваем (редактруем по своему вкусу)
сache_dir ufs /var/spool/squid3 100 16 256
а так же другие опции работы с кешем

раскоментарить:
access_log /var/log/squid3/access.log
pid_filename /var/run/squid3.pid

Ищем соответствующие секции и вставляем/раскоментариваем :
url_rewrite_program /usr/local/bin/samsredir
url_rewrite_children 5
auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/ncsa.sams
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours

Все, необходимый минимум получен, остальное сами изучите :)
Теперь займемся обработчиком логов squid3 (access.log) – собственно непосредственный подсчет трафика
Обработчик логов sams может быть запущен samdaemon автоматически или из cron

Мы берем для простоты вариант работы с cron, создайте демону cron задание в файле /etc/crontab:
*/1 * * * * /usr/local/bin/sams
Согласно этому правилу обработка логов будет осуществляться раз в минуту
crontab -u root -e
и вставить строку что выше
Должно получиться вот так:
# m h dom mon dow command
*/1 * * * * /usr/local/bin/sams

Теперь перезапустим squid и займемся настройкой
/etc/init.d/squid3 restart

Открываем в мазиле

http://192.168.0.99/sams/

Админ:
admin/qwerty
Статистика:
auditor/audit

Настройка WEB интерфейса:
ставим язык russian utf-8
Показывать графики в отчетах
Создавать PDF отчеты с помощью fpdf

sams-1.png

Администрирование SAMS:
авторизация в NCSA
файл перенаправления запроса http://192.168.0.99/sams/icon/classic/blank.gif
Путь к каталогу, где лежат файлы запрета запроса http://192.168.0.99/sams/messages
Редиректор встроенный SAMS
Сохранять данные о трафике в базе за последние 12 месяцев

sams-3.png

Удалить все существующие группы пользователей и шаблоны пользователей
удаляем все безжалостно…

Регулярные выражения :
создать список ban и поместить туда к примеру vkontakte.ru
Локальные домены:
добавить workgroup и 192.168.0.99

Создаем шаблон пользователей users:
Запрет доступа по регулярным выражениям
ban
Авторизация NCSA

sams-4.png

Теперь добавим группу Users
и первого юзера
(не забудьте поставить галку в поле – Пользователь активен)

sams-5.png

Запускаем демона
/etc/init.d/samsd start
Идем в меню SQUID – реконфигурировать
после того, как убедились, что команда демоном получена – смотрим в консоли:
ps -auxw|grep proxy

sams-7.png

Теперь для проверки reboot и будем смотреть как это все работает,
В браузере прописываем настройки прокси 192.168.0.99 порт 3128
Все должно работать, а при попытке входа на запрещенный URL должны получить:

sams-61.png

Ну и конечно красивые графики в статистике …

sams-8.png

Ну вот кажется и все, ждите продолжения ….

5 responses so far, say something?

  1. Kost Says:

    Настройка PHP:
    С текущей версии SAMS научился работать с PHP в режиме safe_mode=On. Но это требует дополнительной настройки конфигурации. Для этого редактируем файл конфигурации php /etc/php5/apache2/php.ini.

    1. включаем режим safe mode. Для этого выставляем параметр safe_mode

    safe_mode = On

    2. SAMS для некоторых функций WEB интерфейса использует системные команды, например wbinfo. В режиме safe_mode php блокирует доступ к системным командам. Php позволяет выполнять системные команды, расположенные в каталоге, заданном параметром safe_mode_exec_dir. Изменяем этот параметр:

    safe_mode_exec_dir = “/usr/local/share/sams/bin”

    3. Далее разрешаем исполнение системных скриптов из кода php. Ищем в файле конфигурации параметр и убираем из него запрет вызова функций phpinfo system shell_exec exec:

    disable_functions = “chdir,dl,ini_get_all,popen,proc_open,passthru,pcntl_exec”

    4. Все. PHP готов к работе.

  2. raider Says:

    Итак,
    наткнулся весьма на неприятный момент.
    При работе с авторизацией, в нашем случае это
    auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/ncsa.sams
    При узазании неправильного login/pass сквид очень сильно стремится закончить работу …
    В логах /var/log/squid3/cache.log
    assertion failed: ACLChecklist.cc:402: “auth_user_request == NULL”
    Моя версия была squid-3.0.PRE6
    Перешел на Squid Cache version 3.0.STABLE1 for i486-pc-linux-gnu…
    картина та же.
    На http://www.squid-cache.org/ говорят, что пофиксино в 3.0.STABLE2
    Собирать с сырцов не очень хочется, пока подождем …
    Кому срочно, ставьте обычный squid

  3. cheilya Says:

    to raider

    Не поможет тебе 3.0.STABLE2. В третьем сквиде используется 5 delay pool классов, а sams под 3 сделан и в конфиг соответствующие изменения вносит, как в версиях 2.6 и ранее. Отсюда и assertion failed: ACLChecklist.cc:402: “auth_user_request == NULL”.

    Что делать решай сам ;-)

  4. Plume Says:

    А у меня что-то никак не хочет php переходить в режим safe_mode On (на странице первого запуска “Начальная проверка”). Естественно, в php.ini соответствующие On’ы и все прочие исправления сделаны, а на странице никак это не отражается.
    Кто может подсказать, где и что не так?
    (Ubuntu 10.04.1 LTS, SAMS v.2, PHP 5.3.2-1ubuntu4.5, SQUID v.2.7.STABLE7)
    Спасибо ;)

  5. Plume Says:

    Всё, простите, не надо хелпа – общий reboot уже всему помог :)

Оставить комментарий