вторник, ноября 20, 2007

Пример установки sams-1.0 на freebsd

SAMS это Squid Account Management System.
SAMS это программное средство для администрирования доступа пользователей к прокси-серверу SQUID. Сайт проекта http://sams.perm.ru/ Там же указаны возможности системы.
В данной статье описан процесс установки программы с NCSA авторизацией на freebsd со всеми необходимыми для работы программами. ВНИМАНИЕ!!! Хочу заметьть, что настройка apache, php и т.д. по умолчанию, что не обеспечивает должной безопасности системы. Поэтому данная система должна быть дополнительно защищена для доступа из вне. Версия операционной системы freebsd 6.2

Ставим APACHE13
cd /usr/ports/www/apache13
make install clean

Добавим в /etc/rc.conf строку

apache_enable=”YES”

Выполним команду /usr/local/etc/rc.d/apache start
Посмотрим запустился ли сервер ps ax | grep http


6280 ?? Ss 0:00,05 /usr/local/sbin/httpd
6281 ?? I 0:00,00 /usr/local/sbin/httpd
6282 ?? I 0:00,00 /usr/local/sbin/httpd
6283 ?? I 0:00,00 /usr/local/sbin/httpd
6284 ?? I 0:00,00 /usr/local/sbin/httpd
6285 ?? I 0:00,00 /usr/local/sbin/httpd
6308 p0 R+ 0:00,00 grep http


Проверяем открывается ли страница http://my.ip (где my.ip это адрес вашего сервера)

Ставим squid

cd /usr/ports/www/squid
make config

Выбираем следующие опции

X squid_delay_pools
X squid_carp
X squid_wccp
X squid_ident
X squid_kqueue
X squid_largefile

Далее make install clean
Добавляем следующие опции в /usr/local/etc/squid/squid.conf
Ниже фрагмент файла squid.conf с добавленными или измененными параметрами
Первые пять строк включают аутентификацию. Проверьте правильность путей к файлам.
Опция http_port 8080 меняет порт, на котором работает squid
Опция forwarded_for off отключает ip адрес клиента (анонимность нам не повредит).
Опциями acl squidusers proxy_auth REQUIRED и http_access allow squidusers
мы разрешаем аутентифицированным пользователям доступ в интернет.


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
auth_param basic casesensitive off

http_port 8080

forwarded_for off

acl squidusers proxy_auth REQUIRED

http_access allow squidusers



Создадим пользователя для проверки работы squid
/usr/local/bin/htpasswd -c /usr/local/etc/squid/ncsa.sams testuser
Вводим пароль для testuser
Добавим в /ets/rc.conf строку

squid_enable=”YES”

Создадим кеш прокси сервера командой squid –z
Запустим squid командой /usr/local/etc/rc.d/squid start
Посмотрим процессы ps axw | grep squid

5925 ?? Is 0:00,00 /usr/local/sbin/squid -D
5927 ?? S 0:01,05 (squid) -D (squid)
5928 ?? Is 0:00,01 (ncsa_auth) /usr/local/etc/squid/ncsa.sams (ncsa_auth)
5929 ?? Is 0:00,01 (ncsa_auth) /usr/local/etc/squid/ncsa.sams (ncsa_auth)
5930 ?? Is 0:00,01 (ncsa_auth) /usr/local/etc/squid/ncsa.sams (ncsa_auth)
5931 ?? Is 0:00,01 (ncsa_auth) /usr/local/etc/squid/ncsa.sams (ncsa_auth)
5932 ?? Is 0:00,01 (ncsa_auth) /usr/local/etc/squid/ncsa.sams (ncsa_auth)


Установка MYSQL5
cd /usr/ports/databases/mysql50-server
make install clean

Добавим в /etc/rc.conf строку

mysql_enable=”YES”

Запустим mysql командой /usr/local/etc/rc.d/mysql-server start
Посмотрим запустился ли mysql, командой ps axw | grep mysql

6210 p0 RV 0:00,00 grep mysql (csh)
6188 p1- S 0:00,02 /bin/sh /usr/local/bin/mysqld_safe --defaults-extra-file=/var/db/mysql/my.cnf --user=mysql --datadir=/var
6206 p1- S 0:00,94 /usr/local/libexec/mysqld --defaults-extra-file=/var/db/mysql/my.cnf --basedir=/usr/local --datadir=/var/

После установки меняем пароль админа командой

/usr/local/bin/mysqladmin -u root password 'new_password'
/usr/local/bin/mysqladmin -u root -h hostname password 'new_password'

Подключаемся локально mysql -u root -p
Добавим пользователя monty (полные права на все базы со всех хостов сети)

