Ինչու տնային NAT-ը չի պաշտպանում ձեր VPN ինտերֆեյսը
Տնային երթուղիչը փոխանցում է թունելը, բայց հոսթը գնահատում է ապակոդավորված փաթեթը։ Կարդացեք լսողը, ներքին ուղին և մուտքի քաղաքականությունը առանձին։
Տնային երթուղիչի հետևում առանց պորտերի փոխանցման գտնվող նոթբուքերը դեռ ընդունում են VPN-ով եկող SSH կապերը։ Սա հակասություն չէ, որովհետև երկու տարբեր սարքեր գնահատում են երկու տարբեր փաթեթ։ Երթուղիչը փոխանցում է գաղտնագրված փոխադրումը, իսկ հոսթը որոշում է, թե ինչ անել իր թունելի ինտերֆեյսին հասնող ապակոդավորված փաթեթի հետ։ Այս երկու որոշումներն իրարից անջատ պահելը ողջ վարժությունն է։
Երթուղիչը փոխանցում է թունելը, հոսթը գնահատում է փաթեթը
Նախքան մեկ կանոն նայելը գծեք ուղին հեռավոր աղբյուրից մինչև ծառայություն։ Արտաքին հատվածը VPN փոխադրումն է, որը ղեկավարում են երթուղիչը և դարպասը։ Ներքին հատվածը սկսվում է, երբ վերջնակետը հանում է թունելի շերտը, և հոսթը ստանում է իր VPN հասցեին ուղղված փաթեթ։
Միավորեք այս երկու հատվածները, և երթուղիչը վարկ է ստանում հոսթի կայացրած որոշման համար։ Պորտերի փոխանցման էջը կամ երթուղիչի մատյանը նկարագրում են միայն արտաքին զրույցներ, և ոչ մեկը չի ասում, թե որ ապակոդավորված երթևեկությունը հոսթը կընդունի։ Հոսթը կիրառում է իր սեփական մուտքի քաղաքականությունը ներքին փաթեթի վրա, ինչպես ցանկացած փաթեթի վրա, որ հասնում է ինտերֆեյս։ Հենց այդ քաղաքականությունում է իրականում լուծվում ազդեցության հարցը։
Ջոկեր լսողը հանրային ծառայություն չէ
Linux-ում INADDR_ANY-ին կապվելը նշանակում է բոլոր տեղական հասցեները, ուստի ծառայությունը կարող է պատասխանել թունելի ինտերֆեյսում, որը երբեք չի անվանել։ IP սոքեթի տեղեկատուն նկարագրում է այդ կապումը, և արժե այն կարդալ լսողների ցանկից եզրակացություններ անելուց առաջ։ Ջոկեր գրառումը փաստ է սոքեթի մասին, ոչ թե հայտարարություն հասանելիության մասին։
Ստորև երկու տողերը նույն ծառայության երկու տարբեր կապումներն են, և տարբերությունը ինտերֆեյսի կարևորության հարցի ամբողջ պատասխանն է։ Նախ կարդացեք, թե որ հասցեում է նստած սոքեթը։
ss -lntp "sport = :22"
LISTEN 0 4096 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=812,fd=3))
LISTEN 0 4096 10.8.0.6:22 0.0.0.0:* users:(("sshd",pid=812,fd=4))
Անվանեք այն դասավորությունը, որը կարող էր հասնել պորտին
Երեք դասավորություն փաթեթ են դնում այդ ինտերֆեյսի վրա, և նրանք տարբեր տերեր ունեն։ Ճիշտին անվանելը որոշում է, թե ով պետք է փոխի քաղաքականություն։
| Arrangement | What reaches the port | Where the decision lives |
|---|---|---|
| Another permitted VPN peer | A packet from the same tunnel subnet | Gateway forwarding policy and host input rules |
| A deliberate public forward | Traffic the gateway publishes on purpose | Gateway service definition |
| A subnet routed behind the gateway | Client traffic from the far side | Gateway route and host input rules |
Զննարկիչի արդյունքը, որը ցույց է տալիս հանրային ելքի հասցե, ոչինչ չի ասում երեքից ոչ մեկի մասին, որովհետև նկարագրում է, թե ինչպես է ելքային երթևեկությունը դուրս գալիս, և ոչ թե ինչ է թույլատրված մուտքայինին։ Փոխարենը հետ աշխատեք լսողից և ծառայության մատյանում առկա աղբյուրի հասցեից։ Եթե աղբյուրը թունելի մեկ այլ գործընկեր է, դարպասի քաղաքականությունը հետաքրքիր փաստաթուղթն է։ Եթե դա թարգմանված հասցե է, գտեք թարգմանությունը նախքան կանոնը փոխելը։
Սահմանափակեք ծառայությունը նախատեսված ուղով
Եթե SSH-ը պետք է միայն կառավարման ուղուց, այդ ուղին գրեք որպես աղբյուրի տիրույթ գումարած ինտերֆեյս։ Այնուհետև սահմանափակեք հոսթի մուտքի կանոնները ըստ ինտերֆեյսի, նպատակակետի և աղբյուրի, այլ ոչ ըստ ցանցի անվան, քանի որ մասնավոր թվացող անունը կարող է նշանակել ցանկացած հասցե։ Թողեք երթուղի այն մարդու համար, ով կլուծի հաջորդ խնդիրը։
nft add rule inet filter input iifname "tun0" ip saddr 10.8.0.0/24 tcp dport 22 accept
nft list chain inet filter input
Կանոնը, որը անվանում է թունելի ինտերֆեյսը և կառավարման տիրույթը, մտադրությունն արտահայտում է մեկ տեղում։ Համեմատեք այն Wi-Fi ցանցի համար գրված կանոնի հետ, որը ոչինչ չի ասում ապակոդավորված թունելի երթևեկության մասին։ Երբ երկու շերտերը համաձայն չեն, հոսթի քաղաքականությունն է այն, ինչին հանդիպում է փաթեթը։
Թողեք մուտքերը և կարկատանները հենց այնտեղ, որտեղ կան. պորտին հասնելը երբեք նույնը չէր, ինչ այն օգտագործելու թույլտվությունը։ Գրանցեք հասցեների ընտանիքը և ժամը ցանկացած անծանոթ աղբյուրի համար և հետաքննեք նախքան որևէ հատկանիշի կամ խոցելիության մեղադրելը։ Կանոնը, որը թույլ է տալիս թունելի յուրաքանչյուր գործընկերոջ, այլ ձևավորում է, քան այն, որը թույլ է տալիս կառավարման ենթացանցին, և ոչ մի մատյանի տող չի ասի, թե որն էր նախատեսված։
Ընդունեք ուղղումը մեկ հաջողությամբ և մեկ մերժմամբ
Ապացուցեք երկու կեսերը. մեկ հաստատված կապ հաջողվում է, և մեկ բացառված ուղի մերժվում է։ Մերժումը այն կեսն է, որը մարդիկ բաց են թողնում, և հենց այն ցույց է տալիս, որ կանոնը աշխատում է, այլ ոչ թե կանգնած է թույլատրող լռելյայն արժեքի կողքին։ Փորձարկեք բացառված կողմից՝ դրա մասին մտածելու փոխարեն։
Կրկնեք զույգը վերակապվելուց հետո, որովհետև այլ ինտերֆեյսի անունով վերադարձող թունելը կարող է լուռ շրջանցել հինին սահմանափակված կանոնը։ Կարևոր սահմանը այն է, որը հոսթը կիրառում է իրականում ստացվող փաթեթների վրա։