Специальная публикация NIST 800-10

         

Безопасность на уровне хостов не масштабируется.


Безопасность на уровне хостов плохо шкалируется: по мере того, как возрастает число хостов в сети, возможности по обеспечению гарантий безопасности на высоком уровне для каждого хоста уменьшаются. Учитывая то, что администрирование даже одной системы для поддержания безопасности в ней может оказаться сложным, управление большим числом таких систем может легко привести к ошибкам и упущениям. Важно также помнить, что зачастую важность работы системных администраторов не понимается и эта работа выполняется кое-как. В результате некоторые системы могут оказаться менее безопасными, чем другие, и именно эти системы станут слабым звеном, которое в конечном счете приведет к появлению уязвимого места в системе безопасности.

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

| |



Введение в Интернет и безопасность в нем


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

Следующие пункты кратко описывают Интернет, TCP/IP, а затем рассказывают о некоторых проблемах безопасности в Интернете и причинах, делающих достаточно серьезными.

|



Хосты в Интернете


На многих системах, подключенных к Интернету, работает одна из версий ОС Unix. Впервые TCP/IP был реализован в начале 80-х годов в версии Unix, написанной в университете в Калифорнии в Беркли, известной как BSD(Berkeley Software Distribution). Многие современные версии Unix позаимствовали тексты сетевых программ из этой версии, поэтому Unix обеспечивает более или менее стандартный набор сервисов TCP/IP. Это привело к тому, что много различных версий Unixа имеют одни и те же уязвимые места, правда, это также привело к целесообразности широкого применения стратегий брандмауэров, таких как фильтрация IP. Следует отметить, что исходные тексты BSD UNIX можно легко получить в ряде Интернетовских серверов, поэтому как хорошие, так и плохие люди могут изучить тексты программ и найти в них потенциальные уязвимые места и использовать их для проникновения.

Хотя Unix и является наиболее распространенной ОС в Интернете, к нему присоединено много различных типов компьютеров с другими ОС, включая системы с DEC VMS, NeXT, MVS и ОС персональных компьютеров, такие как DOS, Microsoft Windows, Windows'95, Windows NT и Apple. Хотя персональные компьютеры обеспечивают только клиентскую часть сервисов, то есть, используя TELNET, можно подключиться с персонального компьютера, но не к персональному компьютеру, все возрастающая мощность ПЭВМ начинает также обеспечивать предоставление тех же сервисов, которые сейчас предоставляются большими компьютерами, только гораздо дешевле. Версии Unix для ПЭВМ, включая Linux, FreeBSD и BSDi, а также другие ОС, такие как Microsoft Windows NT, могут сейчас обеспечить те же самые сервисы и приложения, которые ранее были только на больших системах. Следствием этого является то, что сейчас полный набор сервисов TCP/IP используется небывалым количеством людей. Хотя это и хорошо в том смысле, что сетевые сервисы стали общедоступны, отрицательные последствия заключаются в возникновении огромных возможностей для совершения преступлений у злоумышленников( а также у неграмотных пользователей, которые в некоторых случаях могут рассматриваться как вид злоумышленников) .

| |



ICMP


ICMP (Протокол межсетевых управляющих сообщений) находится на том же уровне, что и IP; его назначение - передавать информацию, требуемую для управления траффиком IP. В-основном, он используется для предоставления информации о путях к хостам-получателям. Сообщения ICMP redirect информируют хосты о существовании боле коротких маршрутов к другим системам, а сообщения ICMP unreachable указывает на наличие проблем с нахождением пути к получателю пакета. Кроме того, ICMP может помочь корректно завершить соединение TCP, если путь стал недоступен. PING является широко распространенным сервисом на базе ICMP.

