SSH туннелирование по SSL

В одной из моих систем есть брандмауэр, запрещающий любые исходящие сообщения, кроме http (s) ...

Некоторые пользователи должны использовать ssh, но не могут. Сначала я попытался запустить ssh на порту 443, но безуспешно.

Я прогуглил это и обнаружил, что могу сделать это, используя stunnel, который нуждается в некоторой конфигурации, так как это сделать?

1
задан 16 April 2014 в 16:19

2 ответа

Эта конфигурация состоит из двух частей. Первая часть сделана на удаленном сервере SSH. Вторая часть сделана на локальной машине.

Инструкции на стороне сервера:

Сначала установите stunnel:

sudo apt-get install stunnel4

Создайте сертификат SSL (на 365 дней):

openssl genrsa 1024 > stunnel.key
openssl req -new -key stunnel.key -x509 -days 365 -out stunnel.crt
cat stunnel.crt stunnel.key > stunnel.pem
sudo mv stunnel.pem /etc/stunnel/

Сконфигурируйте stunnel для туннеля с 443 (https) до 22 (ssh):

Создайте файл конфигурации для удовлетворения потребностей использования SSH через SSL.

gksu gedit /etc/stunnel/stunnel.conf

Запишите их:

pid = /var/run/stunnel.pid
cert = /etc/stunnel/stunnel.pem
[ssh] accept = public_ip:443
connect = 127.0.0.1:22

Приведенная выше конфигурация сообщает stunnel, где найти сгенерированный нами сертификат и где принимать и пересылать соединения. В этом случае stunnel будет прослушивать public_ip через порт 443 (https) и перенаправлять туда соединения обратно на localhost 22 (ssh).

Чтобы запустить службу stunnel, нам нужно активировать ее в / etc / default / stunnel4. Измените ENABLED строку с 0 на 1.

Наконец, мы можем запустить службу и перейти к конфигурации клиента:

sudo service stunnel4 start

Вы можете убедиться, что stunnel теперь прослушивает, используя команду netstat:

netstat -natp | grep :443

Инструкции на стороне клиента:

Сначала установите пакет stunnel:

sudo apt-get install stunnel4

Создайте сертификат SSL (на 365 дней):

openssl genrsa 1024 > stunnel.key
openssl req -new -key stunnel.key -x509 -days 365 -out stunnel.crt
cat stunnel.crt stunnel.key > stunnel.pem
sudo mv stunnel.pem /etc/stunnel/

Создайте файл конфигурации:

gksu gedit /etc/stunnel/stunnel.conf

Напишите их:

pid = /var/run/stunnel.pid
cert = /etc/stunnel/stunnel.pem
[ssh] accept = 127.0.0.1:2200
connect = remote_ip:443

Чтобы запустить службу Stunnel, нам нужно активировать ее в / etc / default / stunnel4. Измените строку ENABLED с 0 на 1.

Запустить службу.

sudo service stunnel4 start

Установите соединение

Теперь, когда служба stunnel работает как на сервере, так и на клиенте, мы готовы установить безопасное соединение. Теперь, когда вы подключаетесь к локальному компьютеру через порт 2200, он устанавливает соединение с удаленным IP-адресом через порт 443, создает безопасное соединение SSL и подключается к порту 22 на другом конце. Ваши зашифрованные соединения SSH теперь обернуты в зашифрованное соединение SSL с использованием порта 443.

ssh localhost -p 2200

Источники: link1 Link2

0
ответ дан 16 April 2014 в 16:19
  • 1
    Любая идея, почему я получаю " никакой такой файл или каталог не существует, can' t доступ file" когда я пытаюсь просканировать/initrd.img.old. Мог это быть потому что it' s старый файл ядра, который был обновлен к/initrd.img? – K.Gandhiok 10 August 2015 в 11:00

stunnel подходит для постоянных настроек, но если вам нужно более специальное решение, вы можете объединить 2 туннеля.

Например, вы хотите, чтобы хост A получил доступ к порту 443 на хосте B, но заблокирован брандмауэром, поэтому вы пытаетесь создать туннель от хоста C, который может получить доступ как к порту A 22, так и к порту B 443

ssh -R 443:B:443 root@A не будет работать в Ubuntu или любом другом дистрибутиве, который отключает root-аккаунт или root-доступ по ssh.

ssh -R 443:B:443 other_user@A не будет работать, так как только root может настроить порт прослушивания на A, даже если у пользователя «other_user» есть разрешение sudo.

ssh -R 1443:B:443 other_user@A Позволит A получить доступ к B: 443 с использованием 127.0.0.1:1443. Это хорошо, но иногда вы не можете изменить порт (возможно, номер порта, который жестко задан в приложении).
В этом случае вы можете добавить еще один туннель из A: 443 в A: 1443, используя ssh -L 443:127.0.0.1:1443 127.0.0.1 в дополнение к предыдущему туннелю A-> C-> B.

0
ответ дан 16 April 2014 в 16:19

Другие вопросы по тегам:

Похожие вопросы: