Так уж повелось, что на работах стали запрещать доступ к таким сайтам как Одноклассники, Вконтакте, а порой даже запрещают использовать ICQ. Начальство думает, что если у сотрудника не будет доступа к данным ресурсам, то работоспособность будет выше. Однако они упускают одну мелочь — запретный плод всегда слаще. Цель данной статьи рассказать об одном из способов получения доступа ко всем ресурсам интернета без ограничения.
Способ немного своеобразные, однако рабочий на 100%. Для работы данного способа необходим компьютер, постоянно находящийся в сети либо NAS. Основное условие — на удаленной машине должна быть служба SSH*. В моем случае я использовал свой Synology DS209j*.
И так, первым делом нам нужно поднять SSH сервер на удаленной машине. Если у вас Linux или вы используете NAS как и я, то проблем с данной службой не возникнет. Для пользователей Windows я напишу отдельную статью на эту тему. Скажем так — она еще в разработке.
Для начала нам необходимо настроить sshd. Открываем файл /etc/ssh/sshd_config и устанавливаем следующие значения:
Код: Выделить всё
Port 443
PubkeyAuthentication yes
PermitEmptyPasswords no
После изменений в файле конфигураций перезагрузите sshd.
Код: Выделить всё
# /etc/rc.d/sshd restart
Код: Выделить всё
# useradd -g users -s /bin/sh -d /home/tunnel tunnel
Код: Выделить всё
# cd /home/tunnel
# md .ssh
# cd .ssh/
# ssh-keygen -b 1024 -t dsa -f keys
Мы получили два ключа — публичный и приватный. Публичный ключ переименовываем в authorized_keys, а приватный копируем себе на локальную машину. На этом настройка серверной части подошла к концу. Осталось проверить правильно ли мы все сделали.
Так как у подавляющего большинства на работе Windows, в качестве клиентской части мы будем использовать PuTTY и Plink. Загрузите со официального сайта* программы PuTTY, Plink, PuTTYgen. Поместите все в одну папку, скажем c:\tunnel\. Так же скопируйте в нее наш ключ, полученный с сервера, допустим key.
Так как у закрытого ключа нет четкого формата, его необходимо преобразовать для PuTTY. Запускаем утилиту PuTTYgen и делаем следующее:
Так как мы не устанавливаем пароль, программа обязательно ругнется, мол вы уверены, что хотите сохранить ключ без парольной фразы. Отвечаем — да. Вы можете установить парольную фразу, однако, как я уже говорил, это скажется на автоматическом создании туннеля. Сохраняем ключ как key.ppk.
Пришло время проверить, правильно ли мы настроили сервер. Заходим в Пуск -> Выполнить. Вводим cmd и проверяем.
Код: Выделить всё
C:\tunnel> plink.exe -p 443 -l tunnel -i key.ppk 192.168.1.20
Using username "tunnel".
BusyBox v1.1.0 (2010.04.19-13:38+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
FS_AgentSIB>
Теперь нам нужно все автоматизировать. Для начала сделаем PuTTY портативным, чтобы мы могли запускать его с флешки и не оставлять никаких следов в системе. Известно, что PuTTY хранит свои настройки в реестре. Значит нам нужно на время слить куда-нибудь старые настройки PuTTY, загрузить свои, указать путь к своему файлу putty.rnd (Он используется для генерации ключей и является уникальным) и только после этого запустить PuTTY. После окончания работы нам нужно вернуть старые настройки если они были.
Вот как это можно реализовать. Для начала создадим файл puttydel.reg, скопируйте в него:
Код: Выделить всё
REGEDIT4
[-HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions]
[-HKEY_CURRENT_USER\Software\SimonTatham\PuTTY]
[-HKEY_CURRENT_USER\Software\SimonTatham]
Далее создайте exec_putty.bat, откройте блокнотом и вставьте следующее:
Код: Выделить всё
@ECHO OFF
rem Меняем кодировку
chcp 1251 >nul
rem Сливаем старые настройки, если их нет, ничего не происходит.
regedit /ea old.reg HKEY_CURRENT_USER\Software\SimonTatham
rem Очищаем ветку
regedit /s puttydel.reg
rem Вливаем свои настройки, если их нет, ничего не происходит.
regedit /s putty.reg
rem Добавляем путь к файлу putty.rnd
rem Определяем реальный патч и дублируем слешы.
SET NEW_CD=%CD:\=\\%
rem Генерируем файл реестра
echo REGEDIT4 > puttyrnd.reg
echo. >> puttyrnd.reg
echo [HKEY_CURRENT_USER\Software\SimonTatham\PuTTY] >> puttyrnd.reg
echo "RandSeedFile"="%NEW_CD%\\putty.rnd" >> puttyrnd.reg
rem Запускаем его
regedit /s puttyrnd.reg
rem И удаляем :)
del puttyrnd.reg
rem Запускаем PuTTY с ключем W, что позволит заморозить скрипт до завершения программы
start /w putty.exe
rem после закрытия PuTTY
rem Сливаем наши настройки
regedit /ea putty.reg HKEY_CURRENT_USER\Software\SimonTatham
rem Чистим реестр от наших настроек
regedit /s puttydel.reg
rem Заливаем старые настройки
regedit /s old.reg
rem Удаляем мусор
del old.reg
Код: Выделить всё
nircmd.exe execmd exec_putty.bat
Конфигурируем PuTTY.
Указываем сервер (пока тестовый внутри сети) и название подключения, например tunnel.
Идем во вкладку Connection->data и указываем имя пользователя
Далее важный шаг! Если на фирме для доступа используется прокси, то эту вкладку нужно заполнить согласно вашим параметрам. Однако для тестов на локальном компе я ее не заполняю.
Далее идем во вкладку Connection->SSH->tunnel. Ставим порт 9999, отмечаем галочкой Dynamic и нажимаем ADD. В текстовой области должна появиться строка D9999. Этого достаточно в принципе, однако у каждого свои вкусы по настройки.
Возвращаемся к первой вкладке Sessions и жмем Save. В списке сессий должна появиться наша сохраненная сессия.
Тестово подключаемся, принимаем ключ и закрываем. Входить не надо, ды у вас и не получиться, так как у пользователя нет пароля.
Теперь проверим правильность настроек сервера. Запустим PuTTY (ВНИМАНИЕ! С этого момента, когда я говорю «запустим PuTTY», это означает, что нужно запускать файл start_putty.bat, иначе настройки сохраняться не там!). Откроем cmd и выполним:
Код: Выделить всё
C:\tunnel>plink -load tunnel -i key.ppk
Using username "tunnel".
BusyBox v1.1.0 (2010.04.19-13:38+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
FS_AgentSIB>
И так, туннель настроен, однако это не удобно запускать каждый раз PuTTY и потом Plink. Создаем скрипт exec_link.bat со следующим содержимым.
Код: Выделить всё
@ECHO OFF
rem Меняем кодировку
chcp 1251 >nul
rem Сливаем старые настройки, если их нет, ничего не происходит.
regedit /ea old.reg HKEY_CURRENT_USER\Software\SimonTatham
rem Очищаем ветку
regedit /s puttydel.reg
rem Вливаем свои настройки, если их нет, ничего не происходит.
regedit /s putty.reg
rem Добавляем путь к файлу putty.rnd
rem Определяем реальный патч и дублируем слешы.
SET NEW_CD=%CD:\=\\%
rem Генерируем файл реестра
echo REGEDIT4 > puttyrnd.reg
echo. >> puttyrnd.reg
echo [HKEY_CURRENT_USER\Software\SimonTatham\PuTTY] >> puttyrnd.reg
echo "RandSeedFile"="%NEW_CD%\\putty.rnd" >> puttyrnd.reg
rem Запускаем его
regedit /s puttyrnd.reg
rem И удаляем :)
del puttyrnd.reg
rem Запускаем plink в скрытом виде! чтобы не было видно окна!
start nircmd.exe execmd plink.exe -load tunnel -i key.ppk
rem Ждем 10 секунд, давая plink прогрузиться!!!
start /w nircmd.exe wait 10000
rem Удаляем весь мусор сразу после запуска Plink!!!
rem Сливаем наши настройки
regedit /ea putty.reg HKEY_CURRENT_USER\Software\SimonTatham
rem Чистим реестр от наших настроек
regedit /s puttydel.reg
rem Заливаем старые настройки
regedit /s old.reg
rem Удаляем мусор
del old.reg
Код: Выделить всё
nircmd.exe execmd exec_link.bat
После запуска файла start_tunnel.bat на секунду появиться окно консоли и пропадет. В диспетчере задач вы сможете увидеть появление plink. Туннель можно тестировать. Для отключения туннеля создайте еще один файл kill_tunnel.bat:
Код: Выделить всё
nircmd.exe killprocess plink.exe
Вот и все, остальные настройки сделаны. Для работы любой программы через данный туннель используйте прокси SOCKS5 127.0.0.1 порт 9999. Остальное можно будет подконфигурировать на месте через наш PuTTY. В частности указать нужный IP или DNS-имя сервера и изменить настройки Proxy. Обращаю ваше внимание, что нельзя одновременно запускать скрипт PuTTY и Plink иначе первоначальные настройки будут затерты. В дальнейшем, возможно, я модернизирую скрипты.
Вот и все. Для самых ленивых выкладываю конечную версию файлов, однако статью все же рекомендую прочитать.
Удачи!
---
Ссылка на статью: http://citylive.ru/blog/139.html*
* - для пользователей сети Домолинк ссылка является внешней.