[Bel89] рассматривает две проблемы с ICMP: старые версии Unix могут разорвать все соединения между хостами, даже если только одно из них столкнулось с проблемами. Кроме того, сообщения о перенаправлении пути ICMP могут быть использованы для обмана маршрутизаторов и хостов с целью заставить их поверить в то, что хост злоумышленника является маршрутизатором и пакеты лучше отправлять через него. Это, в свою очередь, может привести к тому, что атакующий получит доступ к системам, которым не разрешено иметь соединения с машиной атакующего или его сетью.



Инциденты с безопасностью в Интернете




В доказательство того, что описанные выше угрозы реальны, три группы инцидентов имели место в течение нескольких месяцев друг после друга. Сначала, началось широкое обсуждение обнаруженных уязвимых мест в программе UNIX sendmail( это транспортная почтовая программа на большинстве хостов с Unix. Это очень большая и сложная программа, и в ней уже несколько раз были найдены уязвимые места, которые позволяют злоумышленнику получить доступ в системы, в которых запущена sendmail). Организациям, которые не имели исправленных версий программы, пришлось срочно исправлять эти ошибки в своих программах sendmail до того, как злоумышленники используют эти уязвимые места для атаки на их сети. Тем не менее, из-за сложности программы sendmail и сетевого ПО в целом три последующие версии sendmail также содержали ряд уязвимых мест[CIAC94a]. Программа sendmail широко использовалась, поэтому организациям без брандмауэров, для того чтобы ограничить доступ к этой программе, пришлось быстро регировать на возникавшие проблемы и обнаруживаемые уязвимые места.

Во-вторых, обнаружилось, что популярная версия свободно распространяемого FTP-сервера содержала троянского коня, позволявшего получить привилегированный доступ к серверу. Организациям, использовавшим этот FTP-сервер, не обязательно зараженную версию, также пришлось быстро реагировать на эту ситуацию[CIAC94c]. Многие организации полагаются на хорошее качество свободного ПО, доступного в Интернете, особенно на ПО в области безопасности с дополнительными возможностями по протоколированию, управлению доступом и проверке целостности, которое не входит в состав ОС, поставляемой ее производителем. Хотя это ПО часто очень высокого качества, организации могут оказаться в тяжелом положении, если в ПО будут найдены уязвимые места или с ним возникнут другие проблемы, и должны будут полагаться только на его авторов.( Справедливости ради, стоит отметить, что даже ПО, сделанное производителем ОС, может страдать от таких же проблем и его исправление может оказаться более продолжительным).

Третья проблема имела самые серьезные последствия: [CERT94] и [CIAC94b] сообщили, что злоумышленники проникли в тысячи систем во всем Интернете, включая шлюзы между большими сетями и установили анализаторы пакетов для перехвата в сетевом траффике имен пользователей и статических паролей, вводимых пользователями для подключения к сетевым системам. Злоумышленники также использовали другие известные технологии для проникновения в системы, а также перехваченные ими пароли. Одним из выводов, которые можно поэтому сделать является то, что статические или повторно используемые пароли не должны использоваться для управления доступом. Фактически, пользователь, подключающийся к сетевой системе через Интернет, может неумышленно подвергнуть эту систему риску быть атакованной злоумышленниками, которые могли перехватить сетевой траффик, идущий к этой удаленной системе.

Следующие разделы более детально описывают проблемы с безопасностью в Интернете. [Garf92], [Cur92],[ Bel89], [Ches94] и [Farm93] являются книгами, где вы найдете более детальную информацию.



Интернет


Интернет - это всемирная сеть сетей, которая использует для взаимодействия стек протоколов TCP/IP. Вначале Интернет был создан для улучшения взаимодействия между научными организациями, выполнявшими работы в интересах правительства США. В течение 80-х годов к Интернету подключились образовательные учреждения, государственные организации, различные американские и иностранные фирмы. В 90-е годы Интернет переживает феноменальный рост, причем увеличение числа соединений превышает все темпы, имевшие место ранее. Теперь к Интернету присоединены многие миллионы пользователей, причем только половина из них коммерческие пользователи[Cerf93]. Сейчас Интернет используется как основа для Национальной Информационной Инфраструктуры(NII) США.



