Топалов
.pdfЗ чого можна зробити висновок, що використовувати AH+ESP не можна. Схоже, що це дійсно так - якщо створити свій Метод Безпеки і включити там одночасно підтримку AH і ESP, такий метод не працює.
Отже, політика створена. Запустить Wireshark та запустить Захоплення пакетів. Наведіть та нажмить по ній правою кнопкою миші, і виберіть "Призначити". З цієї миті політика стала діючою.
Підключитеся до Інтернету, і спробуйте пропінгувати ваш сервер. Якщо ви побачили один або два рядки "Negotiating security" а потім почали йти відповіді, прийміть поздоровлення - у вас усе запрацювало. Якщо ж немає - включайте виведення налагоджувальної інформації на сервері, читайте і аналізуйте.
Після того як побачили відповіді від сервера - виберіть у вашого метода безпеки параметр "Снять". Зупиніть Захоплення пакетів в Wireshark. Підкресліть пакети, що відносяться до з’єднання IPSec.
3. Ключові питання
1)Що таке IPSec ?
2)Для чого потрібен AH протокол ?
3)Для чого використовується ESP протокол ?
4)Для чого використовується персональний сертифікат ?
5)Потрібен для організації з’єднання кореневий сертифікат ca.crt або можливо організувати з’єднання за протоколом IPSec без нього ?
6)Для чого потрібен IKE ?
4.Домашнє завдання
1.Вивчити формування IPSec тунелю. Основні можливості IPSec.
2.Визначити, які основні алгоритми авторизації та шифрування застосовується у IPSec протоколі.
3.З’ясувати, які основні програмні продукти будуть застосовуватися у лабораторній роботі.
4.Відповісти на ключові питання.
5.Лабораторне завдання
1.Наслідуючи хід роботи в лабораторній роботі та використовуючи довідкове керівництво [1], настроїти IPSec тунель з боку клієнта з ОС
Windows. (2.1, 2.2)
2.Включити Tcpdump або Wireshark - зняти трасування встановлення з'єднання та роз'єднання IPSEC тунелю.
3.Проаналізувати застосовані методи авторизації та шифрування.
Варіанти завдань для виконання лабораторної роботи:
1.Пропінгувати 192.168.0.222 та знайти ці icmp пакети у аналізаторі
Tcpdump або Wireshark.
2.Знайти дату до якого часу діють сертифікати.
3.Застосувати компресію у IPSec-тунелі.
161
4.Знайти у дампі пакетів роз'єднання IPSec-тунелю.
5.Підкреслити пакети етапу авторизації IPSec-тунелю у аналізаторі Tcpdump або Wireshark.
6.Знайти у дампі пакетів обмін сертифікатами IPSec-тунелю.
7.Знайти назву організації для якої були згенеровані сертифікати.
6.Зміст протоколу
1.Назва роботи.
2.Мета роботи.
3.Виконане домашнє завдання.
4.Результати виконання лабораторного завдання.
5.Висновки.
Звіт лабораторної роботи повинен містити хід виконання роботи з коментарями за внесеними змінами.
7. Список посилань
1.Танненбаум Э. Компьютерные сети // Питер. – 2009. – 992 c.
2.Администрирование сети на основе Microsoft Windows 2000. Сертификационный экзамен № 70-216 // Microsoft Corporation Русская Редакция. –
2004. – 414 c.
162
Лабораторна робота № 7
Налаштування SSH -тунелю. Огляд можливостей
Мета роботи. Вивчення та налаштування SSH тунелю між ОС Linux та клієнтом на базі ОС Windows XP.
Ключові положення
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 пакет містить байт типу повідомлення. Нижче подані значення цього байта і закріплені специфікацією параметри.
163
Табл.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.Хід роботи
2.1.Налаштування SSH сервера під операційною системою Linux
Для виконання лабораторної роботи необхідна версія OpenSSH 5.0 або вище. Для перевірки версії можливо застосувати команду: ssh –v. У випадку відсутності данного пакета необхідно його встановити із репозитарія або з вихідних кодів.
Перевірити конфігураційний файл sshd_config у директорії /etc/ssh. В ньому необхідно перевірити наступні рядки, якщо іх не має, то дописати [7]:
Port 22 # слухаємо 22 порт
164
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 або ін. користувач, вказаний викладачем.
165
Рисунок 3 – Властивості даних
Вказуємо у властивостях SSH, що не запускатимемо shell - оболонку.
Рисунок 4 – Властивості shell - оболонки
У властивостях авторизації необхідно вказати шлях і приватний ключ.
166
Рисунок 5 – Шлях до приватного ключа
У властивостях сесії вказати потрібно ip-адресу сервера і порт.
Рисунок 6 – Ім'я сервера і порт для з'єднання Тепер запускаємо з'єднання (Open) і наш SSH -тунель готовий.
167
2.3. Додаткове завдання, PPP поверх SSH
Часто буває необхідно настроїти більш гнучку маршрутизацію ніж дозволяє в класичному вигляді тунель SSH. Тоді на допомогу приходить можливість інкапсуляції одних протоколів в інші, звичайно, з обліком обов'язково довжини пакетів цього протоколу та узгодження разів довжини пакета для кожного виду інкапсуляції. Цей приклад демонструє гнучкість протоколів і можливість інкапсулювати PPP пакети в SSH тунель.
Схема з' єднання:
Сервер |
|
Клиент |
ppp0 |
ssh - тунель |
ppp0 |
|
||
192.168.145.1 |
|
192.168.145.2 |
|
|
|
Рисунок 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/
168
Настроюється /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
3. Ключові питання
1)Що таке SSH ?
2)Які методи авторизації можливі в SSH ?
3)Чи можливе шифрування даних в SSH і який метод шифрування застосувався у лабораторній роботі ?
4)Який порт за замовчуванням застосовує SSH, який ще можливо назначити ?
5)У чому відмінність протоколу SSH1 та SSH2 ?
6)Яка довжина ключів застосовувалася у даній роботі ?
169
4.Домашнє завдання
1.Вивчити типи формування SSH тунелю. Основні можливості SSH.
2.Визначити, які основні алгоритми авторизації та шифрування застосовуються у SSH протоколі.
3.З’ясувати, які основні програмні продукти будуть застосовуватися у лабораторній роботі.
4.Відповісти на ключові питання.
5.Лабораторне завдання
1.Наслідуючи хід роботи в лабораторній роботі та використовуючи довідкове керівництво [1], настроїти SSH тунель на стороні з ОС Linux та з бо-
ку клієнта з ОС Windows. (2.1, 2.2)
2.Включити Tcpdump або Wireshark - зняти трасування встановлення з'єднання та роз'єднання SSH тунелю.
3.Проаналізувати застосовані методи авторизації та шифрування.
4.Якщо є час та можливості - зробити додаткове завдання 2.3 та 2.4.
Варіанти завдань для виконання лабораторної роботи:
1.Замість користувача root зробити з’єднання SSH-тунелю за користувача student.
2.Запустити shell-оболонку у SSH-тунелі.
3.Застосувати компресію у SSH-тунелі.
4.Пропінгувати 192.168.0.122 та знайти ці icmp пакети у аналізаторі
Tcpdump або Wireshark.
5.Підкреслити пакети етапу авторизації SSH-тунелю у аналізаторі Tcpdump
або Wireshark.
6.Знайти у дампі пакетів роз'єднання SSH-тунелю.
7.Провести з’єднання SSH-тунелю за протоколом SSH1.
8.Виконати у SSH-тунелі віддалену команду (remote command) – ls.
6.Зміст протоколу
1.Назва роботи.
2.Мета роботи.
3.Виконане домашнє завдання.
4.Результати виконання лабораторного завдання.
5.Висновки.
Звіт повинен містити ключові положення з лабораторної роботи, хід роботи, дамп пакетів встановлення, роз'єднання, з'єднання та відповіді на ключові питання.
170