Книга: Linux глазами хакера
9.2. Работа прокси-сервера
9.2. Работа прокси-сервера
Изначально прокси-серверы (proxy) создавались для решения узкого круга задач, а именно, — кэширование данных, получаемых из Интернета. Например, вы работаете в сети из 100 компьютеров, которые подключаются к Интернету через один физический канал связи. Не секрет, что большая часть пользователей загружает по несколько раз в день одни и те же страницы, и каждый раз эта закачка давит на канал связи и трафик.
Сделаем простейший расчет. Ежедневно мы обращаемся к поисковой системе, например, www.yahoo.com или www.google.com. Теперь посчитайте, сколько происходит загрузок сайта www.yahoo.com со 100 компьютеров. В результате должно получиться число более 1000, потому что в среднем человек просматривает не менее 10 страниц за счет поиска разной информации и уточнения запросов. Таким образом, трафик расходуется напрасно.
Для экономии интернет-трафика были придуманы прокси-серверы. Со временем их возможности стали наращиваться, и на данный момент можно выделить следующие преимущества от использования подобных программ:
? кэширование документов, получаемых по сети;
? кэширование результатов DNS-запросов;
? организация шлюза доступа в сеть;
? управление доступом в Интернет;
? анонимный доступ в сеть через сокрытие адреса;
? экономия IP-адресов.
В данной главе мы поговорим о самом популярном в Linux прокси-сервере squid, рассмотрим его возможности, оценим безопасность и поговорим о конфигурировании.
Чтобы сэкономить трафик и одновременно увеличить скорость загрузки, на сервере, через который осуществляется выход в Интернет, устанавливается специализированная программа proxy, которая кэширует весь трафик (рис. 9.1). Когда первый пользователь загружает страницу www.yahoo.com, то все ее содержимое сохраняется в кэше proxy. При следующем обращении к Web-узлу все картинки скачиваются уже не из Интернета, а с прокси-сервера провайдера, а текстовая часть (в зависимости от содержимого страницы и происшедших изменений) может быть загружена с сервера.
Рис. 9.1. Организация работы с Интернетом через прокси-сервер
Как правило, на сайтах именно графический материал занимает наибольший объем. Если текстовая часть страниц обычно не превышает 15 Кбайт, то размер графики достигает 100 Кбайт. Загружая эту информацию с локального прокси-сервера, вы экономите трафик и время.
Скорость загрузки увеличивается за счет того, что proxy находится в вашей локальной сети, и связь с ним, чаще всего, соответствует вашему оборудованию, пропускная способность которого в настоящее время даже в самых дешевых вариантах достигает 100 Мбит/с. По этому каналу вы забираете большую часть информации (всю графику и неизмененную текстовую часть). Связь с Интернетом намного ниже, и в малых офисах в среднем составляет от 2 до 8 Мбит/с. Через этот канал вы забираете только измененные текстовые данные (чаще всего, содержимое HTML-файлов).
Помимо кэширования содержимого страниц, proxy может сохранять результаты DNS-запросов. Это также может повысить производительность. Пользователю удобнее вводить символьные адреса, а компьютер обменивается данными через IP-адрес. Исходя из этого, прежде чем начнется загрузка, программа должна выполнить такую подмену. Это занимает какое-то время и создает задержку перед началом обмена данными. Если до вас уже кто- нибудь обращался к сайту по символьному имени, то задержки на работу с сервером DNS не будет, потому что proxy возьмет адрес из своего кэша. Более подробно о DNS мы поговорим в гл. 11.
С развитием всемирной сети и увеличением потребностей пользователей стали наращиваться и возможности proxy. Теперь прокси-сервер может выполнять роль шлюза и обеспечить доступ в Интернет без дополнительных программ или оборудования. Помимо этого, он становится щитом в сети от вторжения извне. Например, все пользователи подключены к Интернету через proxy. При этом сервер прячет реальный IP-адрес пакетов и отправляет их в сеть от своего имени, т.е. хакеры видят только IP-адрес прокси-сервера и будут ломать его, а компьютеры реальных пользователей останутся незатронутыми. Таким образом, намного проще при организации защиты от внешнего вторжения больше внимания уделять охране прокси-сервера, чем клиентским компьютерам. Но несмотря на это, возможности proxy с точки зрения защиты слишком простые и их легко можно обойти, поэтому без хорошего сетевого экрана и зоркого глаза администратора все же не обойтись.
Возможность сокрытия IP-адреса дает еще одно преимущество — экономия адресов. Интернет-адрес должен быть только у прокси-сервера, потому что он обменивается пакетами с внешним миром. Все остальные компьютеры в вашей локальной сети могут иметь немаршрутизируемые адреса, которые зарезервированы для частных сетей (диапазон 192.168.x.x или 10.x.x.x).
Прокси-серверы бывают прозрачные и анонимные. Прозрачные пакеты пользователя (без изменения адреса отправителя) просто пересылаются дальше на Web-сервер. Proxy, который скрывает IP-адрес, называется анонимным. Такой сервер общается с внешним миром от своего имени. Этим очень часто пользуются злоумышленники. Например, если хакер хочет вскрыть сервер и замести следы, то он производит все свои действия через анонимный прокси- сервер, чтобы администратор не смог узнать, кто именно производил взлом.
На данный момент в Интернете работает множество анонимных прокси- серверов, но только не все из них реально прячут адрес. В отдельных случаях источник остается доступным, для удаленной системы, а некоторые серверы сохраняют всю активность в журналах, и их могут просмотреть правоохранительные органы. Таким образом, злоумышленник не может быть уверенным, что используемый им сервер действительно анонимен.
Так как не все компьютеры в сети должны иметь право работать с Интернетом, то на уровне прокси-сервера можно производить аутентификацию пользователя.
В некоторых версиях proxy есть очень удобная возможность — обмен информацией между серверами. Например, в здании в одной большой сети находятся несколько офисов, но каждый из них платит за Интернет отдельно, поэтому общается с внешним миром через свой прокси-сервер. Можно объединить proxy, и если на одном нет в кэше нужного сайта, то он возьмет информацию с соседнего сервера.
Чаще всего для реализации такой возможности применяется ICP-протокол (Internet Cache Protocol, протокол интернет-кэширования). Если ваш сервер не нашел нужного документа, то он направляет ICP-запрос другим серверам. Если какой-либо proxy ответит положительно, то информация будет взята у него.
При использовании протокола ICP (или иного способа поиска данных в других proxy) выигрыш от скорости загрузки становится не столь значительным при обращении к документам маленького размера, потому что увеличивается время на ICP и поиск информации в кэше. При большой нагрузке на серверы и немалой базе кэша поиск может оказаться слишком долгим, и скоростное преимущество исчезает. Единственное, что остается в вашем распоряжении — экономия трафика, которая может сберечь деньги тем, кто оплачивает каждый получаемый мегабайт.
Мы рассмотрели основные возможности proxy, но это не значит, что все они есть в любом сервере. Все зависит от разработчика, а некоторые реализуют только одну задачу.
Для работы через прокси-сервер вы должны настроить соответствующую программу, например, браузер Mozilla. Запустите этот обозреватель и выберите меню Edit/Preferences. В появившемся окне с левой стороны расположен список категорий для конфигурирования. Выберите Advanced/Proxies, и перейдите к настройке подключения через прокси-сервер. По умолчанию установлено автоматическое определение соединения (Direct connection to the Internet). Вы должны поменять этот параметр на ручную конфигурацию (Manual proxy configuration) и указать IP-адрес и порт прокси-сервера для каждого протокола (рис. 9.2).
Рис. 9.2. Настройка соединения через прокси-сервер в браузере Mozilla
После этой настройки браузер будет посылать все запросы прокси-серверу, а тот уже перенаправит их серверу. Proxy постоянно должен находиться в загруженном состоянии и прослушивать определенный порт (или несколько портов для разных протоколов).
Под каждую задачу, поддерживающую определенный протокол, как правило, выделяется отдельный порт. Для HTTP-протокола, применяемого для загрузки Web-страниц, чаще всего используется порт 8080, но это значение зависит от сервера и может быть изменено. Перед использованием определенной программы прокси-сервера убедитесь, что она обладает необходимыми вам возможностями и обеспечивает поддержку всех нужных протоколов. Неподдерживаемые протоколы придется направлять, минуя сервер, т.е. напрямую через шлюз.
Для повышения безопасности вашей сети необходимо запретить с помощью сетевого экрана подключения извне на используемые сервисом squid порты. Например, для его работы с HTTP-протоколом по умолчанию используется порт 3128. И если к этому порту будет разрешено подключаться только из локальной сети, то хакер не сможет применять этот прокси-сервер в своих целях или для получения доступа к компьютерам этой сети.
- 1.3.1. Прокси-сервер – что это?
- Работа с DataRow
- Работа с консолью
- 3.8.5. Работа с модулями
- Урок 2.8. Работа со сменными носителями
- Работа с разделами справки
- 16.3. Привязка сервера
- 1.3.2. Настраиваем анонимный прокси-сервер
- Работа с внешними данными
- Использование сервера DNS
- Специальные функции сервера SMTP
- 2.2. Tor или анонимные прокси-серверы и анонимайзеры. Кто кого?