NPF IN BSD Докладчик: Анастасия Антонова.. NPF – новый пакетный фильтр в NetBSD NPF – новый пакетный фильтр в NetBSD Разработан в рамках проекта NetBSD.

Презентация:



Advertisements
Похожие презентации
Презентация на тему «Функциональные возможности межсетевых экранов» Подготовил студент Группа БПЗ1101 Лукашенко Роман.
Advertisements

Брандмауэр Информационные Технологии. Введение В повседневной жизни информация имеет стоимость, как материальную, так и моральную, поэтому её защита имеет.
Smart-Soft Traffic Inspector. Основные возможности Traffic Inspector: комплексное решение для подключения сети или персонального компьютера к сети Интернет.
Рассматриваемые темы Введение в кластеринг Кластеринг Stateless session beans Кластеринг Stateful session beans Конфигурация кластеринга 2-1.
К построению и контролю соблюдения политик безопасности распределенных компьютерных систем на основе механизмов доверия А. А. Иткес В. Б. Савкин Институт.
Межсетевой экран Межсетевой экран (англ. -firewall; нем. - Brandmauer) – средство разграничения доступа клиентов из одного множества систем к информации,
Курсовая работа по дисциплине программно-аппаратная защита информации на тему: «Межсетевые экраны в Linux» Выполнил студент группы 3881 Грошев Тимофей.
Интернет Контроль Сервер Интернет Контроль Сервер (ИКС) - это готовый программный Интернет шлюз с огромным набором функций для решения всех задач взаимодействия.
AJAX Выполнила: студентка группы ПИ-311 Газизова Влада.
1 Современные системы программирования. Часть 2. Системное и прикладное программное обеспечение Малышенко Владислав Викторович.
Системные механизмы Windows. Системные механизмы диспетчеризация ловушек, в т.ч. прерываний, DPC (deferred procedure call), APC (asynchronous procedure.
Средства обнаружения атак. Архитектура систем обнаружения атак Модуль слежения Модуль управления Системы на базе узла Системы на базе сегмента.
Обзор операционных систем ВОУНБ им. М. Горького «Операционная система - это совокупность программ, обеспечивающих управление процессом обработки информации.
Web-узлы. Разработка и администрирование.. Часть 1. Web-технология.
Архитектура операционных систем. Архитектура ОС Состав модулей (компонент) ОС Структура связей между отдельными модулями ОС Принципы взаимодействия модулей.
Архитектура операционной системы. Ядро и вспомогательные модули операционной системы При функциональной декомпозиции ОС модули разделяются на две группы:
Архитектура операционных систем Семестр 2, Лекция 1.
Kaspersky Anti-Hacker 1.8 Обзор продукта Глумов Юрий, Менеджер по развитию продуктов.
Сетевые службы Для конечного пользователя сеть это не компьютеры, кабели и концентраторы и даже не информационные потоки, для него сеть это, прежде всего,
Информатика в школе Операционная система. Графический интерфейс. Программное обеспечение.
Транксрипт:

NPF IN BSD Докладчик: Анастасия Антонова.

NPF – новый пакетный фильтр в NetBSD NPF – новый пакетный фильтр в NetBSD Разработан в рамках проекта NetBSD Миндаугасом Расюкевичиусом. В репозиторий NetBSD код NPF вошел 22 августа 2010 года. Первым релизом NetBSD со входящим в поставку NPF является версия 6.0

Основные функции Сетевого фильтра: Отслеживать состояния активных соединений Отслеживать состояния активных соединений Не пропускать (фильтровать) пакеты, не подходящие под критерии, определённые в конфигурации. Не пропускать (фильтровать) пакеты, не подходящие под критерии, определённые в конфигурации. Не пропускать пакеты, не удовлетворяющие логике и алгоритмам работы соответствующих протоколов и приложений Не пропускать пакеты, не удовлетворяющие логике и алгоритмам работы соответствующих протоколов и приложений Бороться с различными видами DOS-атак Бороться с различными видами DOS-атак NAT(Network Address Translation) – динамическая замена серых адресов или портов на внешние. NAT(Network Address Translation) – динамическая замена серых адресов или портов на внешние.

В рамках проекта NetBSD существуют следующие пакетные фильтры: Firewall Версии NetBSD РазработчикЛицензия IPF (IP Filter) NetBSD v 1.0-v2.1 Darren Reed IpfilterLicense PF (Packet Filter) NetBSD v 3.0-v5.1 OpenBSDBSDLicense NPF(New Packet Filter) NetBSD v 6.0 NetBSDBSDLicense

Этапы разработки: (netbsd.org)

Revision 1.1 Mon Aug 22 20:56: (6 months, 1 week ago) by rmind (Mindaugas Rasiukevicius) Написан NPF – новый пакетный фильтр. Некоторые особенности: поддержка обработки пакетов в многопоточном режиме и минимизация блокировок в коде(MP-safe). NPF отлично масштабируется на многопроцессорных системах, в отличие от PF, в котором используется однопоточный режим работы. (new!) поддержка обработки пакетов в многопоточном режиме и минимизация блокировок в коде(MP-safe). NPF отлично масштабируется на многопроцессорных системах, в отличие от PF, в котором используется однопоточный режим работы. (new!)

Revision 1.1 Mon Aug 22 20:56: (6 months, 1 week ago) by rmind (Mindaugas Rasiukevicius) Написан NPF – новый пакетный фильтр. Некоторые особенности: Использование эффективных хэш-таблиц и красно-черных деревьев для ускорения выборки элементов. (new!) Использование эффективных хэш-таблиц и красно-черных деревьев для ускорения выборки элементов. (new!)

Revision 1.1 Mon Aug 22 20:56: (6 months, 1 week ago) by rmind (Mindaugas Rasiukevicius) Написан NPF – новый пакетный фильтр. Некоторые особенности: Поддержка нескольких режимов трансляции адресов, включая NAPT (Network Address Port Translation, несколько внутренних адресов могут быть привязаны к одному реальному IP с разделением по номеру порта) и ALG (Application-Level Gateway, учет особенностей прикладных протоколов при организации трансляции адресов, например, позволяет работать через NAT ftp, p2p, h.323, sip и т.п.) Поддержка нескольких режимов трансляции адресов, включая NAPT (Network Address Port Translation, несколько внутренних адресов могут быть привязаны к одному реальному IP с разделением по номеру порта) и ALG (Application-Level Gateway, учет особенностей прикладных протоколов при организации трансляции адресов, например, позволяет работать через NAT ftp, p2p, h.323, sip и т.п.)

Revision 1.1 Mon Aug 22 20:56: (6 months, 1 week ago) by rmind (Mindaugas Rasiukevicius) Написан NPF – новый пакетный фильтр. Некоторые особенности: Поддержка фильтрации с учетом состояния TCP-соединений; Поддержка фильтрации с учетом состояния TCP-соединений;

Revision 1.1 Mon Aug 22 20:56: (6 months, 1 week ago) by rmind (Mindaugas Rasiukevicius) Написан NPF – новый пакетный фильтр. Некоторые особенности: Модульность и расширяемость: функции NPF могут расширяться через загрузку дополнительных модулей. Для создания модулей и расширений подготовлен специальный API. В заданных пользователем правилах фильтрации могут быть встроены обращения к внешним модулям (new!) Модульность и расширяемость: функции NPF могут расширяться через загрузку дополнительных модулей. Для создания модулей и расширений подготовлен специальный API. В заданных пользователем правилах фильтрации могут быть встроены обращения к внешним модулям (new!)

Revision 1.1 Mon Aug 22 20:56: (6 months, 1 week ago) by rmind (Mindaugas Rasiukevicius) Написан NPF – новый пакетный фильтр. Некоторые особенности: Механизм контроля пакетов "N-Code processor" - основан на идеях, реализованных в интерфейсе BPF : попадание пакетов под правила обеспечивается через формирование набора RISC-подобных инструкций и CISC-подобных команд для выполнения типовых операций (например, проверка IPv4-адреса). (new!) Механизм контроля пакетов "N-Code processor" - основан на идеях, реализованных в интерфейсе BPF : попадание пакетов под правила обеспечивается через формирование набора RISC-подобных инструкций и CISC-подобных команд для выполнения типовых операций (например, проверка IPv4-адреса). (new!)

Revision 1.1 Mon Aug 22 20:56: (6 months, 1 week ago) by rmind (Mindaugas Rasiukevicius) Написан NPF – новый пакетный фильтр. Некоторые особенности: Привычный, для пользователей PF и IP Filter, синтаксис файла конфигурации и типовой набор утилит; Привычный, для пользователей PF и IP Filter, синтаксис файла конфигурации и типовой набор утилит;

Revision 1.3 Thu Sep 16 06:53: (5 months ago 1 week ago) by rmind Добавлена поддержка двунаправленного NAT и форвардинг портов. Добавлена поддержка двунаправленного NAT и форвардинг портов. Фильтрация по ICMP type/code и фильтрация по флагам TCP Фильтрация по ICMP type/code и фильтрация по флагам TCP Выборочное блокирования ICMP и TCP RST пакетов; Выборочное блокирования ICMP и TCP RST пакетов; Исправлена куча ошибок, код приведен в красивый вид Исправлена куча ошибок, код приведен в красивый вид

Revision 1.4 Thu Nov 11 07:30: (3 months, 2 week ago) by rmind (Mindaugas Rasiukevicius) Добавлен правильный механизм TCP-отслеживания, описанный в статье Guido van Rooij, плюс handle TCP Window Scaling option. Добавлен правильный механизм TCP-отслеживания, описанный в статье Guido van Rooij, плюс handle TCP Window Scaling option. Полностью исправлен npf_cache_t, уменьшена зернистость, упрощен код Полностью исправлен npf_cache_t, уменьшена зернистость, упрощен код Добавлена абстракция npf_addr_t as, изменен код обработки сессий, так же как код NAT. Теперь все готово для поддержки IPv6!!!! :) Добавлена абстракция npf_addr_t as, изменен код обработки сессий, так же как код NAT. Теперь все готово для поддержки IPv6!!!! :)

