Web-технологии

      

Обратная адресация DNS позволяет определять имена хост-компьютеров по их адресам и опознавать посетителей узлов

      

Защиту Web-узлов с помощью брандмауэров можно усилить еще одним компонентом. Речь идет об обратной адресации, которая предоставляет сетевым администраторам новые возможности проверки трафика, поступающего из Internet и intranet-сетей.

      

Система имен доменов DNS, используемая в Web, избавляет пользователей от необходимости вводить цифровые IP-адреса. Для подключения к тому или иному узлу достаточно указать в браузере универсальный указатель ресурса URL, содержащий в текстовой форме имя сервера, и система сама переведет его на язык компьютеров. Но файлы DNS дают возможность выполнять и обратную процедуру  -  определять имена хост-компьютеров по их IP-адресам.

      

Эта технология, получившая название обратной адресации (inverse addressing), позволяет не только удовлетворить простое любопытство. Получив ответ на вопросы типа "какой сервер скрывается за адресом 192.112.36.5?" или "кому принадлежит сеть 207.222.0.0?", можно будет узнать, кто пытается связаться с конкретным узлом Web. Брандмауэр, стоящий на страже сети и определяющий обратные адреса всех поступающих запросов, на основании полученных результатов может разрешить или запретить доступ к хранящейся на сервере информации.

      

Но при этом нужно иметь в виду, что сама по себе обратная адресация не в силах обеспечить надежную защиту узла Internet или хост-компьютера FTP. Она не идентифицирует абонента и тем более не определяет его намерения. Умный злоумышленник легко может обойти этот метод защиты, изменив IP-адрес отправителя пакета и замаскировавшись под добропорядочного пользователя.

      

Обратная адресация лишь определяет текстовое имя хост-компьютера, с которого поступил запрос на доступ к узлу, на установление FTP-подключения или на проведение клиентского сеанса Telnet. Но даже такой информации брандмауэру достаточно, чтобы ограничить доступ из внешней сети к защищаемым серверам и хост-компьютерам. Эту функцию можно применять и для проверки исходящего трафика, сужая круг пользователей, имеющих право на подключение к Internet.

      

В дополнение ко всему, обратная адресация поможет сделать более осмысленными записи в журналах регистрации событий, заменив в них цифровые адреса на имена хост-компьютеров. Для этого предназначены такие утилиты, как Traceroute (в Windows NT  -  Tracert.exe), однако для их работы необходимо, чтобы таблицы DNS содержали инвертированные списки соответствия имен и адресов.

     

 

Таблицы на двоих

      

Система DNS для проведения обратной адресации использует адресные таблицы, размещенные на специализированных хост-компьютерах Internet  -  так называемых серверах имен (Name Servers). Именно они обслуживают запросы на локальные имена. Эти таблицы устанавливают соответствие между именами хост-компьютеров и IP-адресами, а также между именами доменов и серверами имен, на которых можно найти адреса хост-компьютеров.

      

В качестве примера рассмотрим некую небольшую фирму SmallCo. Ее сеть подключена к Internet через сервис-провайдера, и все имена хост-компьютеров и Web-узлов, которые руководство решило сделать общедоступными, зарегистрированы на его серверах имен. Каждый домен обслуживается по меньшей мере двумя такими серверами, что значительно повышает надежность системы.

      

Эти серверы имеют статус уполномоченных серверов имен (authoritative Name Servers), т. е. они зарегистрированы на девяти мастер-серверах, называемых корневой зоной Internet.

      

Адреса серверов имен smallco содержатся в файлах корневой зоны, потому что запрос на определение имени узла сначала направляется к корневым серверам имен. Получив запрос на IP-адрес узла http://www.smallco.com, сервер корневой зоны пересылает его на сервер имен сервис-провайдера Internet. Тот ищет в своих локальных таблицах соответствующий адрес и направляет его на преобразователь адресов, с которого поступил запрос.

      

Обратная адресация, то есть преобразование IP-адресов в имена хост-компьютеров или доменов, производится по такой же схеме, но здесь используются особые таблицы, хранящиеся в специализированном домене высшего уровня .arpa. Файлы домена .arpa содержатся на тех же серверах имен доменов, которые обслуживают таблицы преобразования имен в IP-адреса.

      

Название .arpa досталось этому домену в память о сети Arpanet, положившей начало Internet. Он занимает ту же ступень в иерархии адресов, что и домены .com, .net, .org, .mil и .edu. Подобно домену .com, он содержит имена вторичных доменов, но это не текстовые адреса типа microsoft.com, sony.com или yahoo.com. В .arpa они состоят из цифр, что необходимо для проведения обратного определения адресов.

      

От других доменов высшего уровня .arpa отличается и тем, что имеет лишь один домен нижнего уровня  -  .in-addr. А вот в нем уже содержится множество поддоменов, которые обозначаются не текстовыми именами, а цифрами IP-адресов. Во всех других таблицах DNS они отображаются как адреса текстовые.

      