IP


Уровень IP получает пакеты, доставлемые нижними уровнями, например драйвером интерфейса с ЛВС, и передает их лежащим выше уровням TCP или UDP. И наоборот, IP передает пакеты, полученные от уровней TCP и UDP к нижележащим уровням.

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

Высокоуровневые сервисы TCP и UDP при приеме пакета предполагают, что адрес отправителя, указанный в пакете, является истинным. Другими словами, адрес IP является основой для аутентификации во многих сервисах; сервисы предполагают, что пакет был послан от существующего хоста, и именно от того хоста, чей адрес указан в пакете. IP имеет опцию, называемую опция маршрутизации источника, которая может быть использована для для указания точного прямого и обратного пути между отправителем и получателем. Этот путь может задействовать для передачи пакета маршрутизаторы или хосты, обычно не использующиеся для передачи пакетов к данному хосту-получателю. Для некоторых сервисов TCP и UDP пакет IP c такой опцией кажется пришедшим от последней системы в указанном пути, а не от своего истинного отправителя. Эта опция появилась в протоколе для его тестирования, но [Bel89] отмечает, что маршрутизация источника может использоваться для обмана систем с целью установления соединения с ними тех хостов, которым запрещено с ними соединяться. Поэтому, то, что ряд сервисов доверяют указанному IP-адресу отправителя и полагаются на него при аутентификации, очень опасно и может привести к проникновению в систему.



Легкость маскировки под других


Как уже отмечалось в части , предполагается, что IP-адрес хоста правильный, и службы TCP и UDP поэтому могут доверять ему. Проблема заключается в том, что используя маршрутизацию IP-источника , хост атакующего может замаскироваться под доверенного хоста или клиента. Коротко говоря, маршрутизация IP-источника - это опция, с помощью которой можно явно указать маршрут к назначению и путь, по которому пакет будет возвращаться к отправителю. Это путь может включать использование других маршрутизаторов или хостов, которые в обычных условиях не используются при передаче пакетов к назначению. Рассмотрим следующий пример того, как это может быть использовано для маскировки системы атакующего под доверенный клиент какого-то сервера:

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

Многие хосты Unix принимают пакеты с маршрутизацией источника и будут передавать их по пути, указанному в пакете. Многие маршрутизаторы также принимают пакеты с маршрутизацией источника, в то время как некоторые маршрутизаторы могут быть сконфигурированы таким образом, что будут блокировать такие пакеты.

Еще более простым способом маскировки под клиента является ожидание того момента времени, когда клиентская система будет выключена, и последующая маскировка под нее. Во многих организациях сотрудники используют персональные ЭВМ с сетевой математикой TCP/IP для подключения к хостам с Unixом и используюют машины с Unix как серверы ЛВС. ПЭВМ часто используют NFS для получения доступа к директориям и файлам на сервере(NFS использует только IP-адреса для аутентификации клиентов). Атакующий может сконфигурировать по окончании работы свой ПЭВМ таким образом, что он будет иметь то же самое имя и IP-адрес, что и другая машина, а затем инициировать соединение с Unixовским хостом, как если бы он был доверенным клиентом. Это очень просто сделать и именно так поступают атакующие-сотрудники организации.

Электронную почту в Интернете особенно легко подделать, и ей вообще нельзя доверять, если в ней не применяются расширения, такие как электронная подпись письма[NIST94a]. Например, давайте рассмотрим взаимодействие между хостами Интернета при обмене почтой. Взаимодействие происходит с помощью простого протокола, использующего текстовые команды. Злоумышленник может легко ввести эти команды вручную, используя TELNET для установления сеанса с портом SMTP( простой протокол передачи почты). Принимающий хост доверяет тому, что заявляет о себе хост-отправитель, поэтому можно легко указать ложный источник письма, введя адрес электронной почты как адрес отправителя, котоырй будет отличаться от истинного адреса. В результате, любой пользователь, не имеющий никаких привилегий, может фальсифицировать электронное письмо.

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



