Различия между версиями 1 и 2
Версия 1 от 2008-07-07 21:23:55
Размер: 12653
Редактор: eSyr
Комментарий:
Версия 2 от 2008-07-08 01:33:50
Размер: 26352
Редактор: PavelSutyrin
Комментарий: расшифровка с аудио. Кто был на лекции, поищите в тексте /?/ и уточните сказанное
Удаления помечены так. Добавления помечены так.
Строка 3: Строка 3:
Это тематика позапрошлого дня, когда мы гворили про сеть. Мы потрогали стек протоколов, в том числе, гворили о маршрутизации, и ещё лектор говорил о том, что для того, чтобы он был маршрутизатором, нужно выставить системную переменную (ip forwarding). Надо сказать, что перекладывание из одного интерфейса в лругой каких-то пакетов --- задача частная, которая в общем случае выглядит следующим образом: есть задача по перераспределению, преобразованию и ограничению трафика. То есть, манипулировать какими-то данными, которые проходят через маршрутизатор (возм., они зарождаются в нём, возм., они ему направлениы), модифицировать этот трафик собразно нашим нуждам, и накладывать ограничения на трафик, начиная блокировкой, заканчивая шейпингом. Под трафиком имеется в виду некий массив данных, передаваемых по сети.

Только они неправильно расположены
:
##{02:31:00}

Это тематика позапрошлого дня, когда мы гворили про сеть. Мы
потрогали стек протоколов, в том числе, гворили о маршрутизации,
и ещё лектор говорил о том, что

Д
ля того, чтобы компьютер был маршрутизатором, нужно выставить
системную переменную, параметр ядра (ip forwarding), чтобы он занимался
перекладыванием пакетов из одной СПД в другую
. Надо сказать, что
перекладывание из одного интерфейса в лругой (маршрутизация)
каких-то пакетов --- задача частная, которая в общем случае
выглядит следующим образом: есть задача по перераспределению,
преобразованию и ограничению трафика. То есть, манипулировать
какими-то данными, которые проходят через маршрутизатор
(возможно, они зарождаются в нём, возможно, они ему направлены),
модифицировать этот трафик сообразно нашим нуждам, и, третье,
накладывать ограничения на трафик, начиная просто фильтрацией,
когда мы просто не допускаем какой-то вид сетевой активности,
и заканчивая более тонкими ограничениями, например, на объём
передаваемого траффика (шейпинг), и т
.д. Под трафиком имеется в
виду некий
обобщенный массив передаваемых по сети данных.

Итак
: 
Строка 7: Строка 27:
 * Перераспределение (маршрутизация, перенаправление, балансировка)  * Перераспределение (маршрутизация, перенаправление, балансировка) 
Строка 10: Строка 30:
Обратите внимание, что кое-какие вещи, например, простейшая маршрутизация, делаются более или менее автоматически. Если соотв. параметр. ядра включён и если таблицы маршрутизации правлиьные, то оно будет работать автоматически. Но надо понимать, что это фича интерфейса (?)

В принципе, межсетевой экран как инструмент --- штука совокупная. Особенно, когда вспоминаем, что в стеке протоколов 4 уровня. По всей видимости, можно вообразить решение этих задач на каждом из этих уровней. Представим себе комплекс задач. Межсетевой экран как таковй это подход от подзадачи. У нас есть задача бесп. безопасеность работы в сети, эта задача реш. разными способами, в частности переч. тремя, и эти способы могут быть реализованы различными инструментами. Такой трёхуровневый подход: задача-решение-инструмент. Обратите внимание, что межсет. экран --- решение. С другой стороны, когда мы гворим, что для задачи огр. дотупа в сеть. сп. межсетевой экран, мы не гвоорим, каким образом это получается. Конкретный инструмент может быть iptables, iproute2, секатор. То есть, решение реализуется не одним инструментом. В этом цикле может быть много задач, решений и инструментов. И когда мы гворим про МС, мы говорим про реш., которое восх. к инстр.

