Пристап до HTTPS сајт достапен само преку VPN со SSH пренасочување
Поврзете една HTTPS услуга достапна само преку VPN со локално SSH пренасочување, зачувајте го вистинското име на домаќинот со --connect-to и знајте што не може да покрие едно TCP пренасочување.
Една машина веќе има одобрен пристап до VPN, втората машина и треба точно една приватна HTTPS услуга, а локалното SSH пренасочување може да ја премости таа празнина без да и даде тунел на втората машина. Пренасочувањето носи една TCP дестинација наместо целата мрежа, и токму тоа ограничување е поентата. Поминете ги петте чекори подолу по ред, бидејќи секој не успева од различна причина и подоцнежен чекор не може да спаси претходна празнина. Ако недостасува кој било предуслов, овој дизајн не го решава и никакво дотерување на командите нема да помогне.
Прв чекор: потврдете ги трите предуслови
Три работи мора веќе да бидат точни пред која било команда да има значење. Потребна е дозвола да ја користите првата машина како домаќин за пренасочување, работен SSH пристап до неа и серверска политика што ја дозволува предвидената дестинација. SSH сметка создадена за пренос на датотеки може да има исклучено пренасочување, а сервер што дозволува пренасочување сепак може да ограничи кои дестинации се достапни преку него. Прашајте пред да тестирате, бидејќи користењето на работната станица на колега како скокална точка без договор е проблем со политиката, дури и кога командата работи беспрекорно.
Две команди ја решаваат техничката половина од тој список. Првата докажува дека сметката и клучот работат без интерактивно прашање, а втората ја печати вистинската серверска политика наместо коментираниот пример во конфигурациската датотека.
ssh -o BatchMode=yes [email protected] 'echo ok'
sudo sshd -T | grep -E 'allowtcpforwarding|permitopen'
Втор чекор: врзете loopback порта и држете ја сесијата жива
На машината што ја извршува клиентската апликација, отворете локално пренасочување кон приватната услуга. Врзете го експлицитно на loopback за да не се објавува на локалната мрежа, и изберете висока порта што ниту една локална услуга не ја држи. Држете ја сесијата отворена додека работите, бидејќи нејзиното затворање го затвора слушателот. ExitOnForwardFailure го претвора одбиеното врзување или зафатената порта во моментален излез наместо сесија што останува без пренасочување, и токму овој режим на откажување троши најмногу време.
Приватната врска се воспоставува од скокалниот домаќин, па неговиот DNS, рутите, VPN политиката и пристапот до услугата мора сите да работат. SSH сесијата не создава достапност што скокалниот домаќин ја нема, и не може да поправи рута што VPN никогаш не ја испратил. Потврдете го слушателот таму каде што навистина е, наместо да верувате во тишината на командата.
ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:9443:portal.lab.example:443 [email protected]
ss -ltn '( sport = :9443 )'
Трет чекор: задржете го името HTTPS кога приклучокот е локален
Прелистувањето до https://127.0.0.1:9443/ го менува името на TLS серверот и овластувањето на апликацијата. Сертификат издаден за portal.lab.example нема да се валидира против loopback адреса, а добиената грешка изгледа како расипан сертификат, а не како кратенка за пренасочување. За тест од командната линија, задржете го вистинскиот URL и сменете само дестинацијата на приклучокот. Тоа го прави --connect-to, а прирачникот за curl ја документира формата со четири полиња што се користи подолу.
curl --noproxy portal.lab.example --connect-to portal.lab.example:443:127.0.0.1:9443 https://portal.lab.example/
Името останува во URL-то, во TLS ракувањето и во заглавието Host, додека TCP врската оди кон локалниот слушател. Опцијата без прокси го држи тестот на ова пренасочување наместо да дозволи конфигуриран HTTP прокси да го пресретне, а оставањето на проверката на сертификатот вклучена е она што го прави резултатот значаен.
Четврти чекор: знајте што не може да покрие едно пренасочување
Едно TCP пренасочување покрива една дестинациска порта. Страница што пренасочува на второ име на домаќин, вчитува ресурси од домаќин внатре во приватната мрежа или праќа на друга порта бара сопствено пренасочување, и секое од нив бара иста проверка на политиката како првото. Работните текови во прелистувачот додаваат свои барања, бидејќи на прелистувачот мора да му се каже да го испрати вистинското име на локалната порта преку конфигурација на прокси или локално мапирање. Затоа успешен тест од командната линија не докажува дека прелистувачот ќе успее, иако ја докажува патеката.
UDP, откривањето на SMB и најавувањето во домен воопшто не поминуваат низ TCP пренасочување. Ако вистинската потреба е општ мрежен пристап, овој дизајн е погрешна алатка, а поддржаниот портал за далечински пристап е вистинската.
Петти чекор: исчистете и запишете
Запрете ја сесијата кога тестот е готов и потврдете дека слушателот го нема. Ако избраната порта веќе била зафатена, изберете друга неискористена loopback порта и ажурирајте ги URL-то, тест командата и белешката заедно, наместо да запрете неповрзана локална услуга за да го ослободите бројот. Оставањето отворено пренасочување на пренослив компјутер го претвора дијагностичкото во неупpавувана услуга.
Запишете го скокалниот домаќин, пренасочената дестинација, локалната порта и кој го одобрил договорот. Пренасочување што постои само во нечија shell историја е едно рестартирање далеку од повторно истражување, а следниот човек нема да знае кој од трите предуслови веќе е проверен.