[Взлом] SSH-туннелинг или замена VPN

Тема в разделе "Статьи и Co", создана пользователем ASD, 19 авг 2007.

Статус темы:
Закрыта.
  1. ASD

    ASD Постоялец

    Регистр.:
    27 июл 2007
    Сообщения:
    59
    Симпатии:
    23
    ****************************
    SSH-туннелинг или замена VPN
    ****************************

    В последнее время довольно большое распространение получила технология VPN (Virtual Private Networks). В большинстве случаев ее используют люди для шифрования передаваемой информации через локальную сеть (защита от снифанья трафика, что довольно легко осуществить в сети, даже на свичах) и/или последующей передачи информации через Интернет (тут уже целями будет скрытие своего IP-адреса, защита от глобального снифа трафика всей страны (aka СОРМ, он же нынешний СОРМ2) и.д.). Многие уже давно используют данную технологию VPN, но не многие знают об ее более дешевой и мобильной альтернативе. А называется это - SSH-туннелинг.

    Принцип данной реализации следующий. Весь сетевой софт на компе (ну или не весь) форвардится на назначенный порт (вашего локалхоста), на котором висит сервис, соединенный по SSH с сервером (а как мы знаем, соединение по SSH протоколу шифруется) и туннелирующий все запросы; далее, весь ваш трафик (уже не в зашифрованном виде) может форвардится с нашего сервера на прокси (поддерживающий туннерирование) или сокс, который передают весь трафик к необходимым адресам. Наличие прокси или сокса не обязательно, но если нам нужна полнейшая конспирация, то мы можем организовать данный сервис (proxy/socks) на другом сервере (данная схема нужна для создания цепочки адресов), но об этом позже.

    Теперь давайте разберемся с минимальным набором инструментов и сервисов необходимых для организации данного процесса. В первую очередь нам нужна программа для организации туннеля по SSH-протоколу. Для этой задачи мы можем применить VanDyke Entunnel (http://www.vandyke.com/products/entunnel/) или Putty (http://www.web-hack.ru/download/info.php?go=35) (вкладка Connection\SSH\Tunnels). В наших примерах я буду использовать оба клиента. Далее мы можем вручную прописывать в каждой программе работу через прокси или использовать специализированную программу для перенаправления запросов, такую как ProxyCap (http://proxylabs.netwu.com), SocksCap (http://www.socks.nec.com), FreeCap (http://www.freecap.ru) и т.п. В нашем примере будет использоваться ProxyCap, как наиболее удобная софтина (кстати, через ProxyCap мы сможем сделать туннерирование даже WebMoney, которая известна защитой от такого вида софта, для скрытия IP). Так же нам понадобится SSH-аккаунт (на сервере желательно расположенном за пределами вашей страны =), который можно без проблем достать (например, я покупаю VPS-хостинг для этого) и socks`ы.

    Первым делом создаем SSH-аккаунт. Далее, я предлагаю вам использовать socks-сервер, а не proxy, т.к. не все прокси поддерживают туннелирование. Также может оказаться, что сегодня прокси анонимный, а завтра уже и не нет (если, конечно, не вы сами отвечаете за него). Кстати, проверить свою анонимность можно здесь (http://ip.xss.ru). Как я уж говорил, мы можем использовать сокс на удаленной машине (для большей безопасности). Для примера я покажу, как установить сокс-демон. Наиболее популярные и продвинутые демоны под никсы это socks5 от Permeo/NEC (http://freeware.sgi.com/source/socks5/), Dante (http://www.inet.no/dante/) и отечественный продукт 3proxy (http://www.security.nnov.ru/soft/3proxy/). Для примера я выбрал классический демон на FreeBSD - socks5.

    Для тестирования использовалась FreeBSD 5-ой ветки. Я устанавливал socks5 из портов (/usr/ports/net/socks5/), но и из сорцов под фряхой тоже все хорошо собирается и ставится:
    cd /usr/ports/net/socks5/
    make install clean
    rehash

    Для нормальной работы демона необходим конфиг к демону socks5.conf и файл паролей socks5.passwd (если необходима аутификация к сокс-серверу по паролю:(
    touch /usr/local/etc/socks5.conf
    touch /usr/local/etc/socks5.passwd

    Далее добавляем в конфиг следующие строчки:
    auth - - u
    permit u - - - - -
    SET SOCKS5_BINDINTFC 1.2.3.4:8080
    SET SOCKS5_CONFFILE /usr/local/etc/socks5.conf
    SET SOCKS5_PWDFILE /usr/local/etc/socks5.passwd
    SET SOCKS5_MAXCHILD 128
    SET SOCKS5_NOIDENT
    SET SOCKS5_NOREVERSEMAP
    SET SOCKS5_NOSERVICENAME
    SET SOCKS5_V4SUPPORT
    SET SOCKS5_ENCRYPT
    SET SOCKS5_FORCE_ENCRYPT
    SET SOCKS5_UDPPORTRANGE 1023-5000

    Первые две строчки указывают, что необходима аутификация по логин/пароль. SOCKS5_BINDINTFC указывает на какой IP (если у сервера несколько алиасов) и порт повесить демон. SOCKS5_MAXCHILD по умолчанию 64, я советую увеличить до 128, чтобы всем юзерам (если их много) хватило потоков. Далее, идут строчки для ускорения работы демона. SOCKS5_V4SUPPORT - поддержка 4-ой версии протокола. SOCKS5_ENCRYPT и SOCKS5_FORCE_ENCRYPT поддержка шифрования, если клиент это поддерживает. За более подробной информацией по установка обращайтесь к файлам README и INSTALL, а за информацией по настройке к манам socks5(1) и socks5.conf(5).

    Далее, заполняем файл паролей. Он имеет обычный текстовый формат и login/password разделяются в нем пробелами:
    user password
    root toor

    Теперь можно запускать демон и приступить к настройке клиентского софта:
    /usr/local/bin/socks5


    Запускам ProxyCap (http://forum.web-hack.ru/index.php?showtopic=29262), кликаем правой кнопкой мыши на значке в трее, Preferences. На вкладке "Proxies" вписываем 127.0.0.1:8080 и устанавливаем в "Require Authorization" наш login/password на сокс. На вкладке "Rules" добавляем сначала правило для Entunnel, указав в "Rule Type" - Force direct connetion. Далее, создаем правило, для всего остального софта, трафик от которого будет шифроваться и туннелироваться через сокс. В правиле указываем "All Programs", "Tunnel through proxy" и в выпадающем меню наш сокс. Так же можно создать правило не для всего софта, а только выборочный софт пускать через туннель или наоборот, создать правило для всего софта, но для некоторого софта сделать прямой доступ в инет (Force direct connetion). В качестве дополнения могу сказать, что если ваша сетевая программа поддерживает работу через сокс/прокси (и нет необходимости пускать сразу весь сетевой софт через туннель), то в качестве настроек прокси вы можете указать забинденный Entunnel`ем адрес и порт - 127.0.0.1:8080.

    Запускаем Entunnel и создаем в нем новое соединение по SSH. Далее, в свойствах соединения (Port Forwarding) добавляем наш сокс. В категории "Local" вписываем 127.0.0.1:8080, а в категории "Remote" вписываем IP и порт нашего сокс-сервера. Настройка закончена! Если что-то не работает, то еще раз перечитайте все пункты настройки.

    В случае, если вы хотите использовать SSH-аккаунт, как конечную точку (т.е. не юзать соксы или прокси), то ваши настройки должны быть следующие (на примере для Putty:( на вкладке Connection\SSH\Tunnels в строке "Source port" указываем порт, на который Putty забиндится на локалхосте (например, 8080), далее ставим влажок на "Dynamic" и идем на вкладку "Session" прописывать адрес и порт сервера с SSH. Коннектимся...


    ==========
    Заключение
    ==========

    Какие плюсы данной системы:

    *) Для организации данной схемы не нужно устанавливать серверный софт (т.к. SSH-аккаунт и сокс можно без проблем достать в инете);
    *) Т.к. при SSH-соединении трафик шифруется и сжимается, то мы получаем небольшой прирост скорости работы в инете (это верно, когда сокс-демон находится на том же сервере);
    *) В случае, когда сокс-сервер находится на другом хосте, то мы получаем дополнительную цепочку серверов, которые повышают нам безопасность и анонимность;

    =====[ Terabyte ]=====
     
    lok707, pslava, t0wer и ещё 1-му нравится это.
  2. Nul

    Nul

    Регистр.:
    11 фев 2007
    Сообщения:
    260
    Симпатии:
    24
    блин
    классная статья - как раз в тему
    но нифига не понятно
    счас начну по шагам все делать может получится
     
  3. Nul

    Nul

    Регистр.:
    11 фев 2007
    Сообщения:
    260
    Симпатии:
    24
    можно ли использовать каким то оброзом вин дедик для этих целей?
    то есть ssh на виндедике возможен?
     
  4. Serg78

    Serg78

    Регистр.:
    18 ноя 2006
    Сообщения:
    191
    Симпатии:
    61
    :ay:
    на точно таком принципе основана услуга SecurSurf от производителя DriveCrypt.
    А тут тоже самое, тока свое.
     
  5. Nold

    Nold Прохожие

    Скорей всего возможен, ведь в мире компьютеров ничего невозможного нет, но гимора наверно больше будет, проще заюзать никс, там все проще.

    Если десктоп на линуксе, то можно еще заюзать прогу Gnome SSH Tunel Manager - заточена под гном, т.е. имеет гуйевый интерфейс.
     
  6. pessok

    pessok Прохожие

    PUTTY+Proxifier

    Я использую связку PUTTY+Proxifier,всё работает и очень удобно.Только порт я ставлю 9999.
    Если кому будет интересно,то напишу как я настраиваю.
     
  7. t0wer

    t0wer BlackHerald

    Регистр.:
    24 июн 2008
    Сообщения:
    731
    Симпатии:
    421
    тема интересная (сенькъюл тебя кнопочкой)... щас на новом компе как раз линух ставить буду и обязательно юзну, как раз я с впн-ом хотел замутить, но теперь думаю что SSH попробую...

    Как на счет тестирования на других ОСях, кроме FreeBSD 5-ой ветки??? ;)
     
  8. XDS

    XDS

    Регистр.:
    20 окт 2007
    Сообщения:
    365
    Симпатии:
    82
    В июньском журнале ][akep есть похожая статья)))
    если что-то непонятно с этой статьи, почитайте статью из журнала. Там много интерестных моментов можно прочитать. Если не можете найти статью, в личку пишите.
     
    Abbes нравится это.
  9. noIIIpera

    noIIIpera

    Регистр.:
    31 янв 2007
    Сообщения:
    283
    Симпатии:
    63
    А какая разница?
    ssh он и в африке...
     
  10. ReVEraNT

    ReVEraNT Прохожие

    Больше подходит - ssh он и в Windows SSH =)
    А вообще это очень удобно бывает, особенно когда нет например GRE или админиских прав (OpenVPN)
     
Статус темы:
Закрыта.