Новости из Блогов Подключение к VPN Juniper Network Connect используя perl-скрипт

Discussion in 'Мировые новости. Обсуждения.' started by d3l3t3, 26 Jul 2012.

  1. d3l3t3

    d3l3t3 Banned

    Joined:
    3 Dec 2010
    Messages:
    1,771
    Likes Received:
    98
    Reputations:
    10
    Подключение к VPN Juniper Network Connect используя perl-скрипт


    Для доступа к некоторым рабочим ресурсам мне необходимо использовать VPN. К
    сожалению, он организован на решении Juniper Network Connect, которое
    использует клиенты с закрытым исходным кодом для Windows (Windows Secure
    Manager) и Linux/Mac (Network Connect). Линукс клиент - ущербный монстрик,
    требующий для своей работы browser с устанвленной JVM, причем исключительно
    i386 (32 бит) архитектуры (используется JNI). Искренне надеюсь, что дурацкая
    модель security by obscurity подохнет вместе с компаниями, которые её
    поддерживают. В данной заметке речь пойдет речь о том, как получить доступ к
    ВПН без Java и Firefox.

    Итак, когда мне надоело запускать бразуер для установления впн соединения, я
    решил разобраться как же это убожество работает. Схема примерно такая:

    1) С помощью браузера вводим имя пользователя и пароль (в моём случае rsa secure id из токена).
    2) Происходит перенаправление на страничку с Host Checker (Java applet),
    который проверяет соответствует ли наша система требованиям, в моём случае его
    можно пропустить, видимо правила не жёсткие. На этом этапе выдаётся
    специальная кука DSID.
    3) Запускается applet , который скачивает клиента для Linux (Java + JNI).
    4) Клиентский applet проверяет, установлен ли клиент, если нет - запускает его установку.
    5) Если клиент установлен - через JNI запускается процесс ncsvc, который в свою
    очередь и поднимает впн. Кроме того - запускается Java GUI (Java + JNI) которое
    показывает статистику.

    Оставив за скобками кривизну архитектуры (особенно использование JNI там, где
    оно никому не нужно) я стал думать как обойтись без Java. У ncsvc есть
    аргументы командной строки, но в моём случае они не работали - виноват
    включенный host checker, данный случай описан в Juniper KB20490. Отладка
    показала, что взаимодействие с ncsvc происходит по протоколу tcp (демон слушает
    на 127.0.0.1:4242). Формат обмена - закрытый, но пакеты небольшие и после
    нескольких экспериментов я смог управлять демоном и без Java.

    В итоге получился perl-скрипт, который позволяет скачивать Linux клиента,
    устанавливать соединение, отображать статистику и работать в консоли. Скачать
    скрипт и посмотреть скриншоты можно в моём блоге
    (http://samm.kiev.ua/jvpn/jvpn-0.4.0.tar.bz2). Скрипт проверялся на RHEL5/6 и
    Ubuntu 12.04. Буду рад замечаниям или сообщениям об ошибках.

    20.07.2012 , Автор: Alex Samorukov
    http://www.opennet.ru/tips/2700_vpn_juniper_script.shtml