sshuttle-ը լիարժեք VPN-ի դիմաց՝ ինչ է իրականում ծածկում նրա մեթոդը
sshuttle-ը տեղափոխում է միայն այն, ինչ աջակցում է նրա փոխանցման մեթոդը՝ նախ ստուգեք TCP, DNS և UDP ծածկույթը, անհրաժեշտ տեղական լիազորությունը և հեռավոր օգնականը։
sshuttle-ը ընտրում են, որովհետև SSH-ն արդեն աշխատում է, և գաղտնագրությունը ծանոթ է թվում, և այդ դատողությունը բաց է թողնում միակ հարցը, որը որոշում է համապատասխանությունը։ Որ փաթեթներն են լքում մեքենան, որ հաշիվն է դրանք տանում մյուս կողմում, և որքան տեղական լիազորություն է պահանջում գործիքը։ Այս երեք պատասխանները տարբերվում են ըստ փոխանցման մեթոդի, ուստի մեկ հավելվածի համար աշխատող կարգավորումը կարող է լուռ ձախողվել հաջորդի համար։ Ներքևի վերլուծությունը սկսվում է այն արձանագրությունից, որն իսկապես անհրաժեշտ է հավելվածին։
Սկսեք այն արձանագրությունից, որն անհրաժեշտ է հավելվածին
sshuttle 2.0-ում արձանագրությունների աջակցությունը կախված է ընտրված մեթոդից։ Linux-ի NAT և nft մեթոդները զբաղվում են TCP-ով և DNS-ով, իսկ TPROXY-ն ավելացնում է ընդհանուր UDP։ Յուրաքանչյուր հարթակ և մեթոդ ունի իր սահմանները, իսկ macOS-ը ընդհատում է բոլորովին այլ մեխանիզմով։ Գրանցեք տեղադրված տարբերակը, ընտրված մեթոդը և հավելվածին անհրաժեշտ արձանագրությունները նախքան որևէ բան ընտրելը։
Ուստի աշխատող TCP հարցումը շատ քիչ բան է ապացուցում UDP հավելվածի կամ յուրաքանչյուր DNS հարցման մասին։ sshuttle-ը նաև TCP-ին վերաբերվում է որպես հոսքերի՝ ամբողջ IP փաթեթներ թունելավորելու փոխարեն, ուստի սովորական VPN-ից փոխառված թողունակության եզրակացությունը այստեղ չի տեղափոխվում։ Համեմատեք ձեր իրականում գործարկվող մեխանիզմը ձեր իրականում ունեցած բեռի հետ։
| Approach | What it carries | What it needs locally |
|---|---|---|
| SSH local forward | One explicitly named TCP destination | Nothing beyond the SSH client |
| sshuttle, nft or nat method | TCP and DNS to the routed prefixes | Root or sudo for firewall rules |
| sshuttle, tproxy method | TCP, DNS and general UDP | Root or sudo, and kernel support |
| IP VPN | Routed IP traffic in a tunnel | A client with the required privileges |
Ինչ է անհրաժեշտ հաճախորդին տեղում
Փաստաթղթավորված հաճախորդային դասավորությունը պահանջում է root կամ sudo, որովհետև այն տեղական ընդհատման կանոններ է տեղադրում՝ թունելային ինտերֆեյս ստեղծելու փոխարեն։ Այդ մեկ փաստը փոխում է անվտանգության պատմությունը. այդ լիազորությամբ գործընթացը կարող է վերահասցեավորել ամբողջ մեքենայի թրաֆիկը, ոչ միայն մեկ հավելվածի։ Վերաբերվեք լիազորությանը որպես նախագծի մաս, ոչ որպես տեղադրման մանրամասնություն։
Հաստատեք, թե գործիքը որ կանոններն է տեղադրել և որ դրանք անհետանում են դուրս գալիս։ Վթարված սեսիան, որը թողնում է ընդհատման կանոններ, կարող է թրաֆիկը սև խոռոչ ուղարկել շատ ավելի ուշ, քան օպերատորը կարծում է, թե կապն անհետացել է, և ախտանիշը նման է ցանցի խափանման, ոչ թե մնացած կանոնի։
sudo sshuttle --method nft --dns 172.19.4.0/24
nft list ruleset | grep -i sshuttle
ip route
Առաջին հրամանը սովորական կանչի ձևն է՝ ձեզ իսկապես անհրաժեշտ նախածանցով։ Երկրորդը ցույց է տալիս, թե ինչ է տեղադրել գործիքը, իսկ երրորդը հաստատում է, որ թունելային ինտերֆեյս չի հայտնվել, ինչը այս նախագծի համար սպասվող արդյունքն է։
Ինչ է գործարկում հեռավոր կողմը
Հեռավոր կողմը լիազորված SSH հաշիվ է՝ համատեղելի Python օգնականի միջավայրի հետ։ Սահմանափակ shell-ի տակ հաջող մուտքը ինքնաբերաբար թույլտվություն չի տալիս գործարկելու այդ օգնականը, և օգնականը գործարկել կարող հաշիվը ինքնաբերաբար չի հասնում յուրաքանչյուր թիրախ ծառայության։ Երկու փաստերն էլ պատկանում են մուտքի հայտին, ոչ թե խնդիրների լուծման նշումներին։
Պաշտպանեք հոսթի ինքնության ստուգումը և հաշվի նույնականացումը։ Անհայտ հոսթի բանալու ընդունումը՝ առաջին կապը աշխատեցնելու համար, հեռացնում է այն ստուգումը, որ հեռավոր կողմը ձեր նկատի ունեցած մեքենան է, և դա այստեղ ավելի կարևոր է, քան մեկ նպատակով փոխանցման դեպքում։
Սահմանափակեք հեռավոր հաշիվը աշխատահոսքին անհրաժեշտ ծառայություններով և այդ շրջանակը պայմանավորվեք հոսթը շահագործողների հետ։ Նրանք վստահության հարաբերության մասն են, և հաճախորդի կողմի ոչ մի կարգավորում դա չի փոխում։
Որտեղ է վստահության սահմանը
Մասնավոր API կապը SSH-ով փոխանցելը չի լիազորում յուրաքանչյուր API գործողություն։ Հավելվածի TLS-ը և հավելվածի մուտքը դեռ գործում են, և գործիքը չի կարող անվտանգ դարձնել չնույնականացված ծառայությունը։ Հեռավոր հոսթից հաջորդ ցատկը նույնպես ինքնաբերաբար նույն պաշտպանված հատվածը չէ, ինչ SSH ալիքը, որովհետև այդ երկրորդ կապը հետևում է հեռավոր հոսթի ցանկացած քաղաքականությանը։
Գրեք սահմանը մեկ նախադասությամբ. այս նախածանցներին ուղղված թրաֆիկը դուրս է գալիս այս հաշվով այն հոսթում։ Եթե նախադասությանը պետք է բացառությունների պարբերություն, նախագիծն ավելին է անում, քան պնդում է իր փաստաթղթավորումը, և արժանի է երկրորդ հայացքի՝ նախքան արտադրություն հասնելը։
Ապացուցեք ըստ արձանագրության, ապա ընտրեք գործիքը
Փորձարկեք յուրաքանչյուր անհրաժեշտ արձանագրություն անվնաս հարցումով՝ ներառյալ լուծիչի ուղին և այն հասցեների ընտանիքները, որոնք օգտագործում է հավելվածը։ Ներառեք փորձարկման մեջ նաև անջատում, որպեսզի հավելվածի թույլատրելի ձախողման վարքը դառնա հայտնի արդյունք, ոչ թե անակնկալ միջադեպի ժամանակ։ Սեսիան, որը ճիշտ փոխանցում էր քանի դեռ ակտիվ էր, ոչինչ չի ասում այն մասին, թե ինչ է լինում ընկնելուց հետո։
Բացահայտ անվանված մի քանի ծառայությունների համար սովորական տեղական փոխանցումն ավելի հեշտ է տիրապետել և ավելի հեշտ աուդիտ անել։ Հավելվածային թրաֆիկի համար, որը համապատասխանում է նրա մեթոդին, sshuttle-ը առաջարկում է օրինական միջին ուղի։ Երբ պահանջը լայն IP կապակցվածությունն է, VPN նախագիծը ազնիվ պատասխանն է, և ընտրությունը հետևում է ծածկույթին ու գործառնական պատասխանատվությանը, ոչ թե գաղտնագրման ալգորիթմների դասակարգմանը։