нфтаблес пакетни филтер 0.9.1 издање

После годину дана развоја представљени ослобађање пакетног филтера нфтаблес 0.9.1, који се развија као замена за иптаблес, ип6табле, арптаблес и ебтаблес обједињавањем интерфејса за филтрирање пакета за ИПв4, ИПв6, АРП и мрежне мостове. Пакет нфтаблес укључује компоненте филтера пакета које се покрећу у корисничком простору, док рад на нивоу кернела обезбеђује подсистем нф_таблес, који је део Линук кернела од издања 3.13.

Ниво кернела обезбеђује само генерички интерфејс независан од протокола који обезбеђује основне функције за издвајање података из пакета, извођење операција са подацима и контролу тока.
Сама логика филтрирања и руковаоци специфични за протокол се компајлирају у бајткод у корисничком простору, након чега се овај бајт код учитава у језгро помоћу Нетлинк интерфејса и извршава у специјалној виртуелној машини која подсећа на БПФ (Беркелеи Пацкет Филтерс). Овај приступ вам омогућава да значајно смањите величину кода за филтрирање који ради на нивоу кернела и преместите све функције рашчлањивања правила и логике за рад са протоколима у кориснички простор.

Главне иновације:

  • Подршка за ИПсец, омогућавајући подударање адреса тунела на основу пакета, ИД-а ИПсец захтева и СПИ (Индекс безбедносних параметара) ознаке. На пример,

    ... ипсец у ип саддр 192.168.1.0/24
    ... ипсец у спи 1-65536

    Такође је могуће проверити да ли рута пролази кроз ИПсец тунел. На пример, да блокирате саобраћај не преко ИПСец-а:

    … излаз филтера рт ипсец недостаје пад

  • Подршка за ИГМП (Интернет Гроуп Манагемент Протоцол). На пример, можете користити правило да одбаците долазне захтеве за чланство у ИГМП групи

    нфт адд правило нетдев фоо бар игмп тип мемберсхип-куери цоунтер дроп

  • Могућност коришћења променљивих за дефинисање прелазних ланаца (скок / прелазак). На пример:

    дефинисати дест = бер
    додај правило ип фоо бар скок $дест

  • Подршка за маске за идентификацију оперативних система (ОС Фингерпринт) на основу ТТЛ вредности у заглављу. На пример, да бисте означили пакете на основу ОС пошиљаоца, можете користити команду:

    ... мета ознака сет осф ттл прескочи мапу имена { "Линук" : 0к1,
    "Виндовс": 0к2,
    „МацОС“: 0к3,
    "непознато" : 0к0 }
    ... осф ттл прескочи верзију "Линук:4.20"

  • Могућност подударања АРП адресе пошиљаоца и ИПв4 адресе циљног система. На пример, да бисте повећали бројач АРП пакета послатих са адресе 192.168.2.1, можете користити следеће правило:

    сто арп к {
    ланац и {
    тип филтер кука улазни приоритетни филтер; политика прихватити;
    арп саддр ип 192.168.2.1 бројач пакета 1 бајт 46
    }
    }

  • Подршка за транспарентно прослеђивање захтева преко проксија (тпроки). На пример, да преусмерите позиве на порт 80 на прокси порт 8080:

    табела ип к {
    ланац и {
    тип филтер кука прероутинг приоритет -150; политика прихватити;
    тцп дпорт 80 тпроки на :8080
    }
    }

  • Подршка за означавање сокета са могућношћу даљег добијања постављене ознаке преко сетсоцкопт() у СО_МАРК режиму. На пример:

    табела инет к {
    ланац и {
    тип филтер кука прероутинг приоритет -150; политика прихватити;
    тцп дпорт 8080 марк сет соцкет марк
    }
    }

  • Подршка за одређивање приоритетних текстуалних имена за ланце. На пример:

    нфт адд цхаин ип к рав { типе филтер хоок прероутинг приорити рав; }
    нфт адд цхаин ип к филтер { типе филтер хоок прероутинг приорити филтер; }
    нфт адд цхаин ип к филтер_латер { типе филтер хоок прероутинг приорити филтер + 10; }

  • Подршка за СЕЛинук ознаке (Сецмарк). На пример, да бисте дефинисали ознаку "ссхтаг" у СЕЛинук контексту, можете покренути:

    нфт адд сецмарк инет филтер ссхтаг "систем_у:објецт_р:ссх_сервер_пацкет_т:с0"

    И онда користите ову ознаку у правилима:

    нфт адд правило инет филтер инпут тцп дпорт 22 мета сецмарк сет “ссхтаг”

    нфт адд мап инет филтер сецмаппинг { типе инет_сервице : сецмарк; }
    нфт адд елемент инет филтер сецмаппинг { 22 : "ссхтаг" }
    нфт адд правило инет филтер инпут мета сецмарк сет тцп дпорт мап @сецмаппинг

  • Могућност специфицирања портова додељених протоколима у текстуалном облику, онако како су дефинисани у датотеци /етц/сервицес. На пример:

    нфт додај правило ки тцп дпорт "ссх"
    нфт листа правила сет -л
    табела к {
    ланац и {
    ...
    тцп дпорт "ссх"
    }
    }

  • Могућност провере типа мрежног интерфејса. На пример:

    додај правило инет рав прероутинг мета иифкинд "врф" прихвати

  • Побољшана подршка за динамичко ажурирање садржаја скупова експлицитним навођењем „динамичке“ заставице. На пример, да ажурирате скуп "с" да додате изворну адресу и ресетујете унос ако нема пакета 30 секунди:

    додати табелу х
    адд сет кс { типе ипв4_аддр; величина 128; тимеоут 30с; флагс динамиц; }
    додај ланац ки { тип филтер кука приоритет уноса 0; }
    додај правило ки ажурирање @с { ип саддр }

  • Могућност постављања посебног услова временског ограничења. На пример, да бисте заменили подразумевано временско ограничење за пакете који стигну на порт 8888, можете одредити:

    табела ип филтер {
    цт тимеоут агресивно-тцп {
    протокол тцп;
    л3прото ип;
    политика = {установљено: 100, затварање_чекања: 4, затварање: 4}
    }
    ланчани излаз {
    ...
    тцп дпорт 8888 цт тимеоут сет "аггрессиве-тцп"
    }
    }

  • НАТ подршка за инет породицу:

    табела инет нат {
    ...
    ип6 тата мртав::2::1 днат до мртав:2::99
    }

  • Побољшано извештавање о грешкама у куцању:

    нфт адд тест филтер филтера

    Грешка: нема такве датотеке или директоријума; да ли сте мислили „филтер“ табеле у породичном ИП-у?
    додајте тест филтера ланца
    ^^^^^^

  • Могућност специфицирања имена интерфејса у сетовима:

    сет сц {
    укуцајте инет_сервице . ифнаме
    елементи = { "ссх" . "етх0" }
    }

  • Ажурирана синтакса правила протока:

    нфт додати табелу к
    нфт адд фловтабле к фт { хоок ингресс приорити 0; уређаји = { етх0, влан0 }; }
    ...
    нфт адд руле к форвард ип протокол { тцп, удп } флов адд @фт

  • Побољшана подршка за ЈСОН.

Извор: опеннет.ру

Додај коментар