Դուք խմբագրել եք կանոնը, վերաբեռնել եք կանոնների հավաքածուն, և թունելը վարվում է ճիշտ այնպես, ինչպես առաջ։ Այս արդյունքն ունի երկու սովորական պատճառ, և դրանք տարբեր փորձարկումներ են պահանջում։ Կամ նոր կանոնը գտնվում է ավելի վաղ կանոնից հետո, որն արդեն ընդունել է փաթեթը, կամ ձեր դիտարկած փոխանակությունը հետևվող կապ է, որը փոփոխությունը երբեք չի վերագնահատում։ Ֆայլի կանոնը արտահայտում է մտադրություն՝ փաթեթի ճակատագիրը որոշում է այն ակտիվ ուղին, որին այն հանդիպում է։ Անցե՛ք ստորև բերված ստուգումները հերթականությամբ և այդ ընթացքում բաց պահե՛ք վերադարձի ուղին։

Կանոնների հերթականությունը և կապի վիճակը տարբեր խափանումներ են

Կարգավորված շղթաները գնահատվում են վերևից ներքև, և վերջնական վճռի հասնող առաջին կանոնը դադարեցնում է այդ շղթայով անցումը։ Դրե՛ք լայն թույլտվություն ուշադիր գրված արգելափակման կանոնից վեր, և արգելափակման կանոնը դառնում է փաստաթուղթ՝ այն կա կանոնների հավաքածուում, նրա հաշվիչը զրո է, և ոչ մի փաթեթ երբեք չի հասնի դրան։ Նույն տեքստը մեկ այլ շղթայի վրա կիրառելը նույնպես ոչինչ չի ապացուցում։ nftables-ում հիմնական շղթաները կցվում են կեռերին ըստ առաջնահերթությունների, ուստի մի շղթայում տրված թույլտվությունը չի խանգարում մեկ այլ կեռի կամ առաջնահերթության շղթային տեսնել նույն փաթեթը։

Կապերի հետևումը ստեղծում է երկրորդ ախտանիշը, և դրսից այն նույնն է թվում։ Հենց հոսքը հայտնվում է վիճակների աղյուսակում, շղթայի վերևին մոտ established-or-related թույլտվությունը վերադառնում է նախքան ձեր նոր կանոնին անդրադառնալը։ NAT-ի քարտեզագրումներն ունեն նույն հատկությունը՝ թարգմանությունը ամրագրվել է հոսքի սկզբում, ուստի խմբագրված postrouting կանոնը չի վերագրում արդեն ընթացող նստաշրջանը։ Այդ պատճառով փոփոխությունը կարծես աշխատում է 09։00-ին նոր կապի համար և կարծես ոչինչ չի անում այն նստաշրջանի համար, որը ինչ-որ մեկը բացել է 08։55-ին։

Ամպային անվտանգության խմբերը ավելացնում են երրորդ մոդելը, որը բռնում է iptables-ով սովորածներին։ Նրանց մուտքային կանոնները թույլտվությունների ցանկ են, որը գնահատվում է որպես բազմություն, այլ ոչ թե առաջին համընկնման անցում, դրանք վիճակով են, և թույլտվության կանոնի հեռացումը չի դադարեցնում արդեն հետևվող հոսքերը։ Առաջին համընկնման իմաստաբանությունը ենթադրել այնպիսի հարթակում, որտեղ այն չկա, հանգեցնում է ինքնավստահ, սխալ եզրակացությունների։

Կարդացե՛ք ակտիվ կանոնների հավաքածուն, ոչ թե ձեր խմբագրած ֆայլը

Սկսե՛ք նրանից, ինչ միջուկը հենց հիմա է կիրառում։ Պահված կարգավորումը, որը երբեք չի կիրառվել, բացատրում է զարմանալիորեն շատ անփոփոխ վարքեր, և այն բացառելը մեկ հրաման արժե։

nft list ruleset
iptables-save

Այնուհետև հարցրե՛ք՝ արդյոք ձեր կանոնին ընդհանրապես հասնում են։ Փաթեթների հաշվիչները դրան ուղղակիորեն պատասխանում են և պատասխանում են ավելի լավ, քան մտադրության մասին ցանկացած դատողություն։

iptables -L FORWARD -v -n --line-numbers
nft list chain inet filter forward

Իրական փորձարկման փորձից հետո զրո փաթեթով արգելափակման կանոնը քաղաքականության խնդիր չէ, այն դիրքի խնդիր է։ Այն տեղափոխելը մեկ տողի փոփոխություն է, և շարահյուսությունը հենց այն է, ինչն առաջացրել է սկզբնական սխալը։ iptables-ի դեպքում -I տեղադրում է սկզբում, իսկ -A ավելացնում է վերջում՝ nftables-ի դեպքում insert կանոնը դնում է շղթայի սկզբում, իսկ add ավելացնում է վերջում։ Երբ կանոնը պետք է հաղթի, ասե՛ք դա բացահայտ՝ պատահաբար բեռնված հերթականությանը վստահելու փոխարեն։

Ապացուցե՛ք՝ արդյոք հոսքը հետևվում է

Նախքան կանոնին մեղադրելը՝ ստուգե՛ք, արդյոք երթևեկությունն ընդհանրապես հետևվող կապ է։ Վիճակների աղյուսակից հարցրե՛ք կոնկրետ հոսքի մասին՝ այն ամբողջությամբ թափելու փոխարեն։

