Редактирование: UNИX, весна 2009, 02 лекция (от 04 марта)
Материал из eSyr's wiki.
Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.
ПРЕДУПРЕЖДЕНИЕ: Длина этой страницы составляет 41 килобайт. Страницы, размер которых приближается к 32 КБ или превышает это значение, могут неверно отображаться в некоторых браузерах. Пожалуйста, рассмотрите вариант разбиения страницы на меньшие части.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
- | [[Изображение:Frbrgeorge_09_03_04.jpg|thumb|320px|Георгий Владимирович Курячий]] | ||
- | |||
* '''Диктофонная запись:''' http://esyr.org/lections/audio/uneex_2009_summer/uneex_09_03_04.ogg | * '''Диктофонная запись:''' http://esyr.org/lections/audio/uneex_2009_summer/uneex_09_03_04.ogg | ||
Строка 10: | Строка 8: | ||
</gallery> | </gallery> | ||
- | == Вступление == | ||
Лектор пообещал, что разговор про сетевые экраны будет построен по тому же принципу, что и в прошлом семестре — подъем по стеку протоколов. | Лектор пообещал, что разговор про сетевые экраны будет построен по тому же принципу, что и в прошлом семестре — подъем по стеку протоколов. | ||
Но это неправильно. | Но это неправильно. | ||
Строка 47: | Строка 44: | ||
Это была преамбула. | Это была преамбула. | ||
- | == Задача управления трафиком == | ||
Каким образом нам решать задачу, какие есть стратегии решения задачи управления трафиком? | Каким образом нам решать задачу, какие есть стратегии решения задачи управления трафиком? | ||
У нас некий общий случай. | У нас некий общий случай. | ||
Строка 55: | Строка 51: | ||
Какие есть пути решения задачи? | Какие есть пути решения задачи? | ||
- | |||
- | == Традиционный путь решения == | ||
Самый традиционный путь состоит в следующем. | Самый традиционный путь состоит в следующем. | ||
Берем все трафики, превращаем в потоки пакетов, возможно, присоединяем дополнительную информацию. | Берем все трафики, превращаем в потоки пакетов, возможно, присоединяем дополнительную информацию. | ||
Строка 68: | Строка 62: | ||
На основании накопленного принимаем решения, куда как перенаправлять, выбрасывать и прочее. | На основании накопленного принимаем решения, куда как перенаправлять, выбрасывать и прочее. | ||
- | === Схема общей цепочки === | ||
Первая схема — общей цепочки. | Первая схема — общей цепочки. | ||
Мы знаем несколько файрволлов, которые устроены по такой схеме. | Мы знаем несколько файрволлов, которые устроены по такой схеме. | ||
Строка 79: | Строка 72: | ||
По тем же канонам функционировал старый линуксовый файрволл ipchains, что-то похожее было. | По тем же канонам функционировал старый линуксовый файрволл ipchains, что-то похожее было. | ||
Каковы очевидные достоинства и недостатки подобного рода организации? | Каковы очевидные достоинства и недостатки подобного рода организации? | ||
- | |||
- | ==== Достоинства и недостатки ==== | ||
Начнем с достоинств. | Начнем с достоинств. | ||
Очень мало сущностей. | Очень мало сущностей. | ||
Строка 118: | Строка 109: | ||
Если пакет 6000 раз прошел через одно правило, он сбрасывался. | Если пакет 6000 раз прошел через одно правило, он сбрасывался. | ||
- | === Схема нескольких цепочек === | ||
Мы можем сохранить линейность правил, но разбить правила на цепочки и привязать каждую цепочку к обработке той или иной | Мы можем сохранить линейность правил, но разбить правила на цепочки и привязать каждую цепочку к обработке той или иной | ||
жизненной ситуации. | жизненной ситуации. | ||
Строка 142: | Строка 132: | ||
Части, которые не пересекаются будут достаточно большими. | Части, которые не пересекаются будут достаточно большими. | ||
- | == Топологический путь решения == | ||
Есть совершенно другая стратегия. | Есть совершенно другая стратегия. | ||
Описанная ранее стратегия — линейная. | Описанная ранее стратегия — линейная. | ||
Строка 163: | Строка 152: | ||
Он проходит по графу, возможно, пропадает, попав в черную дыру. | Он проходит по графу, возможно, пропадает, попав в черную дыру. | ||
Обработка, преобразования, ограничения. | Обработка, преобразования, ограничения. | ||
- | |||
- | === Реализация === | ||
Свободная реализация известна лектору только одна. | Свободная реализация известна лектору только одна. | ||
netgraph (ng). | netgraph (ng). | ||
Строка 173: | Строка 160: | ||
ng устроен функционально. | ng устроен функционально. | ||
Передачи не происходит, путь превращается в суперпозицию функций. | Передачи не происходит, путь превращается в суперпозицию функций. | ||
- | |||
- | === Достоинства и недостатки === | ||
Чем этот подход хорош? | Чем этот подход хорош? | ||
В отличие от непонятно каких правил, есть картина следования пакетов. | В отличие от непонятно каких правил, есть картина следования пакетов. | ||
Строка 182: | Строка 167: | ||
Но свои задачи решает хорошо и эффективно. | Но свои задачи решает хорошо и эффективно. | ||
- | + | Совмещенная стратегия. | |
Возможно, даже разрешены циклы. | Возможно, даже разрешены циклы. | ||
Отсылки на сторону внутрь ipfw не включены. | Отсылки на сторону внутрь ipfw не включены. | ||
Строка 190: | Строка 175: | ||
Это может быть на уровне ядра, но система правил на него не распространяется. | Это может быть на уровне ядра, но система правил на него не распространяется. | ||
- | === Работа с линейными файрволами === | ||
Как с той же самой проблемой справляются линейные файрволы? | Как с той же самой проблемой справляются линейные файрволы? | ||
Для каждого случая жизни пишется отдельный helper. | Для каждого случая жизни пишется отдельный helper. | ||
Строка 199: | Строка 183: | ||
Мелких доклеек к iptables довольно много. | Мелких доклеек к iptables довольно много. | ||
- | == Сравнение == | ||
Если в том же ipfw преобладала практика оформления сторонних модулей по тем же правилам, разницы особо нет. | Если в том же ipfw преобладала практика оформления сторонних модулей по тем же правилам, разницы особо нет. | ||
Есть топология, граф, рассчитанный на обработку. | Есть топология, граф, рассчитанный на обработку. | ||
Строка 206: | Строка 189: | ||
Линейные модели хороши простотой. | Линейные модели хороши простотой. | ||
- | == Реальное применение == | ||
Вопрос в том, как этими стратегиями можно воспользоваться. | Вопрос в том, как этими стратегиями можно воспользоваться. | ||
С одной стороны, есть подсистема стека. | С одной стороны, есть подсистема стека. | ||
Строка 218: | Строка 200: | ||
В разные моменты между разными моментами обработки ядро может захватить управление и посмотреть, как дела. | В разные моменты между разными моментами обработки ядро может захватить управление и посмотреть, как дела. | ||
- | === Требуемая поддержка со стороны ОС === | ||
Существует три сущности, которые должны быть реализованы в ОС, чтобы она стала межсетевым экраном. | Существует три сущности, которые должны быть реализованы в ОС, чтобы она стала межсетевым экраном. | ||
Разметка проходящих пакетов в соответствии с правилами файрвола. | Разметка проходящих пакетов в соответствии с правилами файрвола. | ||
Строка 227: | Строка 208: | ||
При изучении линукса мы быстро наткнемся на пакет ebtables. | При изучении линукса мы быстро наткнемся на пакет ebtables. | ||
- | + | pf. | |
В pf три года назад не было поддержки уровня 2. | В pf три года назад не было поддержки уровня 2. | ||
Сейчас ядерные ручки есть. | Сейчас ядерные ручки есть. | ||
- | === Стратегии непосредственной работы файрвола === | ||
В случае, когда граф две стратегии. | В случае, когда граф две стратегии. | ||
First wins, last wins. | First wins, last wins. | ||
- | |||
- | === First wins === | ||
Файрвол пропускает соединение только из одной подсети или на 80-й порт. | Файрвол пропускает соединение только из одной подсети или на 80-й порт. | ||
Мы пишем пропускать из какой-то сети. | Мы пишем пропускать из какой-то сети. | ||
Строка 252: | Строка 230: | ||
При сложной задачи правильность расположения правил позволяет экономить ресурсы. | При сложной задачи правильность расположения правил позволяет экономить ресурсы. | ||
- | === Разрешение установленных соединений === | ||
Можно добавить первое правило, если TCP установлено, всегда его пропускать. | Можно добавить первое правило, если TCP установлено, всегда его пропускать. | ||
До этого уже пропустили пакеты установки соединения. | До этого уже пропустили пакеты установки соединения. | ||
Это сильно повышает работоспособность файрвола. | Это сильно повышает работоспособность файрвола. | ||
- | |||
- | === Устройство реальных файрволов === | ||
По принципу first wins устроены ipf, ipfw, iptables. | По принципу first wins устроены ipf, ipfw, iptables. | ||
Исключение — pf, он строит last wins. | Исключение — pf, он строит last wins. | ||
- | |||
- | === last wins === | ||
Применяются все правила к каждому пакету. | Применяются все правила к каждому пакету. | ||
В дополнительную информацию вносятся изменения. | В дополнительную информацию вносятся изменения. | ||
Строка 277: | Строка 250: | ||
Поиск по линейным правилам имеет линейную сложность. | Поиск по линейным правилам имеет линейную сложность. | ||
- | + | Смешанные стратегии. | |
В first wins файрволах есть возможность вернуть пакет обратно. | В first wins файрволах есть возможность вернуть пакет обратно. | ||
В файрволах last wins есть finally. | В файрволах last wins есть finally. | ||
- | === Учет трафика === | ||
Что можно сказать еще? | Что можно сказать еще? | ||
Где здесь учет? | Где здесь учет? | ||
Строка 296: | Строка 268: | ||
Вариант в бсд — сетевой интерфейс, из которого лезет только нужный трафик, а дальше с ним можно делать, что захотим. | Вариант в бсд — сетевой интерфейс, из которого лезет только нужный трафик, а дальше с ним можно делать, что захотим. | ||
- | + | Таблицы. | |
Поделили трафик на разные виды. | Поделили трафик на разные виды. | ||
Действия должны происходить в разное время. | Действия должны происходить в разное время. | ||
Строка 308: | Строка 280: | ||
Поскольку люди обсуждают, необходимость обойти возникает. | Поскольку люди обсуждают, необходимость обойти возникает. | ||
- | + | Резюме. | |
Говоря о задачах преобразования, ограничения, перенаправления трафика, мы касаемся большего, чем iptables. | Говоря о задачах преобразования, ограничения, перенаправления трафика, мы касаемся большего, чем iptables. | ||
Сами файрволы могут быть организованы сильно по-разному. | Сами файрволы могут быть организованы сильно по-разному. |