Прокси сервер для организации linux

Настройка корпоративного 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 адрес и была проверена его доступность как из интернета, так и из локальной сети.

Читайте также:  Windows не может найти новое оборудование

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

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
mysql -u root -p

Настала очередь 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 сервера:

Читайте также:  Graphic equalizer studio windows

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

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

Источник

Серверы Linux. Часть I. Серверы Apache и Squid

Глава 2. Знакомство с прокси-сервером Squid

2.1. Информация о прокси-серверах

2.1.1. Область применения

Прокси-сервером называется сервер, предназначенный для кэширования данных, получаемых из сети Интернет. Клиент соединяется с прокси-сервером и передает ему запрос, который должен быть отправлены серверу из сети Интернет. После этого прокси-сервер соединяется с сервером из сети Интернет и передает ему запрос от имени клиента. При этом прокси-сервер осуществляет кэширование страниц, полученных от сервера из сети Интернет. Благодаря данной функции прокси-сервер может передавать клиенту копии страниц из своего кэша, а не соединяться с сервером из сети Интернет для получения (этих же) страниц.

Прокси-сервер имеет два полезных свойства. Во-первых, он повышает скорость веб-серфинга при возвращении клиентам кэшированных копий данных, а во-вторых, он уменьшает необходимую пропускную способность (цену) соединения с сетью Интернет.

Небольшие организации иногда размещают прокси-сервер на физическом компьютере, который уже используется в качестве сервера преобразования сетевых адресов (NAT) для доступа к ресурсам сети Интернет. В больших организациях прокси-сервер является одним из серверов, размещенных в демилитаризованной зоне сети (DMZ).

При использовании прокси-сервера для обработки всего веб-трафика обычной практикой является дополнительная настройка этого сервера для управления доступом к определенным ресурсам. Под управлением доступом в случае прокси-сервера могут подразумеваться ограничения доступа, которые могут распространяться как на учетные записи пользователей, так и на отдельные веб-сайты (идентифицируемые в помощью строк URL), IP-адреса ресурсов или механизм разрешения доменных имен.

2.1.2. Общедоступные прокси-серверы

При работе в сети Интернет вы можете столкнуться со списками общедоступных прокси-серверов, которые позволяют заниматься анонимным веб-серфингом. При использовании прокси-сервера из такого списка веб-серфинг будет действительно анонимным лишь в том случае, если прокси-сервер будет соединяться с веб-сайтом от вашего имени без записи в файл журнала вашего IP-адреса. Будьте осторожны, ведь эти общедоступные прокси-серверы (из списков) могут быть созданы и для слежки за действиями пользователей.

2.1.3. Прокси-сервер Squid