conntrack -L -p tcp --dport 1194
conntrack -E -p tcp --dport 1194

Ցանկը ցույց է տալիս վիճակը և մնացած ժամկետը, և հենց այդպես եք տարբերում հաստատված նստաշրջանը թարմ փորձից՝ իրադարձությունների ռեժիմը տպում է թարմացումները, երբ դրանք տեղի են ունենում, ինչը օգտակար է, մինչ վերակապում եք հաճախորդին։ Եթե հոսքը հաստատված վիճակով առկա է նախքան որևէ բանի դիպչելը, ֆիլտրի կանոնների ոչ մի խմբագրում չի փոխի նրա ճակատագիրը։ Սա ֆայրվոլի սխալ չէ, սա վիճակով զտման պայմանագիրն է։

Դիմադրե՛ք արտադրական դարպասում ամբողջ աղյուսակը դատարկելու գայթակղությանը։ conntrack -F հասանելի է, և այն նաև ոչնչացնում է մեքենայի բոլոր հետևվող հոսքերը, ներառյալ ձեր աշխատանքային կառավարման նստաշրջանը և այն թունելը, որը կրում է ձեր shell-ը։ Առանձին գրառումները կարելի է ջնջել, երբ դա իսկապես անհրաժեշտ է, բայց նոր աղբյուր պորտից թարմ հոսքը սովորաբար ավելի մաքուր փորձ է։

Որոշ ուղիներ չեն հետևվում, և դրանք հակառակ են վարվում։ raw աղյուսակում notrack նշված երթևեկությունը, սովորական կեռերը շրջանցող որոշ թունելներ և հոսքը երկու դարպասների միջև բաժանող ասիմետրիկ երթուղավորումը բոլորը ստեղծում են մեկ առ մեկ գնահատվող փաթեթներ կամ վիճակ, որը երբեք չի ստեղծվում երկու ծայրերում։ Եթե հաշվիչները շարժվում են ամեն փաթեթի համար, կասկածե՛ք այդպիսի ուղու վրա նախքան հերթականությանը կասկածելը։

Փորձարկե՛ք թարմ հոսքից՝ վերադարձի ուղով

Նախքան հեռավոր մուտքը կտրող կանոնը փորձարկելը՝ ստեղծե՛ք վերականգնման ուղի՝ մատակարարի վահանակը, սերիական վահանակը, ժապավենից դուրս կառավարման հասցեն կամ երկրորդ ինտերֆեյսը, որին կանոնը չի կարող համընկնել։ Հետադարձ ժամաչափը ողջամիտ ուղեկից է, քանի որ այն կվերականգնի նախորդ կանոնների հավաքածուն նույնիսկ եթե ձեր նստաշրջանը մահանա փորձարկման կեսին։

Այնուհետև փորձարկե՛ք փոխանակությամբ, որը վիճակը չէր կարող արդեն ծածկել։ Անջատե՛ք և նորից միացրե՛ք հաճախորդին, որպեսզի ստեղծվի նոր հնգյակ, և դիտե՛ք երկու ծայրերը, մինչ դա տեղի է ունենում։

tcpdump -ni eth0 'tcp port 1194'
journalctl -k -n 50 --no-pager

Անցկացրե՛ք փորձարկումը երկու ուղղություններով։ Նոր մուտքային ձեռքսեղմումը արգելափակող կանոնը դեռ կարող է թույլատրել պատասխանի ուղին, կամ հակառակը, և միակողմանի արդյունքը արգելափակման կիսով չափ աշխատելու սովորական պատճառն է։ Փորձարկումից հետո ևս մեկ անգամ միացե՛ք՝ կայուն վիճակը հաստատելու համար, և ստուգե՛ք, որ օրինական կառավարման մուտքը պահպանվել է՝ մեկ պորտի համար գրված կանոնը սովորություն ունի համընկնել նախատեսվածից ավելի լայն տիրույթի հետ։

Գրանցե՛ք նպատակը և դիրքը կանոնի հետ միասին

Առանց գրանցված նպատակի կանոնը կանոն է, որը ոչ ոք չի համարձակվում հեռացնել։ Յուրաքանչյուր արգելափակման գրառման կողքին պահե՛ք այն հոսքը, որը նա պաշտպանում է, այն շղթան և կեռը, որտեղ ապրում է, այն դիրքը, որը նա պետք է զբաղեցնի ավելի լայն թույլտվությունների նկատմամբ, և այն փորձարկումը, որը դա ապացուցել է։ Երբ վեց ամիս անց ինչ-որ մեկը խմբագրի շրջակա կանոնների հավաքածուն, այդ նշումը միակ նախազգուշացումն է, որ դիրքը միտումնավոր էր։

Նախքան փոփոխությունը փակելը՝ հաստատե՛ք չորս բան՝ գործող կանոնների հավաքածուն համապատասխանում է ֆայլին, նոր կանոնն ունի ոչ զրոյական հաշվիչներ թարմ փորձից հետո, հակառակ ուղղությունը և կառավարման մուտքը դեռ աշխատում են, և դուք մեկ անգամ նորից միացել եք՝ ապացուցելու կայուն վիճակը, այլ ոչ փոփոխությունից հին նստաշրջանի վիճակը։ Եթե այդ ամենից որևէ մեկը ստուգված չէ, փոփոխությունը ավարտված չէ, ինչ էլ որ անի թունելը։

Առնչվող հոդվածներ