/ / Как да използвате SSH тунели за достъп до ограничени сървъри и да преглеждате безопасно

Как да използвате SSH тунели за достъп до ограничени сървъри и да преглеждате безопасно

SSH клиент се свързва със сървър на Secure Shell,което ви позволява да стартирате терминални команди, сякаш седите пред друг компютър. Но SSH клиентът ви позволява също да „тунелирате“ порт между вашата локална система и отдалечен SSH сървър.

Има три различни типа тунелиране на SSH,и всички те се използват за различни цели. Всяка включва използване на SSH сървър за пренасочване на трафика от един мрежов порт към друг. Трафикът се изпраща през шифрованата SSH връзка, така че не може да бъде наблюдаван или модифициран при транзит.

Можете да направите това с ssh команда, включена в Linux, macOS и другиUNIX-подобни операционни системи. В Windows, който не включва вградена команда ssh, препоръчваме безплатния инструмент PuTTY за свързване към SSH сървъри. Той също поддържа SSH тунелиране.

Локално пренасочване на порт: Направете отдалечени ресурси достъпни във вашата локална система

„Локално пренасочване на порт“ ви позволява да получите достъпресурси на местната мрежа, които не са изложени на интернет. Например, да кажем, че искате да получите достъп до сървър на база данни в офиса си от дома си. От съображения за сигурност този сървър на база данни е конфигуриран само за приемане на връзки от локалната офисна мрежа. Но ако имате достъп до SSH сървър в офиса и този SSH сървър позволява връзки извън офис мрежата, тогава можете да се свържете към този SSH сървър от дома и да получите достъп до сървъра на базата данни, сякаш сте в офиса. Това често се случва, тъй като е по-лесно да защитите един SSH сървър срещу атаки, отколкото да осигурите множество различни мрежови ресурси.

За целта установявате SSH връзка сSSH сървърът и кажете на клиента да препраща трафик от конкретен порт от вашия локален компютър - например порт 1234 - към адреса на сървъра на базата данни и неговия порт в офисната мрежа. Така че, когато се опитвате да получите достъп до сървъра на базата данни на порт 1234 на текущия си компютър, „localhost“, този трафик автоматично се „тунелира“ през SSH връзката и се изпраща до сървъра на базата данни. SSH сървърът седи в средата и пренасочва трафик напред и назад. Можете да използвате всеки команден ред или графичен инструмент за достъп до сървъра на базата данни, сякаш работи на вашия локален компютър.

За да използвате локално пренасочване, свържете се нормално към SSH сървъра, но и доставете -L аргумент. Синтаксисът е:

ssh -L local_port:remote_address:remote_port username@server.com

Например, да кажем, че сървърът на база данни във вашия офис се намира на 192.168.1.111 в офисната мрежа. Имате достъп до SSH сървъра на офиса на адрес ssh.youroffice.com и вашият потребителски акаунт на SSH сървъра е bob , В този случай вашата команда ще изглежда така:

ssh -L 8888:192.168.1.111:1234 bob@ssh.youroffice.com

След като изпълните тази команда, ще можете да го направитедостъп до сървъра на базата данни на порт 8888 в localhost. Така че, ако сървърът на база данни предлага уеб достъп, можете да включите http: // localhost: 8888 във вашия уеб браузър, за да получите достъп до него. Ако имате инструмент за команден ред, който се нуждае от мрежовия адрес на база данни, ще го насочите към localhost: 8888. Целият трафик, изпратен до порт 8888 на вашия компютър, ще бъде тунелиран до 192.168.1.111:1234 в мрежата на вашия офис.

Ако искате, е малко по-объркващосвържете се със сървърно приложение, работещо на същата система като самия SSH сървър. Например, да кажем, че имате SSH сървър, работещ на порт 22 на вашия офис компютър, но също така имате и сървър на база данни, работещ на порт 1234 на същата система на същия адрес. Искате да получите достъп до сървъра на базата данни от вкъщи, но системата приема само SSH връзки на порт 22 и защитната му стена не позволява други външни връзки.

В този случай можете да стартирате команда като следната:

ssh -L 8888:localhost:1234 bob@ssh.youroffice.com

