Налаштування SSH -тунелю. Огляд можливостей

 

1. SSH протокол

 

SSH – це протокол сеансового рівня. SSH-сервер прослуховує з'єднання на TCP-порту 22. Специфікація протоколу SSH-2 міститься в RFC 4251 [1] та інших [2-6]. Для автентифікації сервера в SSH використовується протокол автентифікації сторін на основі алгоритмів електронно-цифрових підписів (ЭЦП) RSA або DSA. Для автентифікації клієнта також може використовуватися ЭЦП RSA або DSA, але допускається також автентифікація за допомогою пароля (режим зворотної сумісності з Telnet) і навіть ip-адреса хоста (режим зворотної сумісності з rlogin). Автентифікація за паролем найбільш поширена; вона безпечна, оскільки пароль передається по зашифрованому віртуальному каналу. Автентифікація за ip-адресом небезпечна, цю можливість найчастіше відключають. Для створення загального секрету (сеансового ключа) використовується алгоритм Діффі-Хеллмана (DH). Для шифрування переданих даних використовується симетричне шифрування, алгоритми AES, Blowfish або 3DES. Цілісність переданих даних перевіряється за допомогою CRC32 в SSH1 або HMAC – SHA1/HMAC – MD5 в SSH2.Для стискування шифрованих даних можливо використовуватися алгоритм LempelZiv (LZ77), який забезпечує такий же рівень стискування, що і архіватор ZIP.

 

Довжина пакета Довжина поля вирівнювання Дані Поле вирівнювання Код автентифікації повідомлення

 

Рисунок 1 – Формат пакетів SSH

 

Довжина пакета – 32 бітове значення довжини пакета.

Довжина поля вирівнювання – вказує довжину поля вирівнювання.

Дані – дані для одержувача.

Поле вирівнювання містить байти з випадковим вмістом більше 4 байт для вирівнювання пакета.

Код автентифікації повідомлення вказує на використовуваний алгоритм автентифікації.

 

Кожен SSH пакет містить байт типу повідомлення. Нижче подані значення цього байта і закріплені специфікацією параметри.

 

Табл.1 Значення байту типу повідомлень пакету SSH

Значення Назва
1-19 Загальні повідомлення транспортного протоколу
20-29 Узгодження алгоритмів
30-49 Обмін ключами
50-59 Загальні повідомлення протоколу автентифікації
60-79 Специфічні повідомлення протоколу автентифікації
80-89 Загальні повідомлення протоколу з'єднання
90-127 Управління логічними каналами
128-191 Резерв
192-255 Локальні розширення

 

Максимальна довжина SSH повідомлення - 32768 байт, а пакета - 35000 байт.

Програмних реалізацій SSH протоколу досить багато, частина з них і їх можливостей подано в порівняльній таблиці 2.

 

Табл. 2 Порівння програмних реалізацій SSH протоколу

Програма Інтер- фейс SSH1 SSH2 Режими тунелювання Мультиплек-сування сесій Kerberos IPV6 SFTP/SCP
портів socks проксі VPN
CopSSH Граф. так так так так так Ні так так Так
Dropbear Кому. Ні так так так так Ні ні так Так
OpenSSH Кому. так так так так так Так так так Так
PenguiNet Граф. так так так так ні Ні ні ні Так
Private shell Граф. так так так так ні Ні ні так так
PuTTY Граф. так так так так так Ні ні так так
Reflection of secure IT Граф. так так так так так так так так так
SSH Tectia Граф. так так так так так так так ні так

 

Як видно з цієї таблиці, якнайповніше підтримує різні методи тунелювання - відкрита програмна реалізація OpenSSH і програми зроблені на її основі. У цій лабораторній роботі ми розглянемо програмну реалізацію PuTTY (для Windows), OpenSSH (для Linux) і побудуємо на основі їх SSH тунель.

 

Хід роботи

2.1. Налаштування SSH сервера під операційною системою Linux

 

Для виконання лабораторної роботи необхідна версія OpenSSH 5.0 або вище. Для перевірки версії можливо застосувати команду: ssh –v. У випадку відсутності данного пакета необхідно його встановити із репозитарія або з вихідних кодів.

Перевірити конфігураційний файл sshd_config у директорії /etc/ssh. В ньому необхідно перевірити наступні рядки, якщо іх не має, то дописати [7]:

Port 22 # слухаємо 22 порт

Protocol 2 # застосовуємо SSH2

 

Також перевірити у даній директорії находження файлів з публічним та приватним ключами: ssh_host_key.pub, ssh_host_rsa.key, ssh_host_rsa_key.pub.

Запустити сервіс, наприклад, командою: ./etc/rc.d/rc.sshd start. Якщо немає данного сервісу, то за домопогою, наприклад, слідуючої команди: ./usr/sbin/sshd.

 

2.2. Налаштування SSH -клієнта на основі відкритої програми PuTTY під

операційною системою Windows

 

