Сегодня мы с Вами установим и настроим прокси сервер 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 выполнив команду:
1 |
Обновляем репозиторий выполнив команду:
1 | aptitude update |
Редакторы конфигурационных файлов:
vi – требует прочтения инструкции пользователем. Для того чтоб пройти экспресс курс запустить команду vimtutor и пройдите основные команды для удобного пользования программой.
mcedit - более легкий в работе для начинающего линуксоида, можете зменить vi на mcedit и редактировать конфигурационные файлы. После открытия файла в редакторе mcedit нажимаем F7 появится окно поиска, вводим в него то, что необходимо найти нажимаем Enter. Если нашло не то что нужно, снова повторяем поиск, и так пока не найдем нужную строку. После того как Вы внесли необходимые изменения и хотите сохранить файл нажимаем кнопку F2 и соглашаемся с изменением. После сохранения для закрытия сохраненного файла нажимаем кнопку F10
Устанавливаем прокси сервер SQUID выполнив команду:
1 | aptitude install squid |
делаем бекап конфига squid который будем изменять выполнив команду:
1 | cp /etc/squid/squid .conf /etc/squid/squid .conf_backup |
Открываем удобным для Вас редактором (vi, mcedit, nano) конфигурационный файл /etc/squid/squid.conf
1 | vi /etc/squid/squid .conf |
Далее я буду писать что ищем и как должно выглядеть после изменения (первый как должно выглядеть, остальные по примеру):
было:
1 2 3 4 5 6 7 8 9 | # 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 |
стало:
1 2 3 4 5 6 7 8 9 | # 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 |
было:
1 | http_port 3128 |
стало:
1 | http_port 3128 transparent |
Внимание!!! Если у Вас пользователи будут авторизироватся при помощи пароля, прозрачная авторизация работать не будет, необходимо в браузере пользователя прописывать IP:PORT Вашего прокси сервера.
было:
1 | # icp_port 3130 |
стало:
1 | icp_port 0 |
было:
1 | # cache_mem 8 MB |
стало:
1 | cache_mem 256 MB |
было:
1 | # maximum_object_size_in_memory 8 KB |
стало:
1 | maximum_object_size_in_memory 512 KB |
было:
1 | # maximum_object_size 20480 KB |
стало:
1 | maximum_object_size 120480 KB |
было:
1 | # cache_dir ufs /var/spool/squid 100 16 256 |
стало:
1 | cache_dir ufs /var/spool/squid 5000 32 256 |
было:
1 2 | # cache_swap_low 90 # cache_swap_high 95 |
стало:
1 2 | cache_swap_low 90 cache_swap_high 95 |
было:
1 | # logfile_rotate 0 |
стало:
1 | logfile_rotate 5 |
было:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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 |
стало:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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 |
было:
1 2 3 4 5 6 | # 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 |
стало:
1 2 3 4 5 6 | # 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 |
было:
1 2 | #Default: # url_rewrite_children 5 |
стало:
1 | url_rewrite_children 5 |
было:
1 2 3 4 | #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 |
стало:
1 2 3 4 | 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 сервер изменяем:
было:
1 2 3 4 | # TAG: dns_nameservers ... #Default: # none |
стало:
1 2 3 4 | # TAG: dns_nameservers ... #Default: dns_nameservers 192.168.1.1 |
Сохраняем изменения и переходим к установке SAMS.
Устанавливаем SAMS
Переходим в директорию куда будем качать установочные пакеты, саздаем папку sams, переходим в неё и качаем установочные пакеты:
1 | mkdir /usr/src/iserver/sams && cd /usr/src/iserver/sams |
Качаем пакеты sams для своей архитектуры:
Для amd64:
1 2 3 | 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:
1 2 3 | 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:
1 2 3 | 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:
1 2 3 | 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:
1 | dpkg -i sams_1.0.5_amd64.deb |
Для i386:
1 | dpkg -i sams_1.0.5_i386.deb |
Установим необходимые зависимости для настройки установленного веб интерфейса sams выполнив команду:
1 | aptitude install libmysqlclient16 php-fpdf |
Появится псевдографическое окно настройки пакета SAMS:
1 2 3 4 5 6 7 | 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 выполнив команду:
1 2 3 4 | 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 |
1 |
Проверяем права созданного сайта sams.server.loc выполнив команду:
Переходим в папку /usr/src/iserver/sams
1 | cd /usr/src/iserver/sams |
Создаем папку в которую мы и распакуем web файлы веб интерфейса SAMS:
1 2 3 | 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 выполнив комнды:
1 2 3 4 | 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 выполнив команду:
1 | ls -l /var/www/sams .server.loc/ |
Ответ системы:
1 2 3 4 5 6 7 | 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 выполнив команду:
1 | chown -R web3:client1 /var/www/sams .server.loc /web/ |
Также изменяем права на конфигурационный файл /etc/sams.conf выполнив команду:
1 | chown -R web3:client1 /etc/sams .conf |
После изменения прав на конфигурационный файл /etc/sams.conf необходимо настроить панель ISPConfig 3, чтобы веб интерфейс SAMS мог прочитать настройки. Для этого необходимо открыть сайт в панели, перейти во вкладку Опции и в поле PHP open_basedir в конце строки добавить:
1 | : /etc/sams .conf |
После внесенных изменений сохраняем изменения нажав кнопку Сохранить.
Делаем бекап конфига php 5.2.17 который будем изменять:
1 | 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
1 | vi /opt/php-5 .2.17 /lib/php .ini |
Включаем режим safe mode (это по желанию, например я не включаю). Для этого выставляем параметр safe_mode
1 | safe_mode = On |
Но я использую sams c safe_mode в Off, то есть должно быть:
1 | safe_mode = Off |
SAMS для некоторых функций WEB интерфейса использует системные команды, например wbinfo. В режиме safe_mode php блокирует доступ к системным командам. Php позволяет выполнять системные команды, расположенные в каталоге, заданном параметром safe_mode_exec_dir. Изменяем этот параметр:
было:
1 | safe_mode_exec_dir = |
стало:
1 | safe_mode_exec_dir = "/usr/share/sams/bin" |
Далее разрешаем исполнение системных скриптов из кода php. Ищем в файле конфигурации параметр и убираем из него запрет вызова функций phpinfo system shell_exec exec:
было:
1 | disable_functions = |
стало:
1 | disable_functions = "chdir,dl,ini_get_all,popen,proc_open,passthru,pcntl_exec" |
В PHP увеличиваем максимальный размер запроса и размер загружаемого файла.
было:
1 | post_max_size = 8M |
стало:
1 | post_max_size = 50M |
было:
1 | upload_max_filesize = 2M |
стало:
1 | upload_max_filesize = 50M |
Все. PHP готов к работе.
Необходимо перезапустить веб сервер, чтобы настройки перечитались с конфига php.ini:
1 | /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
- Активна?: поставить галочку
Для добавления базы данных необходимо нажать кнопку Сохранить:
Обязательно необходимо изменить базы данных которые будем заливать в созданные выше бд :
1 2 3 4 5 6 7 8 9 | 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 |
Заливаем измененные файлы базы данных выполнив команды (скопировать - вставить и выполнить изменив пароль на свой:
1 2 | 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:
1 | vi /etc/init .d /sams |
было:
1 | SAMS_ENABLE= false |
стало:
1 | SAMS_ENABLE= true |
Правим конфигурационный файл по адресу /etc/sams.conf исправляем:
vi /etc/sams.conf
было:
1 2 3 4 5 6 7 8 | ... SQUID_DB=squidlog SAMS_DB=squidctrl MYSQLHOSTNAME=localhost MYSQLUSER=sams MYSQLPASSWORD=samspasswd MYSQLVERSION=4.0 ... |
стало:
1 2 3 4 5 6 7 8 | ... SQUID_DB=c1_squidbd SAMS_DB=c1_samsbd MYSQLHOSTNAME=localhost MYSQLUSER=c1_samsuser MYSQLPASSWORD=ZhjKwo9Ci1P MYSQLVERSION=5.5 ... |
Далее проверяем запущен ли squid и если команда вывела номер значит запущен:
1 | pidof squid |
ответ системы:
1 | 8534 |
Тогда останавливаем прокси сервер выполнив команду:
1 | /etc/init .d /squid stop |
ответ системы:
1 | * Stopping Squid HTTP proxy squid [ OK ] |
Теперь пересоздадим кеш прокси сервера командой:
1 | squid -z |
ответ системы:
1 | 2009 /02/16 15:55:20| Creating Swap Directories |
На этом этапе настройка squid закончена, теперь запускаем прокси сервер squid командой:
1 | /etc/init .d /squid start |
Для того, чтобы зайти в панель управления SAMS, необходимо в браузере ввести адрес sams.server.loc/, если Вы не настраивали ДНС на данном сервере (добавить в ДНС A запись на IP сервера и имя sams), тогда необходимо прописать в hosts файл запись (файл находится в Windows c:\Windows\System32\drivers\etc\hosts):
1 | 192.168.1.1 sams.server.loc |
где 192.168.1.1 это IP адрес сервера
Открывайте в веб браузере сайт по адресу:
1 | 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 не считает трафик.
выполняем команду:
1 | sams -d |
Если есть проблемы, выдаст ошибку, у меня была проблема с бд squid_db, удалил содержимое базы, заново импортировал по примеру Выше и проблемы нет. Теперь SAMS считает трафик.
Руководство по установке прокси сервера Squid c веб интерфейсом SAMS в Debian Wheezy закончено.
С Вами был Сергей Лазаренко.
Сделаем небольшой перерыв и посмотрим видео как открыть консервную банку голыми руками без подручных средств:
Add new comment