Скачиваний:
9
Добавлен:
25.06.2023
Размер:
3.77 Mб
Скачать

ВОПРОС 39 ИНТЕРФЕЙС СОКЕТОВ С2 продолжаем рассматривать транспортный уровень стека протоколов TCP/IP. мы рассмотрели два протокола которые работают на этом уровне - TCP и UDP/ но кроме протоколов, которые используются для взаимодействия одних и тех же уровней на разных хостах, используются также интерфейсы которые применяются для взаимодействия между разными уровнями. раньше мы такие интерфейсы не рассматривали, но транспортный уровень это первый уровень с которым можем взаимодействовать программист. поэтому интерфейс транспортного уровня, который позволяет нам писать программы для сети, обязательно будем рассматривать. С3 интерфейс называется интерфейсом сокетов. сокеты впервые появились в операционные системы Bearkley unix BSD 1983 году. там сокеты, как собственно и любые другие устройства в unix, это просто файл специального типа. вы пишете данные в этот файл, они автоматически передаются по сети на другой компьютер. другой компьютер может прочитать данные оттуда тоже как из обычного файла, хотя на самом деле они пришли по сети. таким образом взаимодействие с сетью скрыто от программиста. такая абстракция оказалась очень удобной. сокеты стали использоваться не только в unix, но и во многих других операционных системах, в том числе в linux и windows. поддержку сокетов добавили и во многие языки программирования. таким образом сокеты сейчас это де факто стандарт для взаимодействия программ с транспортным уровнем стека протоколов TCP/IP. С4 мы будем рассматривать операции сокетов Беркли. большая часть современных реализаций сокетов имеет такие же операции или очень похожие на них. операции с сокетами Беркли делятся на несколько типов. первый тип это создание сокетов - Socket, Bind, Listen. второй - установка соединения - Connect и Accept. третий - передача данных - Send и Recieve и четвертое - закрытие соединения - Close. С5 сокеты Беркли использует модель клиент-сервер. сервер эта программа которая постоянно работают на некотором компьютере, известен его IP адрес и порт, и сервер ждет подключения клиентов. А клиент это приложение, которое активно устанавливает соединение с сервером. С6 рассмотрим подробнее как используются сокеты Беркли. у нас есть два компьютера - клиент и сервер. сначала необходимо создать socket на сервере и сделать так чтобы он мог принимать запрос на соединение. С7 на сервере выполняется вызов socket. С8 создается объект socket в простейшем случае это просто файл специального вида. С9 затем вызывается метод Bind, который используется для присоединения cortnf к определенному IP адресу и порту. С10 например IP адрес из внутренней сети и порт 80 - порт веб-серверов. С11 вызов Listen говорит о том, что сокет готов принимать соединение по сети. сокет слушает. С12 при вызове Listen создается очередь для соединений. В вызове необходимо указать размер этой очереди. в данном примере размер очереди 5. если сервер получит больше чем 5 запросов на соединение, а предыдущие запросы еще не будут обработаны, то все новые запросы будет отбрасываться. С13 затем сервер вызывает метод сокета Accept. это говорит о том что сервер готов принимать соединение, и он переходит в режим пассивного ожидания - ждет запросов на установку соединений от клиента. С14 клиент со своей стороны сначала также вызывает метод socket. С15 для создания сокетом. как правило для клиента не имеет значения какой IP адрес и какой порт используется. номер порта назначаются операционной системой, поэтому метод Bind на клиентском сокете обычно не вызывают, хотя это можно сделать сразу после создания сокета. C16 вызывается метод connect в котором указывается IP адрес и порт. в параметрах метода connect указываются IP адрес сервера и порт с которыми нужно установить соединение. C17 отправляется запрос на соединение, и затем происходит важная вещь - для того чтобы другие клиенты могли соединяться с этим сервером на этом IP адресе и и на этом же порту, С18 создается копия сокета, С19 и соединение уже устанавливается не с исходным сокетом, который принимает соединение, а с копией сокета. и данные передаются уже через копию сокета, С20 клиент подготавливают порцию данных и вызывает метод Send. данные передаются по сети, С21 и сервер может их прочитать с помощью метода Receive. дальше сервер и клиент могут обмениваться между собой несколькими порциями данных, после того как все данные переданы С22 клиент вызывает метод Close. после чего происходит разрыв соединения. C23 пример применение сокетов для разработки программ на Python это популярный сейчас язык на котором очень удобно писать программы для работы сетей. конечно существует большое количество других языков на которые можно писать программы для сетей, но работа с сокетами везде будет примерно одинакова. сначала нужно импортировать модуль socket. дальше работа с сокетами выполняются почти так же как в модели сокетов Беркли. сначала нужно создать socket - первая строка. при создании сокета специальными константами мы выбираем протокол сетевого уровня - здесь указано IP, и протокол транспортного уровня - здесь используется TCP - вторая строка. третья срока - у созданного сокета вызываем метод Bind, привязываем его к IP-адресу и порту 8888. четвертая строка - вызываем метод Listen, говорим о том что готовы принимать соединения, и очередь соединений будет состоять всего лишь из одного элемента. пятая строка - после этого вызываем метод accept и ждем запросов от клиентов на соединение. возврат из метода accept произойдет только после того как какой-то из клиентов установит соединение. затем в цикле while мы с помощью метода recieve читаем данные порциями по 1024 байта, и просто отправляем те же самые данные обратно. выход из цикла происходит когда данные закончатся. после этого мы закрываем соединение. С24 рассмотрим более подробно какие типы протоколов можно использовать в сокетах. на сетевом уровне можно использовать IP версии 4 и IP версия 6. А на транспортном - протокола TCP - константа SOCK_STREAM и UDP - константа SOCK_DGRAM (дейтаргамм). TCP передает поток бит, поэтому константа STREAM, а UDP передает дейтаграмм. есть также и другие типы сокетов, но с сетями TCP/IP они используются редко. С25 теперь рассмотрим использование сокетов на стороне клиента. сначала нужно создать socket. вторая строка - при создании мы говорим что будем использовать протокол IP на сетевом уровне и TCP на транспортном. обратите внимание что мы не вызываем bind для присоединения к IP-адресу и порту. это все делается автоматически библиотекой Python и операционной системой. мы сразу отправляем запрос на установку соединения с нашим сервером. указан IP адрес сервера и его порт. после установки соединения отправляем серверу сообщение - привет мир. принимаем от него данные которые будут те же самые, и печатаем их. С26 и так сокеты это де факто стандарт интерфейса транспортного уровня. именно сокеты необходимо использовать для того чтобы писать программы для сетей, которые взаимодействуют напрямую с транспортным уровнем. хотя сейчас многие программы взаимодействует не с транспортным, а прикладным уровнем, который предоставляет больше возможностей. таким образом протоколы транспортного уровня скрыты от программиста. в программе нигде не создается соединение с помощью трехкратного рукопожатия, не устанавливаются флаги FINN или RST для разрыва соединения, и не делается других подобных вещей, которые используются в протоколе TCP. таким образом если в будущем протоколы транспортного уровня TCP или UDP поменяются, то не нужно будет переделывать свою программу. именно для этих целей и введено разделение между интерфейсами и протоколами компьютерных сетей.