Revision 1.4 Thu Nov 11 07:30: (3 months, 2 week ago) by rmind (Mindaugas Rasiukevicius) Поддержка пересборки IPv4 пакетов. Поддержка пересборки IPv4 пакетов. Поддержка IPv4 ID randomization and minimum TTL enforcement. Поддержка IPv4 ID randomization and minimum TTL enforcement. Поддержка TCP MSS(Maximal Segment Size) "clamping". Поддержка TCP MSS(Maximal Segment Size) "clamping". Random bits for IPv6. Различные изправления и приведение в порядок кода. Random bits for IPv6. Различные изправления и приведение в порядок кода.

Revision 1.5 Sat Dec 18 02:07: (2 months, 1 week ago) by rmind (Mindaugas Rasiukevicius) Добавлено сохранение/восстановление сессий Добавлено сохранение/восстановление сессий Ведение лога пакетов, настраиваемого через систему фильтров. (tcpdump и pseudo-interface) Ведение лога пакетов, настраиваемого через систему фильтров. (tcpdump и pseudo-interface) Перезагрузка без потери сессий; Перезагрузка без потери сессий; Пересмотрен механизм контроля сессий Пересмотрен механизм контроля сессий Добавлены некоторые счетчики для статистики, использующие percpu(9) Добавлены некоторые счетчики для статистики, использующие percpu(9) Добавлена возможность очистки флаговых полей в заголовках IP- пакетов Добавлена возможность очистки флаговых полей в заголовках IP- пакетов Пофиксены различные баги Пофиксены различные баги

