Туннелирование в ssh

Защита информации, сетевая безопасность, уязвимости

Модератор: Rostov114

Туннелирование в ssh

Сообщение Sicness » 08 июн 2009, 14:22

Материал из Викиучебника

SSH туннель — это туннель, создаваемый посредством SSH соединения и используемый для шифрования туннелированных данных. Используется для того, чтобы обезопасить передачу данных в интернете. Особенность состоит в том, что незашифрованный траффик какого-либо протокола шифруется на одном конце SSH соединения и расшифровывается на другом.


Не секрет, что на сегодняшний день большая часть сервисов не шифруют свои сетевые взаимодействия, в том числе и процесс авторизации. Это значит, что использование этих сервисов не удовлетворяет требованиям конфиденциальности. Многие люди считают, что им нет необходимости защищать свою информацию. Но так кажется только на первый взгляд. К примеру, нарушение тайны личной переписки не редко может принести негативные последствия для собеседников. Если же нарушение конфиденциальности межличностной (или деловой) переписки не пугает, то следует еще учитывать тот факт, что ваша учетная запись открытым текстом передаётся по каналу связи. То есть злоумышленнику будет доступна вся информация, необходимая ему для того, чтобы представиться системе под вашим именем, что может быть очень опасно для вас. Кроме доступа к хранимой на сервисе личной информации злоумышленник сможет действовать от вашего имени. Довольно критическая ситуация, если речь идет о переписке, денежных операциях или администрировании.
Данная статья не сможет полностью исключить описанную проблему, но поможет установить безопасный канал связи через потенциально ненадёжную сеть. То есть, когда вы выходите в Интернет через чужую инфраструктуру где потенциально могут быть установлены специальные перехватчики пакетов (sniffer), например у знакомых в гостях, ВУЗе, Интернет-клубе, при использовании не защищенных беспроводных сетей и так далее. Для реализации нам понадобится на нашей доверенной машине openssh-server (sshd). Благо по умолчанию он установлен в большинстве дистрибутивов операционных систем семейства UNIX. Со своей стороны вы можете работать как с Windows, так и с UNIX. Оба случая будут рассмотрены ниже.

Проброс удаленного порта на локальную машину в UNIX

Рассмотрим проброс удаленного порта на локальную машину в UNIX. Как видно из названия, нам понадобится машина с UNIX с нашей учетной записью и установленным клиентом openssh-client. Рассмотрим ситуацию, где нам надо по безопасному каналу соединится с web-сервером на доверенной машине. Мы можем это сделать, открыв ssh-сессию специальным образом:

Код: Выделить всёРазвернуть
ssh -L 3333:127.0.0.1:80 x.x.x.x -N


Разберем подробно. Ключ -L указывает клиенту ssh что бы он прослушивал указаный далее порт (3333 в примере). Далее через двоеточие IP адрес, с которым мы хотим соединится (адрес сервиса 127.0.0.1 в нашем примере, то есть localhost, то есть он и есть) и через двоеточие порт сервиса (80 в примере). Далее IP адрес нашей доверенной машины (x.x.x.x замените на реальный адрес) и ключ -N, говорящий о том, что вход в систему совершать не надо. Выполнив эту команду, мы создадим туннель через криптостойкое соединение ssh. Теперь, чтобы войти через созданный туннель на целевой сервис нам достаточно обратиться к своему отрытому порту 3333. Помните, что только root может открывать порты ниже 1024. Таким образом, вписав в браузер адрес localhost:3333 , мы попадем на целевой сайт.

SOSKS в Windows через sshd

Аналогичный фокус можно проделывать и из операционной системы Windows, используя специальные ssh клиенты. Наиболее популярные из них VanDyke Entunnel и Putty. Но рассмотрим более интересную возможность, а именно проброс не одного порта, а использование удаленного sshd в виде SOCKS сервера. В UNIX клиентах openssh-client для этого нужно заменить ключ -L на ключ -D . Поддерживается 4 и 5я версии протокола SOCKS. Как мы это сделаем:
1. Запустим Putty, укажем host name и порт при необходимости.
2. Перейдем на вкладку Connection \ SSH \ Tunnels
3. Укажем в source port любой свободный порт (например 3334).
4. В Destination укажем lacalhost:3334
5. Переставим переключатель с Local на Dynamic (динамическое определение целевого хоста).
6. Нажмём кнопку Add для фиксации изменений настроек туннелирования.
7. Нажмём Open для соединения и авторизируемся в системе.

