Комментарии

Галерея

Опрос

Из каких стран идет больше всего спама, попыток взлома на ваши серверы?:

SQUID+SAMS

Аватар пользователя maximum
     

Решил я поделиться этапами настройки связки SAMS+SQUID
Итак:
root@hellserver:/home/maxx# uname -a
Linux hellserver 2.6.28-11-server #42-Ubuntu SMP Fri Apr 17 02:48:10 UTC 2009 i686 GNU/Linux
Предполагается что у вас уже настроены MySQL и Apache
Нам надо поставить сабж:
apt-get install squid
менеджер посавит squid и squid-common и еще что то по зависимостям, далее нам нам нужно скачать и скомпилить SAMS. Хочу сказать что я ооочень удивился узнав что sams'a нигде в сорсах линукса нет... это плохо, не считайте это холиваром, но во freebsd самс есть в портах, причем его makefile не поломан как в линуксе, дело в том что, после компилирования самс, создает конфигурационный файл в /etc
Его содержимое:
SQUID_DB=squidlog
SAMS_DB=squidctrl
MYSQLHOSTNAME=localhost
MYSQLUSER=sams
MYSQLPASSWORD=пароль
MYSQLVERSION=4.0
SQUIDCACHEFILE=access.log
SQUIDROOTDIR=/etc/squid
SQUIDLOGDIR=/var/log/squid
SQUIDCACHEDIR=/var/spool/squid
SAMSPATH=/usr/local
SQUIDPATH=/usr/sbin
SQUIDGUARDLOGPATH=/var/log
SQUIDGUARDDBPATH=/var/db/squidguard
RECODECOMMAND=iconv -f KOI8-R -t 866 %finp > %fout
LDAPSERVER=servername_or_ipadress
LDAPBASEDN=your.domain
LDAPUSER=DomainAdministrator
LDAPUSERPASSWD=passwd
LDAPUSERSGROUP=Users
REJIKPATH=/usr/local/rejik
SHUTDOWNCOMMAND=shutdown -h now
CACHENUM=0
так вот, компиляция отдельными пакетами, создает некоторое количество трудностей, это пути до демонов, или пути до каких то библиотек, в нашем случае, самс сконфигурировался с параметром:
SAMSPATH=/usr/local/share хотя самс лежит в /usr/local/sams
поэтому samsdaemon не считал трафик.
по оканчанию компиляции следует создать линк
 
ln -s /usr/local/share/sams /var/www/sams