use mysql
GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY 'password' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO monty@"%" IDENTIFIED BY 'password' WITH GRANT OPTION;

Ставим PHP5
cd /usr/ports/lang/php5
make config

Выбираем опции

X CLI
X CGI
X APACHE
X SUHOSIN
X FASTCGI
X PATHINFO

make install clean

Чтобы активировать модули apache даем команду apachectl graceful
Правим файл /usr/local/etc/apache/httpd.conf

Закрываем комментариями 2 строки, php то у нас пятый а не четвертый
Ниже фрагмент httpd.conf


# <IfModule mod_php4.c>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
# </IfModule>


Еще проверим httpd.conf, в списке модулей должны быть строки
Ниже фрагмент httpd.conf


LoadModule php5_module libexec/apache/libphp5.so
AddModule mod_php5.c


В корень вебсервера кладем файл /usr/local/www/data/index.php содержащий


<?
phpinfo();
?>


Перезапускаем вебсервер командой apachectl restart

Проверяем работоспособность php http://my.ip/index.php

Ставим PHP5_EXTENSIONS

make config

Выбираем опции

X CTYPE
X CURL
X GD
X GETTEXT
X HASH
X ICONV
X JSON
X MYSQL
X OVERLOAD
X PCRE
X PDF
X PDO
X PDO_SQLITE
X POSIX
X SESSION
X SIMPLEXML
X SPL
X SQLITE
X TOKENIZER
X XMLREADER
X XMLWRITER
X ZLIB

make install clean

Чтобы активировать модули apache даем команду apachectl graceful

В файл /usr/local/etc/apache/httpd.conf добавить директиву ExecCGI
Это разрешит загрузку файлов на сервер через web интерфейс
Ниже фрагмент httpd.conf


<Directory />
Options FollowSymLinks ExecCGI
AllowOverride None
</Directory>


Настраиваем php
cp /usr/local/etc/php.ini-recommended /usr/local/etc/php.ini
Настриваем php для работы в режиме safe mode, изменим /usr/local/etc/php.ini

включаем режим safe mode. Для этого выставляем параметр safe_mode = On
Ниже фрагмент php.ini

safe_mode = On
safe_mode_exec_dir = "/usr/local/share/sams/bin"


Установка sams-1.0
Качаем с http://sams.perm.ru/ дистрибутив sams-1.0.tar.bz2, распаковываем,
переходим в директорию cd sams-1.0, даем команду ./configure, далее собираем командой gmake install
Берем из исходников sams-1.0/etc/samsd.freebsd, переименовываем в samsd и кладем в /usr/local/etc/rc.d/
Добавим в samsd строку
# REQUIRE: mysql

Это необходимо чтобы сервис samsd стартовал после mysql
Ниже пример файла /usr/local/etc/rc.d/ samsd


#!/bin/sh
#
# $FreeBSD: samsd,v 1.4 2005/09/26 19:53:00 Evgeny Bobir aka LM $
#

# PROVIDE: samsd
# REQUIRE: mysql
# KEYWORD: nojail

. /etc/rc.subr

name="samsd"
rcvar=`set_rcvar samsd`
command="/usr/local/bin/samsdaemon"

load_rc_config $name
command_args="${samsd_server_flags}"
sig_stop="USR1"

run_rc_command "$1"


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

samsd_enable=”YES”

После этого прописываем пароль для пользователя sams в /etc/sams.conf, исправляем пути.
Ниже содержание файла sams.conf


SQUID_DB=squidlog
SAMS_DB=squidctrl
MYSQLHOSTNAME=localhost
MYSQLUSER=sams
MYSQLPASSWORD=nikamu_niskashu
MYSQLVERSION=5.0
SQUIDCACHEFILE=access.log
SQUIDROOTDIR=/usr/local/etc/squid
SQUIDLOGDIR=/usr/local/squid/logs
SQUIDCACHEDIR=/usr/local/squid/cache
SAMSPATH=/usr/local
SQUIDPATH=/usr/local/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


--добавлено 28.11.2007
Необходимо создать символическую ссылку.(чтобы создавался файлик ncsa.sams)
ln -s /usr/local/bin/htpasswd /usr/bin/htpasswd
--добавлено 28.11.2007

Запустим /usr/local/etc/rc.d/samsd start
Заходим в вебинтерфейс sams, http://my.ip/sams/
Создаем пользователя sams для доступа к mysql, автоматом создадутся необходимые базы.

заходим в вебинтерфейс, по умолчанию пользователь Admin, пароль qwerty
Администрирование SAMS -> настройки SAMS
Способ аутентификации пользователя-> NCSA
Настройка samsdaemon
Проверять наличие команды на реконфигурирование squid каждые -> 1 секунд
Обрабатывать логи SQUID -> галочка
Запускать обработчик логов через N минут -> 1 минут
Редиректор -> встроенный squid
Создаем пользователей, назначаем им шаблон