Это к чему. Нельзя говорить, что межстеетвой экран это iptables. С жругой стороны. нельзя говорить о том, что МС --- гарантия безоп. сети. Это никакое набл. или практ. результат. Это результат того, что решение не явл. задачей и не явл. инструментом. Далеко не всегда одно реш. удовл., и далеко не всегда это решение исп. iptables.

Вернёмся к 4 урвням протоколов и рассм. наши три задачи. Попробуем себе представить, на каком из этих уровней.

Огр. на инт. уровне. Типичная задача --- фильтрация по MAC-адресам. Это iproute2.

На инт. уровне перерасп. Такая задача возн., когда у нас единая среда перед. данных, на которой должно находиться несколько виртуальных, VLAN. Когда eth-фреймы раскрашиваем по цветам. На уровен линукса это делается так --- регистрируются вирт. сетевые интерфейсы, которые привязываются к соотв. VLAN-ам. То есть задача расп. сводится к задаче на уровне сетевом. iptables.

Вопрос общего плана: насколько это вобще востребовано (за иск. vlanов, котрые делаются аппаратно). Наверное, не чоень.

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

Перераспределение. Если мы решаем эту задачу нест. образом, то созд. множество правил, по которым это распр. осуществляется. Для этог есть ipt и ipr2.

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

Огр. транс: граничение по портам --- iptables. Ограничение по объёму --- iproute2.

Перерасп. транс. уровня. Проброс портов.

Преобр. NAT. Поск., он задействует понятие сост., в том числе TCP.

Огр. на прикл. уровне. Да, мы только что в сквиде это делали. l7-filter. Он может выяснять, что за пртокол прикл. уровнгя идёт. Кроме того, они аккуратно промеряют тайминги. Фактически, фильтрация на этом уровне --- дело каждого отдельного приложения.

Распред. на прикл. Если о нём идёт речь, то оно должно быть реализовано в протоколе. Пример --- рассылка почты.

То же саоме --- преобразование. Хотя, его также делает iptables. Пример --- connection tracker (FTP, IRC).
Обратите внимание, что кое-какие вещи, например, простейшая
маршрутизация, делаются более или менее автоматически. Если
соответствующиq параметр ядра включён и если таблицы
маршрутизации правлиьные, то оно будет работать автоматически,
но нужно понимать, что номенклатурно эта уже функция некоторого
сетевого устройства, которое занимается некоторыми задачами из
приведенного выше списка. То же относительно ограничения. Если
без дополнительных настроек пытаться передать данные
по адресам, которые недоступны в локальной сети, они не
передадутся и фактически будет реализовано некоторое
ограничение трафика. Хотя мы явно его не вводили.

В принципе, межсетевой экран как инструмент --- штука
совокупная. Особенно, когда вспоминаем, что в стеке протоколов 4
уровня. По всей видимости, можно вообразить решение всех
этих задач на каждом из этих уровней. Даже на нижнем уровне
пятувровневой схемы (носитель) есть замечательный инструмент
ограничения трафика -- секатор. Представим себе комплекс
задач. Межсетевой экран как таковой это подход от подзадачи.
У нас есть задача обеспечить безопасеность работы в сети, эта
задача решается разными способами, в частности ограничением
или перераспределением или преобразованием траффика,
который в эту сеть поступает, и эти способы могут быть
реализованы различными инструментами. Такой трёхуровневый
подход: задача-решение-инструмент. Обратите внимание, что
межсетевой экран --- это решение, это не задача. Не уточняется,
зачем нужно ограничивать возможности сети передачи данных,
поэтому это не задача. С другой стороны, когда мы гворим, что для
задачи ограничения доступа в сеть. используется межсетевой
экран, мы не гвоорим, каким образом реализуется этот экран.
Конкретный инструмент может быть iptables, iproute2, секатор. То есть,
решение реализуется не одним инструментом. В этом цикле может
быть много задач, много решений и много инструментов. И когда
мы гворим про сетевой экран, мы говорим про решение, которое
восходит от инструмента.