ВОПРОС 40 ПРОТОКОЛЫ, ИНТЕРФЕЙСЫ И СЕРВИСЫ. ПРИМЕРЫ Вернемся к базовым понятиям организации компьютерных сетей - сервисы интерфейсы и протоколы. Сейчас знаний достаочно чтобы рассматривать эти поятия не абстрактно, а на примере транспортного уровня протоколов TCP/IP. С2 Сети строятся в виде нескольких уровней, реализованных один над другим и каждый уровень предоставляет сервис вышестоящему уровню. Сервис описывает что полезне делает уровень. Интерфейс, он находится внутри одного компьютера, и задает набор примитивнх операций, которые верхний уровень долден вызвать для того чтобы использовать сервис нижестоящего уровня. А протокол это набор правил и соглашений, который используют уровни разных хостов для взаимодействия по сети. С3 Рассмотри пример для транспортного уровня стека протоколов TCP/IP. Это мы изучали. В стеке протоколов TCP/IP есть два протоколо транспортного уровн - TCP и UDP. Они используются для того чтобы транспорнтые уровни разных хостов взаимодействовали друг с другом. В качестве интерфейса транспортного уровня использутеся интерфейс сокетов. И его использованием пишут программы которые взаимодействуют с сетью на транспортном уровне. С4 Зачем разделять понятие протокола и интерфейса? Это стандартная практика в ИТ - описание и реализация должны быть отделены друг от друга. Причем в сетях есть два вида изоляции решений - изоляция внутри одного компа и изоляция при взаимодействии компов по сети. Когда работаем внутри одного компа, т.е. пишем программы которые будут работать с сетью, мы используем интерфейсы. На транспортном уровне это интерфейс сокетов. Реализация сетевого взаимодействия, которая выполнена в протоколах, скрыта от нас. Т.о. если протоколы изменятся, то нам не придется менять нашу программу. С другой стононы при взаимоействии между компами постоянными сохраняются протоколы. А интерфейсы и программы,которые находятся внутри компа скрыты от других компов и устройств. За счет этого обеспечивается возможность работы по сети устройств использующих разные ОС. Несмотря на различия они взаимодействуют между собой,так как используют один и тот же набор протоколов TCP/IP. С5 Разделение интерфейса и протокола необходимо для того чтобы отделять описание от реализации. Но зачем тогда разделять пониятие сервиса и интерфейса, ведь они во многом схожи? На самом деле эти понятия важно различать. Сервис это абстрактное описание того что делает уровень. Оно позволяет сформулировать что бы мы хотели что уровень делал не привязываясь к конкретным деталям реализации. Например интерфейс в стеке протоколов TCP/IP у TCP и UDP один - сокеты. Через этот интерфейс мы можем получить доступ к сервису двух уровней. Для этого при создании сокетов нам нужно указать разные константы. И так же вызывать некоторые разные операции. Например при надежной передаче дейтаграмм нам не нужно устанавливать соединение. С6 Предствим что мы не ограничиваем себя текущей реализацией стека протоколов TCP/IP, а подумаем какие сервисы на транспортном уровне и подумаем о том чего бы еще нам хотелось Первое - обеспечивает ли сервис надежность или нет. Второе - тип передаваекмых данных - поток байт или коротное сообщение. В стеке TCP/IP выбрали всего две комбинации. Надежная передача потока байт и ненадежная передача короткий сообщений. Допустимы и другие комбинации например НеНадежная передача потока байт и надежная передача короткий сообщений. Если для ненадежной передачи потока байт сложно придумать примеры использования, С7 то надежная доставка коротких сообщений очень полезный тип сервиса. И этого сервиса в стеке протоколов в настоящее время нет. Многие приложения, которые используют протокол UDP, например служба имен DNS, отправляют короткий запрос, ждут некоторое врем ответа, и если ответ не пришел, запрос отправляется снова. Но на самом деле это типовая ситуация, которая используется достаточо часто и кажется нерациональным перекладывать эту работу на приложения если есть возможность предоставить такой тип сервиса прямо в стеке протоколов TCP/IP. Было разработано несколько протоколов транспортного уровня, которые реализуют такой сервис, но к сожалению они не пользуются большой популярностью. С8 Зачем изучать абстрактные понятия и принципы организации сетей? Во-первых понимание принципов делает изучение сетей более простым. Почему и как что взаимодействует. Возможно удастся придумать новый протокол в стек и сделать его популярным. Третья причина - ели свои разрабатываемые приложния будут построены в соответствии с этими принципами, другие люди быстро поймут как они утроены и смогут их использовать.