Когато се опитвате да получите достъп до сървъра на базата данни напорт 8888 на текущия ви компютър, трафикът ще бъде изпратен през SSH връзката. Когато пристигне на системата, управляваща SSH сървъра, SSH сървърът ще го изпрати до порт 1234 на „localhost“, който е същият компютър, на който работи самият SSH сървър. Така че "localhost" в командата по-горе означава "localhost" от гледна точка на отдалечения сървър.

За да направите това в приложението PuTTY на Windows,изберете Връзка> SSH> Тунели. Изберете опцията „Local“. За „Source Port“ въведете местния порт. За „Местоназначение“ въведете адреса на местоназначението и порта във формата remote_address: remote_port.

Например, ако искате да настроите същия SSH тунел, както по-горе, ще въведете 8888 като изходен порт и localhost:1234 като дестинация. Щракнете върху „Добавяне“ след това и след това щракнете върху „Отвори“, за да отворите SSH връзката. Освен това ще трябва да въведете адреса и порта на самия SSH сървър на главния екран „Сесия“, преди да се свържете, разбира се.

Дистанционно пренасочване на порт: Направете локални ресурси достъпни в отдалечена система

„Дистанционно пренасочване към порт“ е обратното на локалнотопренасочване и не се използва толкова често. Тя ви позволява да направите ресурс на вашия локален компютър достъпен на SSH сървъра. Например, да кажем, че поддържате уеб сървър на локалния компютър, пред който седите. Но вашият компютър е зад защитна стена, която не позволява входящ трафик към сървърния софтуер.

Ако приемем, че имате достъп до отдалечен SSH сървър, виеможе да се свърже към този SSH сървър и да използва пренасочване към отдалечен порт. Вашият SSH клиент ще каже на сървъра да препрати определен порт - да речем, порт 1234 - на SSH сървъра към конкретен адрес и порт на текущия ви компютър или локална мрежа. Когато някой получи достъп до порта 1234 на SSH сървъра, този трафик автоматично ще бъде „тунелиран“ през SSH връзката. Всеки с достъп до SSH сървъра ще има достъп до уеб сървъра, работещ на вашия компютър. Това е ефективно начин за тунел чрез защитни стени.

За да използвате дистанционно пренасочване, използвайте ssh командвайте с -R аргумент. Синтаксисът до голяма степен е същият като при локалното препращане:

ssh -R remote_port:local_address:local_port username@server.com

Да речем, че искате да направите сървърно приложение за слушане на порт 1234 на вашия локален компютър, достъпно на порт 8888 на отдалечения SSH сървър. Адресът на SSH сървъра е ssh.youroffice.com и вашето потребителско име на SSH сървъра е Боб, Изпълнете следната команда:

ssh -R 8888:localhost:1234 bob@ssh.youroffice.com

След това някой може да се свърже към SSH сървъра на порт 8888 и тази връзка ще бъде тунелирана към сървърното приложение, работещо на порт 1234 на локалния компютър, от който сте установили връзката.

За да направите това в PuTTY на Windows, изберете Връзка> SSH> Тунели. Изберете опцията „Remote“. За „Source Port“ въведете отдалечения порт. За „Местоназначение“ въведете адреса на местоназначението и порта във формата local_address: local_port.

Например, ако искате да настроите примера по-горе, ще въведете 8888 като изходен порт и localhost:1234 като дестинация. Щракнете върху „Добавяне“ след това и след това щракнете върху „Отвори“, за да отворите SSH връзката. Освен това ще трябва да въведете адреса и порта на самия SSH сървър на главния екран „Сесия“, преди да се свържете, разбира се.

Тогава хората могат да се свържат с порт 8888 на SSH сървъра и трафикът им ще бъде тунелиран към порт 1234 на вашата локална система.

По подразбиране отдалеченият SSH сървър ще е самослушайте връзки от същия хост. С други думи, само хора в същата система като самия SSH сървър ще могат да се свързват. Това е от съображения за сигурност. Ще трябва да активирате опцията „GatewayPorts“ в sshd_config на отдалечения SSH сървър, ако искате да отмените това поведение.

Динамично пренасочване на порт: Използвайте вашия SSH сървър като прокси

Свързани: Каква е разликата между VPN и прокси?

Има и „динамично пренасочване към порт“, коетоработи подобно на прокси или VPN. SSH клиентът ще създаде SOCKS прокси, на който можете да конфигурирате приложения. Целият трафик, изпратен през прокси сървъра, ще бъде изпратен през SSH сървъра. Това е подобно на локалното пренасочване - той отвежда локалния трафик, изпратен до определен порт на вашия компютър и го изпраща през SSH връзката до отдалечено място.