Это к чему. Нельзя говорить, что, например межстеетвой экран это
iptables. Это неправильно. С другой стороны. нельзя говорить о том,
что сетевой экран --- гарантия безопасности сети. И то и другое --
это никакое ни наблюдение или практический результат работы,
допустим, с iptables. Это результат того, что решение не является
задачей и не является инструментом. Для задачи обеспечения
безопасности далеко не всегда удовлетвояет решение "межсетевой
экран", а сам по себе межсетевой экран совершенно не всегда
явлеятся конкретным инструментом, например iptables. Но мы будем
главным образом разговаривать про iptables. Поясню, почему.

Итак, каждая из трех задач может решаться на каждом из 4 уровней
организации сети. Попробуем представить, на каком из этих
уровней
Строка 47: Строка 86:
И теперь ответьте на вопрос, про какой инструмент стоит говорить? Да, есть задачи, с которыми справляется и только делает iproute2. Но лектор не готов сейчас рассказывать про iproute2, это такая мощная внутренная программа.

Достаточно неплохо введение в эту тему излождено в КМ. Идея состоит в следующем. Тут надо на самом деле... лектор не любит линуксовый фаерволл, бсдшный на много прямее... Идея в том, что у нас приходят пакеты и мы их обрабатываем в неск. цепочках. Сначала мы обр. пакеты в цепочке преобр, потом фильтр, потом out. Потом выяснилось, что на самом деле не все пакеты одинаковые. в зависимочсти от гтоо, кто адресат и получатель пакета, надо разные решения получать. Для этого завели таблицы цеполчек. Идея в след.: даже по умолч. есть три пути пакета: пакет, который нам, пакет, который от нас уходит, и пакет, который мы марш. Для этого удобно исп. неск. разных групп правил. Цепочка наз. цепочкой по одной простой причине. Это некий упорядоченный списко правил, который сост. из двух частей. Сначала она опис. условие, вид пакета, а вторая половинка описывает, что с пакетом делать. И способ обр. следующий: если левая половинка вып., то делается то, что в правой и цепочка закачивается. Таким образом, приходит пакет, он обр., обр, пока не найдётся правило, которое он обр. А дальше понятно. Когда пакет проходит через одну цпеочку, потом, вторую, третью и так далее. Если он не попал в такое правило, где его не надо выбрасить или передать в какую-то конкр. таблицу.
=== Интерфейсный уровень ===

==== Ограничение ====

Ограничение на интерфейсном уровне. Сужение, наверное,
трудно реализовать в разделяемой среде передачи данных, а
ограничение делается сплошь и рядом, например фильтрация по
уникальным идентификаторам сетевых устройств (MAC-адресам в
случае Ethernet-устройств). Это умеет iptables.

==== Перераспределение ====

Распределение тоже можно сделать в iptables. У вас регистрируются
виртуальные сетевые интерфейсы, соответсвующий каждый
соответствующему vlan'у, после чего они, скорее всего, ядерным
модулем... (см. vlanutils) Таким образом, задача распределения на
интерфейсном уровне сводится к той же задаче на сетевом уровне.

==== Преобразование ====

Преобразование на интерфейсном уровне?.. Нужен некоторый ядерный
модуль, который организует соотв. vlan-интерфейс... (неясно, зачем).

Вопрос общего плана: насколько это вобще востребовано? Кроме
vlan'ов, которые реально востребовны, но как правило решаются
аппаратно и в линукс-машину их втыкать особенно не надо. Обычно
покупается свитч с поддержкой vlan'а, если он смотрит на другой
свич с поддержкой vlan'а то между ними ходят "крашеные пакеты",
а в другую стороны -- обычные ethernet-фреймы.

Есть подозрение, что это не очень востребовано.

##{02:53:07}

=== Сетевой уровень ===

==== Ограничение ====