Для роботи тунелю потрібні пара ключів публічний і приватний. Публічний використовується сервером, а приватний повинен зберігатися на робочій машині.

У випадку якщо у вашій робочій директорії немає приватного ключа з розширенням .ppk, то створюємо його за допомогою утиліти puttygen, як показано на рис. 2.

 

Рисунок 2 Генерація приватного і публічного ключа

 

Зберігаємо приватний ключ в робочу директорію.

Запускаємо PuTTY, вибираємо нове з'єднання. У налаштуваннях з'єднання – Дані встановлюємо автоматичне ім'я користувача, під яким ми з'єднуватимемося. Це може бути або root або ін. користувач, вказаний викладачем.

 

Рисунок 3 Властивості даних

 

Вказуємо у властивостях SSH, що не запускатимемо shell - оболонку.

Рисунок 4 Властивості shell - оболонки

 

У властивостях авторизації необхідно вказати шлях і приватний ключ.

 

 

Рисунок 5 Шлях до приватного ключа

 

У властивостях сесії вказати потрібно ip-адресу сервера і порт.

Рисунок 6 Ім'я сервера і порт для з'єднання

 

Тепер запускаємо з'єднання (Open) і наш SSH -тунель готовий.

 


2.3. Додаткове завдання, PPP поверх SSH

 

Часто буває необхідно настроїти більш гнучку маршрутизацію ніж дозволяє в класичному вигляді тунель SSH. Тоді на допомогу приходить можливість інкапсуляції одних протоколів в інші, звичайно, з обліком обов'язково довжини пакетів цього протоколу та узгодження разів довжини пакета для кожного виду інкапсуляції. Цей приклад демонструє гнучкість протоколів і можливість інкапсулювати PPP пакети в SSH тунель.

 

Схема з' єднання:

Рисунок 6 Схема з' єднання PPP поверх SSH

 

Конфігурації сервера.

Якщо немає пакета PPP версії 2.4.1 або вище, то треба встановити. Прописати логін і пароль в pap – secrets:

$ echo 'pppuser * 1pppuser *' >> /etc/ppp/pap - secrets/

 

Призначити IP-адресу і RSA-ключі у файлі pppuser/.ssh/authorized_keys (one line per key) no – port – forwarding, no – X11 – forwarding, no – agent – forwarding, command="/usr/sbin/pppd remotename pppuser refuse – chap refuse – mschap refuse – mschap – v2 refuse – eap require – pap 192.168.45.1:192.168.45.2 notty debug linkname pppoverssh" ssh – rsa AAAAB3NzaC1...

Не використовувати ніяких додаткових правил маршрутизації і правил файервола, наприклад, в директорії /etc/ppp/ip – up.d/*.

 

Конфігурація клієнта.

Якщо немає пакета ppp версії 2.4.1 або вище, то треба встановити. Створюємо нове з'єднання для ssh:

$ cat >/etc/ppp/peers/ssh <<EOF

pty 'ssh - e none pppuser@192.168.0.122 false'

user pppuser

nodetach

linkname pppoverssh

# debug

EOF

Прописати логін і пароль в pap – secrets:

$ echo 'pppuser * 1pppuser *' >> /etc/ppp/pap – secrets/

 

Настроюється /etc/ppp/ip – up.d/* якщо потрібно (наприклад, використовувати, як основний маршрут).

Якщо ви зробили усе правильно, то після запуску команди:

$ /usr/sbin/pppd call ssh

 

Ви побачите наступне:

Using interface ppp0

Connect: ppp0 <--> /dev/ttyp4

Remote message: Login ok

kernel does not support PPP filtering

Deflate (15) compression enabled

Cannot determine ethernet address for proxy ARP

local IP address 192.168.45.2

remote IP address 192.168.45.1

 

2.4. Додаткове завдання, автоматичний тунель за допомогою autossh

 

Буває необхідно автоматизувати процеси контролю та перепідключення ssh -тунелю. Одним з методів рішення є, наприклад, програма autossh написання Carson Harding. Вона вирішує проблеми:

запуску ssh -клієнта;

перевірки з'єднання через тестове закільцюванням двох портів;

проводить регулярно перевірки з'єднання та перезапуск ssh -клієнта у разі обриву з'єднання.

Наступний приклад робить з'єднання до IMAP -сервера - autossh перевіряє ssh -тунель кожні 15 секунд:

$ export AUTOSSH_GATETIME=30

$ export AUTOSSH_POLL=15

$ autossh - M 20000 - g - N - C - L143: localhost :143 192.168.0.122

 

Для частої установки тунелю можна визначити bash -аліас до ssh:

$ alias ssh=':& a=$! ; port=$(( $a%45536 +20000 )) AUTOSSH_GATETIME=30 AUTOSSH_POLL=15 autossh - M $port'

$ ssh - g - N - C - L143: localhost :143 192.168.0.122

[1] 6418

 

 








Дата добавления: 2016-05-11; просмотров: 882;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.025 сек.