Что такое правила фильтрации firewall

Как фаервол защищает компьютер?

Если вы интересуетесь, как обезопасить компьютер, который имеет выход в интернет, то вероятно задавались вопросом, что такое фаервол.

Фаервол (от английского firewall — противопожарная стена), он же брандмауэр (тот же перевод с немецкого brandmauer), он же межсетевой экран — компонент программного либо программно-аппаратного обеспечения, который фильтрует сетевой трафик, выполняет защитную функцию для фрагментов сети или отдельных узлов.
Его работа напоминает пункт пропуска на границе государства, либо пост охраны при входе на закрытую территорию.

Принцип работы

Что такое правила фильтрации firewall. Смотреть фото Что такое правила фильтрации firewall. Смотреть картинку Что такое правила фильтрации firewall. Картинка про Что такое правила фильтрации firewall. Фото Что такое правила фильтрации firewall

Брандмауэр можно представить как набор фильтров, через который последовательно проходит трафик. Каждый фильтр проверяет элементы потока на соответствие определенному правилу. Набор правил фильтрации(ruleset) определяет, какой пакет пересечет экран (операция allow – «разрешить»), а какой будет отброшен (операция deny – «отказать» без уведомления, что сервис недоступен, либо reject – «отклонить» с уведомлением).

Отбор пакетов происходит по одному из двух принципов:

Второй принцип дает большую безопасность ценой усложнения администрирования системы.

В зависимости от того, на уровне каких сетевых протоколов работает экран, его можно отнести к одному из следующих типов:

Что такое правила фильтрации firewall. Смотреть фото Что такое правила фильтрации firewall. Смотреть картинку Что такое правила фильтрации firewall. Картинка про Что такое правила фильтрации firewall. Фото Что такое правила фильтрации firewall

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

Далее рассмотрим персональные фаерволы, программы, которые устанавливаются на ПК для защиты от сетевых угроз.

Персональные брандмауэры работают по тем же принципам, что и межсетевые, но имеют ряд особенностей:

Примеры известных программ-фаерволов

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

Популярные бесплатные фаерволы для Windows:

Как настроить брандмауэр для Windows?

Настройка фаервола — комплексная задача, для выполнения которой нужен багаж знаний. Необходимо проработать последовательный набор правил-фильтров, которые могли бы обеспечить защиту и в то же время не мешать работе полезных программ. Каждое правило имеет ряд свойств, и все они должны быть установлены грамотно.

Доступен ряд методов упрощения задачи:

Что такое правила фильтрации firewall. Смотреть фото Что такое правила фильтрации firewall. Смотреть картинку Что такое правила фильтрации firewall. Картинка про Что такое правила фильтрации firewall. Фото Что такое правила фильтрации firewall

Что такое правила фильтрации firewall. Смотреть фото Что такое правила фильтрации firewall. Смотреть картинку Что такое правила фильтрации firewall. Картинка про Что такое правила фильтрации firewall. Фото Что такое правила фильтрации firewall

Отдельно разберем, как разрешать доступ для отдельных приложений:

Что такое правила фильтрации firewall. Смотреть фото Что такое правила фильтрации firewall. Смотреть картинку Что такое правила фильтрации firewall. Картинка про Что такое правила фильтрации firewall. Фото Что такое правила фильтрации firewall

Как отключить брандмауэр в Windows?

При использовании другого полноценного фаервола встроенный можно выключить.

Самый быстрый способ — использовать командную строку:

Что такое правила фильтрации firewall. Смотреть фото Что такое правила фильтрации firewall. Смотреть картинку Что такое правила фильтрации firewall. Картинка про Что такое правила фильтрации firewall. Фото Что такое правила фильтрации firewall

Что такое правила фильтрации firewall. Смотреть фото Что такое правила фильтрации firewall. Смотреть картинку Что такое правила фильтрации firewall. Картинка про Что такое правила фильтрации firewall. Фото Что такое правила фильтрации firewall

Если потребуется, команда для включения выглядит так:

netsh advfirewall set allprofiles state on

Источник

Оптимизация правил файрвола