Revision 1.6 Tue Jan 18 21:33: (5 weeks, 5 days ago) by rmind (Mindaugas Rasiukevicius) Добавлена концепция концепция процедуры правил: отдельная нормализация, логирование и возможность использования других функций из rule structure. Процедура правил может быть распространена среди всех правил. Разделение происходит как на уровне ядра(npf_rproc_t), так и на уровне конфигураций ("procedure" + "apply"). Добавлена концепция концепция процедуры правил: отдельная нормализация, логирование и возможность использования других функций из rule structure. Процедура правил может быть распространена среди всех правил. Разделение происходит как на уровне ядра(npf_rproc_t), так и на уровне конфигураций ("procedure" + "apply").

Revision 1.6 Tue Jan 18 21:33: (5 weeks, 5 days ago) by rmind (Mindaugas Rasiukevicius) Fix portmap sharing for NAT policy. Fix portmap sharing for NAT policy. Обновлена логика отслеживания(tracking) состояния TCP Обновлена логика отслеживания(tracking) состояния TCP Добавлено if_byindex(). Используется в логировании для поиска. Добавлено if_byindex(). Используется в логировании для поиска. Исправлено traceroute ALG, и многие другие ошибки Исправлено traceroute ALG, и многие другие ошибки

Revision 1.7 Wed Feb 2 03:20: (3 weeks, 5 days ago) by rmind (Mindaugas Rasiukevicius) Добавлена libnpf(3) - библиотека для контроля NPF(Конфигурация, набор правил и др.) Добавлена libnpf(3) - библиотека для контроля NPF(Конфигурация, набор правил и др.) Добавлена поддержка NPF для ftp-proxy Добавлена поддержка NPF для ftp-proxy Добавлен скрипт rc.d для NPF Добавлен скрипт rc.d для NPF Конвертирована npfctl(8) для использования libnpf(3), и это сделало ее менее гнетущей. Конвертирована npfctl(8) для использования libnpf(3), и это сделало ее менее гнетущей. Добавлено больше документаций Добавлено больше документаций Различные исправления Различные исправления

