nftables: уставіць правіла дазволу VPN перад ідэнтыфікатарам скіду
У nftables каманды insert і add ставяць правіла з процілеглых бакоў ідэнтыфікатара. Знайдзіце скід, выберыце бок, затым праверце файл перад змяненнем набору правіл.
Пастаўце правіла дазволу ў няправільнае месца — і яно паводзіць сябе як адсутнае правіла. У nftables выбар паміж insert і add вызначае, з якога боку ад праіндэксаванага правіла апынецца новы сказ, а ідэнтыфікатар называе правіла ў жывым наборы правіл, а не нумар радка. Памыліцеся з размяшчэннем — і пакет дасягне скіду першым.
Параўнанне ніжэй выкарыстоўвае аднаго фіксаванага партнёра і адзін абмен знешняга слухача. Яно наўмысна вузкае; замена ўсяго ланцуга — гэта іншае змяненне з іншым профілем рызыкі.
Два размяшчэнні, два розныя вынікі
insert ставіць правіла перад праіндэксаваным правілам. add ставіць яго пасля. Калі праіндэксаванае правіла з’яўляецца канчатковым скідам для патоку, гэтыя дзве каманды даюць процілеглыя вынікі, нават калі тэкст правіла ідэнтычны.
Пропуск месцазнаходжання мае свае прадвызначаныя паводзіны, што з’яўляецца яшчэ адной прычынай не капіяваць каманду з форуму, не прачытаўшы, да чаго яна прывязана. Прывяза — гэта ўсё рашэнне. Запішыце меркаваны бок перад уводам каманды. insert і add адрозніваюцца адным словам у файле.
Размяшчэнне адносна правіла ў пэўным ланцугу. Перанос таго ж сказа ў іншы ланцуг або іншы прыярытэт hook змяняе тое, якія пакеты ён бачыць, нават калі сінтаксіс правіла выглядае правільным.
Ідэнтыфікатар пазначае правіла, а не нумар радка
Ідэнтыфікатар, напрыклад 42, — гэта ідэнтыфікатар у бягучым стане набору правіл. Гэта не сорак другое правіла, і ён не стабільны паміж хастамі, перабудовамі або мэнэджарам, які перазагружае сваю канфігурацыю.
Знайдзіце ланцуг і фактычны канчатковы скід перад выбарам прывязкі. Затым пацвердзіце ідэнтыфікатар на гэтым правіле ў тым жа спісе, які паказвае скід, каб нумар і правіла чыталіся разам. Ідэнтыфікатар, прачытаны са старога спісу, можа ўжо належаць іншаму правілу. Перачытайце яго ў сеансе, які ўжыве змяненне.
iptables --version
nft -a list ruleset
Версія iptables паведамляе, які бэкэнд выкарыстоўваецца. Набор правіл iptables-nft і незалежна кіраваная ўласная табліца могуць суіснаваць, таму спіс з аднаго фронтэнда не з’яўляецца аўтаматычна поўнай карцінай фільтравання. Праверце абодва прадстаўленні перад выбарам ланцуга.
Знайдзіце ланцуг і правіла, якое сапраўды скідае
Прачытайце hook уваходу, прыярытэт ланцуга і правіла, якое адхіляе гэты паток слухача. Табліца inet можа несці абедзве сямействы адрасоў, але асобнае правіла ўсё яшчэ можа адпавядаць толькі IPv4.
Вазьміце аднаго ўзгодненага партнёра, выкарыстоўваючы 198.51.100.25 з дыяпазону дакументацыі як прыклад. Правераны ўласны файл можа змясціць знешні дазвол перад ідэнтыфікатарам 42:
insert rule inet filter input handle 42 iifname "eth0" ip saddr 198.51.100.25 udp dport { 500, 4500 } counter accept
Замяніце сямейства, табліцу, ланцуг, ідэнтыфікатар, уваходны інтэрфейс і партнёра пасля праверкі. Прыклад выкарыстоўвае форму размяшчэння па ідэнтыфікатары, дакументаваную для nft 1.0.9, і яна належыць уваходнаму файлу; цытаванне дужак — асобная справа, калі каманда ўводзіцца інтэрактыўна.
Трымайце ўладальніка канфігурацыі ясным. Мэнэджар, які перабудоўвае свае правілы, можа перазапісаць змяненне часу выканання, а загрузны скрыпт, які жорстка кадуе састарэлы ідэнтыфікатар, альбо не спрацуе, альбо далучыцца да няправільнага правіла.
Дазвол абмежаваны, скід канчатковы
Вердыкт дазволу спыняе ацэнку ў бягучым шляху, але пазнейшы прыдатны базавы ланцуг усё яшчэ можа скінуць пакет. Вердыкт скіду канчатковы. Таму лічыльнік дазволаў, які расце, не з’яўляецца доказам паспяховасці патоку.
Праверце ўсе адпаведныя прыярытэты hook, а не адзін ланцуг асобна. Пакет можа прайсці ўваходны фільтр і ўсё ж быць адхілены hook іншай табліцы з іншым прыярытэтам. Пералічыце кожны базавы ланцуг, які бачыць паток.
Гэтае правіла ахоплівае толькі абмен знешняга слухача. ESP з транспартным інкапсуляваннем, уласны ESP, партнёры IPv6 і расшыфраваны трафік унутры тунэля — усё гэта патрабуе ўласных палітык. Гэта не поўны міжсеткавы экран VPN сайта.
Праверце файл, затым пацвердзіце жывы вынік
Запусціце праверку сінтаксісу і транзакцыі на правераным файле перад яго ўжываннем. Рэжым праверкі паведамляе, ці можа nft разабраць і падрыхтаваць змяненне; ён не ўжывае яго і не даказвае, што іншы hook дазволіць пакет. Файл застаецца прапановай, пакуль уладальнік яго не ўжыве:
nft -c -f reviewed-vpn-rule.nft
Ужывіце праз кантраляваны працэс уладальніка і захавайце доступ для аднаўлення. Калі правіла няправільнае, скід, перад якім вы спрабавалі стаць, можа таксама перарэзаць шлях, які вы выкарыстоўваеце для выпраўлення.
Пасля змянення назірайце за новай спробай дазволенага партнёра і праверце, што крыніцы па-за ўзгодненым партнёрам па-ранейшаму адхіляюцца. Перанясіце трывалае правіла ў той мэнэджар, які валодае наборам правіл, бо ідэнтыфікатары часу выканання знаходзяць бягучыя аб’екты, а не ідэнтыфікуюць іх паміж загрузкамі.