Примечательно, что четыре числа, составляющие IP-адреса хост-компьютеров домена .arpa, расположены в обратном, по сравнению с привычными текстовыми адресами, порядке. Такая структура может привести в недоумение, но она объясняется четкой иерархией системы имен хост-компьютеров и IP-адресов Internet.

      

Возьмем, к примеру, имя хост-компьютера ftpserver. smallco.com и его IP-адрес 207.54.222.7. В текстовых именах Internet первым указывается младший, наименее значимый доменный уровень. Но в цифровых IP-адресах ситуация прямо противоположна. В нашем примере ведущее место занимает старшая группа 207, обозначающая номер сети, а последняя цифра 7 указывает на номер хост-компьютера.

      

Когда Web-узлу http://www.smallco.com нужно провести обратную адресацию, он посылает запрос на свой сервер имен, чтобы тот преобразовал IP-адрес отправителя в имя хост-компьютера. Тот, в свою очередь, обращается к файлам корневой зоны, находит там адрес сервера имен, обслуживающего требуемый домен in-addr.arpa, и уже с него получает имя хост-компьютера.

      

Предположим, что к Web-узлу http://www.smallco.com пытается подключиться хост-компьютер с IP-адресом 192.112.36.5. Эти цифры, составляющие адрес источника, содержатся в заголовке пришедшей дейтаграммы и только они предоставляют информацию о том, кто хочет просмотреть страницы сервера.

      

Внутренние правила безопасности разрешают доступ к узлу исключительно с хост-компьютеров intranet-сети, т. е. из домена smallco.com, а также с серверов дочерней компании, входящих в домен tinyco.com. За соблюдением установленных правил следит брандмауэр или Web-сервер сети, который проверяет все поступающие на узел дейтаграммы, выделяя из общего трафика пакеты, поступившие из разрешенных доменов, и отсеивая все остальные.

      

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

    

 

Двойная проверка

      

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

      

На некоторых серверах Web производится двойная обратная адресация, при которой соответствие IP-адреса имени хост-компьютера определяется дважды: получив по описанной выше схеме имя, система вновь определяет его IP-адрес, который затем сопоставляет с заголовком полученной дейтаграммы. В Unix такая функция известна под названием "gethostbyaddr" и выполняется после функции прямого определения адреса "gethostbyname". Она воплощена, например, в операционной системе SunOS фирмы Sun. Но двойную обратную адресацию должен включить администратор, причем ему нужно также указать при настройке Web-сервера, что делать (или чего не делать) при несовпадении имени хост-компьютера и его IP-адреса.

      

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

      

Допустим, получив такой запрос от абонента с адресом 192.112.36.5, Web-сервер прежде всего запросит в DNS имя соответствующего хост-комьютера. Система DNS найдет в своих таблицах сервер, обслуживающий домен 36.112.192.in-addr.arpa, и считает с него имя, соответствующее этому номеру (nic.ddn.mil).

      

После этого DNS обратится к серверам корневой зоны за адресом сервера имен домена ddn.mil. Здесь будет произведена обратная операция: имя хоста преобразуется в IP-адрес, который и пересылается на запросивший его Web-сервер. Теперь остается лишь проверить соответствие имен и адресов, полученных из разных источников.

      

Конечно, двойная проверка требует больше времени, но главная проблема не в этом. Такая проверка, как и обычная обратная адресация, не обеспечивает надежной защиты сети от злоумышленников. Чтобы уберечься от них, администратору нужно заранее определить, абоненты каких хост-компьютеров имеют право работать с его узлом. Другой способ защиты  -  скрыть узлы ограниченного доступа от пытливых глаз. Сделать это можно с помощью брандмауэра, размещенного между узлом и Internet. При этом остальные Web-серверы, доступ к которым не ограничен, остаются вне брандмауэра.

    

 

Где найти данные?

      

И прямая, и обратная адресация зависят от точности информации в адресных таблицах DNS. Двойная проверка даже благонадежного хост-компьютера может дать отрицательный результат, если прямые и обратные таблицы DNS окажутся несинхронизированными. Регистрируя новый хост в таблицах прямого преобразования, администратор порой забывает внести его в файлы обратной адресации. Дело в том, что это две раздельные системы, они могут даже располагаться на различных серверах имен. В Unix избежать такого положения помогает утилита h2n, входящая в библиотеки BIND, которая синхронизирует таблицы прямого и обратного преобразования.

      

Сетевые администраторы зачастую неверно понимают механизм обратного преобразования адресов и функции домена in-addr.arpa. Одна из причин этого  -  отсутствие в DNS автоматической связи между файлами прямого и обратного преобразования. Регистрация хост-компьютера в DNS не сопровождается обновлением списков обратного соответствия. Поэтому, обращаясь в органы регистрации (InterNIC или подобную организацию), приходится заполнять две отдельные заявки  -  для системы прямого и обратного отображения адресов.

      

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

      

Уильям Датчер

      

Уильям Датчер работает в Вашингтоне, организует семинары по сетевым технологиям и доступу в Internet. Обратиться к нему можно по адресу: bdutcher@mcimail.com.