Настройка корпоративного PROXY-сервера

В каждой организации, где количество ПК больше одного, рано или поздно встает вопрос по лимитированию и учету Internet трафика. Возможно для кого-то это не актуально, и для кого-то NAT самое оно, но исходя из реалий, и прикидывая среднюю стоимость безлимитной полосы в 2-5mbps, хочется и использовать данный канал более рационально, да и ограничить пользователя в посещении ресурсов, которые к работе не относятся в принципе никак.

Главный вопрос КАК? не останется без ответа, т.к. поисковик выдает множество как программных, так и аппаратных решений! Смотреть в сторону коммерческих продуктов, или отдать предпочтение Open Source ПО — дело ваше, да и зависит все от бюджета и корпоративной лицензионной политики. Но на практике большинство руководителей предприятий малого и среднего бизнеса склоняются от коммерческого продукта к бесплатному, как в целях экономии средств, так и в интересах законности.

Сегодня, я хочу поговорить о настройке кеширующего proxy сервера на основе свободного, бесплатного ПО. Но для начала необходимо определить для себя круг задач, которые будет выполнять сервер. В моем случае оно сводится к минимум, а именно к веб интерфейсу статистики и управления, а также возможности завернуть весь интернет трафик локальной сети на порт proxy. Вводить или не вводить какие-либо ограничения — дело ваше, но по моему это бессмысленно, так как пользователь дырочку найдет всегда! Согласитесь, ведь пусть лучше пользователь проведет 10-20 минут в день на Одноклассниках и Вконтактах, чем убьет час рабочего времени на поиск нормального, и не забаненного админом, анонимайзера!

Самое время поговорить о программном обеспечении для вышеописанных задач! Вариантов масса, и выбрать есть из чего, есть простенькие решения на базе FreeBSD + Squid + LightSquid, есть и Install CD решения. Но сегодня я хочу поговорить о решении на базе CentOS + Squid + SAMS + NCSA Auth. Почему выбор пал именно на подобную связку? Наверное из-за моей любви к CentOS, да и Squid стандарт прокси практически де-факто, SAMS же обладает всем необходимым функционалом по управлению прокси сервером, плюс вменяемый русскоязычный интерфейс, что для кого-то может быть полезным. Также у SAMS есть возможность генерации PDF отчетов по использованному трафику по пользователям. С NCSA авторизацией думаю вас знакомить смысла нет, итак все понятно:)

Что же, от слов к делу, будем настраивать. Вопрос на чем? Недавно мною была написана статья по настройке собственного сервера виртуализации на базе OpenVZ, и собственно сам сервер виртуализации был введен в коммерческую эксплуатацию компании, и выбор по развертыванию прокси выпал именно на него, т.к. выделять под данные задачи физическую машину по меньшей мере неоправданная роскошь. Поэтому я и создал на нем VE контейнер со следующими характеристиками:

  • Шаблон ОС — centos-5-x86
  • Размер диска — 5000мб
  • RAM — 512 мб
  • CPU — 1000 единиц, Intel(R) Xeon(R) CPU E5405, 1 core
  • CPU лимит — 20%

Если вы считаете что данная конфигурация слаба, что же, дело ваше, выбирайте аппаратное или программное решение производительнее, но под 100-150 пользователей данный VPS сервер подойдет вполне. Далее на сервер был навешен белый реальный ip адрес и была проверена его доступность как из интернета, так и из локальной сети.

После «установки» сервера приступаем к его настройке под наши задачи и нужды. Для начала обновляем систему:

yum makecache && yum -y update

После приступаем к установке программного обеспечения:

yum install php php-mysql php-gd pcre-devel squid mysql-server mysql-devel gd-devel gcc

После установки добавляем необходимое в автозагрузку:

chkconfig mysqld on
chkconfig httpd on
chkconfig squid on

Далее создаем темповую директорию для сборки SAMS:

mkdir -p /usr/src/sams
cd /usr/src/sams

Качаем STABLE версию SAMS (есть там и RPM пакеты для CentOS и Fedora, но после тестирования выяснилилось что они кривые) отсюда и устанавливаем:

wget http://nixdev.net/release/sams/sams-1.0.5.tar.bz2
tar xf sams-1.0.5.tar.bz2
cd sams-1.0.5
./configure && make && make install
chkconfig sams on
cd / && rm -fr /usr/src/sams