Убираем из /usr/local/etc/squid/squid.conf две строки

acl squidusers proxy_auth REQUIRED
http_access allow squidusers

и добавляем следующую для редиректора

redirect_program /usr/local/etc/squid/redirector.sams

Реконфигурируем прокси
SQUID -> Реконфигурирование SQUID

Работаем.

Добавлено 26.12.2008
Внимание! Рекомендую ставить SAMS из портов, порт снова регулярно обновляется.
Спасибо http://grishin.000webhost.info/sams/





Обсудить сообщение можно в форуме admins.arg.su

33 комментария:

Pavel комментирует...

Здорово, спасибо. Можно узнать условия использования статьи? Хотелось-бы её wiki копию для http://sams.nixdev.net/wiki/samssetup

Айзятуллен Рамиль комментирует...

При копировании прошу указывать ссылку на первоисточник.

Pavel комментирует...

А зачем нам mod_perl?
И какая версия FreeBSD?

Айзятуллен Рамиль комментирует...

Для sams он действительно не нужен.
Freebsd 6.2
Еще нашел ошибку (неправильный путь safe_mode_exec_dir), исправлю в статье.
Ниже фрагмент php.ini

#############
safe_mode = On
safe_mode_exec_dir = "/usr/local/share/sams/bin"
#############

Айзятуллен Рамиль комментирует...

Внимание! Изменения в статье.
При реконфигурировании SQUID не создается файл ncsa.sams
Необходимо создать символическую ссылку.
ln -s /usr/local/bin/htpasswd /usr/bin/htpasswd
В линиксе пути другие :)

IMITATOR комментирует...

Большое Вам спасибо за такое руководство по установке.

Я только начинаю разбирать фрю и уменя было много проблем.

Вчастности не знал как же можно конфигурировать порты перед сборкой.

У меня всё получилось, большое Вам спасибо.

П.С. а как конфигурировать через pkg_add ? Сорри за вопрос.

Айзятуллен Рамиль комментирует...

Пакадж это уже скомпилированный пакет, как там опции выбирать. :)

UndCon комментирует...

Наверное правильней будет вместо /usr/local/bin/htpasswd /usr/local/etc/squid/ncsa.sams testuser
использовать
/usr/local/bin/htpasswd -с /usr/local/etc/squid/ncsa.sams testuser

Айзятуллен Рамиль комментирует...

Да, так правильней. Исправлю в статье, спасибо. ;)

ymsssg комментирует...

Здравствуйте!
Можно узнать почему SAMS ставился из исходников, а не из портов ведь так для FreeBSD было бы правильнее?

Pavel комментирует...

SAMS ставится из исходников т.к. в портах FreeBSD немного устаревшая версия SAMS.
После выхода SAMS 1.1 я буду общаться с маинтейнером по поводу обновления версии SAMS в портах.

rus991999 комментирует...

Доброго времени суток, всем здесь присутствующим!
У меня вопрос? Как выбрать опции в squid:

X squid_delay_pools
X squid_carp
X squid_wccp
X squid_ident
X squid_kqueue
X squid_largefile

Если я устанавливаю из сорцов.
Спасибо!

Айзятуллен Рамиль комментирует...

Распаковываете исходники, переходите в папку с распакованными исходниками и набираете
./configure --help
Внимательно читаете результат и неообходимые опции добавляете потом к команде configure. Они могут отличаться от параметров из портов.
Далее ./configure с параметрами
make
make install

Анонимный комментирует...

Скажите, а что за redirector.sams и откуда он берется в папке сквида?

Айзятуллен Рамиль комментирует...

Цитирую встроенную справку sams.
"Стандартный SQUID
Этот редиректор описан в документации на SQUID. Написан на perl. Редиректор создается после подачи команды на реконфигурирование SQUID, на основе списков перенаправления запросов. Быстрый и легкий редиректор, но не различает пользователей.
Для включения этого редиректора необходимо в squid.conf добавить строчку:
redirect_program /etc/squid/redirect.sams
При использовании этого редиректора, ограничение доступа пользователей по спискам запрета доступа организовано с использованием ACL SQUIDa

При использовании редиректора SQUID или если редиректор не используется вовосе, то в существует возможность:
при отключении пользователей за превышение трафика у них остается доступ к URL и IP адресам, прописанным в списке "Локальные домены".

Для выбора редиректора, используемого с SAMS, необходимо в настройках SAMS выбрать редиректор, который планируется использовать. Если будет использоваться другой редиректор, или редиректор вообще не будет использоваться, выберите пункт "Не использовать редиректор" или "Встроенный SQUID".