По IP-адресам. Нужно часто, используется iptables. Первое, о чём
думают при слове межсетевые экраны. У пакета есть отправитель,
есть получатель, на основе их адресов принимается решение, что
делать с пакетом, в соответствии с некоторой дисциплиной. Мы
видели в альтераторе ICMP, который можно было разрешить (скриншот?)

=== Перераспределение ===

Распределение на уровне ip нам всегда нужно, это основная задача
на этом уровне. Для этого iptables, iproute2. Нужно создавать некоторое
множество правил, согласно которым управлять пакетами. Если
мы решаем эту задачу нест. образом, то созд. множество правил,
по которым это распр. осуществляется. Для этог есть ipt и ipr2.

=== Преобразование ===

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

Прозрачный прокси: когда пользователь заходит на 80 порт на своей
машине, а на самом деле он заходит на удалённый сервер, но этого
не замечает. Браузер можно не настраивать специально. Есть
несколько проблем, если это не требует настроек в браузере,
значит и управлять этим прокси по-человечески нельзя, и другие
проблемы. С SSL есть серьёзные проблемы, он не работает в принципе.

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

=== Траспортный ===

==== Ограничение ====

По портам, типично. iptables. Ограничение по объёму,
traffic control (tc) входит в iproute2.

==== Распределение ====

Проброс портов (port forwarding), анализирует номер TCP-порта.

==== Преобразование ====

NAT, он работает и на транспортном уровне, т.к. задействует такое понятие, как
sequential number, и пр. Этим занимается iptables.

=== Прикладной ===

==== Ограничение ====

Фильтрация. Мы только что это делали (squid), LOR фильтровали,
мы фильтровали исключительно адрес прикладного уровня --
URL. Запретить аську, осла, и т.п. -- это l7filter для netfilter.
Он может, будучи на уровне TCP, выяснить, что за пртокол прикладного уровня по
этому TCP-соединеню идёт. Кроме того, эти инструменты аккуратно промеряют
тайминги, т.к. за какой срок это происходит. Простейшее
взаимодействие с прикладным уровнем есть также и в iptables.

Антиспам. Анализируется адрес протокола прикладного уровня
SMTP, то есть e-mail, анализируется содержимое прикладного уровня, содержимое письма.
Фактически, фильтрация на этом уровне --- это чаще всего
дело отдельного специального приложения, по крайней мере с
точки зрения linux, да и не linux тоже.

==== Распределение ====

Если речь идет о распределении на уровне прикладного протокола, значит,
оно должно быть реализовано в этом самом протоколе. Допустим,
пересылка почты, она реализуется на уровне e-mail адресов, доменов,
и т.д.

==== Преобразование ====

То же самое --- реализуется отдельным приложением. Хотя, преобразование на
прикладном уровне делает также iptables. Connection tracker в нём есть. Когда в
прикладном протоколе используется адрес машины-получателя,
то нельзя, чтобы туда просочился интранетовский адрес
(10.0.0.сколько-то), работать не будет вообще, что FTP, что IRC.

И теперь ответьте на вопрос, про какой инструмент стоит теперь
поговорить? iptables. На прикладном уровне у нас существенный пробел,
именно поэтому есть отдельный скрипт для настройки, отдельно
почтовый сервер с возможностью фильтрации. В остальных случаях
-- iptables.

Да, есть задачи, с которыми гораздо легче справляется или только
это и делает iproute2. Но лектор не готов сейчас рассказывать
про iproute2, это такая мощная внутренностная программа такая
линуксовая, а о возможностях iptables можно рассказать.

(тема CUPS у нас заморожена, мы только начали тыкать).

Достаточно неплохо введение в эту тему излождено в
Курячем-Маслинском, в соответствующей главе. Идея состоит в
следующем. Тут надо на самом деле... лектор не любит линуксовый
фаерволл, бсдшный намного прямее... Идея в том, что у нас приходят
пакеты и мы их обрабатываем в нескольких цепочках. Сначала мы
обрабатываем пакеты в цепочке правил mangle, для преобразования, потом
в цепочке специального преобразования, nat, подмены
адресов, потом в цепочке, предназначенной для фильтрации, filter.

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

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

