После годину дана развоја
Ниво кернела обезбеђује само генерички интерфејс независан од протокола који обезбеђује основне функције за издвајање података из пакета, извођење операција са подацима и контролу тока.
Сама логика филтрирања и руковаоци специфични за протокол се компајлирају у бајткод у корисничком простору, након чега се овај бајт код учитава у језгро помоћу Нетлинк интерфејса и извршава у специјалној виртуелној машини која подсећа на БПФ (Беркелеи Пацкет Филтерс). Овај приступ вам омогућава да значајно смањите величину кода за филтрирање који ради на нивоу кернела и преместите све функције рашчлањивања правила и логике за рад са протоколима у кориснички простор.
Главне иновације:
- Подршка за ИПсец, омогућавајући подударање адреса тунела на основу пакета, ИД-а ИПсец захтева и СПИ (Индекс безбедносних параметара) ознаке. На пример,
... ипсец у ип саддр 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 }; }
...
нфт адд руле к форвард ип протокол { тцп, удп } флов адд @фт - Побољшана подршка за ЈСОН.
Извор: опеннет.ру