Per aspera ad astra

Что такое SAMS, его возможности и принцип работы хорошо описаны здесь — http://www.permlug.org/wiki/sams. К сожалению в свое время я не нашел хорошей пошаговой инструкции по установке SAMS из портов в системе FreeBSD, поэтому написал собственную шпаргалку. Надеюсь, она поможет начинающим обойти те подводные камни, которые попались мне.

Установка проводилась на FreeBSD 6.3, на момент установки в системе присутствовали следующие пакеты:

mysql-5.0.51a
php5-5.2.6
apache-2.2.9
samba-3.0.31_1

Связка Apache2 + PHP + MySQL без проблем работала (о её установке читайте в предыдущих заметках), оставалось поставить из портов последние доступные версии squid-2.7.5 и sams-1.0.3.

Ставим squid, обязательно выбираем опцию — Enable delay pools:

# cd /usr/ports/www/squid

# make install clean

В /usr/local/etc/squid/squid.conf включаем ncsa авторизацию (это важный пункт, т.к. SAMS этого сам не сделает). Раскомментируем и подправим следующие строчки:

auth_param basic program /usr/local/libexec/squid/ncsa_auth /usr/local/etc/squid/ncsa.sams
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours

Создаем файл ncsa.sams. По идее SAMS сделает его самостоятельно, но нам сейчас нужно, чтобы Squid запустился еще до SAMS с целью тестирования его работы.

# touch /usr/local/etc/squid/ncsa.sams

Запускаем Squid:

# rehash
# squid -z
# /usr/local/etc/rc.d/squid start

Проверяем работу Squid. Должно показаться что-то вроде:

# ps -ax | grep squid
18859 ?? Is 0:00.00 /usr/local/sbin/squid -D
18861 ?? S 0:00.18 (squid) -D (squid)
18862 ?? Is 0:00.00 (ncsa_auth) /usr/local/etc/squid/ncsa.sams (ncsa_auth)
18863 ?? Is 0:00.00 (ncsa_auth) /usr/local/etc/squid/ncsa.sams (ncsa_auth)
18864 ?? Is 0:00.00 (ncsa_auth) /usr/local/etc/squid/ncsa.sams (ncsa_auth)
18865 ?? Is 0:00.00 (ncsa_auth) /usr/local/etc/squid/ncsa.sams (ncsa_auth)
18866 ?? Is 0:00.00 (ncsa_auth) /usr/local/etc/squid/ncsa.sams (ncsa_auth)

Приступаем к установке SAMS из портов. При конфигурации выбираем поддержку Apache 2 (у меня он и стоит):

# cd /usr/ports/www/sams
# make config
# make
# make install
# cp /usr/local/etc/sams.conf.sample /usr/local/etc/sams.conf
# make setup

Здесь нужно будет ввести пароль  пользователя root  в MySQL, согласиться на создание баз данных и пользователя sams и назначить ему пароль.

# make clean

После завершения инсталяции следуем выданным инструкциям. В конфиг Apache добавляем:

Alias /sams/ «/usr/local/share/sams/»
<Directory «/usr/local/share/sams/»>
AllowOverride AuthConfig
Options Indexes MultiViews
Order allow,deny
Allow from all
</Directory>

В файл /etc/rc.conf добавим:

sams_enable=”YES”
squid_enable=”YES”

Прописываем правильные пути в файле /usr/local/etc/sams.conf. Мой файл выглядит так:

[client]
SQUID_DB=squidlog
SAMS_DB=squidctrl
MYSQLHOSTNAME=localhost
MYSQLUSER=sams
MYSQLPASSWORD=samspasswd
MYSQLVERSION=5.0
SQUIDCACHEFILE=access.log
SQUIDROOTDIR=/usr/local/etc/squid
SQUIDLOGDIR=/usr/local/squid/logs
SQUIDCACHEDIR=/var/spool/squid
SAMSPATH=/usr/local
SQUIDPATH=/usr/local/sbin
SQUIDGUARDLOGPATH=/var/log
SQUIDGUARDDBPATH=/var/db/squidGuard
RECODECOMMAND=/usr/local/bin/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=/sbin/shutdown -h now
CACHENUM=0
MYSQLUSER=sams
MYSQLPASSWORD=123456
MYSQLHOSTNAME=localhost

