Михаил Фленов СанктПетербург бхвпетербург 2010 удк 681 06 ббк 32. 973. 26018. 2 Ф69
Скачать 3.69 Mb.
|
Глава 9 Шлюз в Интернет Мы уже знаем, как установить и настроить сервер Linux, сделать его соеди- нение безопасным и подключить основные сервисы. Но такие службы как WEB-сервер и электронная почта используются не только в локальной сети. Их максимальные преимущества проявляются при интеграции с всемирной сетью Но мир небезопасен. Там можно встретить разных людей и столкнуться с реалиями жизни. Точно так же в Интернете могут быть законопослушные пользователи , а могут быть и взломщики. Когда мы строим дом, то уже при возведении стен заботимся о безопасности, устанавливая окна и двери, думаем об их надежности, а закончив отделку дома , ставим сигнализацию. Дом мы уже построили и сделали его защищен- ным . Именно поэтому безопасность сети рассматривалась первой. Теперь нам необходимо поставить двери, через которые можно будет выходить из дома на улицу (в Интернет). После завершения всех настроек мы повесим на нашу обитель сигнализацию — системы мониторинга и выявления атак, ко- торые будут рассматриваться в главе 12. В качестве дверей во всемирную сеть будут выступать шлюз и прокси-сервер (Proxy). Именно о них пойдет речь в этой главе, и как раз их мы будем под- робно рассматривать. Но настройка связи не заканчивается конфигурирова- нием сервера, на клиенте тоже необходимо производить определенные дей- ствия , с которыми нам также предстоит познакомиться. 9.1. Настройка шлюза Выход в Интернет можно осуществить через модем или выделенную линию. В разд. 3.7 мы уже бегло рассмотрели возможность подключения с помощью графической утилиты, позволяющей настроить соединение обоих типов. Глава 9 294 Мы не будем останавливаться на этом вопросе, потому что здесь мне нечего добавить по поводу безопасности. Настройка хорошо описана во множестве документов , которые легко найти в Интернете. Но несколько замечаний я бы хотел сделать. Используя графическую утилиту, вы должны знать, что все сценарии нахо- дятся в директории /etc/ppp и /etc/sysconfig/network-scripts. Обязательно озна- комьтесь с файлами, которые здесь находятся. Подключившись к Интернету, убедитесь, что вам доступен DNS-сервер, ко- торый находит соответствие символьных имен и IP-адресов. Для этого можно выполнить команду ping с указанием какого-либо сервера, например: ping www.redhat.com Если ответ получен, значит, сервис преобразования имен доступен, иначе с Интернетом можно будет работать, только используя IP-адреса. Если имя не определяется , то это можно исправить, вручную прописав адрес DNS- сервера . Получите эту информацию у своего интернет-провайдера и добавьте следующую строку в файл /etc/resolv.conf: nameserver 192.168.1.1 Адрес 192.168.1.1 нужно заменить тем, который вам предоставил провайдер. Если вам дали несколько адресов, то можно указать их все, каждый в своей строке : nameserver 192.168.1.1 nameserver 192.168.1.2 9.2. Работа прокси - сервера Изначально прокси-серверы (Proxy) создавались для решения узкого круга задач , а именно, для кэширования данных, получаемых из Интернета. На- пример , сотрудники вашей фирмы работают на 100 компьютерах, которые подключаются к Интернету через один физический канал связи. Не секрет, что бóльшая часть пользователей загружает по несколько раз в день одни и те же страницы, и каждый раз эта закачка давит на канал связи и трафик. Сделаем простейший расчет. Ежедневно мы обращаемся к поисковой систе- ме , например, www.yahoo.com или www.google.com. Теперь подсчитайте, сколько происходит загрузок сайта www.yahoo.com со 100 компьютеров. Получится число более 1000, потому что в среднем человек обращается к по- исковикам не менее 10 раз в день для поиска разной информации и уточне- ния запросов. При этом если сами страницы меняются в зависимости от за- проса , то, скажем, картинки остаются одними и теми же. Таким образом, трафик расходуется напрасно. Шлюз в Интернет 295 Для экономии интернет-трафика были придуманы прокси-серверы. Со вре- менем их возможности стали наращиваться, и на данный момент можно вы- делить следующие преимущества от использования подобных программ: кэширование документов, получаемых по сети; кэширование результатов DNS-запросов; организация шлюза доступа в сеть; управление доступом в Интернет; анонимный доступ в сеть через сокрытие адреса; экономия IP-адресов. В этой главе мы поговорим о самом популярном в Linux прокси-сервере squid, рассмотрим его возможности, оценим безопасность и познакомимся с конфи- гурированием Чтобы сэкономить трафик и одновременно увеличить скорость загрузки на сервере , через который осуществляется выход в Интернет, устанавливается спе- циализированная программа (прокси-сервер), которая кэширует весь трафик (рис. 9.1). Когда первый пользователь загружает страницу www.yahoo.com, то все ее содержимое сохраняется в кэше прокси-сервера. При следующем обращении к WEB-узлу все картинки скачиваются уже не из Интернета, а с прокси-сервера, а текстовая часть (в зависимости от содержимого страни- цы и происшедших изменений) может быть загружена с сервера. Internet Proxy Рис . 9.1. Организация работы с Интернетом через прокси - сервер Глава 9 296 Как правило, на сайтах именно графический материал занимает наибольший объем . Если текстовая часть страниц обычно не превышает 15 Кбайт, то об- щий размер графики достигает 100 Кбайт и более. Загружая эту информацию с локального прокси-сервера, вы экономите трафик и время. Скорость загрузки увеличивается за счет того, что прокси-сервер находится в вашей локальной сети, и связь с ним, чаще всего, быстрая. Реальная скорость соответствует вашему оборудованию, пропускная способность которого в настоящее время даже в самых дешевых вариантах достигает 100 Мбит/с. По этому каналу вы забираете бóльшую часть информации (всю графику, флеш -анимацию и неизмененную текстовую часть). Связь с Интернетом на- много медленнее, и в малых офисах в среднем составляет от 2 до 8 Мбит/с. Через этот канал вы забираете только измененные текстовые данные (чаще всего содержимое HTML-файлов). Помимо кэширования содержимого страниц, прокси-сервер может сохранять результаты DNS-запросов. Это также может повысить производительность. Пользователю удобнее вводить символьные адреса, а компьютер обменива- ется данными, используя IP-адрес. Исходя из этого, прежде чем начнется за- грузка , программа должна выполнить такую подмену. Это занимает какое-то время и создает задержку перед началом обмена данными. Если до вас уже кто -нибудь обращался к сайту по символьному имени, то задержка на работу с сервером DNS будет меньше, потому что прокси-сервер возьмет адрес из своего кэша, не обращаясь к удаленному серверу. Более подробно о DNS мы поговорим в главе 11. С развитием Интернета и потребностей пользователей стали расти и возмож- ности . Прокси-сервер может играть роль шлюза и без дополнительных про- грамм или оборудования обеспечить доступ в Интернет. Помимо этого, он становится щитом в сети от вторжения извне. Например, если все пользова- тели подключены к Интернету через прокси-сервер, а он прячет реальный IP- адрес пакетов и отправляет их в сеть от своего имени, то хакеры увидят толь- ко IP-адрес прокси-сервера и будут ломать его, а компьютеры реальных пользователей останутся незатронутыми. Таким образом, при организации защиты от внешнего вторжения можно больше внимания уделять охране прокси -сервера, чем клиентских компьютеров. Но , несмотря на возможности прокси-серверов с точки зрения защиты, они слишком просты и их легко можно обойти, поэтому без хорошего сетевого экрана и зоркого глаза администратора все же не обойтись. Возможность сокрытия IP-адреса дает еще одно преимущество — экономия адресов . Интернет-адрес должен быть только у прокси-сервера, потому что он обменивается пакетами с внешним миром. Все остальные компьютеры Шлюз в Интернет 297 в вашей локальной сети могут иметь немаршрутизируемые адреса, которые зарезервированы для частных сетей (диапазон 192.168.x.x или 10.x.x.x). Прокси -серверы бывают прозрачные и анонимные. Прозрачные просто пере- сылают пакеты пользователя (без изменения адреса отправителя) дальше на WEB-сервер. Прокси-сервер, который скрывает IP-адрес, называется ано- нимным . Такой сервер общается с внешним миром от своего имени. Этим очень часто пользуются злоумышленники. Например, если хакер хочет вскрыть сервер и замести следы, то он производит все свои действия через анонимный прокси-сервер, чтобы администратор не смог узнать, кто именно производил взлом. На данный момент в Интернете работает множество анонимных прокси- серверов , но не все из них реально прячут адрес. В отдельных случаях источ- ник остается доступным для удаленной системы, а некоторые серверы сохра- няют всю активность в журналах, и их могут просмотреть правоохранитель- ные органы. Таким образом, злоумышленник не может быть уверенным, что используемый им сервер действительно анонимен. У публичных прокси-серверов Интернета есть еще один недостаток — нельзя гарантировать , что на нем нет никакой заразы. Например, месяц назад у нас на работе администратор запретил доступ к сайтам vkontakte.ru и odnoklasniki.ru. Я думаю, многие из вас войдут в мое положение и поймут мое горе. Этот запрет легко обходится с помощью прокси, но проблема в том, что первый же публичный сервер, который я нашел, одарил меня целой кучей вирусов и программ-шпионов. Так как не все компьютеры в сети должны иметь право работать с Интерне- том , то на уровне прокси-сервера можно производить аутентификацию поль- зователя В некоторых версиях прокси есть очень удобная возможность — обмен информацией между серверами. Например, в здании в одной большой сети находятся несколько офисов, каждый из них платит за Интернет отдельно, но общается с внешним миром через свой прокси-сервер. Можно объединить несколько прокси-серверов, и если на одном нет в кэше нужного сайта, то он попытается взять информацию с соседнего сервера. Чаще всего для реализации такой возможности применяется протокол ICP (Internet Cache Protocol, протокол интернет-кэширования). Если ваш сервер не нашел нужного документа, то он направляет ICP-запрос другим серверам. Если какой-либо прокси-сервер ответит положительно, то информация будет взята у него. При использовании протокола ICP (или иного способа поиска данных в других прокси -серверах) выигрыш в скорости загрузки не столь заметен при обращении Глава 9 298 к документам маленького размера, потому что возрастают расходы времени на ICP и поиск информации в кэше. При большой нагрузке на серверы и большой базе кэша поиск может оказаться слишком долгим, и преимущество в скорости исчезает . Единственное, чем полезно такое решение — экономия трафика, ко- торая может сберечь деньги тем, кто оплачивает каждый получаемый мегабайт. Мы рассмотрели основные возможности прокси-серверов, но это не значит, что все они есть в любом сервере. Все зависит от разработчика, и некоторые реализуют только одну задачу. Для работы через прокси-сервер вы должны настроить соответствующую программу , например, браузер Mozilla. Запустите этот обозреватель и выбе- рите меню Edit | Preferences. В появившемся окне с левой стороны располо- жен список категорий для конфигурирования. Выберите Advanced | Proxies и перейдите к настройке подключения через прокси-сервер. По умолчанию установлено автоматическое определение соединения (Direct connection to the Internet). Вы должны поменять этот параметр на ручную конфигурацию (Manual proxy configuration) и указать IP-адрес и порт прокси-сервера для каждого протокола (рис. 9.2). Рис . 9.2. Настройка соединения через прокси - сервер в браузере Mozilla Шлюз в Интернет 299 После этого браузер будет посылать все запросы прокси-серверу, а тот уже перенаправит их серверу, если не может ответить самостоятельно. Прокси- сервер должен постоянно находиться в загруженном состоянии и прослуши- вать определенный порт (или несколько портов для разных протоколов). Под каждую задачу, поддерживающую определенный протокол, как правило, выделяется отдельный порт. Для протокола HTTP, применяемого для загруз- ки WEB-страниц, чаще всего используются порты 3128 или 8080, но эти зна- чения зависят от сервера и могут быть изменены. Перед использованием определенной программы прокси-сервера убедитесь, что она обладает необ- ходимыми вам возможностями и обеспечивает поддержку всех нужных про- токолов . Неподдерживаемые протоколы придется направлять не через сер- вер , а напрямую, через шлюз. Для повышения безопасности вашей сети необходимо с помощью сетевого экрана запретить подключения извне на используемые сервисом squid порты. Например , для работы с протоколом HTTP по умолчанию им используется порт 3128. И если к этому порту будет разрешено подключаться только из локальной сети, то хакер не сможет применять этот прокси-сервер в своих целях или для получения доступа к компьютерам этой сети. 9.3. squid Как я уже сказал, самым распространенным прокси-сервером является squid. Этот сервер имеет достаточно длинную историю, и за время его существова- ния в нем реализовано много возможностей. Основной конфигурационный файл для squid — /etc/squid/squid.conf (в неко- торых системах место его расположения /etc/squid.conf). Файл очень велик, и приводить его полностью нет смысла, так как значительную его часть за- нимают подробные комментарии по использованию директив. Рассмотрим основные команды, которые доступны нам для управления про- кси -сервером. Как обычно, все параметры, влияющие на производительность и безопасность, мы разберем подробно. Остальные настройки будут рассмот- рены поверхностно, с ними можно поближе познакомиться, прочитав ком- ментарии из конфигурационного файла. 9.3.1. Директивы настройки HTTP При подключении к Интернету пользователи первым делом загружают WEB- страницы . Если используется squid, то необходимо правильно настроить Глава 9 300 протокол HTTP. Для решения этой задачи в файле squid.conf есть следующие директивы : http_port n — номер порта, через который будет происходить подключе- ние . Порты, на которых сервер будет ожидать подключения клиентов, — это первое, что необходимо настроить. Такие директивы имеют формат XXXX_port . Для порта HTTP запись будет выглядеть таким образом: http_port 8080 При конфигурировании браузера на клиентском компьютере вы должны будете указать IP-адрес сервера, где установлен squid, и прописанный в данной директиве порт; hierarchy_stoplist — определяет перечень URL-адресов, данные с кото- рых всегда должны получаться с сервера, а не из кэша. Я рекомендую до- бавить в этот список слова "cgi-bin" и вопросительный знак. Адреса URL, содержащие такой текст, указывают на сценарии, которые могут испол- няться на сервере, и их результат желательно не кэшировать. Рассмотрим пример. Предположим, что вы прочитали WEB-страницу www.servername.com/cgi-bin/ping.cgi, на которой можно через WEB- интерфейс выполнить команду ping . Допустим, что при первом обраще- нии вы запустили команду ping к адресу 18.1.1.1 . Результат будет сохра- нен в кэше прокси-сервера. В следующий раз вы обращаетесь к сценарию, чтобы выполнить ping 18.1.1.18 , но браузер вернет первый результат, потому что возьмет его из своего кэша. Страницы со сценариями могут возвращать разный результат, в зависимо- сти от ситуации и параметров, которые выбрал пользователь. Если кэши- ровать такие страницы, то вы всегда будете видеть одно и то же. В резуль- тате вы получите только неудобства от соединения через прокси-сервер. Вопросительный знак очень часто используется для передачи параметров, поэтому такие страницы тоже не рекомендуется кэшировать. Тег hierarchy_stoplist запрещает брать страницу из кэша, а следующие две строки задают правило, по которому страницы с URL-адресом, содер- жащие слова "cgi-bin" или вопросительный знак, вообще не будут кэши- роваться : acl QUERY urlpath_regex cgi-bin \? no_cache deny QUERY Думаю , вы согласитесь со мной, что незачем кэшировать то, что все равно при новом запросе будет получаться с сервера, и зря расходовать дисковое пространство Шлюз в Интернет 301 9.3.2. Директивы настройки FTP Для работы по протоколу FTP тоже есть несколько директив: ftp_passive параметр — режим работы. Если в качестве параметра ука- зано значении on (устанавливается по умолчанию), то пассивный режим разрешен Сервер squid позволяет работать с протоколом FTP, но для этого может по- требоваться дополнительная настройка. Например, если squid находится за се- тевым экраном, запрещающим пассивный режим, то лучше изменить значе- ние параметра по умолчанию, установив для этого следующую директиву: ftp_passive off ftp_user адрес — определяет адрес E-mail, который будет использовать- ся в качестве пароля при авторизации на анонимном FTP-сервере. Ни один сервер не может точно сказать, правильно ли вы указали адрес, поэтому проверка может быть отключена. Но некоторые FTP-серверы проверяют корректность написания адреса. По умолчанию squid исполь- зует в качестве E-mail слово squid@ : ftp_user squid@ По умолчанию в файле /etc/squid/squid.conf эта строка закомментирована, но желательно поменять в ней адрес E-mail, например: ftp_user squid@hotmail.com Такой адрес любой FTP-сервер воспримет как корректный, потому что он соответствует всем правилам написания E-mail; ftp_list_width n — число n задает ширину листинга при просмотре со- держимого FTP-сервера. Это значение должно быть достаточным, чтобы увидеть все файлы. Если установить слишком маленькое значение, то имена файлов будут обрезаться. |