И способ обработки следующий: если левая половинка, т.е. условие,
выполняется, то делается то, что в написано в правой и обработка
текущей цепочки закачивается.

Это называется политика thurst wings /?/
(''Не очень разборчивый и незнакомый термин. Увы %) --PavelSutyrin'')

Таким образом, приходит пакет, мы что-то с ним делаем, пока
в цепочке не найдётся правило, которое подходит ему по типу. И
есть в цепочке правило по умолчанию, что делать с теми пакетами,
к которым не подошло ни одно правило. Например, выбрасывать,
или передавать дальше. Кстати, дальше -- куда?.. На следующую
таблицу, или цепочку. Все строго. Раньше были только цепочки
(ipchains), а теперь таблицы (iptables). Когда пакет проходит через одну
цепочку, тем или иным способом, он проходит в следующую (порядок цепочек задан), и так
далее. Если только он не попал в такое правило, где в качестве
действия указано "выбросить" или "передать в конкретную другую
цепочку".

Все-таки по таблицам, если ему сказали DNAT, то он попадет
в цепочку NAT, так просто в цепочку NAT он не попадет. Лектор мало
ел. Давайте разберемся. Кто из них кто. Лектор никогда не любил
эту штуку. Цепочки объединены в таблицу.

Дима: OUTPUT не одна цепочка, их много разных.

ГК: Нет, на линуксе ничего кроме этого безобразия нет. Нельзя, нельзя
читать manual к iptables. Дим, попробуйте объяснить эту картинку.

Дима: Прямоугольнички, которые обозначены большими буквами на
картинке, то есть pre-routing, input, forward, output, post-routing -- это названия
цепочек. А в правом верхнем углу каждого прямоугольничка
указано, в каких таблицах существует такая цепочка. То есть,
когда пакет приходит, он сначала идет в цепочку pre-routing mangle,
потом pre-routing nat, потом смотрится, какое решение о маршрутизации
принимать...

ГК: Кто во что объединён, Дим?..

Дима: Цепочки объединены в таблицы.

ГК: Зачем? В данном случае наоборот. Или я чего-то непонял?

Дима: Нет, смотрите. Есть input, есть цепочка input в таблице mangle,
есть цепочка input в таблице filter. Это разные цепочки. Выполняется
сначала одна, потом другая.

ГК: Нет.

?: Прямоугольник --- это не одна цепочка.

ГК: Ну и? Давайте тогда про путь пакета.

Дима: Вот пакет пришел из сети. Он пойдёт вначале в цепочку
pre-routing таблицы mangle, потом он пойдёт в цепочку pre-routing таблицы nat,
потом принимается промежуточное решение о маршрутизации...

ГК: Тогда объясните мне, почему они во что-то объединены?

Дима: .... это, если я правильно помню, обоснование приблизительно
такое было. Разные типы ... пакетами разрешены в разных
таблицах. Например, сказать слово SNAT, т.е. выполнять...

ГК: Все, я понял. Самое смешное, Дим, что они разрешены везде.
У меня получалось это объяснить, когда-то давно...
Давайте сделаем так. На сегодня мы бардак прекратим.

##{03:26:10}

Межсетевые экраны: теория

Это тематика позапрошлого дня, когда мы гворили про сеть. Мы потрогали стек протоколов, в том числе, гворили о маршрутизации, и ещё лектор говорил о том, что