Запускаем sams:

# samsdaemon

Проверяем запустилось ли всё что нужно:

# ps -ax | grep sams
25865 ?? I 0:00.00 /usr/local/bin/samsf
25868 ?? Is 0:00.00 (ncsa_auth) /usr/local/etc/squid/ncsa.sams (ncsa_auth)
25869 ?? Is 0:00.00 (ncsa_auth) /usr/local/etc/squid/ncsa.sams (ncsa_auth)
25870 ?? Is 0:00.00 (ncsa_auth) /usr/local/etc/squid/ncsa.sams (ncsa_auth)
25871 ?? Is 0:00.00 (ncsa_auth) /usr/local/etc/squid/ncsa.sams (ncsa_auth)
25872 ?? Is 0:00.00 (ncsa_auth) /usr/local/etc/squid/ncsa.sams (ncsa_auth)
22678 p0- S 0:13.77 samsdaemon
26153 p0 R+ 0:00.00 grep sams

Заходим в веб-интерфейс SAMS — http://ip_server/sams/ по умолчанию пользователь admin, пароль qwerty.
SAMS -> SAMS administration -> SAMS settings выбираем NCSA авторизацию, ставим галочку на «Insert SQUID logs in database». Записывам настройки.

ВАЖНО!!! Обязательно изменить в «templates» тип авторизации на NCSA (по умолчанию стоит по IP). Если не сделать этого, то в консоли будет вываливаться сообщение о пуcтом файле default.sams.
Добавляем новых пользователей. Делаем переконфигурирование — SAMS -> SQUID -> SQUID reconfiguration -> Reconfigurate

Идем в браузер, прописываем настройки прокси и пробуем выйти в Интернет. Если всё настроено правильно, то должно появится окно авторизации, вводим логин и пароль ранее добавленного пользователя и выходим на бескрайние просторы Интернета.

Теперь, когда настроена авторизация по логину/паролю, можно без труда настроить авторизацию по IP адресу. Для этого нужно создать дополнительный шаблон и указать в нём тип авторизации «IP», затем добавляем новых пользователей указав в их профиле новый шаблон, а также IP адрес с которого должен работать пользователь, пароль указывать не нужно, но в браузере всё так же требуется прописать настройки прокси-сервера.

Решение разных проблем

Спустя некоторое время после использования SAMS выяснилось, что периодически падает демон samsf отвечающий за непрерывную обработку логов Squid. Оказалось, что разработчики более не поддерживают его и рекомендуется использовать опцию «Discret parser» SAMS -> SAMS administration -> SAMS settings. Периодичность я поставил 1 минуту. После этого всё нормализовалось.

Если при реконфигурировании SAMS новые пользователи не добавляются в ncsa.sams то можно попробовать убить процессы samsdaemon и samsf и запустить samsdaemon заново.

Другой частый вариант при первых запусках SAMS — не стартует squid или ругается на несуществующий процесс. В этом случае нужно в ручную создать файл /usr/local/etc/squid/ncsa.sams (даже если вы его создавали в начале установки, то при реконфигурировании SAMS он скорей всего был удален), затем в папке /usr/local/squid/logs удаляем файл squid.pid (иногда также помогает удаление |access.log) после этого лучше перезагрузиться.

Ещё один нюанс настройки SAMS — при перезапуске сервера SAMS норовит стартовать раньше MySQL, в результате чего он не может открыть нужные таблицы. Есть несколько способов это устранить, один из них дополнить в файле /usr/local/etc/rc.d/sams строчку:

# REQUIRE: LOGIN cleanvar

до

# REQUIRE: LOGIN cleanvar mysql

Другой вариант — убрать из /etc/rc.conf строчку sams_enable=”YES” и прописать в crontab строчку:

@reboot /usr/local/etc/rc.d/sams start
Перезагружаем сервер, смотрим работу SAMS, если всё нормально, то на этом настройку можно считать завершенной.