Легкость наблюдения за передаваемыми данными


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

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

Система X Windows, становящаяся все более популярной, также уязвима перехвату данных. X позволяет открывать несколько окон на рабочей станции для работы с графическими и мультимедийными приложениями( например, WWW-браузером Netscape). Злоумышленники могут иногда открывать окна на других системах и перехватывать текст, набираемый на клавиатуре, который может содержать пароли и критическую информацию.



Насколько уязвимы сети организаци в Интернете?


Как уже отмечалось в предыдущих разделах, ряд служб TCP и UDP плохо обеспечивают безопасность в современной среде в Интернете. При миллионах пользователей, подключенных к Интернету, и при том, что правительства и промышленность зависят от Интернета, недостатки в этих службах, а также легкодоступность исходного кода и средств для автоматизации проникновения в системы могут сделать сети уязвимыми к проникновениям в них. Тем не менее, настоящий риск при использовании Интернета трудно оценить, и непросто сказать, насколько уязвима сеть к атакам злоумышленников. Такой статистики не ведется.

Координационный Центр по групп расследования происшествий с компьютерной безопасностью(CERT/CC) ведет некоторую статистику о числе инцидентов, которые они расследовали после его создания в 1988 году. Числа в этой статистике увеличиваются скачкообразно каждый год, но следует помнить, что и число машин в Интернете также растет. В некоторых случаях CERT считает несколько проникновений одного и того жн типа одним происшествием, поэтому одно происшествие может состоять из нескольких сотен проникновений в ряд систем. Трудно сказать, насколько пропорциональны число инцидентов и число проникновений. Эта проблема также осложняется тем, что чем больше людей знают о существовании групп по расследованию инцидентов, тем больше вероятность того, что они сообщат о происшествии, поэтому на самом деле непонятно, то ли происходит все больше происшествий, то ли сообщается о все большем их проценте.

NIST считает, что Интернет, хотя и является очень полезной и важной сетью, в то же самое время очень уязвим к атакам. Сети, которые соединены с Интернетом, подвергаются некоторому риску того, что их системы будут атакованы или подвергнуты некоторому воздействию со стороны злоумышленников, и что риск этого значителен. Следующие факторы могут повлиять на уровень риска:

число систем в сети какие службы используются в сети каким образом сеть соединена с Интернетом профиль сети, или насколько известно о ее существовании насколько готова организация к улаживанию инцидентов с компьютерной безопасностью


Чем больше систем в сети, тем труднее контролировать их безопасность. Аналогично, если сеть соединена с Интернетом в нескольких местах, то она будет более уязвима чем сеть с одним шлюзом. В то же самое время, то, насколько готова к атаке организация, или то, насколько она зависит от Интернета, может увеличить или уменьшить риск. Сеть, имеющая привлекательный для злоумышленников профиль, может подвергнуться большему числу атак с целью получения информации, хранящейся в ней. Хотя, стоит сказать, что "молчаливые" мало посещаемые сети также привлекательны для злоумышленников, так как им легче будет скрыть свою активность.

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

| |


Недостатки служб ЛВС и взаимное доверие хостов друг к другу


Хосты тяжело поддерживать в безопасном состоянии и это занимает много времени. Для упрощения управления хостами и большего использования преимуществ ЛВС, некоторые организации используют такие сервисы, как NIS(Network Information Service) и NFS(Network File system). Эти сервисы могут сильно уменьшить время на конфигурирование хостов, позволяя управлять рядом баз данных, таких как файлы паролей, с помощью удаленного доступа к ним и обеспечивая возможность совместного использования файлов и данных. К сожалению, эти сервисы небезопасны по своей природе и могут использоваться для получения доступа грамотными злоумышленниками. Если скомпрометирован центральный сервер, то другие системы, доверяющие центральной системе, также могут быть легко скомпрометированы.

