Прокси-серверы (proxy server) появились на заре эпохи Интернета, когда пользователей этой сети становилось все больше и больше, а внешние IP-адреса стоили немалых денег. Тогда основным назначением proxy-серверов являлась организация доступа в Интернет локальных пользователей без добавления их компьютеров к Глобальной сети, то есть без назначения внешних IP-адресов компьютерам, а выход в Интернет осуществлялся только с одного внешнего IP-адреса. Слово proxy в переводе с английского означает «доверенное лицо» или «представитель». Условно говоря, прокси-сервер действует от лица клиента в Интернете, и для других пользователей Сети виден только сам сервер (его IP-адрес), а не клиент (IP-адрес компьютера пользователя скрыт от посторонних глаз). Таким образом, кроме общего доступа в Интернет локальных пользователей, которые не имеют прямого выхода в Сеть, такие серверы позволяют соблюсти приватность работы в Интернете. Вследствие того, что компьютеры обычных пользователей не размещены непосредственно в Сети, снижается угроза хакерских атак, поскольку прямого доступа к компьютерам локальной сети нет.
Обычные, широко применяемые сейчас маршрутизаторы по сути являются одним из видов http://www.proxyprivat.com — NAT proxy. Они тоже позволяют организовать доступ в Интернет локально подключенных к маршрутизатору компьютеров путем подмены исходящего IP-адреса в IP-пакетах. Но маршрутизатор, поддерживающий технологию NAT (Network Address Translation), имеет некоторые минусы по сравнению с обычным программным прокси-сервером. Маршрутизатор никак не анализирует проходящий через него трафик и типы протоколов, через которые пользователи работают с Интернетом, поэтому администрировать (в данном случае ограничивать пользователей по конкретным параметрам при доступе в Сеть) такие устройства практически невозможно. Прокси-сервер может находиться в любой точке Интернета и, если правила доступа разрешают, позволяет работать с любым клиентом независимо от его местонахождения. Для работы NAT, как правило, необходимо физическое подключение локального компьютера к маршрутизатору (например, через локальную сеть), поскольку маршрутизатор работает через жестко установленные маршруты пакетов. Также стоит отметить, что обычный маршрутизатор не позволяет кэшировать часто используемые объекты для более быстрого обращения к ним пользователей, поскольку он только перенаправляет пакеты от одного узла Сети к другому.
Существует несколько типов прокси-серверов, каждый из которых имеет узкую специализацию, то есть поддерживает работу только с одним или несколькими протоколами. Самыми распространенными на данный момент являются http-, Socks- и NAT-прокси. Последние входят в стандартные компоненты современных операционных систем, таких как Linux и Windows. По своим характеристикам программные прокси-серверы NAT практически не отличаются от аппаратных (маршрутизаторов) и существенно уступают в администрировании узкоспециализированным прокси-серверам. Рассмотрим наиболее популярные типы прокси-серверов.
HTTP прокси-сервер — один из самых распространенных типов прокси-серверов в мире. Как видно из названия, он предназначен для работы с HTTP-протоколом и позволяет работать браузерам и другим подобным программам. Браузер запрашивает страницу у прокси-сервера, который, в свою очередь, запрашивает ее из собственного кэша. Если страница не найдена в кэше или имеет параметры, которые запрещают ее кэширование, прокси-сервер запрашивает ее у соседнего прокси-сервера или напрямую обращается к сайту и после успешной загрузки страницы выдает ее пользовательскому приложению. Поскольку далее в статье будет рассматриваться один из HTTP прокси-серверов — Squid, перечислим основные возможности этого типа прокси-серверов:
позволяют кэшировать часто используемые данные (веб-страницы), благодаря чему сокращается внешний трафик и ускоряется загрузка страниц конечным пользователем. Однако Интернет становится все более динамичным, и зачастую многие веб-серверы запрещают прокси-серверам кэшировать данные или налагают ограничение на определенные страницы, поэтому прирост в экономии трафика не очень существен и может составлять до 15%. Если вопрос о трафике стоит остро, то многие HTTP прокси-серверы поддерживают игнорирование заголовков META в страницах, тем самым, позволяя кэшировать динамичные данные;
ограничивают доступ не только к определенным сайтам, но и к конкретным разделам сайта, за счет чего достигается большая гибкость в администрировании пользователей. Кроме того, доступ к сайтам определенной группы можно разрешать лишь после дополнительной аутентификации;
некоторые HTTP прокси-серверы позволяют ограничивать скорость загрузки информации, расставляя приоритеты по типам файлов. Благодаря этому можно блокировать высокую скорость загрузки, например видеофайлов или музыкальных композиций;
поддерживают резку рекламных блоков (баннеров) путем замещения исходной картинки или аплета своим кодом, что сокращает дополнительный трафик;
возможно разделение конкретных сайтов на работу через те или иные дополнительные прокси-серверы или интернет-каналы, что позволяет более экономно управлять трафиком и выбирать оптимальные каналы связи;
одна из важных особенностей HTTP прокси-сервера — возможность ведения подробной статистики по каждому пользователю. Это позволяет анализировать использование трафика отдельными пользователями, а также выявлять наиболее часто применяемые веб-серверы;
позволяют работать не только с протоколом HTTP, но и с другим подобным протоколом — FTP, а в случае необходимости — блокировать его.
HTTPS прокси-сервер — по сути дела, это точно такой же HTTP прокси-сервер, как и описанный выше. Основным отличием данного типа прокси-серверов является возможность шифрования передаваемых между клиентом, прокси-сервером и конечным сервером данных, о чем и сообщает буква «s» в его названии. Прокси-сервер, работающий по протоколу HTTPS, лишь организует канал передачи между клиентом и сервером и не позволяет анализировать проходящую по нему информацию. Соответственно возможности HTTPS, по сравнению с HTTP, существенно уже. В то же время этот прокси-сервер может быть использован в качестве прокси-сервера для иных, отличных от HTTPS протоколов — pop, smtp, imap и ряда других. В любом случае прокси-сервер такого типа значительно повышает безопасность конфиденциальной информации, хотя и имеет некоторые недостатки. Обычно HTPPS прокси-сервер совмещают с HTTP прокси-сервером, что делает его более универсальным и гибким при настройке клиентов.
FTP прокси-сервер — этот тип прокси-сервера предназначен для работы с протоколом FTP. Клиент обращается к прокси-серверу, а он передает запрос FTP-серверу. Существует два варианта работы клиента FTP через прокси-сервер. Первый вариант, когда запросы к FTP-серверу передаются через HTTP прокси-сервер, поддерживает большинство HTTP прокси-серверов, поскольку он удобен для браузеров, но при этом некоторые функции работы с FTP-сервером будут недоступны. Вторым вариантом как раз является работа через отдельный FTP прокси-сервер, и в этом случае поддерживаются все опции этого протокола — такого соединения требует большинство специализированных FTP-клиентов. Отметим, что прокси-серверы данного типа применяются редко, поскольку обычный HTTP прокси-сервер в большинстве случаев удовлетворяет потребности обычных пользователей, которые лишь загружают информацию с FTP-серверов, при этом не используя все доступные FTP-протоколу функции.
SOCKS прокси-сервер — работает на основе специально разработанного протокола SOCKS (сокращенно от SOCKetS). В настоящий момент последней версией протокола является SOCKS 5. Она позволяет производить аутентификацию пользователей на серверной стороне, что повышает гибкость настройки подобных систем. Прокси-серверы SOCKS являются универсальными и позволяют пользователю работать через любой другой протокол с практически любым видом сервисов в Интернете. Одна из особенностей прокси-серверов этого типа — возможность работы от внешних клиентов с внутресетевыми серверами, расположенными за межсетевыми экранами. Такой подход позволяет широко использовать этот вид прокси для обеспечения доступа клиентов как из локальной сети, так и в обратном направлении. Поскольку этот протокол является одним из самых популярных на данный момент, созданы специальные программы, например FreeCap (), предоставляющие возможность пропускать клиентское программное обеспечение в Интернет через этот протокол даже при отсутствии поддержки его этим программным обеспечением.
Кроме вышеперечисленных основных типов прокси-серверов, которые охватывают большинство распространенных протоколов передачи данных, существуют узкоспециализированные серверы, обеспечивающие корректную работу с теми или иными приложениями. В добавление ко всему вышеизложенному отметим, что прокси-серверы, к которым может получить доступ любой пользователь Интернета, называются открытыми. Таких серверов довольно много по всему миру, и ориентированы они в первую очередь на тех пользователей, которые хотят сохранить посещение страниц или серверов в тайне от провайдера или от сетевого администратора. Однако зачастую эти серверы могут прослушиваться, поскольку любой прокси-сервер (его трафик) без поддержки шифрования передаваемых данных может быть прослушан на любом из устройств, которые находятся на пути от клиента к серверу.
Прокси-сервер Squid
Проект прокси-сервера Squid () в свое время отделился от ныне платного проекта Harvest и разрабатывается несколькими энтузиастами во главе с Duane Wessels из Национальной лаборатории по исследованию сетей (National Laboratory for Applied Network Research). Сервер Squid — это высокопроизводительный кэширующий прокси, ориентированный прежде всего на работу с пользователями, которые занимаются активным серфингом в Интернете. Squid поддерживает работу пользователей с такими протоколами, как FTP, HTTP, HTTPS и GOPHER. В отличие от других подобных проектов, прокси-сервер Squid обладает интересной особенностью — выполнение запросов пользователей реализовано в нем как один большой неблокируемый процесс ввода-вывода, что обеспечивает более высокую производительность сервера в целом. Поскольку сервер Squid является кэширующим прокси, он поддерживает широкие возможности по построению иерархической структуры связи кэш-серверов на основе протоколов ICP/UDP (Internet Cache Protocol), HTCP/TCP и multicast. Такая система позволяет получить высокую производительность и оптимизировать пропускную способность канала в Интернет. Кэш сервера разделяется на виртуальный, который находится в оперативной памяти компьютера, и обычный, который хранится на жестком диске. Наиболее часто используемые объекты хранятся в оперативной памяти, что ускоряет процесс их отсылки клиентам. Также в виртуальной памяти хранится большая часть запросов DNS. Squid в полной мере поддерживает SSL (HTTPS), что обеспечивает конфиденциальность передаваемой пользователями информации и приватность их работы в Интернете. Также нельзя обойти вниманием широкие возможности по аутентификации пользователей на основе различных методик: NCSA, LDAP, MSNT, NTLM, PAM, SMB, SASL и др. Все дополнительные программы для аутентификации пользователей идут в комплекте с основным ядром программы. Как видно из перечисленных методик, Squid поддерживает авторизацию пользователей средствами сервисов не только на Linux-, но и на Windows-платформе (MSNT и NTLM)
Чтобы компьютер мог работать как прокси-сервер для локальной сети, он должен иметь как минимум две сетевые карты, ну допустим (eth0) смотрит в интернет и (etH2) общается с локальной сетью (на некоторых дистрибутивах требуется явное указывание метрики). Машина должна видеть компьютеры локальной сети, выходить в Интернет.
НАЧАЛЬНЫЕ НАСТРОЙКИ SQUID ДЛЯ ДОСТУПА ПОЛЬЗОВАТЕЛЕЙ
Перед тем как запускать сервер, необходимо отредактировать конфигурационный файл squid.conf, который по умолчанию располагается в папке /etc/squid/. По умолчанию ни один из пользователей не сможет воспользоваться прокси-сервером без редактирования конфигурационного файла.
Почти 3000 строк, но не пугайтесь реальный конфиг намного короче, можно редактировать дефолтный файл, а можно создать свой, предварительно сохранив старый.
Самое элементарное, что нам после установки следует сделать, так это разрешить доступ пользователям нашей локальной сети. Для этого служат параметры http_port, http_access. Кроме этого, мы заведем acl (список контроля доступа) для нашей локальной сети.
И так, http_port нам нужен постольку, поскольку наш прокси сервер Squid должен обслуживать только компьютеры нашей локальной сети и быть невидимым для внешнего мира, дабы исключить возможность “плохим людям” внешней сети воспользоваться нашим каналом или трафиком, а
в случае, если будут обнаружены “дыры” в коде прокси сервера Squid, воспользоваться ими.
Параметр http_access используется для разрешения или запрещения доступа к определенным ресурсам, определенным адресам либо с определенных адресов, к определенным сайтам, по определенным протоколам, портам и всему тому, что непосредственно указано с помощью Acl (списков контроля доступа).







