====== Squid, SAMS, Rejik - прокси для домена ======
Ubunto 10.4.3 LTS х64
Используемое ПО:
* Squid - прокси-сервер
* SAMS - управление пользователями и настройкаим
* Rejik - блокировка сайтов
===== SQUID =====
$ sudo apt-get install squid libpcre3 libpcre3-dev
Если планируем работать через LDAP - ставим еще и вот эти пакеты:
$ sudo apt-get install ldap-utils php5-ldap
===== SAMS =====
==== Устанавливаем ====
Берем с http://code.google.com/p/sams2/
Скачиваем последнюю версию SAMS (На настоящий момент версия 1.0.5), для i386 архитектуры процессора выполним это:
$ mkdir /usr/src/sams
$ cd /usr/src/sams
$ wget http://www.nixdev.net/release/sams/packages/xUbuntu_9.10/i386/sams_1.0.5_i386.deb
$ wget http://www.nixdev.net/release/sams/packages/xUbuntu_9.10/all/sams-doc_1.0.5_all.deb
$ wget http://www.nixdev.net/release/sams/packages/xUbuntu_9.10/all/sams-web_1.0.5_all.deb
$ sudo dpkg -i sams_1.0.5_i386.deb
Если у Вас 64bit система выполняем это:
$ mkdir /usr/src/sams
$ cd /usr/src/sams
$ wget http://www.nixdev.net/release/sams/packages/xUbuntu_9.10/amd64/sams_1.0.5_amd64.deb
$ wget http://www.nixdev.net/release/sams/packages/xUbuntu_9.10/all/sams-doc_1.0.5_all.deb
$ wget http://www.nixdev.net/release/sams/packages/xUbuntu_9.10/all/sams-web_1.0.5_all.deb
$ sudo dpkg -i sams_1.0.5_amd64.deb
Редактируем /etc/init.d/sams
Изменяем значение
SAMS_ENABLE=true
Устанавливаем документацию и веб-интерфейс:
$ sudo dpkg -i sams-doc_1.0.5_all.deb
$ sudo dpkg -i sams-web_1.0.5_all.deb
==== Создание базы данных ====
Для работы SAMS нам необходимо создать пользователя sams в базе данных MySQL:
$ mysql -u root -p
GRANT ALL ON squidctrl.* TO sams@localhost IDENTIFIED BY "yourpassword";
GRANT ALL ON squidlog.* TO sams@localhost IDENTIFIED BY "yourpassword";
Где yourpassword – пароль root для MySQL.
==== Настраиваем ====
Текущая версия SAMS умеет работать с PHP в режиме safe_mode=On. Но это требует дополнительной настроек. Для этого отредактируем файл /etc/php5/apache2/php.ini Включаем режим safe_mode.
safe_mode = On
SAMS для некоторых функций WEB интерфейса использует системные команды, например wbinfo. В режиме safe_mode php блокирует доступ к системным командам. PHP позволяет выполнять системные команды, расположенные в каталоге, заданном параметром safe_mode_exec_dir. Поэтому изменяем этот параметр:
safe_mode_exec_dir = “/usr/share/sams/bin”
Далее разрешаем исполнение системных скриптов из кода PHP. Ищем в файле конфигурации параметр и убираем из него запрет вызова функций phpinfo system shell_exec exec:
disable_functions = “chdir,dl,ini_get_all,popen,proc_open,passthru,pcntl_exec”
В файле /etc/sams.conf правим имя пользователя в строке:
MYSQLUSER=sams
MYSQLPASSWORD=yourpasswd
Sams - пользователь MySQL, от имени которого будет работать, а yourpasswd - пароль пользователя в MySQL:
==== Создание баз в MySQL для пользователя SAMS ====
Переходим в каталог /usr/src/sams-1.0.5/mysql/:
$ cd /usr/share/sams/mysql
$ mysql -u root -p < sams_db.sql
$ mysql -u root -p < squid_db.sql
===== Настройка SQUID =====
Редактируем /etc/squid/squid.conf
Ни в коем случае не менять структуру файла и не удалять комментарии.
Указываем порт который будет слушать/обслуживать наш прокси:
http_port 3128
Включаем кэш:
cache_dir ufs /var/spool/squid 100 16 256
А также, раскоментировать другие опции работы с кэшем:
access_log /var/log/squid/access.log
pid_filename /var/run/squid.pid
==== Подводные камни ====
Для установленной версии php5 и сервера MySQL-5.1 в WEB интерфейсе будут проблемы с настройками. Необходимо сделать это.
Редактируем /usr/share/sams/src/webconfigtray.php
/* function GetHostName()
* {
* if (!($value=getenv('SERVER_NAME')))
* { $value="N.A."; }
* return($value);
*}
*/
В файле /usr/share/sams/src/configtray.php закоментировать таким образом следующие строчки.
/* function GetHostName()
* {
* if (!($value=getenv('SERVER_NAME')))
* { $value="N.A."; }
* return($value);
*}
*/
==== Авторизация через LDAP ====
Взято отсюда: http://sams.perm.ru/doc/ru/adldap.html
Для того, чтобы система могла авторизоваться в AD необходимо в файле /etc/sams.conf настроить поддержку AD:
LDAPSERVER=activedirectoryserver - имя или ip адрес сервера AD
LDAPBASEDN=domain.name - домен, поддерживаемый AD.
LDAPUSER=username - пользователь, входящий в группу AD администраторов домена (Domain Administrator), от имени которого SAMS будет работать с AD
LDAPUSERPASSWD=passwd - пароль пользователя
LDAPUSERSGROUP=Users - группа, содержащая пользователей в AD (обычно это Users)
=== Проверка функционирования доступа к AD ===
Для настройки авторизации пользователей в AD необходимо в дереве настроек WEB интерфейса SAMS выбрать пункт "Администрирование SAMS", далее в нижнем фрейме нажать кнопку "Настройки SAMS". В открывшемся диалоге выбираем способ авторизации пользователей "Active Directory". Далее нажимаем кнопку "Тестировать ответ PDC". В открывшемся окне будет выведен список пользователей, зарегистрированных в AD.
Если список пользователей не выведен, то проверьте настройки доступа к ldap в sams.conf, проверьте, является ли пользователь, от имени которого вы запрашиваете информацию в AD членом группы администраторов домена.
Далее запускаем хелпер и проверяем как он авторизует пользовател в AD:
$ /usr/lib/squid/ldap_auth -u cn -b "cn=Users,dc=your,dc=domain" activedirectoryserver
далее вводим:
имяпользователя пароль (через пробел)
и смотрим, что выдает хелпер:
OK - авторизация пользователя в AD прошла успешно, ERR - ошибка авторизации пользователя в AD
Если вы получили ошибку авторизации - читаем man ldap_auth и документацию по авторизации squid в AD в интернете. Есть различные способы настроить авторизацию пользователей SQUID в AD, всех их здесь я приводить небуду.
=== Конфигурируем SQUID на работу с авторизацией в Ad ===
В файл /etc/squid/squid.conf добавляем строки:
К сожалению, мне удалось осуществить при помощи хелпера squid_ldap_auth только basic авторизацию. Это означает, что броузер, при первом запросе пользователя, всегда запращивает login и пароль.
auth_param basic program /usr/lib/squid/ldap_auth -u cn -b "cn=Users,dc=your,dc=domain" activedirectoryserver
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
==== Настраиваем SAMS ====
Идем в секцию WEB interface settings (значок инструменты)
* Выставляем язык: russian utf-8
* Показывать графики в отчетах *
* Создавать PDF отчеты с помощью fpdf (если это нужно, требуется установить пакет php-fpdf)
* Остальные фукции выставляете по вкусу, и по документации, благо она на русском, поэтому проблем не возникнет.
Идем в секцию Администрирование SAMS:
* Уровень детализации записей в журнале - 1
* Выбираем домен (по умолчанию WORKGROUP)
* В настройках авторизации выставляем – IP
* Обязательно ставим галочку – «Обрабатывать логи squid» и выставляем интересующий нас промежуток
* Не использовать редиректор (при настройке Режика чуть ниже изменим эту настройку)
* Включаем ограничение скорости пользователей
* И выставляем промежуток времени для хранение отчетов о посещенных ресурсах по своему усмотрению
ВАЖНО!!! Вместо http://IP/sams/icon/classic/blank.gif писать в обоих строчках http://localhost/sams/icon/classic/blank.gif). Не забудьте поставить галочку "Обрабатывать логи SQUID", иначе статистика не будет собираться. Сохраняемся.
Переходим SAMS -> "Шаблоны пользователей": Удаляем все существующие группы пользователей и шаблоны пользователей.
Теперь добавляем пользователей: SAMS -> "Пользователи", нажимаем внизу "Загрузить всех пользователей домена Active Directory" или "Добавить пользователя". Тут главное - не забыть поставить галочку "Пользователь активен". И потом сохраняем изменения: SAMS -> SQUID -> "Реконфигурировать SQUID".
===== Rejik =====
==== Ставим из РРА ====
Есть вариант поставить пакет из PPA - это лучше и проще чем собирать из исходников. И система чище будет.
$ sudo apt-add-repository ppa:infra-it.ru/updates
$ sudo apt-get update
$ sudo apt-get install rejik
==== Собираем пакет из исходников ====
Если хочется поставить из исходников, делаем по описанию.
=== Загружаем файлы ===
$ mkdir /usr/src/rejik
$ cd /usr/src/rejik
$ wget http://rejik.ru/download/redirector-3.2.8.tgz
$ wget http://rejik.ru/download/squid-like-www-ru.tgz
$ wget http://www.rejik.ru/download/banlists-2.x.x.tgz
=== Распаковываем ===
$ tar xvf redirector-3.2.8.tgz
$ tar xvf squid-like-www-ru.tgz
$ tar xvf banlists-2.x.x.tgz
=== Компилируем ===
Перед началом компиляции необходимо внести изменения в файл Makefile:
Папка, где будет находиться наш rejik. В Ubuntu принято, что все рабочие файлы лежат в /usr/lib, поэтому меняем
INSTALL_PATH=/usr/local/rejik3
на
INSTALL_PATH=/usr/lib/rejik
Теперь изменяем
SQUID_USER=nobody
SQUID_GROUP=nogroup
на пользователя, от имени которого работает Squid. Это можно посмотреть так:
$ cat /etc/squid/squid.conf | grep cache_effective
cache_effective_user proxy
cache_effective_group proxy
В Debian/Ubuntu это пользователь proxy:proxy
Итак, все должно выглядеть как:
SQUID_USER=proxy
SQUID_GROUP=proxy
Все, пора компилировать.
$ make
$ sudo make install
=== Копируем файлы ===
Для работы rejik требует файлы бан-листов. Если их не будет - rejik упадет.
$ sudo cp banlists /usr/lib/rejik
$ sudo chown -R proxy:proxy /usr/lib/rejik
=== Настраиваем файл конфигурации rejik ===
Если ставим из пакета - файл конфигурации лежит в /etc/rejik, если самостоятельно - то по указанному пути, в моем случае это /usr/lib/rejik
Создаем файл конфигурации:
$ cp redirector.conf.dist redirector.conf
Логи работы я хочу хранить вместе с логами Squid - так удобнее.
error_log /var/log/squid/redirector.err
change_log /var/log/squid/redirector.log
Создаю пустые файлы для логов и даю на них правильные права:
$ cd /var/log/squid
$ sudo touch redirector.log redirector.err
$ sudo chown proxy:proxy redirector.log redirector.err
Если нужны какие-то еще настройки - делаем их.
=== Проверяем работу ===
$ cd /usr/lib/rejik/tools/
$ ./check_redirector
Если появилась надпись
http://127.0.0.1/ban/porno.html 127.0.0.1/- - GET
значит все хорошо работает.
Если не работает - проверяем папки и права на них, как правило это помогает.
=== Подключаем rejik к Squid ===
Добавляем в /etc/squid/squid.conf
url_rewrite_program /usr/lib/rejik/redirector /usr/lib/rejik/redirector.conf
==== Настраиваем SAMS ====
SAMS -> Администрирование SAMS -> Настройка SAMS
Редиректор: Rejik
SAMS -> SQUID -> Реконфигурирование SQUID -> Реконфигурировать
===== Запускаем сервисы =====
$ sudo service squid start
$ sudo service sams start
И проверяем логи - все ли у нас запустилось и все ли заработало.
{{tag>squid sams rejik самс режик настройка прокси}}