Установка SAMS 1.0 на FreeBSD 6.2

Данная статья является копией Пример установки sams-1.0 на freebsd (с небольшими изменениями), написанного Айзятулленым Рамилем в блоге http://argo-uln.blogspot.com/ При копировании необходимо указывать автора и ссылку на оригинал.

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

Ставим Apache 1.3

  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://myip/

Ставим 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 /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://myip/index.php

Ставим PHP5_EXTENSIONS из портов (/usr/ports/lang/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.
  cp etc/samsd.freebsd /usr/local/etc/rc.d/samsd

Добавим в samsd строку # REQUIRE: mysql
Это необходимо чтобы сервис samsd стартовал после mysql
В файл /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

Необходимо создать символическую ссылку.(чтобы создавался файлик ncsa.sams)

  ln -s /usr/local/bin/htpasswd /usr/bin/htpasswd

Запустим

  /usr/local/etc/rc.d/samsd start

Заходим в вебинтерфейс sams, http://myip/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

Работаем.


Айзятуллен Рамиль, 2007
Пример установки sams-1.0 на freebsd