Некоторые сервисы, такие как rlogin, позволяют хостам "доверять" друг другу для удобства работы пользователей и облегчения совместного использования систем и устройств. Если в систему было совершено проникновение или ее обманули с помощью маскарада, и этой системе другие системы, то для злоумышленника не составит труда получить доступ к другим системам. Например, пользователь, зарегистрированный на нескольких машинах, может избавиться от необходимости вводить пароль, сконфигурировав себя на этих машинах так, что они будут доверять подключению с основной системы пользователя. Когда пользователь использует rlogin для подключения к хосту, то машина, к которой подключаются, не будет спрашивать пароль, а подключение будет просто разрешено. Хотя это и не так уж плохо, так как пароль пользователя не передается и не сможет быть перехвачен, это имеет тот недостаток, что если злоумышленник проникнет на основную машину под именем пользователя, то злоумышленник легко сможет воспользоваться rlogin для проникновения в счета пользователя на других системах. По этой причине использование взаимного доверия хостов друг к другу не рекомендуется[Bel89][Ches94].



Обзор внутреннего устройства TCP/IP


Этот раздел содержит краткое описание TCP/IP в объеме, достаточном для последующего обсуждения проблем безопасности, связанных с Интернетом. [Com91a],[Com91b],[Hunt92] и [Bel89] содержат гораздо более подробное описание; читатели, которые хотят получить более глубокое представление, должны обратиться к этим источникам.

Отчасти популярность стека протоколов TCP/IP объясняется возможностью его реализации на базе большого числа разнообразных каналов и протоколов канального уровня, таких как T1 и Х.25, Ethernet и линии RS-232. Большинство организаций использует в своих ЛВС Ethernet для объединения хостов и клиентских систем, а затем присоединяет эти сети с помощью T1 к региональной сети. (например, региональной магистральной сети TCP/IP), которая соединяет в свою очередь с сетями других организаций и другими магистральными каналами. Как правило, организации имеют одно соединение с Интернетом, но большие организации могут иметь два и более соединений. Скорости модемов увеличиваются по мере появления новых коммуникационных стандартов, поэтому версии TCP/IP, которые работают в среде коммутируемых телефонных каналов, становятся все более популярными. Многие организации и просто отдельные люди используют PPP (Point-to-Point Protocol) и SLIP (Serial Line IP) для подключения своих сетей и рабочих станций к другим сетям, используя телефонные каналы.

Если говорить строго, то TCP/IP - это стек протоколов, включающий TCP, IP, UDP (User Datagram Protocol), ICMP (Internet Control Message Protocol), и ряд других протоколов. Стек протоколов TCP/IP не соответствует модели взаимодействия открытых систем (ВОС), и его структура показана на рисунке 1.1



Проблемы, связанные с безопасностью


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

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



Слабая аутентификация


Группы улаживания инцидентов считают, что большинство инцидентов произошло из-за использования слабых, статических паролей. Пароли в Интернете могут быть "взломаны" рядом способов, но двумя самыми распространенными являются взлом зашифрованной формы пароля и наблюдение за каналами передачи данных с целью перехвата пакетов с паролями. ОС Unix обычно хранит пароли в зашифрованной форме в файле, который может быть прочитан любым пользователем. Этот файл паролей может быть получен простым копированием его или одним из других способов, используемых злоумышленниками. Как только файл получен, злоумышленник может запустить легко-доступные программы взлома паролей для этого файла. Если пароли слабые, то есть меьше, чем 8 символов, являются словами, и т.д., то они могут быть взломаны и использованы для получения доступа к системе.

Друная проблема с аутентификацией возникает из-за того, что некоторые службы TCP и UDP могут аутентифицировать только отдельный хост, но не пользователя. Например, сервер NFS(UDP) не может дать доступ отдельному пользователю на хосте, он может дать его всему хосту. Администратор сервера может доверять отдельному пользователю на хосте и дать ему доступ, но администратор не может запретить доступ других пользователей на этом хосте и поэтому автоматически должен предоставить его всем пользователям или не давать его вообще.