Эта статья объясняет, как определить, что пакетный фильтр стал тем узким местом в сети, которое ограничивает пропускную способность и что сделать, чтобы этого избежать.

Что такое правила фильтрации firewall. Смотреть фото Что такое правила фильтрации firewall. Смотреть картинку Что такое правила фильтрации firewall. Картинка про Что такое правила фильтрации firewall. Фото Что такое правила фильтрации firewall

Даниел Хартмеиер, перевод SecurityLab.ru.

Задача

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

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

Большинство протоколов, таких как TCP, хорошо уживаются с задержками. Можно достигнуть высоких скоростей даже на линиях связи, в которых задержка передачи составляет несколько сотен миллисекунд. С другой стороны для интерактивных сетевых игр даже несколько десятков миллисекунд это слишком много. Здесь потеря данных становится критичной. Производительность TCP серьёзно снижается при большом количестве потерянных пакетов.

Эта статься объясняет, как определить, что пакетный фильтр стал тем узким местом в сети, которое ограничивает пропускную способность и что сделать, чтобы этого избежать.

Значение интенсивности поступления пакетов.

Общепринятая единица измерения пропускной способности сети это пропускная способность в байтах в секунду. Но она становится совершенно непригодна, когда речь идёт о пакетном фильтре. На самом деле, ограничивающим фактором здесь является не пропускная способность, в общепринятом смысле этого слова, а то, какое количество пакетов может обработать данный хост за секунду. К примеру, хост, без труда обрабатывающий полосу в 100Mbps с пакетами размером 1500 байт, может быть легко загружен полосой в 10Mbps состоящей из 40 байтных пакетов. Первая пара значений подразумевает только 8000 пакетов в секунду, в то время как вторая уже 32000, что означает увеличение нагрузки на хост приблизительно в 4 раза.

Чтобы уяснить это, давайте посмотрим, как в реальности пакеты проходят через хост. Принимаемые из сети данные сначала накапливаются в небольшом внутреннем буфере сетевого адаптера. Когда он заполняется, сетевая карта генерирует прерывание, заставляющее её драйвер скопировать пакет(ы) в сетевой буфер ядра (т.н. mbufs). Пакеты передаются стеку TCP/IP в том виде, в каком они находятся в mbufs. Когда пакет попадает в буфер ядра, большинство операций, производимых с ним, не зависят от его размера, т.к. для них имеет значение только заголовки, а не некоторая общая нагрузка. Это также верно и для пакетного фильтра, через который проходит пакет в единицу времени, и который принимает решение, заблокировать либо пропустить данный пакет. Если пакет следует перенаправить (forwarding), стек TCP/IP передаст его сетевой карте, которая, в свою очередь извлечет пакет из mbufs и передаст обратно в линию связи.

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

Некоторые из существующих ограничений основаны на программной и аппаратной части пакетного фильтра. Так, например машины класса i386, из-за особенностей своей архитектуры, не способны справиться больше чем с 10000 прерываниями в секунду, в независимости от того, насколько быстр процессор. Некоторые сетевые адаптеры генерируют прерывание на каждый принятый пакет. Значит хост начнёт терять эти пакеты уже при скорости около 10000 шт./секунду. Другие же, как большинство дорогих гигабитных адаптеров, имеют большую встроенную память под буферы, которая позволяет им выдать несколько пакетов за одно прерывание. Таким образом, выбор аппаратной части может налагать некоторые ограничения, которые не поможет преодолеть оптимизация самого пакетного фильтра.

Когда узкое место – пакетный фильтр.

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

Вот одно интересное упражнение: умышленно переведём хост в вышеописанное состояние, загружая его большим количеством правил.

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

и состояние процессора:

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

Теперь еще немного «экстрима»:

А теперь сравните показания vmstat и top.

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

Если у вас уже есть работающий набор правил и вы недоумеваете, зачем его нужно оптимизировать по скорости, повторите этот тест с вашим набором и сравните результаты с приведёнными «экстремальными» случаями. Если в работе ваш набор правил вызывает признаки повышенной загрузки, можете смело использовать нижеприведённое руководство чтобы уменьшить этот эффект.