ВОПРОС 41 ТРАНСЛЯЦИЯ СЕТЕВЫХ АДРЕСОВ (NAT) С2 трансляции сетевых адресов по английски Network Adress translation сокращенно NAT - это технология замены IP адресов и портов в заголовке IP пакетов. чаще всего NAT используются для того чтобы заменить IP адрес внутренней сети на IP адрес из внешней сети. это делается для того чтобы преодолеть нехватку адресов IP версия 4. С3 сначала вспомним что такое внутренние и внешние IP адреса. внешние IP адреса это обычные IP адреса которые можно применять в интернет, они должны быть уникальны во всем мире. их нельзя использовать просто так. необходимо получать разрешение у корпорации ICANN или точнее у одного из ее региональных регистраторов. проблема с внешними адресами в протоколе IP версия 4 в том что их не хватает для современного масштаба интернет. адресов IP версия 4 примерно 4 миллиарда, а сейчас устройство в интернете гораздо больше. внутренние IP адреса - это три специальных диапазона IP адресов которые можно использовать для создания внутренних или частных сетей. диапазоны определены в документе RFC1918. эти адреса не могут использоваться в интернет. зато их можно применять и в своей сети без обращения в ICANN. и разные частные сети могут использовать одни и те же диапазоны внутренних IP адресов. С4 как работает технология NAT для преобразования внутренних адресов во внешние? предположим у нас есть какая-то сеть организации в которой используются внутренние адреса из диапазона 192.168.1.0. есть интернет в котором такие адреса использовать нельзя. и внутренняя сеть подключаются к интернет через устройство NAT. устройство NAT имеет один внешний IP версия 4 адрес. и когда компьютеры из внутренней сети хотят подключиться к интернету устройство NAT преобразует IP адреса из внутренней сети в IP адрес внешней сети. С5 есть достаточно много разных вариантов технологии NAT. мы рассмотрим три типа которые используются чаще всего. однако кроме них есть и другие возможные варианты. первый тип это статическое отображение IP адресов один к одному. С6 в этом случае нам нужно иметь столько же внешних адресов сколько и компьютеров во внутренней сети, и у нас фиксированное отображение внутренних IP адресов во внешнее IP адреса. такая схема используется достаточно редко, и она возможна когда подключаете сеть организации не к интернет, а к сети какой-то другой организации, где тоже используются внутренние IP адреса и возможен конфликт IP адресов. С7 второй вариант это динамическое преобразование - когда набор внутренних IP адресов отображается на группу внешних IP адресов. С8 в случае динамического NAT и у нас есть несколько внешних IP адресов которые поочередно используются разными компьютерами из внутренней сети. преобразование выполняется динамически. С9 и третий вариант который используется чаще всего - это когда все IP адреса из внутренней сети отображаются на один внешний IP адрес. такой вариант по-английски и часто называется Masquerading маскарадинг. С10 давайте подробнее рассмотрим как работает такой вариант NAT, потому что именно с его помощью можно подключать к интернет большие сети организаций используя всего лишь один внешний IP адрес. именно это позволяет частично смягчить проблему нехватки адресов IP версия 4. С11 преобразование или трансляции сетевых адресов реализуется с помощью так называемой NAT таблицы которая находится внутри устройства NAT. она содержит 4 столбца - это внутренний IP адрес и внутренний порт, и соответствующие ему внешний IP адрес и внешний порт. C12 как работает NAT в режиме маскарадинг? С13 предположим что верхний компьютер решил зайти на сайт. он отправляет пакет. С14 в IP адресе отправителя указывается IP-адрес компьютера из внутренней сети в поле порт указывается динамический порт выданный браузеру операционной системой. и пакет предназначен для 80 порта адреса веб-сайта. но так как адреса из внутренней сети не могут использоваться в интернет, то устройству NAT нужно заменить IP адрес из внутренней сети в заголовке пакета в адресе отправителя на IP адрес из внешней сети. как это делают устройство NAT? С15 после того как устройство NAT получило пакет, оно записывает внутренней IP адрес и внутренний порт в таблицу NAT, и генерирует пару внешний IP адрес и внешний порт для замены в пакете. так как у нас всего лишь один внешний IP адрес, то именно он записывает в поле внешний IP. С16 внешний порт генерируются случайным образом. С17 на слайде устройство NAT сгенерировало такой номер порта. на следующем этапе происходит собственно трансляция, то есть замена IP-адреса и порта. С18 IP адрес и порт отправителя удаляются из пакета, и на их место записываются новые данные из таблицы NAT С19 - внешний IP адрес устройства NAT С20 и внешний порт который устройство NAT сгенерировало случайным образом. в таком виде пакет передается на веб-сервер. С21 когда приходит ответ от веб-сервера там в качестве адреса получателя указывается а IP-адрес устройства NAT и порт на этом устройстве. но в реальности эти данные предназначенны не для устройства NAT, а для компьютера во внутренней сети. поэтому устройство NAT должно понять какому компьютеру во внутренней сети предназначены данные, затем поменять IP адрес и порт, и передать данные нужному компьютеру. это делается опять же с помощью таблицы NAT. в таблице NAT ищется запись в которую внешний IP адрес и внешний порт такие же как в поступившем пакете. В нешей таблице всего лишь одна запись, поэтому устройство NAT берет данные из этой записи - внутренний IP адрес интересующего нас компьютера и его порт. С22 устройство NAT снова производит замену IP адреса и порта в пакете, и в таком виде передает пакет во внутреннюю сеть. С23 что происходит если в интернет захочет зайти какой-то другой компьютер? предположим нижний компьютер тоже хочет зайти на сайт. устройство NAT работает аналогично. извлекает внутренний IP адрес и порт, записывает их в таблицу NAT в качестве внешнего IP-адреса указывается единственный внешний IP адрес устройства NAT и в номер внешнего порта снова генерируются случайным образом. С24 адрес и порт из внутренней сети меняются на адрес и порт из внешней сети, и в таком виде пакет передается в интернет. С25 когда приходит ответ от веб-сервера снова выполняется поиск пары внешний IP адрес и внешний порт в таблице NAT, ищется соответствующие им внутренние IP адрес и внутренний порт, производится замена в заголовке пакета, и пакет передается во внутреннюю сеть. С26 это технология достаточно долго позволяла справляться с нехваткой адресов IP версия 4. можно подключить к интернет сеть крупной организации, где много компьютеров с помощью всего лишь одного внешнего адреса версия 4. эту технологию легко развернуть и использовать. нужно всего лишь одно устройство NAT и адреса для внутренней сети можно свободно использовать из диапазона частных адресов не обращаясь в ICANN. дополнительное преимущество в безопасности - технология NAT скрывают внутреннюю структуру сети от внешнего мира. для внешнего мира в сети есть всего лишь один адрес IP версии 4. что установлена внутри сети с внутренними адресами никто не видит. однако NAT обладает рядом существенных недостатков. Первый теоретический недостаток заключается в том что это нарушение фундаментального принципа построение IP сетей в которых каждый компьютер должен иметь возможность соединяться с любым другим компьютером. следствием этого теоретического недостатка является ряд практических. например нет возможности подключиться из внешнего мира к компьютерам во внутренней сети. из внешнего мира видим всего лишь один IP адрес, и невозможно понять что в реальности за этим IP адресом находится большое количество других устройств. некоторые протоколы, которые разрабатывались в ранние годы создания интернет, и рассчитаны на то что каждое устройство может соединиться с каждым в случае с NAT работают плохо. например плохо работает протокол ftp, который используют два соединения - одно для управления, а другое для передачи данных. соединения для передачи данных обычно устанавливается сервером. если клиент находится за устройством NAT то сервер ftp не может установить с ним соединение для передачи данных. также плохо работают протоколы которые не устанавливают соединение. для которых нет возможности сохранить запись в таблице NAT на все время жизни соединения. также дополнительные недостаток в том что нет единого стандарта NAT, а есть много разных вариантов которые поддерживаются разными производителями оборудования и программного обеспечения. все это вносит путаницу и приводит к несовместимости. С27 как можно решить проблему с NAT? если хотите иметь возможность попасть из внешнего мира во внутреннюю сеть, то для этого можно использовать статическое отображение которые уже рассматривали. можно использовать отображение один к одному, но для этого нужно иметь несколько внешних IP адресов . также можно использовать статическое отображение для портов например порт 80 на устройстве NAT отображается во внутренний адрес веб сервера и порт 80. порт 25, который используются для электронной почты, отображается во внутренний адрес почтового сервера и порт 25, и так далее. в этом случае у нас есть всего лишь один внешний IP адрес, но разные его порты отображаются в разные пары IP адрес и порт во внутренней сети. также есть технология NAT traversal которая позволяют устанавливать соединение с компьютерами во внутренней сети из интернет. она определена в стандарте RFC 3489, так же есть и другие варианты этой технологии. такая технология часто используются в приложении для передачи видео и голоса, например skype. С28 итак мы рассмотрели технологию трансляции сетевых адресов NAT. она используется для того чтобы в заголовке IP пакета преобразовать IP адрес внутренней или частной сети в IP адрес внешней сети, который может использоваться в интернет. технологию NAT могут реализовывать маршрутизаторы, межсетевые экраны, и другие сетевые устройства. большое достоинство технологии NAT заключается в том, что оно позволяет частично решить проблему нехватки адресов IP версия 4, а также скрывает структуру сети от внешнего мира, что хорошо для безопасности. однако скрытие структуры сети от внешнего мира приводит к тому, что из внешнего мира невозможно подключиться к компьютерам во внутренней сети, а также некоторые сетевые протоколы, которые разрабатывались давно или которые не используют соединение плохо работают с NAT и для того чтобы их можно было использовать совместно с NAT необходимо применять дополнительные меры.