Анонимный комментирует...

А у меня непонятный баг (все делал по статье): захожу на вебинтерфейс, устанавливаю язык, после перехожу Администрирование SAMS -> настройки SAMS указываю нужные опции, но после нажатия кнопки "Сохранить изменения", нижняя панель (со значками) оказывается в верху экрана, при этом в правой части ничего кроме этой панельки со значками не отображается, даже если я прехожу в другие пункты меню. После принудительного обновления странички в браузере - все становиться на свои места, но настройки так и не изменются...

Pavel комментирует...

Это фича ad-block или какого другого модуля блокирования спама.
Отключите подобные модули для сайта где располагается sams и все будет хорошо.

Айзятуллен Рамиль комментирует...

Обсуждения в форум http://admins.arg.su.
Я думаю проблема в настройке php

Анонимный комментирует...

Всем спасибо! pavel оказался прав, проблема была в ad-block, после добавления моего адреса в исключения, все заработало!

Анонимный комментирует...

Добрый день!
Хотел бы уточнить для чего используется редиректор и возможно ли ограничивать юзеров по трафику вообще без него? (цитату встроенную справку sams читал, не совсем ясно).
Вопрос возник вот почему:
после того как я комментирую строки
acl squidusers proxy_auth REQUIRED
http_access allow squidusers
и прописываю redirect_program /usr/local/etc/squid/redirector.sams
в браузере перестает выдаваться запрос авторизации (пускает всех без авторизации). В настройках самс указан путь к пустому гиф-файлу ("Файл перенаправления запроса"), Переменная "Путь к каталогу, где лежат файлы запрета запроса" не выставлена.

Анонимный комментирует...

"цитату встроенную справку sams" читать как "Цитирую встроенную справку sams."

Айзятуллен Рамиль комментирует...

Вопросы в форум http://admins.arg.su
Подробнее опишите задачу, тип авторизации, нужно ли резать банеры и т. д.

Ярослав комментирует...

Здравствуйте, у меня САМС как-то странно стал себя вести: юзера можно завести, у всех кого раньше завел, работает ограничение по трафику, активен/неактивен тоже работает, только не показывает статистику - у всех трафик -0.

подскажите, в какую сторону копать?

Рамиль комментирует...

Вероятнее всего запустить демон самс

Ярослав комментирует...

samsdaemon? говорит запущен уже...

Рамиль комментирует...

при нажатии реконфигурировать squid что пишет?
давайте в форум перейдем

Рамиль комментирует...

в базе squidctrl в таблице reconfig должно быть пусто, если samsdaemon уже запущен убейте процесс и запустите снова

Ярослав комментирует...

реконфигурирует без проблем.


на http://admins.arg.su? давайте перейдем

Анонимный комментирует...

Notice: Undefined index: user in /usr/local/share/sams/main.php on line 338

Notice: Undefined index: passwd in /usr/local/share/sams/main.php on line 338

Notice: Undefined index: domainuser in /usr/local/share/sams/main.php on line 339

Notice: Undefined index: gauditor in /usr/local/share/sams/main.php on line 340

Анонимный комментирует...

Notice: Undefined index: user in /usr/local/share/sams/main.php on line 338

Notice: Undefined index: passwd in /usr/local/share/sams/main.php on line 338

Notice: Undefined index: domainuser in /usr/local/share/sams/main.php on line 339

Notice: Undefined index: gauditor in /usr/local/share/sams/main.php on line 340

-------------------------
Помогите! Что делать?
-------------------------

Анонимный комментирует...

Добрый день.
А зачем создавать testuser? Пользователя руками в MySQL monty?
Добавлять и убирать потом http_access allow squidusers из squid.conf?

Может до конца не разобрался, но о SAMS сложилось впечатление поделки какой-то....

Рамиль комментирует...

На самом деле testuser создается до установки самс для проверки работы nsca аутеннификации, для этого же и http_access allow squidusers. Пользователь monty так же не обязателен, если вы знаете как работает squid и mysql просто опустите эти шаги. На основании ваших вопросов создается впечатление, что вы этого не знаете. Статья задумывалась, как пошаговое руководство для новичков по установке самс. А самс работает и довольно неплохо :)

Анонимный комментирует...

Поставил Apache по команде "ps ax | grep http" не запустился, пришлось самому идти в /usr/local/etc/apache/httpd.conf и вствлять там строчку "Servername 192.XXX.X.X" - мой ip , все равно не запустился, пришлось закоментировать модуль mod_unique_id в /usr/local/etc/apache/httpd.conf и все что с ним связанно и все заработало))). Спасибо http://linuxforum.ru.