
- •Міністерство транспорту та зв’язку України Львівський коледж Державного університету інформаційно-комунікаційних технологій
- •1 Мета роботи Навчитись організовувати віддалене керування вузлом мережі за
- •3 Підготовка до роботи
- •4 Питання вхідного контролю
- •6 Порядок виконання роботи
- •7 Питання вихідного контролю
- •8 Оформлення звіту
Міністерство транспорту та зв’язку України Львівський коледж Державного університету інформаційно-комунікаційних технологій
Навчальна дисципліна: Мережні операційні системи
Лабораторія: Інформаційних мереж зв'язку
Спеціальність 5.05090308 “Монтаж, обслуговування та експлуатація апаратних засобів інформатизації”
-
Розглянуто
Затверджую
Заступник директора з НВР
__________ Я.М. Плешівський
“_____” ___________ 20__ р.
на засіданні циклової комісії
професійної підготовки
Протокол № __ від _______ 20__ р.
Голова циклової комісії __________
Інструкція
до практичної роботи № 6.
"Здійснення
віддаленого доступу по протоколу SSH
"
Склали викладачі
__________ Р.Т. Мамедов
Львів 2009
1 Мета роботи Навчитись організовувати віддалене керування вузлом мережі за
допомогою OPENSSH
2 Теоретичні відомості
Що таке SSH
SSH (Secure Shell — захищена оболонка) — це протокол, що забезпечує захищену передачу даних. SSH використовує криптографію відкритого ключа для шифрування з'єднання між двома машинами, а також для пізнання (аутентифікації) користувачів. Протокол SSH можна використовувати для безпечної реєстрації на віддаленому сервері або копіювання даних між двома вузлами.
Протокол SSH| підтримує наступні|слідуючі| алгоритми шифрування:
BlowFish — 64-розрядна схема шифрування. Цей алгоритм часто використовується для високошвидкісного шифрування даних великих об'ємів.
Потрійний DES (Data Encryption Standard) — досить старий стандарт шифрування даних, який у наш час рекомендується використовувати тільки для не секретних даних.
IDEA (International Data Encryption Algorithm) — міжнародний алгоритм шифрування інформації. Цей алгоритм працює з 128-розрядним
ключем і тому він захищеніший, ніж BlowFish і DES.
RSA (Rivest-Shamir-Adelman algorithm) — алгоритм Рівеста-Шаміра- Адельмана. Є схемою шифрування з відкритим і секретним ключами.
На даний момент існує дві версії протоколу SSH:
Протокол SSH версія 1. У кожного вузла є свій RSA-ключ (зазвичай 1024 битий), який використовується для ідентифікації вузла. Цей ключ ще називається відкритим. Додатково, при запуску демона, генерується ще один RSA-ключ — ключ сервера (зазвичай 768 битий). Цей ключ створюється наново кожну годину і ніколи не зберігається на диску. Кожного разу при встановленні з'єднання з клієнтом демон відправляє йому у відповідь свій відкритий ключ і ключ сервера. Клієнт порівнює отриманий відкритий ключ зі своєю базою даних, щоб перевірити, чи не змінився він. Потім клієнт випадковим чином генерує 256-розрядне число і кодує його, використовуючи одночасно два ключі — відкритий ключ і ключ сервера. Обидві сторони використовують цей випадковий номер як ключ сесії, який використовується для кодування всіх передаваних під час сесії даних. Потім клієнт намагається аутентифікувати себе, використовуючи .rhosts-аутентифікацію, аутентифікацію RSА або ж аутентифікацію з використанням пароля. Зазвичай .rhosts-аутентифікація небезпечна, тому вона відключена.
Протокол SSH версія 2. Версія 2 працює аналогічно першій: кожен вузол має певний RSA-ключ, який використовується для ідентифікації вузла. Проте при запуску демона ключ сервера не генерується. Безпека з'єднання забезпечується завдяки узгодженю Діффі-Хелмана (Diffie-Hellinan key agreement). Крім того, в SSH2 були виправлені недоліки SSH1. Сесія може кодуватися наступними методами: 128-розрядний AES, Blowfish, 3DES, CAST128, Arcfour, 192-розрядний AES або 256-розрядний AES.
Програмні пакети, що використовують ці протоколи, так і називаються: sshl і ssh2. Сервером SSH служить демон sshd, який запускається на UNIX-машині, а клієнтом — програма ssh, яка розповсюджується як для Linux, так і для Windows. Клієнт ssh служить для забезпечення захищеної реєстрації на віддаленому комп'ютері. У пакет ssh входить ще і третя програма — sсp, службова для безпечного копіювання файлів з локального комп'ютера на віддалений. Проте основним призначенням SSH є все-таки авторизація користувача при його реєстрації на віддаленому комп'ютері.
Обидва програмні продукти (SSH1| і SSH2|) є|з'являються| комерційними. Хоча в якийсь момент розробники одумалися і зробили безкоштовною SSH2| для Linux| і *BSD, було вже пізно. Відкритою|відчиняти| спільнотою| розробників на основі обох протоколів SSH|, з|із| додаванням|добавляти| додаткових можливостей|спроможностей| і виправленням деяких помилок, був розроблений її безкоштовний варіант OPENSSH|.
Перша версія OPENSSH| вийшла ще в грудні 2001 року. Комп'ютери, на яких встановлена|установлена| OPENSSH|, чудово взаємодіють з|із| компьютерами|, на яких встановлені|установлені| комерційні SSH1| або SSH2|, тобто|цебто| продукти повністю|цілком| сумісні.
OPENSSH| поставляється зі|із| всіма сучасними дистрибутивами Linux|. В цілях безпеки рекомендується здійснювати оновлення (офіційний сайт vww.openssh.org.)
Вільно поширювана версія SSH| складається з наступних|слідуючих| пакетів:
openssh — основні файли;
openssh-clients — програма-клієнт;
openssh-server — ssh-сервер.
Щоб служба SSH почала працювати, необхідно запустити демон sshd на тій машині, до якої передбачається підключення. Бажано додати команду запуску в сценарій завантаження системи. Демон sshd працює по 22 порту. Можна запускати його з-під супердемона xinetd/inetd, але зазвичай sshd запускається самостійно — в режимі standalone.
Настройка SSH на сервері
Конфігураційний файл сервера sshd називається /etc/ssh/sshd_config. Довідку по його синтаксису ви можете отримати по команді man 5 sshd_config. У пакеті openssh-server знаходиться конфігураційний файл з типовими настройками.
Щоб захистити ваш комп'ютер від небажаних вторгнень ззовні, рекомендовано вписати в цей файл директиву allowedadress, перерахувавши через пропуск IP-адреса тих машин, з яких дозволений вхід клієнтів:
allowedadress 10.1.1.1 10.1.2.1 10.1.3.1
Port 22
Спочатку намагаємося працювати по протоколу SSH 2, а потім
якщо та сторона не підтримує другу версію, — по SSH 1
Protocol 2,1
Ключ|джерело| для протоколу SSH| версії 1
HostKey| /etc/openssh/ssh_host_key
Ключі|джерела| для протоколу SSH2| - RSA| і DSA|
HostKey| /etc/openssh/ssh_host_rsa_key
HostKey| /etc/openssh/ssh_host_dsa_key
Час життя і розмір ключа|джерела| ssh| версії 1
KeyRegenerationlnterval| 3600
За умовчанням використовується розмір 768 битий
краще встановити 1024
ServerKeyBits 1024
час, через який ключі сервера будуть створені наново.
Періодична зміна ключів підвищує безпеку системи.
KeyRegenerationlnterval lh
Забороняємо реєстрацію користувача root по ssh.
Це не унеможливлює віддалене адміністрування:
просто руту доведеться зайти під
звичайним|звичним| користувачем, а потім виконати команду su|.
Зате зловмисникові знадобиться вкрасти
не один, а два паролі: і root|, і звичайного|звичного| користувача.
PermitRootLogin| по
Протоколювання (розкоментуйте, якщо потрібно
вести журнал|часопис| за допомогою системи syslog|)
#SyslogFacility| AUTH|
#LogLevel INFO
Аутентифікація
Включає парольну аутентифікаціюі забороняє порожні|пусті| паролі
PasswordAuthentication| yes|
PermitEmptyPasswords| no
|
#StrictModes yes
# використовуємо RSA-аутентификацию
RSAAuthentication yes
PubkeyAuthentication yes
Аутентифікація rhosts| - зазвичай|звично| не використовується
тому забороняємо її:
призначені для користувача файли -/.rhosts і -/.shosts не
використовуватимуться
RhostsAuthentication по
IgnoreRhosts yes
НЕ використовувати РАМ аутентифікацію
PAMAuthenticationViaKbdlnt по
додатковий час клієнтові на те, щоб
аутентифікувати себе.
Якщо за цей час клієнт не зміг ввести пароль
з'єднання|сполучення| буде припинено
LoginGraceTime| 2m
|
Наступні параметри потрібні для того, щоб змусити
систему X Window| працювати по ssh|. Докладніше|детальний| ви
зможете прочитати в документації по ssh
#XllForwarding yes
#XllDisplayOffset 10
#Xll!JseLocalhost yes
#PrintMotd yes
#PrintLastLog yes
#KeepAlive yes
#UseLogin no
#UsePrivilegeSeparation yes
#Compression yes
Шлях|колія| до банера Banner| /some/path
підсистема sftp-сервера
Subsystem sftp /usr/libexec/openssh/sftp-server
Запуск демона sshd
Перед першим запуском sshd необхідно згенерувати файли, що містять ключі кодування. У сценаріях, що здійснюють запуск сервера sshd, зазвичай передбачена перевірка наявності цих файлів. У разі їх відсутності вони генеруються автоматично.
Ключі, з якими можна запускати sshd, перераховані нижче.
Ключ |
Призначення |
-b біти |
Визначає число бітів для ключа сервера (за умовчанням 768). Цю опцію можна використовувати, тільки якщо ви використовуєте протокол SSH версії 1 |
-d |
Режим відладки (DEBUG). У цьому режимі сервер не переходить у фоновий режим, обробляє тільки одне з'єднання і детально протоколює свої дії в системному журналі. Ключ відладки особливо корисний для вивчення роботи сервера |
-D |
Так само, як і при використанні попереднього ключа, сервер sshd не переходитиме у фоновий режим. Проте на відміну від -d ключ -D не переводить сервер в режим відладки |
-e |
Відправляти налагоджувальні повідомлення не в системний журнал, а на стандартний потік помилок |
-f файл |
Задає альтернативний файл конфігурації замість /etc/ssh/sshd_config |
-g час |
Надає клієнтові, що не пройшов аутентифікацію, додатковий час на введення пароля. Значення 0 інтерпретується як нескінченне очікування |
-h файл_ключа |
За умовчанням використовується файл /etc/ssh/ssh_host_key. Цей ключ може знадобитися, щоб запускати sshd від імені непривілейованого користувача. Також ключ — h часто застосовується при запуску sshd з сценаріїв, задаючих різні настройки залежно від часу доби (у робочий і неробочий час) |
-і |
Використовується, якщо потрібно запускати sshd через суперсервер xinetd. Зазвичай демон sshd запускається окремо при завантаженні системи. Зв'язано це з тим. що демонові sshd необхідно якийсь час для генерування ключа сервера, перед тим як він зможе відповісти на запити клієнтів. При запуску через суперсервер при кожному з'єднанні суперсервер наново викликатиме sshd, а той — наново буде генерувати ключ. Проте на сучасних комп'ютерах затримка практично не помітна. Тому цілком можна запускати sshd і через суперсервер |
-k час |
Задає час, через який ключ сервера буде створений наново. За умовчанням час складає 1 година Цю опцію можна використовувати тільки з протоколом SSH версії 1 |
-р порт |
Указує альтернативний порт, який демон sshd прослуховуватиме замість порту 22 |
-q |
«Тихий режим»: не протоколювати сесію. Зазвичай протоколюється початок аутентифікації, результат аутентифікації і час закінчення сесії |
-t |
Тестовий режим. Застосовується для перевірки коректності файлу конфігурації |
-4 |
Дозволяється використовувати IP-адреса тільки у форматі IPv4 |
-6 |
Дозволяється використовувати IP-адреса тільки у форматі IPv6 |
Використання SSH-клієнта
Клієнтська програма ssh знаходиться в пакеті open ssh-clients разом з типовим конфігураційним файлом /etc/ssh/ssh_config. Настройки можна задавати і з командного рядка, запускаючи ssh з відповідними ключами. Основні ключі і аргументи перераховані в таблиці 11.5.
Формат команди:
ssh| [ключі|джерела|] [ключі_з_аргументамии] [логін_ім'я@|хост.домен [команда)
Якщо останнім аргументом вказана команда, то після успішного входу користувача вона виконується на віддаленій машині замість командної оболонки за умовчанням. Таким чином можна працювати не в командному рядку, а запустити на віддаленій машині графічний сеанс.
Ключ |
Призначення |
|
-а |
Відключає перенаправлення аутентифікації агента з'єднання |
|
- А |
Включає перенаправлення аутентифікації агента з'єднання |
|
-c blowfish | 3des | des |
Дозволяє вибрати алгоритм шифрування при використанні першої версії протоколу SSH. Можна вказати blowftsh 3des або des |
|
-С |
Задає використання стиснення всіх даних у всіх вихідних потоках з використанням gzip. |
|
-f
|
Дана опція переводить ssh у фоновий режим після аутентифікації користувача. Рекомендується використовувати для запуску програми Х11. Наприклад: sah -f host xterm |
|
-і ідент_файл |
Задає нестандартний ідентифікаційний файл (для нестандартної RSA/DSА - аутентифікації) |
|
-І Логін_ім’я
|
Указує, від імені якого користувача здійснюватиметься реєстрація на віддаленій машині |
|
-р порт |
Визначає порт, до якого підключиться програма ssh (за умовчанням використовується порт 22) |
|
-q
|
Переводить програму ssh в «тихий режим». При цьому відображатимуться тільки повідомлення про фатальні помилки. Всі інші застережливі повідомлення в стандартний вихідний потік виводитися не будуть |
|
-v |
Включає відображення всієї налагоджувальної інформації |
|
-x |
Відключити перенаправлення Х11 |
|
-X |
Включити перенаправлення X11 |
|
-1 |
Використовувати тільки першу версію протоколу SSH (примусово) |
|
-2 |
Використовувати тільки другу версію протоколу SSH (примусово) |
|
-4 |
Дозволяється використовувати IР-адрси тільки у форматі IPv4 |
|
-6 |
Дозволяється використовувати IР-адрси тільки у форматі IPv6 |
|
Аутентифікація засобами|коштами| SSH|
Аутентифікація в SSH| може проводитися|виробляти| одним з наступних|слідуючих| чотирьох| способів:
За принципом довіри. При цьому способі перевіряється, чи внесено ім'я комп'ютера, з якого проводиться доступ, у файл -./ . rhosts (або -/ .shosts). Якщо його ім'я (IP-адрес) внесене, то користувачеві дозволяється доступ без перевірки пароля. Цей спосіб дуже уразливий для різноманітних атак (підміни IP-адреса і тому подібне), так що використовувати його категорично не рекомендується. Для того, щоб дозволити цей спосіб, потрібно встановити значення для директиви IgnoreRHosts і yes для Rhosts Authentication у файлі / etc/ssh/sshd_conf, а щоб заборонити — значення для цих директив поміняти на протилежне.
Посилена аутентифікація за принципом довіри. Цей спосіб в принципі повторює попередній, за тим лише виключенням, що перевірка імені комп'ютера (IP-адреса) проводиться в захищеному режимі. При цьому використовується шифрування відкритим ключем. За включення і відключення даного механізму аутентифікації відповідають директиви RhostsRSAAuthentication і IgnoreRHosts. Не дивлячись на деякі удосконалення, цей спосіб як і раніше є небезпечним.
Аутентифікація самого користувача з використанням шифрування з відкритим ключем. На момент реєстрації у користувача повинен бути доступ до файлу свого секретного ключа, і він повинен надати пароль для його дешифровки. Цей спосіб аутентифікації є найнадійнішим, але і самим незручним. Крім того, він вимушує користувачів постійно мати під рукою файл з ключем. За включення і відключення цього способу відповідає директива PubkeyAulhentication (або RSA Authentication залежно від версії).
Аутентифікація за допомогою пароля. Це оптимальний спосіб: він зручний у використанні і в той же час достатньо безпечний. Саме він і використовується в більшості випадків. На відміну від telnet, пароль тут передається в зашифрованому вигляді. Основний недолік даного методу полягає у відносній слабкості паролів (їх довжина часто складає менше 8 символів). Це дозволяє підбирати їх за допомогою спеціальних програм. За включення і відключення цього способу відповідає директива PasswordAuthentication.
Який спосіб використовувати — вирішувати|рішати| вам. Проте|однак| настійно не рекомендується застосування|вживання| перших двох способів. Їх використання допустимо| лише у виняткових випадках і в особливих умовах.
Безкоштовний SSH-клиент для Windows можна скачати у автора, Роберта Каллагана, сайт http: / /www. zip. com. au/~roca/ttssh .html.