Для того, чтобы компьютер был маршрутизатором, нужно выставить системную переменную, параметр ядра (ip forwarding), чтобы он занимался перекладыванием пакетов из одной СПД в другую. Надо сказать, что перекладывание из одного интерфейса в лругой (маршрутизация) каких-то пакетов --- задача частная, которая в общем случае выглядит следующим образом: есть задача по перераспределению, преобразованию и ограничению трафика. То есть, манипулировать какими-то данными, которые проходят через маршрутизатор (возможно, они зарождаются в нём, возможно, они ему направлены), модифицировать этот трафик сообразно нашим нуждам, и, третье, накладывать ограничения на трафик, начиная просто фильтрацией, когда мы просто не допускаем какой-то вид сетевой активности, и заканчивая более тонкими ограничениями, например, на объём передаваемого траффика (шейпинг), и т.д. Под трафиком имеется в виду некий обобщенный массив передаваемых по сети данных.

Итак:

  • Ограничение (фильтрация и шейпинг)
  • Перераспределение (маршрутизация, перенаправление, балансировка)
  • Преобразование

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

В принципе, межсетевой экран как инструмент --- штука совокупная. Особенно, когда вспоминаем, что в стеке протоколов 4 уровня. По всей видимости, можно вообразить решение всех этих задач на каждом из этих уровней. Даже на нижнем уровне пятувровневой схемы (носитель) есть замечательный инструмент ограничения трафика -- секатор. Представим себе комплекс задач. Межсетевой экран как таковой это подход от подзадачи. У нас есть задача обеспечить безопасеность работы в сети, эта задача решается разными способами, в частности ограничением или перераспределением или преобразованием траффика, который в эту сеть поступает, и эти способы могут быть реализованы различными инструментами. Такой трёхуровневый подход: задача-решение-инструмент. Обратите внимание, что межсетевой экран --- это решение, это не задача. Не уточняется, зачем нужно ограничивать возможности сети передачи данных, поэтому это не задача. С другой стороны, когда мы гворим, что для задачи ограничения доступа в сеть. используется межсетевой экран, мы не гвоорим, каким образом реализуется этот экран. Конкретный инструмент может быть iptables, iproute2, секатор. То есть, решение реализуется не одним инструментом. В этом цикле может быть много задач, много решений и много инструментов. И когда мы гворим про сетевой экран, мы говорим про решение, которое восходит от инструмента.

Это к чему. Нельзя говорить, что, например межстеетвой экран это iptables. Это неправильно. С другой стороны. нельзя говорить о том, что сетевой экран --- гарантия безопасности сети. И то и другое -- это никакое ни наблюдение или практический результат работы, допустим, с iptables. Это результат того, что решение не является задачей и не является инструментом. Для задачи обеспечения безопасности далеко не всегда удовлетвояет решение "межсетевой экран", а сам по себе межсетевой экран совершенно не всегда явлеятся конкретным инструментом, например iptables. Но мы будем главным образом разговаривать про iptables. Поясню, почему.

Итак, каждая из трех задач может решаться на каждом из 4 уровней организации сети. Попробуем представить, на каком из этих уровней

Интерфейсный уровень

Сетевой

Транспортный

Прикладной

Ограничение

iptables

iptables

iptables, iproute2

l7-filter, iptables, squid, спам-фильтры, ...

Перераспределение

iptables

iptables, iproute2

iptables, iproute2

...

Преобразование

?

iptables

iptables

iptables, ...

Интерфейсный уровень

Ограничение

Ограничение на интерфейсном уровне. Сужение, наверное, трудно реализовать в разделяемой среде передачи данных, а ограничение делается сплошь и рядом, например фильтрация по уникальным идентификаторам сетевых устройств (MAC-адресам в случае Ethernet-устройств). Это умеет iptables.

Перераспределение

Распределение тоже можно сделать в iptables. У вас регистрируются виртуальные сетевые интерфейсы, соответсвующий каждый соответствующему vlan'у, после чего они, скорее всего, ядерным модулем... (см. vlanutils) Таким образом, задача распределения на интерфейсном уровне сводится к той же задаче на сетевом уровне.

Преобразование

Преобразование на интерфейсном уровне?.. Нужен некоторый ядерный модуль, который организует соотв. vlan-интерфейс... (неясно, зачем).