В данной главе будет обсуждаться прокси-сервер Squid (http://www.squid-cache.org). В первую очередь будет описан процесс настройки Squid для работы в режиме обычного прокси-сервера.

2.2. Установка прокси-сервера Squid

В примере ниже показана методика установки прокси-сервера Squid с помощью утилиты aptitude в дистрибутиве Debian. Используйте утилиту yum для установки одноименного пакета программного обеспечения в том случае, если вы работаете с дистрибутивом Red Hat/CentOS.

Главным конфигурационным файлом прокси-сервера Squid является файл /etc/squid/squid.conf . В данном файле имеются подробные описания каждого из параметров.

2.3. Порт 3128

По умолчанию прокси-сервер Squid будет принимать соединения на порту 3128 .

2.4. Запуск и остановка службы прокси-сервера

Вы можете изменять состояние службы squid с помощью стандартной утилиты service таким же образом, как показано в данном примере.

2.5. Ввод параметров доступа к прокси-серверу на стороне клиента

Для активации режима доступа к сети посредством прокси-сервера в веб-браузере Firefox или Iceweasel следует выбрать пункты меню окна «Правка — Настройки» и ввести параметры доступа к прокси-серверу таким же образом, как показано на рисунке ниже (замените IP-адрес 192.168.1.60 на IP-адрес машины с прокси-сервером).

Проверьте работоспособность соединения с сетью Интернет при использовании прокси-сервера. Также проведите повторную проверку работоспособности соединения после исполнения команды service squid stop на машине с установленным прокси-сервером, в результате чего веб-браузер должен вывести сообщение, аналогичное представленному на рисунке ниже.

Читайте также:  Как установить андроид вместо windows phone

Для активации режима доступа к сети посредством прокси-сервера в веб-браузере Google Chrome (или Chromium в дистрибутиве Debian) запустите веб-браузер из терминала с помощью аналогичной команды:

Остановка службы прокси-сервера с помощью команды service squid stop должна привести к выводу сообщения об ошибке, аналогичного представленному на рисунке ниже.

2.6. Переворот изображений

Прокси-сервер выступает посредником между вашим браузером и серверами из сети Интернет. Исходя из этого, помимо кэширования данных (что является основной задачей прокси-сервера), а также фильтрации веб-трафика по аналогии с межсетевым экраном, прокси-сервер отлично подходит для модификации содержимого посещаемых вами веб-страниц.

Например, на уровне прокси-сервера вы можете заменить рекламные баннеры на веб-странице (а также удалить некоторые из них) или же, как в примере ниже, модифицировать все изображения на веб-странице, перевернув их.

Для модификации изображений серверу потребуются утилиты с интерфейсом командной строки, а также сценарий на языке Perl, который использует эти утилиты (кроме того, понадобится утилита wget для загрузки изображений на сервер и предоставления доступа к ним посредством веб-сервера Apache 2 ). В данном примере мы будем использовать инструменты из пакета imagemagic (такие, как утилиты convert и mogrify ).

Приведенный в примере ниже сценарий на языке Perl размещен на множестве веб-сайтов, но мне так и не удалось найти информацию о его авторе. Данный сценарий является достаточно простым и использует утилиты wget и mogrify для загрузки изображений (с расширениями .jpg, .gif и .png), их переворота и сохранения результирующих изображений в директории /var/www/images .

Также следует изменить (или раскомментировать) следующую строку в файле конфигурации прокси-сервера /etc/squid/squid.conf .

Данный сценарий использует директорию /var/www/images , которая должна быть доступна для записи как для прокси-сервера Squid (который использует учетную запись пользователя proxy ), так и для веб-сервера Apache 2 (который использует учетную запись пользователя www-data ). В примере ниже показаны команды, предназначенные для создания данной директории, установки прав доступа к ее содержимому и добавления используемых упомянутыми серверами учетных записей пользователей в соответствующие группы пользователей.

Проверьте работоспособность сценария для поворота изображений после перезапуска службы прокси-сервера под названием squid и службы веб-сервера под названием apache2 .

2.7. Директория для хранения файлов журналов /var/log/squid

По умолчанию файлы журнала прокси-сервера Squid хранятся в директории /var/log/squid .

2.8. Управление доступом

При использовании стандартных настроек прокси-сервер Squid принимает соединения исключительно с локального узла. Для разрешения доступа с машин, имеющих IP-адреса из диапазона адресов частной сети следует найти в файле конфигурации squid.conf предложение «INSERT YOUR OWN RULE(S) HERE. » и добавить после него две строки, аналогичные приведенным в примере ниже.

2.9. Тестирование прокси-сервера Squid

В первую очередь следует убедиться в том, что прокси-сервер функционирует и имеет доступ к сети Интернет.

После этого следует настроить веб-браузер на клиентской машине для работы с сетью посредством прокси-сервера или установить в качестве значения переменной окружения HTTP_PROXY (иногда вместо этой переменной окружения используется переменная http_proxy ) адрес прокси-сервера для передачи этого адреса программам с интерфейсом командной строки.

Тестирование работоспособности прокси-сервера со стороны клиентской машины может осуществляться с помощью утилиты wget (команда wget -q используется для упрощения примера).

2.10. Разрешение доменных имен

Несмотря на то, что вам потребуется работоспособный механизм разрешения доменных имен на уровне прокси-сервера Squid , вы вполне сможете обойтись без данного механизма на уровне клиентских машин.

Источник

Оцените статью