Ну что ж, конфиг самса легко настраивается поэтому я думаю ничего разъяснять не нужно, переходим к конфигу squid'a
Замечу, для работы с самсом следует произвести лишь только минимум настроек сквида (предпологается что никаких редиректоров не используется) ниже листинг squid.conf каким он должен быть в итоге настройки:
Помните, что каждый параметр должен быть описать в соответсвующем месте конфига (TAG)
#метод авторизации пользователей
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/ncsa.sams
auth_param basic children 10
#сообщение прокси сервера
auth_param basic realm Squid proxy-caching web server PHOENIX GATEWAY
auth_param basic credentialsttl 2 hours
#этот параметр добавил автоматически SAMS в ходе настройки
acl _sams_4afaf526ecb91 proxy_auth "/etc/squid/4afaf526ecb91.sams"
acl _sams_4afaf526ecb91_time time MTWHFAS 00:00-23:59
acl _sams_local_ip dst "/etc/squid/local_ip.sams"
#доступ к прокси серверу описывается в ACL
acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
#разрешаем доступ к прокси указанным группам
http_access allow _sams_4afaf526ecb91 _sams_4afaf526ecb91_time
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all
icp_access allow localnet
icp_access deny all
#какой порт слушать
http_port 3128
hierarchy_stoplist cgi-bin ?
#размер и директория для создания кеша
#2048 — общий объем отведенный кешу в Mb
cache_dir ufs /var/spool/squid 2048 16 256
#логи
#следует заметить что, настройка ведения логов отличная от дефолтовой может привести к не правильному подсчету трафика, поэтому я не стал рисковать и оставил по умолчанию
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern (Release|Package(.gz)*)$ 0 20% 2880
refresh_pattern . 0 20% 4320
acl shoutcast rep_header X-HTTP09-First-Line ^ICY\s[0-9]
upgrade_http0.9 deny shoutcast
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
extension_methods REPORT MERGE MKACTIVITY CHECKOUT
#параметр отвечает за ограничение скорости, выставляется как в конфиге сквида, так и через веб интерфейс самса
delay_pools 1
delay_class 1 2
delay_access 1 allow _sams_4afaf526ecb91
delay_access 1 deny all
delay_parameters 1 524288/524288 524288/524288
hosts_file /etc/hosts
coredump_dir /var/spool/squid
Вобщем настройка сквида завершена, еще раз напоминаю, будьте внимательны добавляя новые параметры в конфигурационный файл squid'a каждый параметр должен быть описан в четко отведенном для него месте (TAG)
переходим к настройке SAMS
вбиваем в браузере:
http://server_ip/sams
по умолчанию, логин/пароль Admin/qwerty
1 нам нужен пункт "Авторизация пользователя" далее в главном окне щелкаем по значку в нижней части
после этих манипуляций мы видим перед собой общую статистику о системе, и трафике
2 Сейчас шустренько тыкаем в левом фрейме пункт SAMS - Администрирование SAMS - главное окно, нижняя часть - значек
Считать трафик: Реальный
Преобразовывать DNS имена: нет
Уровень детализации записей в журнале 9 (смотрим детальные логи)
Домен по умолчанию тут вписать рабочую группу
далее что нас интересует
Способ аутентификации пользователя:
выбираем: NCSA
Проверять наличие команды на реконфигурирование squid каждые 1 сек
Обрабатывать логи SQUID Да (нам же нужно считать трафик)
Запускать обработчик логов через N (в нашем случае 1 минута) минут
Автоматически очищать счетчики трафика пользователей Да(каждый месяц трафик пользователей будет очищаться samsdaemon)
Редиректор Не используем
Включить ограничение скорости доступа пользователей (delaypool) Да (см. конфиг squid.conf "delaypool 1")
Сохранять данные о трафике в базе за последние 3 месяца (поставил 3 на всякий случай)
Так, тут все, жмем сохранить, далее в пункт SQUID жмем реконфигурация
Далее нам нужно создать шаблон
Шаблоны пользователей - создаем шаблон (тут все просто, название, скорость канала, объем трафика для каждого пользователя, метод авторизации NCSA)
После всего этого мы можем создавать пользователей, и добавлять их в шаблоны. Я думаю с остальными пунктами вы разберетесь сами, там все просто =)
Ах да кстати, чуть не забыл, еще один досадный глюк самса, который проявился у меня:
Почему то в базу данных SQL самс не пишет созданных пользователей, а только одного Администратора, остальных он держит в ncsa.sams и из за этого если вы хотите создать больше одного администратора, у вас при авторизации в SAMS будет вываливаться ошибка авторизации, и ошибка что то вроде этой
Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 29 in /usr/local/share/sams/main.php on line 144
Warning: Cannot modify header information - headers already sent by (output started at /usr/local/share/sams/main.php:144) in /usr/local/share/sams/main.php on line 145
Warning: Cannot modify header information - headers already sent by (output started at /usr/local/share/sams/main.php:144) in /usr/local/share/sams/main.php on line 146
Authentication ERROR. В интернетах много разговоров по этому поводу, и у каждого свое решение, так вот я вам предлагаю решить ее следущим образом: идем в phpmyadmin если его нет, ставим, открываем базу squidctrl жмем значек "Вставить" на таблице passwd там мы увидим поля которые следует заполнить.. собственно заполняем =) Все заполненные поля должны быть Not NULL (я надеюсь вы поняли про какие поля я говорю, первые три поля сверху =) в поле pass вставляем шех пароля из файла /etc/squid/ncsa.sams иначе будет ошибка авторизации поле access ставим значение 1 (Администратор).
Теперь в /etc/squid должны появиться такие файлы:
root@hellserver:/home/maxx# ls -l /etc/squid
итого 356
-rw-r--r-- 1 root root 104 2009-11-12 15:45 4afaf526ecb91.sams
-rw-r--r-- 1 root root 26 2009-11-12 15:45 local_ip.sams
-rw-r--r-- 1 root root 314 2009-11-12 15:45 ncsa.sams
-rw------- 1 root root 169704 2009-11-12 15:45 squid.conf
-rw-r--r-- 1 root root 169279 2009-11-12 15:45 squid.conf.bak

ВСЕ, вроде все... может быть я что то упустил, может что то не правильно описал, так что ваши комментарии, вопросы, поправки будут очень кстати. Хочу еще сказать, есть хороший мануал по самсу: http://sams.perm.ru/doc/ru/index.html