Сложность конфигурирования и мер защиты


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

Ряд инцидентов с безопасностью произошел в Интернете отчасти из-за того, что злоумышленники обнаружили уязвимые места( позднее их обнаружили пользователи, группы компьютерной безопасности и сами производители) . Так как большая часть современных вариантов Unix позаимствовала свой сетевой код из версии BSD, и так как исходный код этой версии широко доступен, злоумышленники смогли изучить его на предмет ошибок и условий, при которых их можно использовать для получения доступа к системам. Отчасти ошибки существуют из-за сложности программ и невозможности проверить их во всех средах, в которых они должны работать. Иногда ошибки легко обнаруживаются и исправляются, но бывает и так, что надо, как минимум, переписать все приложение, что является последним средством( программа sendmail тому пример).



Структура портов TCP и UDP


Сервисы TCP и UDP используются с помощью схемы клиент-сервер. Например, процесс сервера TELNET вначале находится в состоянии ожидания запроса установления соединения. В какой-нибудь момент времени пользователь запускает процесс клиента TELNET, который инициирует соединение с сервером TELNET. Клиент посылает данные серверу, тот читает их, и посылает обратно клиенту ответ. Клиент читает ответ и сообщает о нем пользователю. Поэтому, соединение является двунаправленным и может быть использовано как для чтения, так и для записи.

Как много одновременных соединений TELNET может быть установлено между системами? Соединение TCP или UDP уникальным образом идентифицируется с помощью четырех полей, присутствующих в каждом соединении:

IP-адрес источника - адрес системы, которая послала пакет IP-адрес получателя - адрес системы, которая принимает пакет порт отправителя - порт соединения в системе-отправителе порт получателя - порт соединения в системе-получателе

Порт - это программное понятие, которое используется клиентом или сервером для посылки или приема сообщений; порт идентифицируется 16-битвым числом. Серверные процессы обычно ассоциируются с фиксированным числом, например числом 25 для SMTP или 6000 для X Windows; номер порта является известным, так как он требуется, помимо IP-адреса получателя, при установлении соединения с конкретным хостом и сервисом. Клиентские процессы, с другой стороны, запрашивают номер порта у операционной системы в начале работы; и номер порта является случайным, хотя в некоторых случаях он является следующим в списке свободных номеров портов.

Для иллюстрации того, как используются порты для посылки и приема сообщений, рассмотрим протокол TELNET. Сервер TELNET слушает приходящие сообщения на порту 23, и сам посылает сообщения на порт 23. Клиент TELNET, на той же или другой системе, сначала запрашивает неиспользуемый номер порта у ОС, а затем использует его при посылке и приеме сообщений. Он должен указывать это номер порта, например 3097, в пакетах, предназначенных для сервера TELNET, чтобы этот сервер при ответе на сообщение клиента мог поместить это номер в посылаемые им TCP-пакеты. Хост клиента по приему сообщения должен посмотреть номер порта в сообщении и решить, какой из клиентов TELNET должен принять это сообщение. Этот процесс показан на рисунке 1.2


Рисунок 1.2 Взаимодействие при TELNET

Существует достаточно распространенное правило, согласно которому тольуо привилегированные процессы сервера, то есть те процессы, которые работают с привилегиями суперпользователя UNIX, могут использовать порты с номерами меньше, чем 1024( так называемые привилегированные порты). Сервера в-основном используют порты с номерами меньше, чем 1024, а клиенты как правило должны запрашивать непривилегированные порты у ОС. Хотя это правило и не является обязательным для исполнения и не требуется спецификацией протоколов TCP/IP, системы на основе BSD соблюдают его.

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

Не все серверы и клиенты TCP и UDP используют порты таким простым способом, как TELNET, но в целом, процедура, описанная здесь, полезна в контексте брандмауэра. Например, многие ОС персональных компьютеров не используют понятия суперпользователя UNIX, но все-таки используют порты описанным выше способом( хотя нет стандарта, требующего это).

| |


