Сегодня мы с Вами установим и настроим прокси сервер SQUID с веб интерфейсом SAMS версии 1.5 для управления прокси сервером на Debian Wheezy. Данное руководство это одна из статей инструкции по установке и настройке интернет сервера.
SAMS — это система для управления доступа пользователей через прокси сервер к ресурсам интернет. Она идеально подходит для использования как в частных фирмах так и в госудаственных учреждениях. Всю работу по проксированию, перенаправлению запросов, кэшированию и авторизации берет на себя proxy-сервер Squid, а SAMS занимается учетом трафика и управлением пользователями.
Squid A software package that implements the function of a caching proxy server for HTTP, FTP, Gopher and (if appropriate) HTTPS protocols. Developed by the community as an open source program (distributed under the 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 и сохраняем нажав кнопку Save.
Удаляем стандартные файлы создаваемые автоматически панелью 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
После внесенных изменений сохраняем изменения нажав кнопку Save.
Делаем бекап конфига 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
- Активна?: поставить галочку
Для добавления базы данных необходимо нажать кнопку Save:
Заполняем поля для создания базы данных необходимо заполнить поля по примеру:
- Сервер: webserver.server.loc
- Site: mail.server.loc
- Тип: MySQL
- Имя БД: _squidbd
- Логин БД: c1_samsuser
- Кодировка БД: UTF-8
- Активна?: поставить галочку
Для добавления базы данных необходимо нажать кнопку Save:
Обязательно необходимо изменить базы данных которые будем заливать в созданные выше бд :
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 нажимаем кнопку Сохранить изменения
Добавляем пользователя кликнув на ссылку Users и нажимаем внизу страницы иконку добавления пользователя, в открывшемся окне заполняем данные нового пользователя по примеру ниже:
- Пользователь: admin
- IP адрес/маска: 192.168.1.50/255.255.255.0
- Name: Administrator
- Группа: Administrators
- Пользователь активен: отмечаем галочкой
- Шаблон: Default
Для добавления пользователя нажимаем кнопку Добавить пользователя:
Сохраняем внесенные изменения веб интерфейса SAMS кликнув на ссылку SQUID, нажимаем иконку SQUID reconfiguration и нажимаем кнопку Реконфигурировать
!!! Проблемы
Если SAMS не считает трафик.
выполняем команду:
sams -d
Если есть проблемы, выдаст ошибку, у меня была проблема с бд squid_db, удалил содержимое базы, заново импортировал по примеру Выше и проблемы нет. Теперь SAMS считает трафик.
Руководство по установке прокси сервера Squid c веб интерфейсом SAMS в Debian Wheezy закончено.
С Вами был Сергей Лазаренко.
Сделаем небольшой перерыв и посмотрим видео как открыть консервную банку голыми руками без подручных средств:






