putty.JPG
Настройка туннелирования в Putty
putty.JPG (39.47 Кб) Просмотров: 17469


До тех пор, пока открыто соединение в Putty с сервером, у нас будет на порту 3334 шифрованный SOCKS туннель до нашего сервера. Рассмотрим как пустить Mozilla Firefox (далее FF) через этот SOCKS:
1. Запускаем FF
2. Жмём Инструменты / Настройки... / Дополнительно / Сеть / Настроить
3. Выбираем "Ручная настройка сервиса прокси"
5. Узел SOCKS 127.0.0.1 и порт указанный вами ранее (3334 в примере)

FF.JPG
Настройка SOCKS в Mozilla Firefox


Теперь можно не боятся перехвата cookies или кражи вашей учетной записи на web ресурсы. Аналогичным образом настраивают все приложения, поддерживающие SOCKS. Если приложение не поддерживает его, то его можно пустить через туннель "грубой силой" при помощи таких программ как freecap, что описывалось в предыдущих статьях.

Используя описанные выше методы, вы можете не опасаясь перехвата конфиденциальной информации через канал связи использовать свои ресурсы в чужой инфраструктуре.

Security Team "FOS Black Hat"
Последний раз редактировалось Sicness 10 июл 2009, 13:57, всего редактировалось 13 раз(а).
Аватара пользователя
Sicness
Автор
 
Сообщения: 198
Зарегистрирован: 31 дек 2007, 11:29

Re: Туннелирование в ssh

Сообщение server801 » 08 июн 2009, 16:01

самое безопасное соединение по ключам
ИзображениеИзображение
Изображение
Аватара пользователя
server801
Активный участник
 
Сообщения: 511
Зарегистрирован: 14 янв 2009, 14:28

Re: Туннелирование в ssh

Сообщение Sicness » 08 июн 2009, 16:05

Что вы хотели сказать? Это похвала в сторону opennssl или вы думаете что ssh использует не ассиметричное шифрование? Не понял вашей идеи.
Аватара пользователя
Sicness
Автор
 
Сообщения: 198
Зарегистрирован: 31 дек 2007, 11:29

Re: Туннелирование в ssh

Сообщение server801 » 08 июн 2009, 16:13

ssh -соединение происходит методом шифрования и принятия сетрификатов -так?но!самое безопасное соединение -это шифрование по ключам.то есть -создается сертификат на сервере и создается для клиента.так сказать -беспарольное соединение.безопасность такого соединения по ssh намного выше.далее утилита denyhosts(Linux) и sshguard+bruteblock (FreeBSD) исключают возможность подбора пароля
ИзображениеИзображение
Изображение
Аватара пользователя
server801
Активный участник
 
Сообщения: 511
Зарегистрирован: 14 янв 2009, 14:28

Re: Туннелирование в ssh

Сообщение Sicness » 08 июн 2009, 18:23

server801 писал(а):ssh -соединение происходит методом шифрования и принятия сетрификатов -так?но!самое безопасное соединение -это шифрование по ключам.то есть -создается сертификат на сервере и создается для клиента.так сказать -беспарольное соединение.безопасность такого соединения по ssh намного выше.далее утилита denyhosts(Linux) и sshguard+bruteblock (FreeBSD) исключают возможность подбора пароля


Использование ключей, на сколько я понимаю, изменяет только ход авторизации. То есть не по паролю, а по наличию закрытого ключа. Таким образом безопасность в одном случае в безопасном хранении пароля (в голове), в другом случае безопасного хранения ключа (на машинном насителе информации). Спорный вопрос что лучше. man shh

-c cipher_spec
Selects the cipher specification for encrypting the session.

Protocol version 1 allows specification of a single cipher. The
supported values are “3des”, “blowfish”, and “des”. 3des
(triple-des) is an encrypt-decrypt-encrypt triple with three dif?
ferent keys. It is believed to be secure. blowfish is a fast
block cipher; it appears very secure and is much faster than
3des. des is only supported in the ssh client for interoperabil?
ity with legacy protocol 1 implementations that do not support
the 3des cipher. Its use is strongly discouraged due to crypto?
graphic weaknesses. The default is “3des”.