Главные отличия от предыдущих NetBSD- файрволов: Умеет использовать все доступные ядра/процессоры Умеет использовать все доступные ядра/процессоры Не просто проходит по наборам правил, но компилирует их в специальный псевдокод Не просто проходит по наборам правил, но компилирует их в специальный псевдокод Расширяем и масштабируем на мультироцессорных системах Расширяем и масштабируем на мультироцессорных системах

Основные черты NPF: Поддержка FTP proxy Поддержка FTP proxy Механизм блокировки пакетов ICMP и TCP RST Механизм блокировки пакетов ICMP и TCP RST Сохранение/восстановление текущего соединения Сохранение/восстановление текущего соединения Логирование пакетов, конфигурируемые правила фильтрации пакетов. Логирование пакетов, конфигурируемые правила фильтрации пакетов. высокая производительность на многопроцессорных системах; высокая производительность на многопроцессорных системах; быстрый поиск по хэш-таблице и красно-черному дереву; быстрый поиск по хэш-таблице и красно-черному дереву; поддержка NAPT (Network Address Port Translation) и ALG (Application-Level Gateways), например, для traceroute; поддержка NAPT (Network Address Port Translation) и ALG (Application-Level Gateways), например, для traceroute; обработчик N-Code обработчик N-Code привычный синтаксис конфигурации и инструментов; привычный синтаксис конфигурации и инструментов; модульность и расширяемость модульность и расширяемость IP header flags cleansing IP header flags cleansing

Обработчик N-Code Движок обработки пакетов, созданный под вдохновением от BPF (Berkeley Packet Filter): Движок обработки пакетов, созданный под вдохновением от BPF (Berkeley Packet Filter): Его можно программировать на отбор пакетов с использованием общих инструкций в стиле RISC и некоторых инструкций, подобных CISC, для таких распространенных шаблонов, как IP-адрес; Его можно программировать на отбор пакетов с использованием общих инструкций в стиле RISC и некоторых инструкций, подобных CISC, для таких распространенных шаблонов, как IP-адрес;

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

NPF Пакетный фильтр Конфигурационная утилита npfctl Конфигурационная утилита npfctl

Пакетный фильтр Располагается в ядре ОС и осуществляет обработку пакетов. Располагается в ядре ОС и осуществляет обработку пакетов. Фильтр полностью работает в контексте ядра ОС, взаимодействие с ним осуществляется через системный ioctl. Поэтому pfctl, строго говоря, не является необходимой частью PF. Фильтр полностью работает в контексте ядра ОС, взаимодействие с ним осуществляется через системный ioctl. Поэтому pfctl, строго говоря, не является необходимой частью PF.

Возможности фильтрации Сетевой адрес(для TCP и UDP также и порт) источника и получателя пакета Сетевой адрес(для TCP и UDP также и порт) источника и получателя пакета Сетевой интерфейс(или их группа), на котором обрабатывается пакет, а так же на котором он появился в системе Сетевой интерфейс(или их группа), на котором обрабатывается пакет, а так же на котором он появился в системе Корректность маршрута, с которого пришел пакет(Да или Нет) Корректность маршрута, с которого пришел пакет(Да или Нет) Флаги(для TCP) Флаги(для TCP) Биты типа обслуживания(ToS) Биты типа обслуживания(ToS) Тип и код ICMP Тип и код ICMP Теги пакетов Теги пакетов Локальный пользователь(владелец сокета) Локальный пользователь(владелец сокета) Различные счетчики соединений Различные счетчики соединений Вероятность Вероятность