Далее настраиваем Apache, добавляем в /etc/httpd/conf.d/sams.conf
Если вы хотите настроить SAMS на виртуальном хосте, то советую вам почитать статью по тонкой настройке Apache2, в которой как раз и описан данный вопрос.
После того, как был добавлен sams.conf необходимо перезапустить Apache:

service httpd restart

Следом редактируем /etc/sams.conf, в котором меняем всего две записи:

MYSQLPASSWORD=ВАШ ПАРОЛЬ (Для пользователя SAMS)

MYSQLVERSION=5.0 (Мы используем 5 версию MySQL сервера, при значении 4.0 возможны проблемы)

Далее на очереди MySQL, запускаем сервер и делаем все то что предложит скрипт первого запуска, то есть задаем пароль root и после-инсталяционную настройку сервера:

service mysqld start

Создаем MySQL пользователя sams и даем ему права на необходимые таблицы:

mysql -u root -p
GRANT ALL ON squidctrl.* TO sams@localhost IDENTIFIED BY «ВАШ ПАРОЛЬ»;
GRANT ALL ON squidlog.* TO sams@localhost IDENTIFIED BY «ВАШ ПАРОЛЬ»;
flush privileges;
quit

Вливаем дампы SAMS в базу:

mysql -u root -p < /usr/local/share/sams/data/sams_db.sql
mysql -u root -p < /usr/local/share/sams/data/squid_db.sql

Настала очередь Squid, собираем squid swap, и уже после запускаем прокси сервер.

squid -z
2011/01/22 22:06:48| Creating Swap Directories
service squid start

Ну и в самом конце запускаем SAMS:

service sams start

Добавляем разрешающие правила для iptables firewall в /etc/sysconfig/iptables и перезапустить его:

-A INPUT -p tcp -m tcp —dport 80 -j ACCEPT -A INPUT -p tcp -m tcp —dport 3128 -j ACCEPT service iptables restart

После можете посмотреть на результат установки и настройки по адресу http://ip.address/sams/ и если вы видите страницу SAMS то все настроено верно, если же что-то другое, то прошу отписаться в комментарии — разберемся вместе, или самостоятельно посмотреть решение в google.

Приглашение SAMS

Но установленный SAMS необходимо настроить, чем мы сейчас и займемся. Заходим в web интерфейс по адресу http://ip.address/sams/ , авторизуемся, ПО УМОЛЧАНИЮ ПОЛЬЗОВАТЕЛЬ admin ПАРОЛЬ qwerty (ВСЕГДА ТАК!!!), далее User Authenticate ==> Access under the name of another superuser.

1. Настройки Web интерфейса ==> нажимаем на Гаечный ключ
Настраиваем в соответствии со скрином, сохраняем изменения:
Настройка WEB интерфейса SAMS

2. SAMS ==> Администрирование SAMS ==> Настройка SAMS
Настраиваем в соответствии со скрином, сохраняем изменения:
Настройка SAMS

3. SAMS ==> Шаблоны пользователей ==> Default
Настраиваем в соответствии со скрином, сохраняем изменения:
Шаблон ограничений по умолчанию

4. Пользователи ==> Добавить пользователя
Настраиваем в соответствии со скрином, сохраняем изменения:
Добавляем пользователя SAMS

5. SAMS ==> SQUID ==> Реконфигурировать SQUID ==> Реконфигурировать
Реконфигурирование SQUID
Прокси сервер настроен и готов обслуживать пользователей. Можно посмотреть статистику работы proxy сервера:

Статистика работы прокси сервера

И в качестве бонуса, URL автоматической настройки proxy(Строка автоматической инициализации) на клиентских машинах, удобно подпихивать его через ГП на Windows AD:

function FindProxyForURL(url, host)
{
return «PROXY ip.address:3128″
};

Данный код сохраняем в файл proxy.pac и размещаем в корне вашего web сервера, в директории /var/www/html . Ну и сама строка инициализации будет выглядеть как http://ip.address/proxy.pac Ну вот собственно и все, прокси сервер настроен, приятные мелочи добавлены, можно заводить пользователей и рулить ими как душе угодно!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *