Сегодня мы с Вами установим и настроим прокси сервер SQUID с веб интерфейсом SAMS версии 1.5 для управления прокси сервером на Debian Wheezy. Данное руководство это одна из статей инструкции по установке и настройке интернет сервера.
SAMS — это система для управления доступа пользователей через прокси сервер к ресурсам интернет. Она идеально подходит для использования как в частных фирмах так и в госудаственных учреждениях. Всю работу по проксированию, перенаправлению запросов, кэшированию и авторизации берет на себя proxy-сервер Squid, а SAMS занимается учетом трафика и управлением пользователями.
Squid — программный пакет, реализующий функцию кэширующего прокси-сервера для протоколов HTTP, FTP, Gopher и (в случае соответствующих настроек) HTTPS. Разработан сообществом как программа с открытым исходным кодом (распространяется в соответствии с GNU GPL).
Предварительно сервер мы настраиваем по инструкции: Устанавливаем и настраиваем хостинг панель ISPConfig 3 в Debian
После того как настроили сервер по указанной выше инструкции приступаем к установке прокси сервера squid, а также настройке веб интерфейса SAMS для управления прокси сервером SQUID, а также мы установим редиректор для блокирования доступа к сайтам.
Добавляем репозиторий от Debian Squeeze для установки зависимостей во время установки веб интерфейса SAMS выполнив команду:
echo 'deb http://mirror.yandex.ru/debian squeeze main contrib non-free' >> /etc/apt/sources.list
Обновляем репозиторий выполнив команду:
aptitude update
Редакторы конфигурационных файлов:
vi – требует прочтения инструкции пользователем. Для того чтоб пройти экспресс курс запустить команду vimtutor и пройдите основные команды для удобного пользования программой.
mcedit - более легкий в работе для начинающего линуксоида, можете зменить vi на mcedit и редактировать конфигурационные файлы. После открытия файла в редакторе mcedit нажимаем F7 появится окно поиска, вводим в него то, что необходимо найти нажимаем Enter. Если нашло не то что нужно, снова повторяем поиск, и так пока не найдем нужную строку. После того как Вы внесли необходимые изменения и хотите сохранить файл нажимаем кнопку F2 и соглашаемся с изменением. После сохранения для закрытия сохраненного файла нажимаем кнопку F10
Устанавливаем прокси сервер SQUID выполнив команду:
aptitude install squid
делаем бекап конфига squid который будем изменять выполнив команду:
cp /etc/squid/squid.conf /etc/squid/squid.conf_backup
Открываем удобным для Вас редактором (vi, mcedit, nano) конфигурационный файл /etc/squid/squid.conf
vi /etc/squid/squid.conf
Далее я буду писать что ищем и как должно выглядеть после изменения (первый как должно выглядеть, остальные по примеру):
было:
# TAG: visible_hostname # If you want to present a special hostname in error messages, etc, # define this. Otherwise, the return value of gethostname() # will be used. If you have multiple caches in a cluster and # get errors about IP-forwarding you must set them to have individual # names with this setting. # #Default: # none
стало:
# TAG: visible_hostname # If you want to present a special hostname in error messages, etc, # define this. Otherwise, the return value of gethostname() # will be used. If you have multiple caches in a cluster and # get errors about IP-forwarding you must set them to have individual # names with this setting. # #Default: visible_hostname inetservname
было:
http_port 3128
стало:
http_port 3128 transparent
Внимание!!! Если у Вас пользователи будут авторизироватся при помощи пароля, прозрачная авторизация работать не будет, необходимо в браузере пользователя прописывать IP:PORT Вашего прокси сервера.
было:
# icp_port 3130
стало:
icp_port 0
было:
# cache_mem 8 MB
стало:
cache_mem 256 MB
было:
# maximum_object_size_in_memory 8 KB
стало:
maximum_object_size_in_memory 512 KB
было:
# maximum_object_size 20480 KB
стало:
maximum_object_size 120480 KB
было:
# cache_dir ufs /var/spool/squid 100 16 256
стало:
cache_dir ufs /var/spool/squid 5000 32 256
было:
# cache_swap_low 90 # cache_swap_high 95
стало:
cache_swap_low 90 cache_swap_high 95
было:
# logfile_rotate 0
стало:
logfile_rotate 5
было:
acl SSL_ports port 443 # https acl SSL_ports port 563 # snews acl SSL_ports port 873 # rsync acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 631 # cups acl Safe_ports port 873 # rsync acl Safe_ports port 901 # SWAT
стало:
acl SSL_ports port 443 # https #acl SSL_ports port 563 # snews #acl SSL_ports port 873 # rsync acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https #acl Safe_ports port 70 # gopher #acl Safe_ports port 210 # wais #acl Safe_ports port 1025-65535 # unregistered ports #acl Safe_ports port 280 # http-mgmt #acl Safe_ports port 488 # gss-http #acl Safe_ports port 591 # filemaker #acl Safe_ports port 777 # multiling http #acl Safe_ports port 631 # cups #acl Safe_ports port 873 # rsync #acl Safe_ports port 901 # SWAT
было:
# TAG: url_rewrite_program # Specify the location of the executable for the URL rewriter. # Since they can perform almost any function there isn't one included. ... #Default: # none
стало:
# TAG: url_rewrite_program # Specify the location of the executable for the URL rewriter. # Since they can perform almost any function there isn't one included. ... #Default: url_rewrite_program /usr/bin/samsredir
было:
#Default: # url_rewrite_children 5
стало:
url_rewrite_children 5
было:
#auth_param basic program <uncomment and complete this line> #auth_param basic children 5 #auth_param basic realm Squid proxy-caching web server #auth_param basic credentialsttl 2 hours
стало:
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/ncsa.sams auth_param basic children 5 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 2 hours
!!! Если Вы внутри сети используете внутренний днс сервер, можно указать прокси серверу Squid использовать его прописав:
Для того, чтобы использовать свой локальный DNS сервер изменяем:
было:
# TAG: dns_nameservers ... #Default: # none
стало:
# TAG: dns_nameservers ... #Default: dns_nameservers 192.168.1.1
Сохраняем изменения и переходим к установке SAMS.
Устанавливаем SAMS
Переходим в директорию куда будем качать установочные пакеты, саздаем папку sams, переходим в неё и качаем установочные пакеты:
mkdir /usr/src/iserver/sams && cd /usr/src/iserver/sams
Качаем пакеты sams для своей архитектуры:
Для amd64:
wget http://nixdev.net/release/sams/debian/squeeze/sams_1.0.5_amd64.deb wget http://nixdev.net/release/sams/debian/squeeze/sams-web_1.0.5_all.deb wget http://nixdev.net/release/sams/debian/squeeze/sams-doc_1.0.5_all.deb
Для i386:
wget http://nixdev.net/release/sams/debian/squeeze/sams_1.0.5_i386.deb wget http://nixdev.net/release/sams/debian/squeeze/sams-web_1.0.5_all.deb wget http://nixdev.net/release/sams/debian/squeeze/sams-doc_1.0.5_all.deb
Резервная ссылка при недоступности файлов на официальном сайте:
Для amd64:
wget http://softnastroy.com/downloads/sams/squeeze/sams_1.0.5_amd64.deb wget http://softnastroy.com/downloads/sams/squeeze/sams-doc_1.0.5_all.deb wget http://softnastroy.com/downloads/sams/squeeze/sams-web_1.0.5_all.deb
Для i386:
wget http://softnastroy.com/downloads/sams/squeeze/sams_1.0.5_i386.deb wget http://softnastroy.com/downloads/sams/squeeze/sams-doc_1.0.5_all.deb wget http://softnastroy.com/downloads/sams/squeeze/sams-web_1.0.5_all.deb
Инсталлируем скачанные пакеты:
Для amd64:
dpkg -i sams_1.0.5_amd64.deb
Для i386:
dpkg -i sams_1.0.5_i386.deb
Установим необходимые зависимости для настройки установленного веб интерфейса sams выполнив команду:
aptitude install libmysqlclient16 php-fpdf
Появится псевдографическое окно настройки пакета SAMS:
SAMS require additional manual configuration Currently SAMS package not ready to work out of box. Starting of samsdaemon disabled in init.d script. Please read /usr/share/doc/sams/README.Debain for description of additional configure step. <Ok>
Нажимаем Ok:
Установка SAMS 1.5
Во время установки базового сервера мы установили панель управления хостингом ISPConfig 3. Открываем панель ISPConfig 3 и во вкладке Сайты добавим сайт sams.server.loc, в поле выбора php языка выбираем php-5.2.17 и сохраняем нажав кнопку Сохранить.
Удаляем стандартные файлы создаваемые автоматически панелью ISPConfig 3: favicon.ico, robots.txt, index.html, .htaccess выполнив команду:
rm /var/www/sams.server.loc/web/favicon.ico rm /var/www/sams.server.loc/web/robots.txt rm /var/www/sams.server.loc/web/index.html rm /var/www/sams.server.loc/web/.htaccess
Проверяем права созданного сайта sams.server.loc выполнив команду:
Переходим в папку /usr/src/iserver/sams
cd /usr/src/iserver/sams
Создаем папку в которую мы и распакуем web файлы веб интерфейса SAMS:
mkdir /usr/src/iserver/sams/webfiles dpkg --extract sams-web_1.0.5_all.deb webfiles/ dpkg --extract sams-doc_1.0.5_all.deb webfiles/
Переносим файлы веб интерфейса и документов в созданный сайт панели ISPConfig 3 выполнив комнды:
mv webfiles/usr/share/sams/* /var/www/sams.server.loc/web/ rm -rf /var/www/sams.server.loc/web/doc mkdir -p /var/www/sams.server.loc/web/doc mv webfiles/usr/share/doc/sams/html/* /var/www/sams.server.loc/web/doc/
Проверяем имя пользователя и имя группы файлов сайта, в нашем случае пользователь web3 и группа client1 выполнив команду:
ls -l /var/www/sams.server.loc/
Ответ системы:
drwxr-xr-x 2 web3 client1 4096 Янв 2 23:38 cgi-bin drwxr-xr-x 2 root root 4096 Янв 2 23:38 log drwx--x--- 2 web3 client1 4096 Янв 2 23:38 private drwxr-xr-x 2 root root 4096 Янв 2 23:38 ssl drwxrwxrwx 2 web3 client1 4096 Янв 2 23:38 tmp drwx--x--- 14 web3 client1 4096 Янв 4 19:52 web drwx--x--- 2 web3 client1 4096 Янв 2 23:38 webdav
Изменяем права на скопированные файлы веб интерфейса SAMS выполнив команду:
chown -R web3:client1 /var/www/sams.server.loc/web/
Также изменяем права на конфигурационный файл /etc/sams.conf выполнив команду:
chown -R web3:client1 /etc/sams.conf
После изменения прав на конфигурационный файл /etc/sams.conf необходимо настроить панель ISPConfig 3, чтобы веб интерфейс SAMS мог прочитать настройки. Для этого необходимо открыть сайт в панели, перейти во вкладку Опции и в поле PHP open_basedir в конце строки добавить:
:/etc/sams.conf
После внесенных изменений сохраняем изменения нажав кнопку Сохранить.
Делаем бекап конфига php 5.2.17 который будем изменять:
cp /opt/php-5.2.17/lib/php.ini /opt/php-5.2.17/lib/php.ini_backup
Настройка PHP
SAMS умеет работать с PHP в режиме safe_mode=On. Но это требует дополнительной настройки конфигурации. Для этого редактируем файл конфигурации php5 /opt/php-5.2.17/lib/php.ini
vi /opt/php-5.2.17/lib/php.ini
Включаем режим safe mode (это по желанию, например я не включаю). Для этого выставляем параметр safe_mode
safe_mode = On
Но я использую sams c safe_mode в Off, то есть должно быть:
safe_mode = Off
SAMS для некоторых функций WEB интерфейса использует системные команды, например wbinfo. В режиме safe_mode php блокирует доступ к системным командам. Php позволяет выполнять системные команды, расположенные в каталоге, заданном параметром safe_mode_exec_dir. Изменяем этот параметр:
было:
safe_mode_exec_dir =
стало:
safe_mode_exec_dir = "/usr/share/sams/bin"
Далее разрешаем исполнение системных скриптов из кода php. Ищем в файле конфигурации параметр и убираем из него запрет вызова функций phpinfo system shell_exec exec:
было:
disable_functions =
стало:
disable_functions = "chdir,dl,ini_get_all,popen,proc_open,passthru,pcntl_exec"
В PHP увеличиваем максимальный размер запроса и размер загружаемого файла.
было:
post_max_size = 8M
стало:
post_max_size = 50M
было:
upload_max_filesize = 2M
стало:
upload_max_filesize = 50M
Все. PHP готов к работе.
Необходимо перезапустить веб сервер, чтобы настройки перечитались с конфига php.ini:
/etc/init.d/apache2 restart
Создаем пользователя базы данных и саму mysql базу для работы SAMS:
заходим под в хостинг панель ISPConfig 3 во вкладку Сайты - раздел База данных - Database Users - Add new User и добавляем
- Client: user
- Database user: _samsuser
- Database password: ZhjKwo9Ci1P
- Repeat Password: ZhjKwo9Ci1P
Заполняем поля для создания базы данных необходимо заполнить поля по примеру:
- Сервер: webserver.server.loc
- Site: sams.server.loc
- Тип: MySQL
- Имя БД: _samsbd
- Логин БД: c1_samsuser
- Кодировка БД: UTF-8
- Активна?: поставить галочку
Для добавления базы данных необходимо нажать кнопку Сохранить:
Заполняем поля для создания базы данных необходимо заполнить поля по примеру:
- Сервер: webserver.server.loc
- Site: mail.server.loc
- Тип: MySQL
- Имя БД: _squidbd
- Логин БД: c1_samsuser
- Кодировка БД: UTF-8
- Активна?: поставить галочку
Для добавления базы данных необходимо нажать кнопку Сохранить:
Обязательно необходимо изменить базы данных которые будем заливать в созданные выше бд :
sed -i 's/DROP DATABASE IF EXISTS `squidctrl`;/#DROP DATABASE IF EXISTS `squidctrl`;/g' /usr/share/sams/mysql/sams_db.sql sed -i 's/CREATE DATABASE `squidctrl`;/#CREATE DATABASE `squidctrl`;/g' /usr/share/sams/mysql/sams_db.sql sed -i 's/USE squidctrl;/#USE squidctrl;/g' /usr/share/sams/mysql/sams_db.sql sed -i 's/ TYPE=MyISAM/ENGINE = MYISAM/g' /usr/share/sams/mysql/sams_db.sql sed -i 's/squidctrl/c1_samsbd/g' /usr/share/sams/mysql/sams_db.sql sed -i 's/DROP DATABASE IF EXISTS squidlog;/#DROP DATABASE IF EXISTS squidlog;/g' /usr/share/sams/mysql/squid_db.sql sed -i 's/CREATE DATABASE squidlog;/#CREATE DATABASE squidlog;/g' /usr/share/sams/mysql/squid_db.sql sed -i 's/USE squidlog;/#USE squidlog;/g' /usr/share/sams/mysql/squid_db.sql sed -i 's/ TYPE=MyISAM/ENGINE = MYISAM/g' /usr/share/sams/mysql/squid_db.sql
Заливаем измененные файлы базы данных выполнив команды (скопировать - вставить и выполнить изменив пароль на свой:
mysql -u c1_samsuser -pZhjKwo9Ci1P c1_samsbd < /usr/share/sams/mysql/sams_db.sql mysql -u c1_samsuser -pZhjKwo9Ci1P c1_squidbd < /usr/share/sams/mysql/squid_db.sql
Включаем самс в файле исправив в файле /etc/init.d/sams:
vi /etc/init.d/sams
было:
SAMS_ENABLE=false
стало:
SAMS_ENABLE=true
Правим конфигурационный файл по адресу /etc/sams.conf исправляем:
vi /etc/sams.conf
было:
... SQUID_DB=squidlog SAMS_DB=squidctrl MYSQLHOSTNAME=localhost MYSQLUSER=sams MYSQLPASSWORD=samspasswd MYSQLVERSION=4.0 ...
стало:
... SQUID_DB=c1_squidbd SAMS_DB=c1_samsbd MYSQLHOSTNAME=localhost MYSQLUSER=c1_samsuser MYSQLPASSWORD=ZhjKwo9Ci1P MYSQLVERSION=5.5 ...
Далее проверяем запущен ли squid и если команда вывела номер значит запущен:
pidof squid
ответ системы:
8534
Тогда останавливаем прокси сервер выполнив команду:
/etc/init.d/squid stop
ответ системы:
* Stopping Squid HTTP proxy squid [ OK ]
Теперь пересоздадим кеш прокси сервера командой:
squid -z
ответ системы:
2009/02/16 15:55:20| Creating Swap Directories
На этом этапе настройка squid закончена, теперь запускаем прокси сервер squid командой:
/etc/init.d/squid start
Для того, чтобы зайти в панель управления SAMS, необходимо в браузере ввести адрес sams.server.loc/, если Вы не настраивали ДНС на данном сервере (добавить в ДНС A запись на IP сервера и имя sams), тогда необходимо прописать в hosts файл запись (файл находится в Windows c:\Windows\System32\drivers\etc\hosts):
192.168.1.1 sams.server.loc
где 192.168.1.1 это IP адрес сервера
Открывайте в веб браузере сайт по адресу:
http://sams.server.loc/
Вход под администратором:
Логин: admin
Пароль: qwerty
Вход под аудитором:
Логин: auditor
Пароль: audit
Пароль настоятельно советую изменить сразу же, и записать его в блокнот.
Скриншоты по настройке SAMS через web интерфейс:
Вводим логин и пароль в соответственные поля и нажимаем OK:
Видим открывшуюся первую страницу веб интерфейса SAMS:
Нажимаем на ссылку WEB interface settings и откроем настройку веб интерфейса нажав на кнопку:
В открывшемся окне изменяем язык интерфейса в выпадающем списке и сохраняем изменения:
Открываем ссылку Администрирование SAMS и кликаем кнопку открытия администрирования настроек SAMS:
В открывшемся окне изменяем настройки по примеру ниже:
- Считать трафик: Полный (Полученный прокси сервером + КЕШ)
- NCSA: отмечаем галочкой
- Проверять наличие команды на реконфигурирование squid каждые: 5 секунд
- Обрабатывать логи SQUID: отмечаем галочкой
- Запускать обработчик логов через N минут
- обрабатывать через: 5 минут
- Включать ограничение скорости доступа пользователей (delaypool): отмечаем галочкой
- Сохранять данные о трафике в базе за последние: 6 месяцев
Для сохранения изменений настроек SAMS нажимаем кнопку Сохранить изменения
Обязательно изменяем настройки шаблона Default:
В открывшемся окне изменяем настройки по примеру ниже:
- Обьем трафика пользователя шаблона по умолчанию (Mb): 0
- Способ авторизации пользователей: NCSA
Для сохранения изменений настроек SAMS нажимаем кнопку Сохранить изменения
Добавляем пользователя кликнув на ссылку Пользователи и нажимаем внизу страницы иконку добавления пользователя, в открывшемся окне заполняем данные нового пользователя по примеру ниже:
- Пользователь: admin
- IP адрес/маска: 192.168.1.50/255.255.255.0
- Имя: Administrator
- Группа: Administrators
- Пользователь активен: отмечаем галочкой
- Шаблон: Default
Для добавления пользователя нажимаем кнопку Добавить пользователя:
Сохраняем внесенные изменения веб интерфейса SAMS кликнув на ссылку SQUID, нажимаем иконку SQUID reconfiguration и нажимаем кнопку Реконфигурировать
!!! Проблемы
Если SAMS не считает трафик.
выполняем команду:
sams -d
Если есть проблемы, выдаст ошибку, у меня была проблема с бд squid_db, удалил содержимое базы, заново импортировал по примеру Выше и проблемы нет. Теперь SAMS считает трафик.
Руководство по установке прокси сервера Squid c веб интерфейсом SAMS в Debian Wheezy закончено.
С Вами был Сергей Лазаренко.
Сделаем небольшой перерыв и посмотрим видео как открыть консервную банку голыми руками без подручных средств:
Add new comment