Смекни!
smekni.com

Введение в Интернет и безопасность в нем (стр. 2 из 5)

1.2.2 TCP

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

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

1.2.3 UDP

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

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

1.2.4 ICMP

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

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

1.2.5 Структура портов 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, но все-таки используют порты описанным выше способом( хотя нет стандарта, требующего это).

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

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

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

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

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

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