В некоторых случаях набор правил может не оказывать заметного влияния на систему и всё будет работать так как и ожидалось, до момента, когда возникнут непредвиденные проблемы, как, например задержки при установлении соединения, «подвисания» соединений, или подозрительно низкая пропускная способность. В большинстве случаев проблема оказывается вовсе не в производительности системы фильтрации, а в неправильной конфигурации набора правил, которая приводит к потере пакетов. Глава «Проверка вашего файрвола» покажет, как обнаружить и устранить подобные проблемы.

В конечном счёте, если ваш набор правил обрабатывается не оказывая заметного влияния на производительность, и всё работает так, как и следовало, наилучшим решением в данном случае будет решение «Оставить всё как есть». Часто правила написанные с использованием прямолинейного подхода без оглядки на производительность обрабатываются достаточно быстро, не приводя к потере пакетов, а дальнейшая их ручная оптимизация приводит к ухудшению читабельности, при этом, не сильно улучшая производительность.

Фильтрация с отслеживанием состояния соединения

Работа, выполняемая пакетным фильтром, состоит из двух видов операций: обработка набора правил и выборка из таблицы состояний соединений.

Для каждого пакета сначала производится просмотр таблицы состояний. Если найдено совпадение, пакет немедленно пропускается фильтром. В противном случае пакетный фильтр начинает обрабатывать список правил фильтрации, находит последнее подходящее к данному пакету правило, и, если согласно этому правилу пакет нужно пропустить, создаёт запись в таблице состояний если для правила включена опция ‘keep state’.

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

Фильтрация с отслеживанием состояния соединения подразумевает собой использование флага «keep state» в правилах файрвола, таким образом, пакеты, подходящие под эти правила создадут новую запись в таблице состояния соединений. Последующие пакеты, относящиеся к тем же соединениям, подойдут под запись в таблице и будут пропущены автоматически, без проведения процедуры проверки правилами пакетного фильтра. При этом развитии сценария, только первый пакет в каждом соединении вызовет обсчёт его по списку правил, последующие же – только выборку из таблицы состояний.

Таким образом, в плане производительности, выборка из таблицы обходится значительно дешевле, нежели вычисление набора правил фильтра. Но эта цена возрастает с каждым новым правилом в списке: в два раза больше список правил – в два раза возрастёт объём работы. Даже проверка одним правилом вызывает сравнение многочисленных полей пакета. Таблицу же состояний можно представить в виде дерева: затраты на выборку возрастают в логарифмической прогрессии от количества записей в таблице, т.е. в два раза больший объём таблицы вызовет увеличение затрат на одну условную единицу. К тому же, для проверки по таблице необходимы только несколько значений полей пакета.

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

Вкратце, можно ассоциировать вычисление правил файрвола не с пакетом, а с соединением. Это даст коэффициент порядка 100 или более. Например, наблюдая за счётчиками:

Видно, что к пакетному фильтру происходят обращения примерно 900 раз в секунду. Я использую фильтрацию на нескольких интерфейсах, это значит, перенаправляется около 450 пакетов в секунду, каждый из которых проверяется дважды, по разу на каждом интерфейсе, через который проходит. Но просмотр правил выполняется только 35 раз в секунду, а новые записи в таблицу состояний заносятся и удаляются вообще 6 раз в секунду. С чем-чем, а с маленьких набором правил это становится достаточно важным.

Чтобы убедится в том, что в самом деле создаются записи для каждого соединения, поищите записи ‘pass’ в правилах, которые не используют опцию ‘keep state’:

Удостоверьтесь в том, что политика по умолчанию выставлена в ‘block by default’, так как в противном случае, пакеты будут пропускаться не из-за их попадания под правила ‘pass’, а из-за несоответствия ни одному правилу и попадания под политику по-умолчанию.

Оборотная сторона фильтрации с отслеживанием состояния соединения.

