SSH-туннели: безопасно через сервер

    Доброго времени суток. Попробуем дополнить и расширить статью SSH-туннели — пробрасываем порт. Рассмотренными примерами мы убьем сразу 2 задачи:
    1. Межсетевая коммуникация через промежуточный сервер, когда между сетями пути нет.
    2. Создание безопасного соединения через не доверенную сеть.
    Предположим, что у нас есть unix like машина в сети, с запущенным sshd.
    Первый вариант создания криптотуннеля это соединение, условно которое можно назвать точка-точка. В частности, при соединении сервером на стороне клиента открывается локальный порт, обращения на который будут передаваться удаленной машине через установленный криптотуннель. Что бы было понятно рассмотрим пример:

    Наша машина: IP 10.0.0.2
    Сервер: IP 10.0.0.1 (внешняя сеть там же где и мы) и 192.168.0.1 (внутренняя сеть, где находится целевой хост)
    Целевой хост: 192.168.0.10

    Для того, что бы безопасно пройти внешнюю, не контролируемую нами сеть 10.0.0.0, мы устанавливаем соединение с сервером по следующему шаблону:

    ssh -L локальный_порт:удаленный_хост:удаленный_порт сервер
    То есть
    ssh -L 12345:192.168.0.10:80 192.168.0.1

    Если соединение установлено успешно, то на нашей машине открылся локальный порт 12345, при обращении на который мы попадем на веб сервер (80й порт) 192.168.0.10. Попробовать можно введя в браузере
    http://localhost:12345
    .
    Фактически, тем самым мы обезопасили себя от утечки информации через не безопасный канал связи и получили доступ к внутреннему ресурсу сети из вне.

    Рассмотрим второй вариант. Находясь в не доверенной сети (например в Интернет кафе или чужих контролируемых сетях) мы хотим воспользоваться сервисом, который принципиально не имеет шифрования. Будь то http (конфиденциальна не только переписка, но и учетная запись), icq, pop3 или любое подобное. Для этого, мы сначала устанавливаем соединение с нашим сервером, открывая тем самым криптотуннель, и работаем уже через него. В данном случае открытый у нас локальный порт будет работать аналогично socks5. Рассмотрим установку соединения:

    ssh -D локальный_порт сервер

    Как очевидно, все довольно просто. Далее уже легко настроить наши клиенты на работу через открытый socks на localhost.
    В GNOME это можно сделать нажав Система-> Праметры -> Параметры прокси-сервера:

    Отдельно можно легко в параметрах подключения настроить браузер, icq и многое другое.
    Естественно, воспользоваться такой возможностью можно в Windows. Аналогичные соединения можно установить через клиент ssh putty:

    Заставить в Windows работать большинство приложений через socks умеет widecap


    И несколько советов:
    1. Еще немного повысить уровень безопасности в некоторых случаях можно воспользовавшись не чужим ПО (в смысле с чужого компьютера), а используя возможность X forwarding в том же sshd. Но это отдельная тема. Скажу только что в роле X сервера в Windows может выступать Xming

    2. Не забывайте про возможность Firefox и Chrome режима приватного просмотра.

    Успехов.
    • +11
    • 2,3k
    • 7
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 7

      +2
      habrahabr.ru/search/?q=ssh++tunnel
      Кроме того, в этом посте всё на уровне man ssh. Я не верю, что аудитория Хабра нуждается в перефразировании манов.
        0
        Ну далеко не все с этим сталкивались и знают, так что за статью спасибо — полезно.

        Можно еще было бы добавить, что при включенных в том же putty параметрах можно использовать сжатие, что тоже удобно и полезно ;)
          0
          Иногда клиенты на базе putty не понимают, что сервер поддерживает сжатие, в этом случае в sshd_config на сервере можно явно прописать параметр: Compression yes

          Кроме упомянутого в статье putty, можно еще попробовать специализированный клиент для создания туннелей http://nemesis2.qx.net/pages/MyEnTunnel
        +1
        Если бы я когда-то не увидел похожую статью, я бы вообще не узнал бы о существовании такой функции. Навряд ли будешь искать функцию туннеля в man ssh. А она там есть.
          0
          Еще проще что-бы не мучаться с настройкой прокси, можно использовать proxychains. Быстрый SSH туннель в Linux
            0
            А за proxychains большое спасибо. Не знал.
            0
            Для создания автоматического туннеля средствами plink:

            plink.exe -l -pw -L ::

            Может кому пригодится.

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

            Самое читаемое