sshuttle выбіраюць таму, што SSH ужо працуе і крыптаграфія выглядае знаёмай, а такое разважанне абыходзіць адзінае пытанне, якое вырашае прыдатнасць. Якія пакеты пакідаюць машыну, які рахунак нясе іх на іншым баку і колькі лакальных правоў патрабуе інструмент. Гэтыя тры адказы залежаць ад метаду перасылкі, таму налада, якая працуе для адной праграмы, можа ціха зламацца для наступнай. Разбор ніжэй пачынаецца з пратакола, які праграма насамрэч патрабуе.

Пачніце з пратакола, які патрабуе праграма

Падтрымка пратаколаў у sshuttle 2.0 залежыць ад абранага метаду. Метады NAT і nft у Linux апрацоўваюць TCP разам з DNS, а TPROXY дадае агульны UDP. Кожная платформа і кожны метад маюць свае межы, а macOS перахоплівае зусім іншым механізмам. Запішыце ўсталяваную версію, абраны метад і пратаколы, патрэбныя праграме, перш чым нешта выбіраць.

Таму працоўны запыт TCP вельмі мала даказвае пра праграму UDP ці пра кожны запыт DNS. sshuttle таксама разглядае TCP як патокі, а не тунелюе цэлыя IP-пакеты, таму выснова пра прапускную здольнасць, запазычаная ў звычайнага VPN, сюды не пераносіцца. Параўнайце механізм, які вы сапраўды запускаеце, з нагрузкай, якая ў вас сапраўды ёсць.

ApproachWhat it carriesWhat it needs locally
SSH local forwardOne explicitly named TCP destinationNothing beyond the SSH client
sshuttle, nft or nat methodTCP and DNS to the routed prefixesRoot or sudo for firewall rules
sshuttle, tproxy methodTCP, DNS and general UDPRoot or sudo, and kernel support
IP VPNRouted IP traffic in a tunnelA 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. Уваход, які ўдаецца ў абмежаванай абалонцы, не дае аўтаматычна дазволу запускаць гэтага памочніка, а рахунак, які можа запускаць памочніка, не дасягае аўтаматычна кожнай мэтавай службы. Абодва факты належаць да запыту на доступ, а не да нататак аб пошуку няспраўнасцяў.

Абараняйце праверку ідэнтычнасці хоста і аўтэнтыфікацыю рахунку. Прыняцце невядомага ключа хоста, каб першае злучэнне спрацавала, выдаляе праверку, што аддалены бок — гэта менавіта тая машына, і гэта тут важней, чым у перасылцы для адной мэты.

Абмяжуйце аддалены рахунак службамі, патрэбнымі працэсу працы, і ўзгадніце гэтыя межы з тымі, хто кіруе хостам. Яны частка даверных адносін, і ніякая налада на баку кліента гэтага не змяняе.

Дзе праходзіць мяжа даверу

Перасылка прыватнага злучэння API праз SSH не дае дазволу на кожную аперацыю API. TLS праграмы і ўваход у праграму па-ранейшаму дзейнічаюць, і інструмент не можа зрабіць неаўтэнтыфікаваную службу бяспечнай. Наступны крок з аддаленага хоста таксама не аўтаматычна той самы абаронены сегмент, што і канал SSH, бо другое злучэнне ідзе па тых правілах, якія ёсць у аддаленага хоста.

Запішыце мяжу адным сказам: трафік да гэтых прэфіксаў выходзіць праз гэты рахунак на тым хосце. Калі сказ патрабуе абзаца выключэнняў, праект робіць больш, чым заяўляе яго дакументацыя, і заслугоўвае другога позірку перад выпускам.

Дакажыце гэта па кожным пратаколе, потым выбірайце інструмент

Праверце кожны патрэбны пратакол бясшкодным запытам, уключна з шляхам рэзалвера і сямействамі адрасоў, якія выкарыстоўвае праграма. Уключыце ў тэст разрыў злучэння, каб дазволеныя паводзіны праграмы пры збоі сталі вядомым вынікам, а не нечаканасцю падчас інцыдэнту. Сеанс, які правільна перасылаў, пакуль дзейнічаў, нічога не кажа пра тое, што адбудзецца пасля яго разрыву.

Для некалькіх службаў, названых відавочна, звычайная лакальная перасылка прасцейшая ў валоданні і аўдыце. Для трафіку праграм, які адпавядае яго метаду, sshuttle прапануе законны кампраміс. Калі патрабаванне — шырокае IP-злучэнне, праект VPN і ёсць сумленны адказ, а выбар ідзе за ахопам і аперацыйнай адказнасцю, а не за рэйтынгам алгарытмаў шыфравання.

Падобныя артыкулы