ServerAdmin.ru
28.9K subscribers
306 photos
35 videos
13 files
2.63K links
Авторская информация о системном администрировании.

Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
​​Информационный пост на тему ssh и его возможностей по туннелированию трафика. С помощью ssh подключения можно совершать очень много простых, полезных и неочевидных вещей. Иногда это очень удобно. Я рассмотрю два примера, которые сам регулярно использую. Для их реализации вам необходим обычный ssh доступ к какому-то серверу в интернете.

SOCKS-прокси через ssh. Вы можете без проблем поднять у себя на компьютере локальный socks прокси с использованием удаленного сервера. Для этого локально подключитесь к серверу по ssh примерно таким образом:

ssh -D 3128 root@95.145.142.226

Дальше идёте в любой браузер в настройки прокси и указываете там в параметрах для socks 5 свой локальный socks сервер: localhost, порт 3128. Дальше можете сразу же проверить, какой внешний ip адрес будет показывать ваш браузер. В общем случае это должен быть ip адрес сервера, к которому вы подключились по ssh.

Для подобного подключения подойдет современный windows terminal, который уже имеет встроенный ssh клиент. То есть подключиться проще простого и ничего особо настраивать не надо. На самом сервере, к примеру, можно быстро поднять adguard и использовать его как собственный блокировщик рекламы. При этом не придется замусоривать локальную машину для установки блокировщиков, которые точно не известно, что делают на вашем компе.

Можно завести отдельный браузер и использовать его только с прокси для фильтра рекламы или обхода блокировок. Тогда не придется постоянно менять настройки на основном. Применения для подобного прокси может быть много.

Переадресация портов через ssh. Это тоже очень простая и полезная история. С помощью ssh можно удаленный порт переадресовать себе локально.

ssh  -L 8181:127.0.0.1:8080 root@95.145.142.226

В данном случай я удаленный порт 8080, который слушает только localhost (127.0.0.1) переадресовал себе локально на порт 8181. Тут важно не перепутать удаленную и локальную машины. 127.0.0.1:8080 - это удалённый сервер, к которому мы подключились по ssh, а 8181 локальный порт на машине, с которой происходит подключение к серверу.

С помощью этой переадресации можно локально получить доступ к порту, который закрыт для удаленных подключений. Обычно локальные mysql клиенты используют такие подключения. Но не обязательно. Можно банально какой-то веб сервер запустить на сервере, закрыв к нему доступ из интернета, а подключаться к нему со своего компа через ssh. Так можно закрывать какие-то панели управления от посторонних глаз.

#ssh #полезности
​​Ранее я уже рассказывал о полезных возможностях ssh. Речь была о SOCKS-прокси и переадресации портов через ssh. Сейчас расскажу о том, как настроить полноценный vpn туннель с помощью подключения по ssh.

Сразу отвечу на вопрос, зачем это вообще нужно, если есть куча других способов настроить vpn. Все дело в простоте и времени настройки. Обычно на сервере уже есть настроенный openssh сервер, так что ничего дополнительно устанавливать не надо. Берёте любой линукс сервер или виртуальную машину и организовываете через него vpn канал.

Для начала вам нужно включить параметр в конфиге /etc/ssh/sshd_config:
PermitTunnel yes
и перезапустить службу sshd.

Далее с клиента подключаетесь к серверу по ssh со следующими ключами:
ssh -p 22777 -w3:3 root@111.222.333.444

w3:3 - имена tun интерфейсов, которые будут созданы на клиенте и сервере (в данном случае tun3). Обращаю внимание, что подобное подключение напрямую из Windows работать не будет. Я для этого подключаюсь через WSL.

После подобного ssh подключения, на сервере и клиенте поднимаются tun3 интерфейсы и фактически vpn канал уже создан. Дальше вам нужно вручную назначить им ip адреса и можно передавать информацию по зашифрованному vpn каналу поверх ssh подключения. Что-то вроде этого надо сделать:
server: ip a add 10.20.0.1/30 dev tun3
server: ip link set dev tun3 up
client: ip a add 10.20.0.2/30 dev tun3
client: ip link set dev tun3 up

Я взял подсеть 10.20.30.0 с маской 30, где всего 2 ip адреса и объединил клиента и сервера в рамках это подсети. Теперь можно пинговать по этим адресам друг друга с сервера или клиента.

Дальше есть разные варианты, как использовать это подключение. Если вы с клиента захотите увидеть локальную сеть за сервером, то на самом сервере нужно будет настроить ip_forward и nat для tun интерфейса, а на клиенте добавить маршрут в эту локалку через vpn канал. Всё точно так же, как и на других vpn туннелях.

Если тема заинтересовала без проблем нагуглите пошаговую инструкцию. Я просто дал информацию о том, что так можно сделать. Как-то объединял по быстрому два филиала через такой туннель. Автоматизировал всё через обычные bash скрипты. Один сервер стоял на базе какой-то готовой сборки с веб панелью управления. И всё это дремучей версии, непонятно кем и как настроенный. Я не захотел туда лазить, разбираться и что-то ставить дополнительно. Просто настроил vpn поверх ssh и закрыл вопрос.

#ssh #vpn