TCP


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

TCP передает полученную информацию приложениям верхнего уровня, например клиенту или серверу TELNETа. Приложения, в свою очередь, передают информацию обратно уровню TCP, который передает ее ниже уровню IP, после чего она попадает к драйверам устройств, в физическую среду и по ней передается до хоста-получателя. Сервисы с установлением соединения, такие как TELNET, FTP, rlogin, X Windows и SMTP требуют надежности и поэтому используют TCP. DNS использует TCP только в ряде случаев( для передачи и приема баз данных доменных имен), а для передачи информации об отдельных хостах использует UDP .



Типовые сервисы


Существует ряд сервисов, связанных с TCP/IP и Интернетом. Наиболее распространенным сервисом является электронная почта, реализованная на базе протокола SMTP(Простой Протокол Передачи Писем). Также широко используются TELNET(эмуляция удаленного терминала) и FTP(протокол передачи файлов). Помимо них существует ряд сервисов и протоколов для удаленной печати, предоставления удаленного доступа к файлам и дискам, работы с распределенными базами данных и организации других информационных сервисов. Далее приводится краткий список наиболее распространенных сервисов:

SMTP - Простой протокол передачи почты, используется для приема и передачи электронной почты TELNET - используется для подключения к удаленным системам, присоединенным к сети, применяет базовые возможности по эмуляции терминала FTP - Протокол передачи файлов, используется для приема или передачи файлов между системами в сети DNS - Служба сетевых имен, используется TELNET, FTP и другими сервисами для трансляции имен хостов в IP адреса. информационные сервисы, такие как

gopher - средство поиска и просмотра информации с помощью системы меню, которое может обеспечить дружественный интерфейс к другим информационным сервисам WAIS - глобальный информационный сервис, используется для индексирования и поиска в базах данных файлов WWW/http - Всемирная Паутина, объединение FTP, gopher, WAIS и других информационных сервисов, использующее протокол передачи гипертекста(http), и программы Netscape, Microsoft Internet Explorer и Mosaic в качестве клиентских программ.

сервисы на основе RPC - сервисы на основе Удаленного Вызова Процедур, такие как

NFS - Сетевая файловая система, позволяет системам совместно использовать директории и диски, при этом удаленная директория или диск кажутся находящимися на локальной машине NIS - Сетевые Информационные Сервисы, позволяют нескольким системам совместно использовать базы данных, например файл паролей, для централизованного управления ими

Система X Windows - графическая оконная Среда и набор прикладных библиотек, используемых на рабочих станциях rlogin, rsh и другие r-сервисы - реализуют концепцию доверяющих друг другу хостов, позволяют выполнять команды на других компьютерах, не вводя пароль

Хотя сервисы TCP/IP могут в равной степени использоваться как в локальных сетях, так и в глобальных сетях, в локальных сетях, как правило, применяется совместное использование файлов и принтеров, а электронная почта и удаленный терминальный доступ - в обоих случаях. С каждым годом возрастает популярность gopher и www . Оба этих сервиса приводят к возникновению проблем для разработчиков брандмауэров и будут рассмотрены в следующих главах.



UDP


Как показано на рисунке 1.1, UDP взаимодействует с прикладными программами на том же уровне, что и TCP. Тем не менее, он не выполняет функции исправления ошибок или повторной передачи потерянных пакетов. Поэтому UDP не используется в сервисах с установлением соединения, которым требуется создание виртуального канала. Он применяется в сервисах типа запрос-ответ, таких как NFS, где число сообщений в ходе взаимодействия гораздо меньше, чем в TELNET и FTP. В число сервисов, использующих UDP, входят сервисы на базе RPC, такие как NIS и NFS, NTP( протокол сетевого времени) и DNS(также DNS использует TCP).

Пакеты UDP гораздо проще подделать, чем пакеты TCP, так как нет этапа установления соединения( рукопожатия).[Ches94]. Поэтому с использованием сервисов на базе UDP сопряжен больший риск.