Правила обработки пакетов бывают: 1. match Если пакет удовлетворяет условиям правила, то указания из данного правила выполняются моментально. match-правила обычно используются для NAT, журналирования трафика, QoS и так далее. 2. block Если пакет удовлетворяет условиям правила, то он помечается как подлежащий блокировке. 3. pass Если пакет удовлетворяет условиям правила, то он помечается как подлежащий пропуску далее.

Утилита pfctl Предоставляет интерфейс для управления межсетевым экраном Предоставляет интерфейс для управления межсетевым экраном Имеет привычный синтаксис конфигурации, схожий с PF. Имеет привычный синтаксис конфигурации, схожий с PF. Использует файлы по умолчанию: Использует файлы по умолчанию: /dev/npf - устройство управления /etc/npf.conf - конфигурационный файл по умолчанию

Команды утилиты npfctl: startВключает обработку пакетов, используя текущую загруженную конфигурацию, или другую. startВключает обработку пакетов, используя текущую загруженную конфигурацию, или другую. stopОтключает обработку пакетов. Эта команда не изменяет текущую конфигурацию утилиты и существующие сессии. stopОтключает обработку пакетов. Эта команда не изменяет текущую конфигурацию утилиты и существующие сессии. reload [path]Загружает или обновляет конфигурацию из файла. В случае, если конфигурационный файл не определен в path, будет использоваться по умолчанию файл /etc/npf.conf. Все текущие сессии будут сохранены во время загрузки, за исключением тех, которые могут потерять NAT во время обновления. Политика NAT определяется типом трансляции и адресом. Следует обратить внимание, что изменение критерия фильтрации не влияет на соответствующие подключения. Операция reload (т.е. изменение набора правил, политики NAT и таблиц) является атомарной. reload [path]Загружает или обновляет конфигурацию из файла. В случае, если конфигурационный файл не определен в path, будет использоваться по умолчанию файл /etc/npf.conf. Все текущие сессии будут сохранены во время загрузки, за исключением тех, которые могут потерять NAT во время обновления. Политика NAT определяется типом трансляции и адресом. Следует обратить внимание, что изменение критерия фильтрации не влияет на соответствующие подключения. Операция reload (т.е. изменение набора правил, политики NAT и таблиц) является атомарной. flushОчистить конфигурацию. Удаляет все правила, таблицы, и завершает все сессии. Эта команда не отключает обработку пакетов. flushОчистить конфигурацию. Удаляет все правила, таблицы, и завершает все сессии. Эта команда не отключает обработку пакетов. table tidВыводит все записи в текущей загруженной таблице, определенной tid. Выводит ошибку, если tid не существует. table tidВыводит все записи в текущей загруженной таблице, определенной tid. Выводит ошибку, если tid не существует. table tid Запрашивает таблицу tid для конкретного IPv4 CIDR, определенного в addr/mask table tid Запрашивает таблицу tid для конкретного IPv4 CIDR, определенного в addr/mask table tid [add | rem] table tid [add | rem] Добавляет или удаляет IPv4 CIDR, определенный в Добавляет или удаляет IPv4 CIDR, определенный в sess-saveСохраняет все активные сессии. Информация будет записана в файл /var/db/npf_sessions.db. Администратор может захотеть остановить обработку пакетов до закрытия сессии. sess-saveСохраняет все активные сессии. Информация будет записана в файл /var/db/npf_sessions.db. Администратор может захотеть остановить обработку пакетов до закрытия сессии. sess-loadЗагружает из файла сохраненные сессии. Стоит отметить, что конфигурация по умолчанию должна быть загружена до того как новая сессия. В случае изменения политики NAT, сессия, потерявшая соответствующую политику, загружена не будет. Любые существующие сессии будут закрыты в результате денной команды. Администратор может возобновить обработку пакетов после загрузки новой сесии. sess-loadЗагружает из файла сохраненные сессии. Стоит отметить, что конфигурация по умолчанию должна быть загружена до того как новая сессия. В случае изменения политики NAT, сессия, потерявшая соответствующую политику, загружена не будет. Любые существующие сессии будут закрыты в результате денной команды. Администратор может возобновить обработку пакетов после загрузки новой сесии. statsВыводит различные статистики. statsВыводит различные статистики.

Пример конфигурационного файла:

Недостатки NPF: В NPF еще не реализована поддержка IPv6. В NPF еще не реализована поддержка IPv6. Разработчик ищет помощников и готов предоставить им техническую поддержку по реализации IPv6 в NPF.

Спасибо за внимание! Спасибо за внимание!