Следует иметь в виду, что в SAMS есть масса других подводных камней, которые могут проявиться при попытке настроить авторизацию по NTLM и т.д. Есть также вероятность, что в один не очень хороший день SAMS может упасть без видимой причины. В этих случаях я советую искать ответы на форуме http://www.permlug.org/forum/sams/ Многие подобные ситуации уже обсуждались и ответы были найдены, нужно лишь искать.

На всякий случай приведу примеры файлов конфигурации.

Пример файла /usr/local/etc/rc.d/sams

#!/bin/sh
# $FreeBSD: ports/www/sams/files/sams.sh.in,v 1.1 2006/12/29 20:18:35 miwi Exp $

# PROVIDE: sams
# REQUIRE: LOGIN cleanvar mysql — очень важно, без mysql не будет стартовать при загрузке ОС
# KEYWORD: shutdown

# Define these sams_* variables in one of these files:
# /etc/rc.conf
# /etc/rc.conf.local
# /etc/rc.conf.d/sams
#
# DO NOT CHANGE THESE DEFAULT VALUES HERE
#
sams_enable=${sams_enable-«NO»}
sams_flags=${sams_flags-«»}
sams_pidfile=${sams_pidfile-«/var/run/samsdaemon.pid»}

. /etc/rc.subr

name=»sams»
rcvar=`set_rcvar`
command=»/usr/local/bin/samsdaemon»

load_rc_config $name

pidfile=»${sams_pidfile}»

run_rc_command «$1»

Пример файла /usr/local/etc/squid/squid.conf:

auth_param basic program /usr/local/libexec/squid/ncsa_auth /usr/local/etc/squid/ncsa.sams

auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
acl _sams_4934254f2ae45 src «/usr/local/etc/squid/4934254f2ae45.sams»
acl _sams_4934254f2ae45_time time MTWHFAS 00:00-23:59
acl _sams_default proxy_auth «/usr/local/etc/squid/default.sams»
acl _sams_default_time time MTWHFAS 00:00-23:00
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
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 CONNECT method CONNECT
http_access allow _sams_4934254f2ae45 _sams_4934254f2ae45_time
http_access allow _sams_default _sams_default_time
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access deny all
icp_access allow localnet
icp_access deny all
http_port 3128
hierarchy_stoplist cgi-bin ?
access_log /usr/local/squid/logs/access.log squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
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
delay_pools 2
delay_class 1 2
delay_class 2 2
delay_access 1 allow _sams_4934254f2ae45
delay_access 1 deny all
delay_parameters 1 524288/524288 524288/524288
delay_access 2 allow _sams_default
delay_access 2 deny all
delay_parameters 2 64000/64000 64000/64000
coredump_dir /usr/local/squid/cache

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

3 комментария: Установка SAMS с NCSA и IP авторизацией на FreeBSD из портов

  • Time говорит:

    ВАЖНО!!! Обязательно изменить в “templates” тип авторизации на NCSA (по умолчанию стоит по IP). Если не сделать этого, то в консоли будет вываливаться сообщение о пуcтом файле default.sams.
    Можно поподробнее где этот и что менять

  • admin говорит:

    Это находится в веб-интерфейсе SAMS. Там есть пункт “templates”, где и нужно произвести замену типа авторизации. К сожалению не могу предоставить картинки, т.к. на данный момент не пользуюсь данной системой.

  • Snak говорит:

    Доброго времени суток, спасибо за статью, она мне очень помогла, однако авторизация через ncsa не работает я сам поковырял малость и увидел что SAMS по непонятной мне причине не добавляет пользователей в фаил ncsa.sams. Я пробовал менять права на этот фаил но это не помогло и скольких бы пользователей я не добавлял фаил остается пустым. А вот по IP авторизации все работает нормально.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Фотографии из жизни
Туристический лагерь в Аркаиме Праздник в честь основания Советского района города Орска. 24 июня 2012 года. День города Орска. Парк Железнодорожников. 25 августа 2012 года День города Орска. Парк Железнодорожников. 25 августа 2012 года День Советского района города Орска. 8 июня 2013 года День Советского района города Орска. 8 июня 2013 года
Подписка