Единственным подводным камнем этой схемы фильтрации является то, что под каждое поле таблицы выделяется некоторый объём памяти, примерно 256 байт на каждую запись. Когда пакетный фильтр не может выделить память под новую запись, он блокирует пакет, который должен был быть внесён в таблицу и увеличвает счётчик “out of memory”. Его значение можно посмотреть командой:

Память выделяемая под записи в таблице состояний заимствуется из пула ‘pfstatepl’. Можно использовать vmstat, чтобы увидеть различные аспекты использования этого пула:

Разница между ‘Requests’ и ‘Releases’ равна количеству занятых записей в таблице состояний соединений, которая должна совпадать со значением счётчика, отображаемого командой:

Другие счётчики, выводимые через pfctl могут быть сброшены через pfctl –Fi

Не вся память установленная в системе доступна для ядра, её количество определяется архитектурой, опциями ядра, а также его версией. В OpenBSD 3.6 и ядром под i386 доступно к использованию 256Mb. Вы можете иметь 8Gb ОЗУ, а пакетный фильтр будет сообщать о невозможности выделения памяти.

Чтобы ещё больше сгустить краски, отметим, что когда пакетный фильтр доходит до состояния, когда функция ‘pool_get(9)’ возвращает ошибку, общее состояние будет ухудшаться не плавно, как бы нам этого не хотелось. Напротив, вся система становится нестабильной и, в конечном счёте, рушится. На самом деле это вина не пакетного фильтра, а общая проблема управления пулом памяти ядра.

Чтобы корректно обрабатывать подобные ситуации пакетный фильтр ограничивает количество одновременно существующих записей в таблице состояний соединений, используя функцию pool_sethardlimit(9). Количество записей можно посмотреть командой vmatat –m. Значение по умолчанию это 10000 записей, оно должно подойти любому стандартному хосту. Предельные значения выводятся на экран командой pfctl –sm:

Если вам необходимы более высокие значения, можете увеличить их изменив файл pf.conf:

set limit states 10000

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

При хорошем раскладе, если у вас есть 512Mb ОЗУ, можно использовать до 256Mb для нужд ядра, что обеспечивает обработку до 500000 записей в таблице состояний. Многие полагают, что это означает большое количество одновременных соединений. Однако представьте себе, что каждое из этих соединений генерирует один пакет каждую секунду, в таком случае получим 50000 пакетов/секунду!

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

Есть несколько путей решения этой проблемы:

Вы можете ограничить количество записей в таблице только для некоторых правил, например вот так:

Это установит количество одновременных соединений к web-серверу в 256, в то время как по остальным правилам фильтрации записи в таблицу состояний будут возможны. Таким же образом можно лимитировать количество соединений с одного удалённого хоста:

Как только появляется запись в таблице состояния соединений, несколько таймаутов задают, как скоро это соединение будет удалено из таблицы. Например:

Таймаут для не полностью установленных соединений равен 30 секундам. Значения этих таймаутов могут быть понижены для более агрессивного удаления записей из таблицы состояний. Значения могут быть выставлены в файле pf.conf:

Они также могут быть применены к отдельным правилам фильтра:

Существет несколько наборов предопределённых значений, которые могут быть выбраны в том же pf.conf:

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

Пакетный фильтр будет использовать постоянные значения таймаутов до тех пор, пока количество записей в таблице на достигнет 6000. В то время когда это количество между 6000 и 12000, значения всех таймаутов будут линейно меняться от 100%, при 6000 соединениях в таблице, до 0%, при 12000 записей в таблице, то есть соответственно при 9000 все значения таймаутов будут уменьшены на 50%.

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

Обработка правил

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

Следовательно, в первом приближении, издержки производительности при обработке набора правил возрастают с одновременно с числом правил. Это не является абсолютно точной зависимостью по причинам, с которыми нам вскоре предстоит столкнуться, однако основная концепция такова. Набор из 10000 правил почти наверняка вызовет намного большую загрузку вашего хоста, чем набор из 100. Значит первоочередная оптимизация – сокращение списка правил.

Упорядочивание списка для увеличения шага пропуска.

