Віддалене керування сервером
SSH[СБЮ9] Secure Shell, SSH (англ. Secure SHell — «безпечна оболонка») — мережевий протокол рівня застосунків, що дозволяє проводити віддалене управління комп'ютером і тунелювання TCP[СБЮ10] -з'єднань (наприклад, для передачі файлів). Схожий за функціональністю з протоколом Telnet і rlogin, проте шифрує весь трафік, в тому числі і паролі, що передаються. Криптографічний захист протоколу SSH не фіксований, можливий вибір різних алгоритмів шифрування. Клієнти і сервери, що підтримують цей протокол, доступні для різних платформ. Крім того, протокол дозволяє не тільки використовувати безпечний віддалений shell на машині, але і туннелювати графічний інтерфейс — X Tunnelling (тільки для Unix-подібних ОС або застосунків, що використовують графічний інтерфейс X Window System). Так само ssh здатний передавати через безпечний канал (Port Forwarding) будь-який інший мережевий протокол, забезпечуючи (при належній конфігурації) можливість безпечної пересилки не тільки X-інтерфейсу, але і, наприклад, звуку. Підтримка SSH реалізована у всіх UNIX [СБЮ11] системах, і на більшості з них в числі стандартних утиліт присутні клієнт і сервер ssh. Існує безліч реалізацій SSH-клієнтів і для не-UNIX ОС. Велику популярність протокол отримав після широкого розвитку сніферів, як альтернативне небезпечному телнету рішення для управління важливими вузлами. Зараз відомо дві гілки версій — 1 і 2. Проте гілка 1 зупинена, оскільки в кінці 90-х в ній було знайдено багато вразливостей, деякі з яких досі накладають серйозні обмеження на її використання, тому перспективною (такою, що розвивається) і найбезпечнішою є версія 2. На прикладі: клієнт ноутбук (Kubuntu 14.04) – сервер (Ubuntu 13.14). Перш за все потрібно встановити програму, яка складається з двох блоків: програми-клієнта, з якого підключаються, та програми-сервера до якої підключаються. За замовчуванням ssh-клієнт (ssh) та ssh-сервери (sshd) встановленні за замовчуванням "з коробки". В противному разі команда на встановлення: sudo apt-get install ssh Оскільки ssh знаходиться в залежності з sshd – програму-сервер буде встановлено автоматично, проте автоматично сервер не запускається. Для його запуску потрібно ввести: sudo service ssh start Наступним кроком є створення облікового запису, під яким буде здійснено вхід. Можна використовувати обліковий запис, що вже був створений на сервері завчасно (й під яким здійснювалось конфігурування сервера). Проте у цілях безпеки створимо нового користувача в системі. Всі дії повинні відбуватись на сервері. sudo userdel ssh-klient (де ssh-klient – ім’я нового користувача) Після чого shell запросить створити новий пароль для користувача. Ввод паролю не буде супроводжуватись ніякими змінами командної стрічки. Це зроблено в цілях безпеки. Заповнивши кілька пропонованих стрічок (можна залишити їх пустими), отримаємо наступне.
Для надання користувачу ssh-klient потрібно внести зміни в файл /usr/sbin/visudo та дописати у відповідну графу наступне: # User privilege specification root ALL=(ALL:ALL) ALL ssh-klient ALL=(ALL:ALL) ALL Дана операція наддасть користувачі привілеїв супер-користувача, або, інакшими словами, права root. Такий рівень доступу надає повний контроль на машиною, тому тут потрібно буди обачним. Вже на даному етапі можна підключатись до сервера, використовуючи "захищений шелл": На комп’ютері-клієнті вводимо наступну команду а вводимо пароль: ssh ssh-klient@192.168.0.103 Рис. 24. Вхід в віддалену систему. де ssh – використання програми ssh-klient – ім’я під яким хочемо здійснити вхід 192.168.0.103 – IP-адреса сервера (можна й доменне ім’я, про це згодом). Підтвердженням успішного входу є зміна облікового запису (в даному випадку з shellshock на ssh-klient), а також відповідна зміна машини (з shellshock-KU на localhost (через особливості реалізації сервера)). Тепер можна робити все, що забажаєм, так, неначе знаходимось безпосередньо за сервером. Для автоматичного входу, який не потребує підтвердження машини паролем, використовують ключі. При використанні методу ідентифікації Identity / Pubkey виключається використання статичних паролів. Щоб кожен раз не набирати паролі, які можна перехопити, ми будемо зберігати на диску пару ключів, які й будуть використовуватися для перевірки автентичності. Ось деякі з позитивних моментів цього типу аутентифікації: Ніхто не зможе увійти на сервер з вашим профілем, так як їм необхідно володіти приватним ключем і кодової фразою. Адміністратор сервера може взагалі прибрати пароль облікового запису, щоб виключити його дискредитацію. Можна встановлювати певні обмеження, наприклад забороняючи перенаправлення портів, виконання певних програм і т.д. Для генерації пари ключів нам необхідно скористатися утилітою ssh-keygen, яка входить в стандартний комплект установки. ssh-keygen -t rsa (на локальній машині, тобто на "клієнті") Відповідно на сервері ці ключі потрібно скопіювати: ssh-copy-id -i ~/.ssh/id_rsa.pub ssh-klient@192.168.0.103 Після цих маніпуляцій вхід на сервер під даним обліковим записом з даної клієнтської машини буде відбуватись автоматично. Притім такий спосіб є навіть більш надійним, аніж ввод паролю, який в теорії можна перехопити. SSH має ще декілька цікавих особливостей використання:
Рис. 25. Налаштування віртуальних серверів. Така конфігурація дає змогу "мати під рукою" власний сервер усюди, де є мережа інтернет. При такому підключені IP-адреса вводиться статична, або (якщо є) -доменне ім’я.
Рис. 26. Вхід без пароля Ще однією особливістю ssh є можливість передавати файли по ssh-тунелю. Для цьому використовується sshfs (ssh file system).
|