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 комментария:
Здорово, спасибо. Можно узнать условия использования статьи? Хотелось-бы её wiki копию для http://sams.nixdev.net/wiki/samssetup
При копировании прошу указывать ссылку на первоисточник.
А зачем нам 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
В линиксе пути другие :)
Большое Вам спасибо за такое руководство по установке.
Я только начинаю разбирать фрю и уменя было много проблем.
Вчастности не знал как же можно конфигурировать порты перед сборкой.
У меня всё получилось, большое Вам спасибо.
П.С. а как конфигурировать через pkg_add ? Сорри за вопрос.
Пакадж это уже скомпилированный пакет, как там опции выбирать. :)
Наверное правильней будет вместо /usr/local/bin/htpasswd /usr/local/etc/squid/ncsa.sams testuser
использовать
/usr/local/bin/htpasswd -с /usr/local/etc/squid/ncsa.sams testuser
Да, так правильней. Исправлю в статье, спасибо. ;)
Здравствуйте!
Можно узнать почему SAMS ставился из исходников, а не из портов ведь так для FreeBSD было бы правильнее?
SAMS ставится из исходников т.к. в портах FreeBSD немного устаревшая версия SAMS.
После выхода SAMS 1.1 я буду общаться с маинтейнером по поводу обновления версии SAMS в портах.
Доброго времени суток, всем здесь присутствующим!
У меня вопрос? Как выбрать опции в 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 указываю нужные опции, но после нажатия кнопки "Сохранить изменения", нижняя панель (со значками) оказывается в верху экрана, при этом в правой части ничего кроме этой панельки со значками не отображается, даже если я прехожу в другие пункты меню. После принудительного обновления странички в браузере - все становиться на свои места, но настройки так и не изменются...
Это фича 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.
Отправить комментарий