Клиентский брандмауэр блокирует все порты, кроме 80 и 443, необходимо переадресовать запросы на порт 443 на SSH или HTTPS - PullRequest
5 голосов
/ 04 января 2009

В настоящее время я работаю с клиентом, если он заблокировал сеть, за исключением портов 80 и 443. Мне нужно подключиться к нашему серверу, используя SSH, но этот же сервер также работает и на нашем веб-сайте. Мы не хотим вкладывать средства в новый сервер или ставить вторую сетевую карту.

Я искал в интернете возможность настроить наш linux-сервер (на котором запущен CentOS 5), так что есть демон, прослушивающий порт 443, который в зависимости от протокола клиента перенаправляет запрос на правильный внутренний порт (SSH 22 или HTTPS перемещен в другой порт _.

В Интернете много людей, ищущих такое решение, но нет четких инструкций, как это сделать.

У кого-нибудь есть идеи / четкие инструкции, как это сделать?

С уважением, нидкил

Ответы [ 5 ]

6 голосов
/ 05 января 2009

sslh: http://www.rutschle.net/tech/sslh.shtml

Я использую 1,5; Я еще не пробовал 1.6b, а у 1.3 проблема с оставлением зомби.

Запустите его на порту 443; если данные не отправляются в течение 2 секунд (по умолчанию), они пересылаются в ssh. В противном случае он перенаправляется на ваш веб-сервер.

Я запускаю его на своем веб-сайте (http://mikeage.net) - вы можете войти в сеть, если хотите видеть оба баннера входа в систему.

В моем случае это также имеет другую цель. У нас есть еще более строгие настройки, чем у вас: все порты заблокированы, но 80 и 443 могут быть доступны через прокси. Я могу заставить SSH использовать такую ​​программу, как corkscrew (или собственно замазку), чтобы прокси-соединение моего SSH-соединения через прокси-сервер компании на мой сервер: 443, где после небольшой задержки мой SSH-сервер отвечает своим баннером входа. Я также могу обслуживать веб-страницы по стандартному HTTPS (и на самом деле).

3 голосов
/ 04 января 2009

Ограничения брандмауэра установлены по определенной причине. Они могут не быть хорошими, но они имеют смысл для человека, который внедрил это или заставил это быть выполненным. Я бы не стал нарушать политику компании по внешним связям.

Если ваша потребность законна, я бы попросил открыть порт или его альтернативный адрес по тем адресам, которые вам нужны. Если это не сработает, возможно, будет приемлемо VPN-решение.

В случае, когда сетевые люди просто безумно защищены, не желают реагировать на причину или просто некомпетентны, я хотел бы убедиться, что у меня есть подпись от менеджера, который готов пойти за меня, КОГДА становится проблемой, прежде чем я реализовал обходной путь. Все остальное может в разумных пределах закончиться увольнением. В конце концов, вы говорите о нарушении политики безопасности компании.

3 голосов
/ 04 января 2009

Простым решением вашей проблемы может быть назначение нескольких IP-адресов вашей коробке и привязка вашего SSH к порту 443 на отдельном IP; обычно вы можете назначить несколько IP-адресов одному адаптеру , не нужно добавлять вторую сетевую карту. В противном случае я не знаю ни одного готового решения для того, что вы хотите сделать. Для этого вам, вероятно, придется создать собственный демон, который будет немного сложнее, но выполнимым.

1 голос
/ 04 января 2009

Вы можете создать небольшое веб-приложение, прослушивающее порт 443, который включает обратную оболочку SSH в направлении IP входящего соединения с использованием аутентификации с открытым ключом. Скажи:

  • Вы авторизуетесь в веб-приложении; веб-приложение получает ваш IP
  • Приложение запускает SSH-туннель со своего IP на ваш IP (на порту 22)
  • Сервер SSH на вашем компьютере завершает туннель и прослушивает localhost: 8080
  • Затем вы начинаете сеанс SSH с localhost: 8080. Команды в следующем интерактивном сеансе перенаправляются на удаленный хост.
0 голосов
/ 04 января 2009

Если у вас есть apache на нашем блоке centos, вы можете использовать mod_proxy для перенаправления запросов с одного порта на другой. Я использую это для перенаправления запросов на http://webmin.myserver.com на http://myserver.com:10000 (webmin работает на недоступном порту)

ServerName webmin.myserver.co.uk
SSLProxyEngine On

ProxyRequests Off
ProxyPass / https://myserver.co.uk:10000/
ProxyPassReverse / https://myserver.co.uk:10000/

Поместите вышеперечисленное в директиву вашего виртуального сервера, и все готово. Это может не работать с Putty, но если вы устанавливаете webmin, он имеет модуль SSH, к которому вы можете получить доступ через браузер.

...