Очевидно, что используется симетричное шифрование.
И беспарольное соединение делается не много иначе. User создает пару открытый/закрытый ключ и ложит открытый ключ на сервер. Далее очевидно.
Аватара пользователя
Sicness
Автор
 
Сообщения: 198
Зарегистрирован: 31 дек 2007, 11:29

Re: Туннелирование в ssh

Сообщение server801 » 08 июн 2009, 21:01

о чем и речь!но пароль хранится в самом ключе,а не в голове.в другом же случае -авторизация получается открытой!использование авторизации по ключам и делает бесмысленность перебора паролей взломщиком-будет просто получать отлуп. :)
ИзображениеИзображение
Изображение
Аватара пользователя
server801
Активный участник
 
Сообщения: 511
Зарегистрирован: 14 янв 2009, 14:28

Re: Туннелирование в ssh

Сообщение Sicness » 08 июн 2009, 21:38

server801 писал(а):о чем и речь!но пароль хранится в самом ключе,а не в голове.в другом же случае -авторизация получается открытой!использование авторизации по ключам и делает бесмысленность перебора паролей взломщиком-будет просто получать отлуп. :)

:) Честно говоря, опять не совсем так. :) Пароль не хранится в самом ключе. В ключе хранится пара d и n, где n - произведение двух больших простых чисел(p and q), а d - это обратный элемент по модулую результата функции Эйлера от p ( fi(p-1)(q-1) ) к числу e, в степень которого возводится открытый текст. Если что, поправте меня.
Действительно делает бемысленным перебор паролей, но увы, тот кто попадёт за мой компьютер может свиснуть файлик с ключем и заходить аналогично без пароля. То есть тут мастрество хранения файлов. Я думаю стоит использовать авторизацию по ключам в 3х стучаях:
1. Когда страшно за крайне маловероятную атаку типа man-in-the-milde
2. Когда совсем лень часто вводить пароль
3. Когда тот кому делаешь с трудом понимает что происходит :)
Аватара пользователя
Sicness
Автор
 
Сообщения: 198
Зарегистрирован: 31 дек 2007, 11:29

Re: Туннелирование в ssh

Сообщение server801 » 08 июн 2009, 21:56

как это свистнуть?ключ для клиента лежит на вашем носителе(флешка например) и никак его уже другим путем не подберешь.и в моем случае аторизация с паролем не нужна.естественно правильный одмин запрещает root авторизоваться через ssh,далее авторизуется только юзер ,наделенный шеллом.все просто !
может мы на разных языках говорим?
ИзображениеИзображение
Изображение
Аватара пользователя
server801
Активный участник
 
Сообщения: 511
Зарегистрирован: 14 янв 2009, 14:28

Re: Туннелирование в ssh

Сообщение Sicness » 08 июн 2009, 22:31

Имею в виду не с сервера а с флэшки например. Да и большенство свои ключи хранит в адресе по умолчанию + для работы с ними (ключами) этот адрес должен быть где-то указан для клиента. Отсюда возможность даже автоматизировать процесс кражи. За компом многие могут побывать, друзья например :)
В общем по поводу ключей мы друг друга поняли :)
Аватара пользователя
Sicness
Автор
 
Сообщения: 198
Зарегистрирован: 31 дек 2007, 11:29

Re: Туннелирование в ssh

Сообщение server801 » 08 июн 2009, 23:50

этот адрес должен быть где-то указан для клиента

не обязательно!когда генерятся сертификаты-одновременно генерится и для клиента.к другому не подойдут.в этом вся и фишка !сервер тут уже ни при чем.тут работает служба.тем более когда ключи на сменном носителе и просто при тебе-авторизоваться другим не получится,так как импортируются методом их расположения.вынул флешку-и усе.ну принцип наверно понятен.
а вот поднять VPN server + сертификаты мне не удалось-что то не срасталось именно с этими методами защиты,то есть авторизация не проходила.
гых
Табличка в отделе компьютерной поддержки:
Теория - это когда вы знаете все, но ничего не работает.
Практика - это когда все работает, но никто не знает почему.
В ЭТОМ МЕСТЕ мы совмещаем теорию и практику - ничего не работает и никто не знает почему!
ИзображениеИзображение
Изображение
Аватара пользователя
server801
Активный участник
 
Сообщения: 511
Зарегистрирован: 14 янв 2009, 14:28

След.

Вернуться в Компьютерная безопасность

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20

cron