Первая причина, по которой обработка списка правил пакетным фильтром вызывает меньшие затраты чем просто последовательная обработка каждого правила списка, это т.н. «шаг пропуска» («skip steps»). Это прозрачная для пользователя и автоматическая оптимизация, выполняемая пакетным фильтром. Лучше объяснить её смысл на примере. Допустим у нас есть простой набор правил:

Пакет TCP приходит на интерфейс fxp0 с адресом назначения 10.2.3.4 и с каким-нибудь портом назначения, значение которого не важно. Пакетный фильтр начинает обработку набора правил с первого правила, под которое кстати этот пакет подходит. Обработка продолжается на втором правиле, для которого выполняются критерии ‘in’,’on fxp0’,’proto tcp’,’from any’, но не совпадает поле адреса назначения ’10.1.2.3’. Так как пакет не подходит под второе правило, обработка продолжается на третьем правиле.

Но пакетный фильтр «знает», что третье и четвёртое правило требуют проверки того же критерия – ‘to 10.1.2.3’, который вызвал невыполнение условия совпадения во втором правиле. Можно абсолютно точно сказать, что третье и четвёртое правила не подойдут к данному пакету, и осуществляется немедленный переход к пятому правилу, экономя таким образом некоторые вычислительные ресурсы.

А теперь представьте, что пакет, попавший под проверку был протокола UDP, а не TCP. Пакет подойдёт под первое правило, и попадёт на обработку со вторым. Здесь указан критерий проверки ‘proto tcp’, под который проверяемый пакет на подходит. А так как последующие правила также требуют проверки по этому же критерию, который вызвал несовпадение, все они могут быть пропущены, не требуя в результате дополнительных вычислений.

Вот так происходит анализ вашего списка правил пакетным фильтром. Каждое правило может содержать список критериев, таких как ‘to 10.1.2.3’, заставляя правило действовать только на пакеты с этим адресом назначения. Для каждого критерия в правиле фильтр подсчитывает количество правил, следующих непосредственно за обрабатываемым, которые используют те же критерии, что и текущее обрабатываемое. Вычисленное значение может быть как нулём (если ни одно последующее правило не использует те же критерии), так и числом вплоть до количества оставшихся правил и сохраняется в памяти для последующего использования. Значение называется «шаг пропуска», так как содержит количество правил, которые необходимо пропустить если любое из полей пакета не удовлетворяет критерию правила.

Обработка полей правила происходит в заданном порядке:

Источник

Защита сетей и firewall

С быстрым ростом интереса к Интернету и операционной системе Windows NT безопасность сети стала важной задачей для многих компаний во всем мире. Тот факт, что информация о взломе и проникновении в корпоративные сети и средства, необходимые для этого, легко и широко доступны, еще больше усиливает актуальность проблем безопасности. В связи с этим администраторы сети часто тратят гораздо больше усилий и времени на защиту сетей, чем на установку программ и администрирование. Новые средства, проверяющие сеть на присутствие слабых узлов, типа Security Administrator Tool for Analyzing Networks (SATAN), несомненно, помогают администраторам, но они лишь показывают уязвимые места сети, не обеспечивая защиты. Давайте посмотрим, от чего нужно защищаться при работе в сети, чтобы ответить на вопрос: почему вы нуждаетесь в firewall?

Проблемы безопасности при соединении с Интернетом

Когда вы подключаете вашу частную сеть к Интернету, вы физически соединяетесь более чем с 50 тыс. неизвестных сетей и всеми их пользователями. Такое соединение открывает вам путь ко многим полезным программам и обеспечивает огромные возможности разделения информации, однако большинство частных и корпоративных сетей содержит информацию, которая не должна быть доступна другим пользователям Интернета. Кроме того, не все действия пользователей Интернета являются законными. Отсюда вытекают два основных вопроса:

Как защитить конфиденциальную информацию от тех, кто не имеет права доступа к ней?

1. Как защитить сеть и ее ресурсы от злонамеренных пользователей и случайностей, которые происходят вне вашей сети?

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

Защита конфиденциальной информации

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

