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
И проверяем логи - все ли у нас запустилось и все ли заработало.