Вопрос общего плана: насколько это вобще востребовано? Кроме vlan'ов, которые реально востребовны, но как правило решаются аппаратно и в линукс-машину их втыкать особенно не надо. Обычно покупается свитч с поддержкой vlan'а, если он смотрит на другой свич с поддержкой vlan'а то между ними ходят "крашеные пакеты", а в другую стороны -- обычные ethernet-фреймы.

Есть подозрение, что это не очень востребовано.

Сетевой уровень

Ограничение

По IP-адресам. Нужно часто, используется iptables. Первое, о чём думают при слове межсетевые экраны. У пакета есть отправитель, есть получатель, на основе их адресов принимается решение, что делать с пакетом, в соответствии с некоторой дисциплиной. Мы видели в альтераторе ICMP, который можно было разрешить (скриншот?)

Перераспределение

Распределение на уровне ip нам всегда нужно, это основная задача на этом уровне. Для этого iptables, iproute2. Нужно создавать некоторое множество правил, согласно которым управлять пакетами. Если мы решаем эту задачу нест. образом, то созд. множество правил, по которым это распр. осуществляется. Для этог есть ipt и ipr2.

Преобразование

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

Прозрачный прокси: когда пользователь заходит на 80 порт на своей машине, а на самом деле он заходит на удалённый сервер, но этого не замечает. Браузер можно не настраивать специально. Есть несколько проблем, если это не требует настроек в браузере, значит и управлять этим прокси по-человечески нельзя, и другие проблемы. С SSL есть серьёзные проблемы, он не работает в принципе.

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

Траспортный

Ограничение

По портам, типично. iptables. Ограничение по объёму, traffic control (tc) входит в iproute2.

Распределение

Проброс портов (port forwarding), анализирует номер TCP-порта.

Преобразование

NAT, он работает и на транспортном уровне, т.к. задействует такое понятие, как sequential number, и пр. Этим занимается iptables.

Прикладной

==== Ограничение ====

Фильтрация. Мы только что это делали (squid), LOR фильтровали, мы фильтровали исключительно адрес прикладного уровня -- URL. Запретить аську, осла, и т.п. -- это l7filter для netfilter. Он может, будучи на уровне TCP, выяснить, что за пртокол прикладного уровня по этому TCP-соединеню идёт. Кроме того, эти инструменты аккуратно промеряют тайминги, т.к. за какой срок это происходит. Простейшее взаимодействие с прикладным уровнем есть также и в iptables.

Антиспам. Анализируется адрес протокола прикладного уровня SMTP, то есть e-mail, анализируется содержимое прикладного уровня, содержимое письма. Фактически, фильтрация на этом уровне --- это чаще всего дело отдельного специального приложения, по крайней мере с точки зрения linux, да и не linux тоже.

Распределение

Если речь идет о распределении на уровне прикладного протокола, значит, оно должно быть реализовано в этом самом протоколе. Допустим, пересылка почты, она реализуется на уровне e-mail адресов, доменов, и т.д.

Преобразование

То же самое --- реализуется отдельным приложением. Хотя, преобразование на прикладном уровне делает также iptables. Connection tracker в нём есть. Когда в прикладном протоколе используется адрес машины-получателя, то нельзя, чтобы туда просочился интранетовский адрес (10.0.0.сколько-то), работать не будет вообще, что FTP, что IRC.

И теперь ответьте на вопрос, про какой инструмент стоит теперь поговорить? iptables. На прикладном уровне у нас существенный пробел, именно поэтому есть отдельный скрипт для настройки, отдельно почтовый сервер с возможностью фильтрации. В остальных случаях -- iptables.

Да, есть задачи, с которыми гораздо легче справляется или только это и делает iproute2. Но лектор не готов сейчас рассказывать про iproute2, это такая мощная внутренностная программа такая линуксовая, а о возможностях iptables можно рассказать.

(тема CUPS у нас заморожена, мы только начали тыкать).