ВОПРОС 42 МЕЖСЕТЕВЫЕ ЭКРАНЫ С2 когда создавались сети TCPIP в них был заложен следующий принцип - каждый компьютер может соединиться с любым другим компьютером в сети. это было достаточно давно. компьютеров было мало, большая часть из них находилась в научных институтах и университетах. но сейчас ситуация поменялась кардинально. интернет стал огромной сетью в которой есть в том числе и злоумышленники. поэтому принцип что каждый компьютер может соединиться с любым другим компьютером в сети сейчас уже неработоспособен. наоборот нам нужен механизм который позволил бы защитить нашу сеть или наш компьютер в сети от потенциальных недоброжелательных действий. и именно такой механизм и предоставляет межсетевой экран. это устройство или программа которая предназначена для разделения сетей друг от друга. иногда межсетевой экран называют также брандмауэр или firewall. С3 есть несколько вариантов использования межсетевых экранов. первый вариант при котором мы хотим защитить внутреннюю сеть нашей организации. у нас есть компьютеры в нашей сети, и есть сеть интернет которую мы считаем небезопасной. в этом случае межсетевой экран устанавливается между нашей внутренней сетью и сетью интернет. С4 также программный межсетевой экран может устанавливаться на каждый компьютер в сети. например это может быть брандмауэр windows или IPtables в linux. это полезно в случае когда со своим ноутбуком работайте не только в защищенной сети организации, но и в других местах - в других организациях, в отелях, в кафе и ресторанах, и других местах где вы не имеете контроля над сетью и не можете обеспечить ее безопасность. С5 межсетевые экраны работают на сетевом и на транспортном уровне модели взаимодействия открытых систем. в основном они анализируют IP адрес отправителя и получателя, и порты транспортного уровня. С6 как работает межсетевой экран? он перехватывает все пакеты, которые приходят из внешней сети и из внутренней. С7 предположим у нас пришел пакет из интернет. межсетевой экран принимает его и анализирует. С8 у межсетевого экрана есть таблица правил, где написано какие пакеты можно пропускать во внутреннюю сеть, а какие пропускать нельзя. межсетевой экран проверяет заголовки протоколов сетевого и транспортного уровня, сравнивает их с правилами в таблице, если находит разрешающие правило, то передает пакет во внутреннюю сеть, в противном случае пакет отбрасывается и во внутреннюю сеть не передается. С9 точно так же происходит и с пакетами которые приходят из внутренней сети. производится проверка по таблице правил, и во внешнюю сеть передаются только те пакеты которым разрешен доступ остальные пакеты отбрасываются. С10 как устроена таблица правил? основные поля таблицы это IP адрес и порт отправителя, и IP адрес и порт получателя. также есть поле протокол, в котором может стоять протокол транспортного уровня или сетевого - например TCP, UDP или ICMP и поле "действия" - разрешить прохождение пакета который попадает под это правило или запретить. предположим что мы существенно хотим ограничить политику использования сети для обеспечения безопасности. мы разрешаем пользователям работать с сайтами в интернете, но все остальные действия запрещаем. какие правила нам для этого понадобятся? предположим что наша внутренняя сеть имеет IP адреса из верхнего блока. первое правило разрешают пакетами из внутренней сети, которые предназначены для веб-серверов, выходить в интернет. в адреса отправителя адрес нашей внутренней сети порт любой больше 1024. в адресе получателя все IP адреса кроме нашей внутренней сети и порт 80 на которым работают веб-сервера. протокол TCP который используются протоколом HTTP, и действия - разрешить прохождение пакета. следующие правила разрешают прохождение пакетов содержащих ответы веб-серверов - строка два. IP адрес отправителя любой, кроме нашей внутренней сети. порт 80 - порт веб-сервера. IP адрес получателя в нашей внутренней сети. порт больше 1024, протокола TCP, и действие - "разрешить". затем третьей строкой идет правило которое запрещает прохождение всех остальных пакетов. межсетевой экран просматривает таблицу правил последовательно. сначала просматривается первое правило, если полученный пакет подходит под это правило он сразу передается, если нет рассматривается второе правило, если пакет подходит под него то он тоже передается, после этого мы переходим к третьему правилу, которое запрещают передачу всех пакетов. соответственно все пакеты которые не подходят по два предыдущих правила отбрасываются. правила межсетевого экрана очень ограничены, однако злоумышленники все равно могут проникнуть в нашу внутреннюю сеть. для этого им нужно сконструировать пакет у которого порт отправителя 80, IP адрес любой из внешней сети, и порт получатель не больше чем 1024. наш межсетевой экран подумает что это ответ какого-то веб-сервера и пропустит этот пакет. соответственно если у нас есть какие-то сетевые сервисы работающие на порту больше чем 1024, то у злоумышленники смогут к ним подключиться. С11 для того чтобы избежать этой ситуации можно дополнительно контролировать флаги в заголовке TCP. например можно пропускать только такие пакеты в которых установлен флаг ACK. флаг ACK установлен почти у всех пакетов TCP кроме первого - пакета на запрос установки соединения, в котором установлен флаг SYN, а флаг ACK сброшен. в этом случае злоумышленник уже не сможет установить соединение с нашими сервисами, даже если он будет отправлять пакеты с портом отправителя 80, так как наш межсетевой экран будет отбрасывать пакеты в котором устану он только флаг SYN. это уже продвижение по безопасности. злоумышленник не может получить доступ к сервису, но может организовать атаку "отказ в обслуживании". при этом отправляется большое количество пакетов у которых порт отправителя 80, установлен флаг ACK, межсетевой экран их пропустит, наш сервис эти пакеты будет отбрасывать, но если пакетов будет очень много, то производительности сервиса не хватит для того чтобы отбрасывать все поступающие пакеты, и при этом еще обслуживать легальных пользователей. для того чтобы избежать такой ситуации межсетевые экраны могут проверять установлено ли соединение между отправителем и получателем. С12 для этого на межсетевом экране необходима дополнительная таблица соединений. так как межсетевой экран перехватывает все пакеты которые через него проходят, то он перехватывает и пакеты на установку соединения TCP, поэтому он легко может узнать какой компьютер из внутренней сети устанавливал соединение с компьютерами внешней сети и с какими именно. как только наш межсетевой экран видит процедуру установки соединения TCP - трехкратного рукопожатия, после того как она завершилась успешно, вносится соответствующая запись в таблицу соединений. например компьютер IP адресом 220.10.1.86 из внутренней сети установил соединение с веб-сервером работающему на 80м порту IP адресом 77.88.55.66. и дальше, для внешних пакетов мы можем установить дополнительное поле - выполнять проверку соединения. если есть запись в таблице соединений, которая говорит о том что соединение инициировано компьютерами из внутренней сети, то мы считаем что это ответ веб-сервера и такие пакеты будем пропускать. если записи об установке соединения нет, то это скорее всего какая-то атака, и такие пакеты пропускать не будем. С13 кроме межсетевых экранов есть также другие методы контроля доступа к сети работающие на других уровнях. на канальном уровне можно выполнять фильтрацию по MAC адресам. например коммутаторы позволяют составить список MAC-адресов, которым разрешено подключаться. вы можете включить в этот список MAC адреса всех компьютеров вашей сети, таким образом злоумышленник, даже если получит доступ к вашей сети физически, не сможет с ней работать. ограничивать доступ можно уже также и на прикладном уровне. есть прокси-серверы, которую делают то же самое что и межсетевые экраны, только на уровне прикладных протоколов. например веб-прокси сервер перехватывают все ваши запросы на доступ к сайтам интернет, соединяется с ними от своего имени, получает ответ, анализирует его и пересылает вам. web proxy может запрещать доступ каким-нибудь сайтам по их адресам. например может быть запрещен доступ к социальным сетям с рабочего места организации. контент фильтры также работают на прикладном уровне, но в отличие от других технологий анализируют не только заголовки, но и содержимое. с помощью них можно запретить например скачивать видео независимо от того на каком сайте оно находится. системы обнаружения и предотвращения вторжений работают по принципу похожему на межсетевые экраны, но анализируют не отдельные пакеты, а последовательности пакетов. они могут обнаружить например сканирование нашей сети или подбор паролей. система обнаружения вторжений предупредит администратора о проходящей атаке, а система предотвращения вторжений попытается автоматически выполнить какие-то действия которые предотвратят попытку атаки. С14 итак мы рассмотрели межсетевые экраны которые предназначены для изоляции сетей друг от друга. межсетевые экраны работают на сетевом и транспортном уровне, и выполняют фильтрацию пакетов по заголовкам протоколов этих уровней. для этого могут использоваться IP адреса отправителя и получателя, порты протоколов транспортного уровня, флаги в заголовках протоколов, и состояние соединения. межсетевые экраны обеспечивают безопасность, что очень же на в современных сетях. однако нужно быть очень осторожным при составлении конфигурации межсетевых экранов, так как если составите конфигурацию неправильно, то сеть может оказаться полностью неработоспособной, так как нужные для работы пакеты межсетевой экран пропускать не будет. также межсетевой экран может существенно замедлять работу компьютерной сети так как он должен перехватить все пакеты и проверить их. если наша сеть крупная, мы используем сложные правила доступа, производительность вашего межсетевого экрана очень низкая, то это может привести к существенному замедлению работы с сетью всех компьютеров.

Соседние файлы в папке ЛЕКЦИИ