При защите информации от таких атак вы хотите в первую очередь предотвратить воровство, разрушение, порчу информации или введение информации извне. Кратко опишем вышеперечисленные способы взлома.

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

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

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

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

Использование промежуточного компьютера (man-in-the-middle attacks) — явное использование доступа к информации вашей сети. К примеру, это ситуация, когда пользователь, имеющий официальный доступ к информации, пытается пересылать ее во внешнюю сеть.

Защита вашей сети: поддержание внутренней целостности сети

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

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

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

Описанию идеи firewall как наиболее распространенного способа защиты сетей и информации от взлома посвящена остальная часть статьи.

Развитие firewall

Очевидно, что необходимость защиты сетей породило целое направление в компьютерной индустрии — технологию защиты сетей, которое в основном вращается вокруг идеи firewall.

Firewall — это точка разделения вашей сети и той, к которой вы подсоединены. Этой точкой может быть компьютер, на котором запущен программный firewall, или аппаратно реализованный firewall. Firewall может быть простым, как обычный маршрутизатор, фильтрующий пакеты, или сложным, сочетающим в себе функции многозадачной маршрутизации, фильтрации пакетов и программного proxy-сервера.

Первое поколение firewall (packet filtering firewalls), которое появилось в 1985 году, представляло собой первое поколение обыкновенных маршрутизаторов, включающих фильтрацию пакетов.

Второе поколение появилось в 1990-х и известно как firewall цепного уровня (circuit level firewalls).

Третье поколение — это firewall программного уровня (application layer firewall).

Четвертое поколение firewall основано на динамической фильтрации пакетов (dynamic packet filter firewalls), а первой его реализацией была программа CheckPoint, выпущенная одноименной фирмой.

Пятое поколение firewall, которое появилось в 1996 году, базируется на архитектуре kernel proxy. Сейчас этот метод тоже имеет как программные, так и аппаратные реализации.

Установление линии защиты (Security Perimeter)

Когда вы определяете тактику защиты сети, вы должны определить способ охраны сети и информации, а также пользователей от повреждения и потери данных. Тактика защиты сети основана на управлении движением пакетов и контролем использования сети. Вы должны полностью описать сеть, установить ее «узкие места» и определить действия, которые будут предприниматься при нарушении защиты. При этом вы точно оговариваете границы, в которых действует ваша защита. Эти границы и есть сеть линии защиты (perimeter networks).

Perimeter networks

Чтобы установить такую сеть защиты, вы должны определить сеть компьютеров, которые нуждаются в защите, и определить механизм их защиты. Необходимым является условие, чтобы firewall-сервер был шлюзом (gateway) между внутренними и внешними сетями. Каждая сеть может содержать сети защиты внутри себя. Различают внешние, средние и внутренние сети защиты. Внешняя защита разделяет сеть, которой вы управляете, и ту, которой вы не можете управлять. Средний уровень разделяет подсети внутри вашей сети или отделяет доступные для внешних пользователей компьютеры от тех, к которым доступ запрещен. Внутренний уровень позволяет разделять сети внутри недоступных и внешне доступных частей вашей сети.

Для дальнейшего изложения введем три понятия: Trusted networks — сети, которые вы защищаете и которыми можете управлять (внутри perimeter network); Untrusted networks — сети, которыми вы не управляете (обычно снаружи), но с которыми, тем не менее, должны обмениваться информацией; и Unknown networks — сети, про которые нельзя сказать ничего определенного, кроме того, что они существуют.

Архитектура firewall

Firewall — это шлюз сети, снабженный правилами защиты. Он может быть аппаратным или программным. В соответствии с заложенными правилами обрабатывается каждый пакет, проходящий наружу или внутрь сети, причем процедура обработки может быть задана для каждого правила. Производители программ и машин, реализующих firewall-технологии, обеспечивают различные способы задания правил и процедур. Обычно firewall создает контрольные записи, детализирующие причину и обстоятельства возникновения внештатных ситуаций. Анализируя такие контрольные записи, администраторы часто могут обнаружить источник атаки и способы ее проведения, тем самым обеспечивая себя дополнительной информацией об атаке.