Достаточно неплохо введение в эту тему излождено в Курячем-Маслинском, в соответствующей главе. Идея состоит в следующем. Тут надо на самом деле... лектор не любит линуксовый фаерволл, бсдшный намного прямее... Идея в том, что у нас приходят пакеты и мы их обрабатываем в нескольких цепочках. Сначала мы обрабатываем пакеты в цепочке правил mangle, для преобразования, потом в цепочке специального преобразования, nat, подмены адресов, потом в цепочке, предназначенной для фильтрации, filter.

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

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

И способ обработки следующий: если левая половинка, т.е. условие, выполняется, то делается то, что в написано в правой и обработка текущей цепочки закачивается.

Это называется политика thurst wings /?/ (Не очень разборчивый и незнакомый термин. Увы %) --PavelSutyrin)

Таким образом, приходит пакет, мы что-то с ним делаем, пока в цепочке не найдётся правило, которое подходит ему по типу. И есть в цепочке правило по умолчанию, что делать с теми пакетами, к которым не подошло ни одно правило. Например, выбрасывать, или передавать дальше. Кстати, дальше -- куда?.. На следующую таблицу, или цепочку. Все строго. Раньше были только цепочки (ipchains), а теперь таблицы (iptables). Когда пакет проходит через одну цепочку, тем или иным способом, он проходит в следующую (порядок цепочек задан), и так далее. Если только он не попал в такое правило, где в качестве действия указано "выбросить" или "передать в конкретную другую цепочку".

Все-таки по таблицам, если ему сказали DNAT, то он попадет в цепочку NAT, так просто в цепочку NAT он не попадет. Лектор мало ел. Давайте разберемся. Кто из них кто. Лектор никогда не любил эту штуку. Цепочки объединены в таблицу.

Дима: OUTPUT не одна цепочка, их много разных.

ГК: Нет, на линуксе ничего кроме этого безобразия нет. Нельзя, нельзя читать manual к iptables. Дим, попробуйте объяснить эту картинку.

Дима: Прямоугольнички, которые обозначены большими буквами на картинке, то есть pre-routing, input, forward, output, post-routing -- это названия цепочек. А в правом верхнем углу каждого прямоугольничка указано, в каких таблицах существует такая цепочка. То есть, когда пакет приходит, он сначала идет в цепочку pre-routing mangle, потом pre-routing nat, потом смотрится, какое решение о маршрутизации принимать...

ГК: Кто во что объединён, Дим?..

Дима: Цепочки объединены в таблицы.

ГК: Зачем? В данном случае наоборот. Или я чего-то непонял?

Дима: Нет, смотрите. Есть input, есть цепочка input в таблице mangle, есть цепочка input в таблице filter. Это разные цепочки. Выполняется сначала одна, потом другая.

ГК: Нет.

?: Прямоугольник --- это не одна цепочка.

ГК: Ну и? Давайте тогда про путь пакета.

Дима: Вот пакет пришел из сети. Он пойдёт вначале в цепочку pre-routing таблицы mangle, потом он пойдёт в цепочку pre-routing таблицы nat, потом принимается промежуточное решение о маршрутизации...

ГК: Тогда объясните мне, почему они во что-то объединены?

Дима: .... это, если я правильно помню, обоснование приблизительно такое было. Разные типы ... пакетами разрешены в разных таблицах. Например, сказать слово SNAT, т.е. выполнять...

ГК: Все, я понял. Самое смешное, Дим, что они разрешены везде. У меня получалось это объяснить, когда-то давно... Давайте сделаем так. На сегодня мы бардак прекратим.


Сведения о ресурсах

Готовность (%)

Продолжительность (ак. ч.)

Подготовка (календ. ч.)

Полный текст (раб. д.)

Предварительные знания

Level

Maintainer

Start date

End date

0

1

1

1

1

PavelSutyrin, VladimirLysikov


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex

PspoClasses/080707/04RoutingTheory (последним исправлял пользователь MaximByshevskiKonopko 2008-10-09 21:12:31)