Свързани: Защо използването на обществена Wi-Fi мрежа може да бъде опасно дори при достъп до криптирани уебсайтове

Например, да кажем, че използвате обществено ползванеWi-Fi мрежа. Искате да сърфирате безопасно, без да бъдете отпуснати. Ако имате достъп до SSH сървър у дома, можете да се свържете с него и да използвате динамично пренасочване на портове. SSH клиентът ще създаде SOCKS прокси на вашия компютър. Целият трафик, изпратен до този прокси, ще бъде изпратен през връзката към SSH сървъра. Никой, който наблюдава публичната Wi-Fi мрежа, няма да може да наблюдава вашето сърфиране или да цензурира уебсайтовете, до които можете да получите достъп. От гледна точка на всеки уебсайт, който посещавате, ще бъде сякаш седите пред компютъра си у дома. Това също означава, че бихте могли да използвате този трик за достъп до уебсайтове само за САЩ, докато сте извън САЩ - ако приемете, че имате достъп до SSH сървър в САЩ, разбира се.

Като друг пример може да искате да получите достъп до aприложение за медиен сървър, което имате в домашната си мрежа. От съображения за сигурност може да имате само SSH сървър, изложен на интернет. Не допускате входящи връзки от интернет към приложението за медиен сървър. Бихте могли да настроите динамично пренасочване на портове, да конфигурирате уеб браузър за използване на прокси сървъра SOCKS и след това да получите достъп до сървъри, работещи в домашната ви мрежа чрез уеб браузъра, сякаш седите пред вашата SSH система у дома. Например, ако вашият медиен сървър се намира на порт 192.168.1.123 в домашната ви мрежа, можете да включите адреса 192.168.1.123 във всяко приложение, използващо прокси SOCKS и ще получите достъп до медийния сървър, сякаш сте в домашната си мрежа.

За да използвате динамично пренасочване, изпълнете командата ssh с -D аргумент, така:

ssh -D local_port username@server.com

Например, да кажем, че имате достъп до SSH сървър на ssh.yourhome.com и вашето потребителско име на SSH сървъра е bob , Искате да използвате динамично пренасочване, за да отворите SOCKS прокси на порт 8888 на текущия компютър. Изпълнете следната команда:

ssh -D 8888 bob@ssh.yourhome.com

След това можете да конфигурирате уеб браузър или друго приложение, за да използвате вашия локален IP адрес (127.0.01) и порт 8888. Целият трафик от това приложение ще бъде пренасочен през тунела.

За да направите това в PuTTY на Windows, изберете Връзка> SSH> Тунели. Изберете опцията „Dynamic“. За „Source Port“ въведете местния порт.

Например, ако искате да създадете SOCKS прокси на порт 8888, трябва да въведете 8888 като източник на пристанище. Щракнете върху „Добавяне“ след това и след това щракнете върху „Отвори“, за да отворите SSH връзката. Освен това ще трябва да въведете адреса и порта на самия SSH сървър на главния екран „Сесия“, преди да се свържете, разбира се.

След това можете да конфигурирате приложение за достъп до прокси SOCKS на вашия локален компютър (тоест IP адрес 127.0.0.1, който сочи към вашия локален компютър) и да посочите правилния порт.

Свързани: Как да конфигурирате прокси сървър в Firefox

Например, можете да конфигурирате Firefox да използваSOCKS прокси. Това е особено полезно, тъй като Firefox може да има свои собствени настройки за прокси и не е необходимо да използва настройките за прокси за цялата система. Firefox ще изпрати своя трафик през SSH тунел, докато други приложения ще използват вашата интернет връзка нормално.

Когато правите това в Firefox, изберете „Ръчен проксиконфигурация “, въведете„ 127.0.0.1 “в полето на хоста SOCKS и въведете динамичния порт в полето„ Порт “. Оставете полета HTTP Proxy, SSL Proxy и FTP Proxy празни.

Тунелът ще остане активен и отворен застига да имате отворена връзка за SSH сесия. Когато прекратите вашата SSH сесия и прекъснете връзката със сървър, тунелът също ще бъде затворен. Просто се свържете отново със съответната команда (или подходящите опции в PuTTY), за да отворите отново тунела.