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 дизайнът е честният отговор и изборът следва покритието и оперативната отговорност, а не класация на алгоритмите за криптиране.

Подобни статии