sshuttle наспрам пуног VPN-а: шта његов метод заиста покрива
sshuttle преноси само оно што његов метод прослеђивања подржава: прво проверите покривеност TCP, DNS и UDP, потребну локалну привилегију и удаљеног помоћника.
sshuttle се бира зато што SSH већ ради и криптографија изгледа познато, а то размишљање прескаче једино питање које одлучује да ли одговара. Који пакети напуштају машину, који налог их носи на другој страни и колико локалних привилегија алат тражи. Ова три одговора се разликују по методу прослеђивања, па подешавање које ради за једну апликацију може тихо да подбаци за следећу. Преглед испод почиње протоколом који апликацији заиста треба.
Почните од протокола који апликацији треба
Подршка за протоколе у sshuttle 2.0 зависи од метода који изаберете. Методи NAT и nft у Linux-у обрађују 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 помоћника. Пријава која успе у ограниченој љусци не даје аутоматски дозволу да се тај помоћник покрене, а налог који може да покрене помоћника не стиже аутоматски до сваке циљне услуге. Обе чињенице припадају захтеву за приступ, а не белешкама за решавање проблема.
Заштитите проверу идентитета хоста и аутентификацију налога. Прихватање непознатог кључа хоста да би прва веза прорадила уклања проверу да је удаљена страна машина коју сте наменили, а то овде тежи више него код прослеђивања за једну сврху.
Ограничите удаљени налог на услуге које радни ток захтева и договорите тај обим са онима који управљају хостом. Они су део односа поверења и ниједна поставка на страни клијента то не мења.
Где лежи граница поверења
Прослеђивање приватне API везе кроз SSH не овлашћује сваку API операцију. TLS апликације и пријава у апликацију и даље важе, а алат не може да учини услугу без аутентификације безбедном. Ни следећи скок са удаљеног хоста није аутоматски исти заштићени сегмент као SSH канал, јер та друга веза следи какву год политику удаљени хост има.
Запишите границу у једној реченици: саобраћај ка овим префиксима излази кроз овај налог на том хосту. Ако реченици треба пасус изузетака, дизајн ради више него што тврди његова документација и заслужује други поглед пре него што стигне у продукцију.
Докажите то по протоколу, па изаберите алат
Тестирајте сваки потребан протокол безопасним захтевом, укључујући путању resolvera и породице адреса које апликација користи. Укључите и прекид у тест, да дозвољено понашање апликације при отказу постане познат резултат, а не изненађење током инцидента. Сесија која је исправно прослеђивала док је радила не говори ништа о ономе што се дешава када падне.
За неколико изричито именованих услуга обично локално прослеђивање је лакше за одржавање и лакше за ревизију. За апликациони саобраћај који одговара његовом методу, sshuttle нуди легитиман средњи пут. Када је захтев широка IP повезаност, VPN дизајн је искрен одговор, а избор следи покривеност и оперативну одговорност, а не рангирање алгоритма шифровања.