Как работает фильтрация пакетов (packet filtering firewalls)

Каждый IP-пакет проверяется на совпадение заложенной в нем информации с допустимыми правилами, записанными в firewall.

Параметры, которые могут проверяться:

Из этого перечня видно, что фильтрация пакетов не имеет дела с их содержанием. Это позволяет использовать непосредственно ядро операционной системы для задания правил. В сущности, создаются два списка: отрицание (deny) и разрешение (permit). Все пакеты должны пройти проверку по всем пунктам этого списка. Далее используются следующие методы:

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

Отметим преимущества firewall, основанного на фильтрации пакетов:

Однако имеются и недостатки:

Firewall цепного уровня (circuit level firewalls)

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

Содержание таблицы следующее:

Эта информация применяется для проверки допустимости передачи цепи. Правила проверки, как и в случае фильтрации пакетов, задаются в виде таблиц в ядре.

Основные преимущества firewall цепного уровня:

Недостатки firewall цепного уровня:

Firewall программного уровня

Помимо целостности цепей, правильности адресов и портов, проверяются также сами данные, передаваемые в пакетах. Это позволяет проверять целостность данных и отслеживать передачу таких сведений, как пароли. Вместе с firewall программного уровня используется proxy-сервис, который кэширует информацию для более быстрой ее обработки. При этом возникают такие новые возможности, как, например, фильтрация URL и установление подлинности пользователей. Все соединения внутренней сети с внешним миром происходят через proxy, который является шлюзом. У proxy две части: сервер и клиент. Сервер принимает запросы, например на telnet-соединение из внутренней сети с внешней, обрабатывает их, то есть проверяет на допустимость передачи данных, а клиент работает с внешним компьютером от имени реального клиента. Естественно, вначале все пакеты проходят проверку на нижних уровнях.

Динамическая фильтрация пакетов (dynamic packet filter firewalls)

В основном этот уровень повторяет предыдущий, за двумя важными исключениями:

Уровень kernel proxy

Уровень kernel proxy возник достаточно недавно. Основная его идея — попытка поместить описанный выше алгоритм firewall программного уровня в ядро операционной системы, что избавляет компьютер от лишних затрат времени на передачу данных между ядром и программой proxy. Это повышает производительность и позволяет производить более полную проверку проходящей информации. Я не буду подробно останавливаться на этом методе, так как на данный момент разные фирмы реализуют его несколько по-разному и нет общепринятой концепции.

Кратко о реализациях firewall

Как уже было сказано, firewall может быть реализован как программно, так и аппаратно. Аппаратная реализация представляет собой некий специализированный компьютер, единственной функцией которого является работа в качестве firewall. Причем эта программа зашита в его железо. Это позволяет добиваться большой производительности. Одной из ведущих фирм, производящих такие компьютеры, является Cisco (серия Cisco Access Servers). Программная реализация — это просто программа, которая исполняется на компьютере-шлюзе и выполняет описанные выше функции (например, LanGuard, Cisco IOS Software, Checkpoint). Очевидно, что для работы такой программы необходим достаточно мощный компьютер с большим объемом памяти, причем неразумно сильно загружать этот компьютер другой работой. Для примера приведу краткое описание программы LanGuard, которая имеет один из самых высоких рейтингов.

Программа написана под Windows NT и работает по четвертому, описанному выше уровню. Она бесплатна ограниченное время, после чего позволяет работать, если сеть состоит не более чем из пяти компьютеров. Программа выполняет следующие функции:

Ниже на рисунках представлено несколько экранов, наглядно демонстрирующих LanGuard.

В заключение скажем, что сейчас firewall де-факто является стандартом защиты сетей. Более того, он входит в состав многих операционных систем семейства UNIX. Ежегодно проводятся форумы, посвященные firewall, постоянно совершенствуются имеющиеся и создаются новые программы, реализующие firewall. Сейчас firewall существует для всех известных платформ. Большинство фирм сегодня предлагают самый последний, пятый уровень firewall, обеспечивающий работу proxy на уровне ядра операционной системы.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *