Նոր UFW կանոն, հին միացում․ հաստատված վիճակն է հաղթում
Նեղ տիրույթի UFW երթուղու մերժումը բաց է թողնում այն տրաֆիկը, որն արդեն ընդունել են նախորդ կանոնները։ Տեսեք, որտեղ տեղադրել այն և ինչ է դեռ թողնում անցնել հաստատված վիճակը։
Մերժման կանոն ավելացնելը և տեսնել, որ բաց ներբեռնումը շարունակվում է, UFW-ի սխալ չէ։ Ձեր ավելացրած կանոնը գտնվում է այն կանոններից հետո, որոնք արդեն ընդունել են հոսքը, և ավելի վաղ հաստատված միացումը շարունակում է համապատասխանել դրանց։ Դա ուղղելը նշանակում է տեղադրել ճիշտ դիրքում և հասկանալ, թե ինչ են խոստանում նախորդ կանոնները։ Այդ փոփոխության նեղ տարբերակը հետևյալն է։
Որոշում է հերթականությունը, ոչ թե կանոնի գոյությունը
UFW-ն ինտերֆեյս է, որը netfilter-ի կանոնները գրում է փուլերով․ շրջանակի բաժին, որն աշխատում է օգտվողի կանոններից առաջ, ապա՝ հենց օգտվողի կանոնները, ապա՝ դրանցից հետո աշխատող բաժին։ Ստանդարտ նախորդ կանոնները ընդունում են հաստատված և կապակցված միացումների տրաֆիկը, և այդ կանոնները գնահատվում են նախքան այն ամենը, ինչ ավելացնում եք սովորական allow կամ deny-ով։ UFW հրամանների տեղեկատուն փաստագրում է տեղադրման շարահյուսությունը և համարակալված կարգավիճակի տեսքը, որից կախված է այս փոփոխությունը։
Այդ հերթականությունը բացատրում է անակնկալը։ Ձեր նոր կանոնը իրական է և գտնվում է ճիշտ աղյուսակում, բայց այն առաջին որոշումը չէ, որին հանդիպում է փաթեթը։ Հաստատված համարվող միացումը երբեք չի հասնում դրան։
Այս աշխատանքի համար օգտագործեք route կանոններ, քանի որ փաթեթը փոխանցվում է դարպասով, այլ ոչ թե հասցեագրվում դարպասի սեփական ծառայություններին։ Մուտքային կանոնը կզտեր սխալ տրաֆիկը և կթվար, թե ոչինչ չի անում։
Տեղադրեք լայն թույլտվությունից վեր
Նախադիտեք տեղադրումը մինչև կիրառելը և հաստատեք, որ կանոնը ցանկում արդեն այլ տեղ չկա։ Նույնական քաղաքականության կրկնօրինակումը հետագա հեռացումը դարձնում է երկիմաստ, և սխալ պատճենը հեռացնողը շաբաթներով չի նկատի դա։
sudo ufw --dry-run route insert 1 deny in on tun0 proto tcp from 10.88.0.55/32 to 192.0.2.88/32
Եթե նախադիտումը ցույց է տալիս ուղիղ մեկ կանոն սպասված դիրքում, կիրառեք նույն հրամանը առանց dry-run դրոշիչի։ 1-ին դիրքը տեղադրում է այն ավելի լայն օգտվողական թույլտվություններից վեր, ոչ թե ավելի վաղ քննարկված շրջանակային կանոններից վեր։ Հաստատեք, որ ինտերֆեյսի անունը համապատասխանում է այս դարպասի թունելային սարքին, որովհետև այլևս գոյություն չունեցող ինտերֆեյսին կապված կանոնը կմնա ցանկում և ճիշտ տեսք կունենա՝ ոչնչի չհամապատասխանելով։ Վերանվանեք սարքի հղումը կիրառելուց առաջ, ոչ թե թեստի ձախողումից հետո։
Այդ կանոնում նպատակակետ պորտ չկա, ուստի այն մերժում է այդ հասցեի բոլոր TCP պորտերը, ոչ միայն HTTPS-ը։ Եթե մտադրությունը մեկ ծառայություն է, նշեք պորտը․ քաղաքականությունից ավելի լայն կանոնը ապագա միջադեպ է, որը սպասում է իր առաջին ընթերցողին։
Սահմանափակեք աղբյուրը մեկ հասցեով միայն այն դեպքում, երբ այդ հասցեն կապված է նախատեսված ինքնությանը։ Դինամիկ բաշխմամբ VPN-լողավազանը վաղը կարող է նույն հասցեն տալ մեկ այլ հաճախորդի, և մերժումը կհետևի հասցեին, ոչ թե մարդուն։
Հաստատված հոսքերը վերապրում են նոր կանոնը
Միացումների հետևումն է պատճառը, որ գոյություն ունեցող սեսիան շարունակվում է։ Երբ հոսքը գրանցվում է որպես հաստատված, նախորդ կանոնները ընդունում են նրա փաթեթները նախքան ձեր մերժմանը նայելը, և փոխանցումն ավարտվում է այնպես, կարծես ոչինչ չի փոխվել։ Այդ պատճառով բաց միացումը վերօգտագործող բրաուզերով թեստը ոչինչ չի ասում նոր քաղաքականության մասին։ Մերժումը կարող է անօգուտ թվալ տեղադրումից րոպեներ անց և ամբողջովին արդյունավետ լինել հաջորդ միացող օգտվողի համար։
Եթե պահանջը ներառում է կենդանի տրաֆիկի կտրում, այս օգտվողական կանոնի փոփոխությունը չի կարող ապահովել դա։ Հետևվող վիճակի չեղարկումը առանձին գործողություն է՝ իր ազդեցության շառավղով, և այն պատկանում է firewall-ի տիրոջը, ոչ թե կանոնն ավելացնողին։ Դարպասի բոլոր միացումները դատարկելը՝ մեկ սեսիա անհետացնելու համար, այնպիսի ուղղում է, որը ստեղծում է երկրորդ միջադեպ։
Հիշեք նաև սահմանները։ Այս կանոնը ոչինչ չի ասում ICMP-ի, UDP-ի կամ IPv6-ի մասին, ուստի հաջող ping-ը մերժման ձախողման ապացույց չէ։ Մեկ IPv4 հասցեն նույնպես կայք չէ․ անունը կարող է լուծվել մի քանի հասցեների, և ծածկված է միայն ձեր նշածը։
Փորձեք թարմ հոսքով
Կարդացեք համարակալված օգտվողական կանոնները և արդյունավետ հում տեսքը, ապա ընտրված հաճախորդից բացեք նոր միացում:
sudo ufw status numbered
sudo ufw show raw
# from 10.88.0.55, a new TCP connection to 192.0.2.88 should fail
Հում տեսքը կարևոր է, որովհետև status բաց է թողնում ձեռքով գրված շրջանակային կանոնները, ուստի հերթականությունը կարող է այլ տեսք ունենալ, քան այն, ինչ պարտադրում է միջուկը։ Համեմատեք երկուսը նախքան եզրակացնելը, որ կանոնը սխալ տեղում է։
Ապա ստուգեք երկու հսկիչները, որոնք ապացուցում են, որ կանոնը նեղ է, ոչ լայն․ նույն հաճախորդից թույլատրված նպատակակետը դեռ աշխատում է, և երկրորդ հաճախորդը դեռ հասնում է մերժված նպատակակետին, եթե նրա քաղաքականությունը թույլ է տալիս։ Մերժումը, որը կոտրում է երկու թեստերն էլ, քաղաքականության փոփոխություն է, ոչ թե նպատակային միջոց։
Երբ թեստն ավարտվի, հեռացրեք միայն ձեր ավելացրած կանոնը՝ ճշգրիտ կրկնելով այն։ Եթե քաղաքականությունը մշտական է, փոխանցեք այն firewall-ի տիրոջը հաճախորդի ինքնությամբ, նպատակակետի տիրոջով և վերանայման ամսաթվով, որպեսզի վերաբաշխված թունելային հասցեն հետևում չթողնի հնացած մերժում։