Майже щодня адміністратору доводиться проводити будь-які роботи на серверах. Найчастіше це звичайні нескладні операції, такі, як переміщення файлу або перезапуск служби. Однак при великій кількості серверів, особливо якщо частина з них знаходиться поза головного офісу, адміністрування стає скрутним, так що більшість програм для віддаленого управління використовує протоколи, створені без урахування вимог до безпечної передачі даних.
Незалежно від обраного типу аутентифікації, telnet передає вводяться команди і їх результати по мережі у відкритому вигляді. Таким чином, зловмисник може, залишаючись непоміченим, зібрати масу інформації про комп'ютерних системах, перехоплюючи мережевий трафік.
Система Unix має довшу історію розвитку засобів віддаленого адміністрування в порівнянні з Windows. Тому не дивно, що саме у розробників Unix виникла ідея створити засіб для захисту сесії при віддаленому адмініструванні. В даний час цей засіб існує і для Windows, воно називається SSH (Secure Shell).
Введення в OpenSSH
Протокол SSH служить для створення захищеного з'єднання між комп'ютерами в мережі загального доступу. Друга версія продукту, SSH2, забезпечує надійне шифрування даних, проводить аутентифікацію і вільна від помилок першої версії. SSH2 може захистити мережі від атак типу man-in-the-middle і злому захисту (атака man-in-the-middle проводиться наступним чином: зловмисник вклинюється в діалог між комп'ютерами, перехоплює пакети від одного з них, модифікує і відправляє іншому). Протокол SSH не залежить від конкретної операційної системи. Він дозволяє застосовувати публічні ключі public key infrastructure (PKI) і стандартну аутентифікацію з паролем. Існують версії SSH для всіх основних операційних систем, що дає можливість різним платформам взаємодіяти за допомогою даного протоколу.
Компоненти Cygwin розміщені на FTP-сервері в різних підкаталогах. Кожен підкаталог містить певну версію вихідного і компілює коду. Вихідні файли (які не обов'язкові) мають в своєму імені слово src. Необхідно завантажити найостанніші версії компонентів. До моменту написання статті файли мали назви /latest/zlib-1.1.3-6.tar.gz, /latest/cygwin/cygwin-1.3.2-1.tar.bz2 і /latest/openssh/openssh-2.9p2-3 .tar.bz2 (прим. ред .. остання версія /latest/cygwin/cygwin-1.3.3-2.tar).
Установка клієнта OpenSSH
Встановити клієнта OpenSSH нескладно. Хоча не всі перераховані нижче кроки необхідні для його роботи, вони спрощують використання клієнта і дозволяють переконатися, що ряд механізмів безпеки функціонує правильно. Настійно рекомендую виконати всі дії.
В каталозі HOME \ .ssh, в файлі known_hosts або known_hosts2 зберігається ключ public host key для кожного сервера OpenSSH, до якого підключений клієнт SSH. Ключі RSA (використовуються алгоритмом SSH1) зберігаються в known_hosts, а ключі DSA (Digital Signature Algorithm, використовується для SSH2) - в known_hosts2. Клієнт SSH отримує від сервера SSH публічний ключ при найпершому підключенні. Надалі цей ключ використовується для перевірки подальших з'єднань і гарантує, що зловмисник не підключився до поточної сесії.
За допомогою змінної HOME клієнт OpenSSH визначає місцезнаходження файлів known_hosts і known_hosts2. Якщо ж SSH-сервер і SSH-клієнт встановлені на одному комп'ютері і створений файл Passwd (нижче буде розказано, як це зробити), то місцезнаходження файлів known_hosts і known_hosts2 задається змінною, визначеною в Passwd і вказує на домашній каталог SSH. У цьому випадку замість / ssh слід вказати домашній каталог користувача, який викликав клієнта SSH.
Установка сервера OpenSSH
Встановити сервер дещо складніше. В каталог C: \ ssh поміщаються файли cygwin1.dll, ssh-keygen.exe, ssh.exe, sshd.exe, потім створюються публічний і приватний ключі. Ця пара ключів використовується сервером для власної ідентифікації і встановлення шифрованого сесії з клієнтами. Можна створити два типи ключів. SSH1 використовує для створення пари ключів алгоритм RSA, який раніше був захищений патентом. Щоб уникнути порушення патенту, розробники SSH2 перейшли на вільно розповсюджуваний алгоритм DSA. Хоча в даний час алгоритм RSA і не захищений патентом, створювати ключі RSA рекомендується тільки в крайньому випадку, наприклад, якщо це потрібно для сумісності. Якщо сервер OpenSSH виявить пару ключів RSA, то за замовчуванням буде використовуватися SSH1, що забезпечує менший ступінь захисту, ніж SSH2.
Для створення пари ключів DSA слід перейти в базовий каталог C: \ ssh і ввести в командному рядку:
Для створення пари ключів RSA потрібно ввести:
У наведених прикладах мається на увазі, що базовим каталогом є C: \ ssh. Якщо в якості базового каталогу використовується інший, то слід змінити синтаксис команд і вказати потрібну назву. За замовчуванням створюються ключі довжиною 1 024 розряду. Для більшості вимог безпеки цього достатній. Процедура створення ключів повинна повторюватися для кожного сервера окремо. Не слід копіювати ключі з одного сервера на інший, так як небажано експлуатувати різні сервери з однаковими ключами. Якщо при спробі підключитися до сервера з'являється повідомлення про помилку «You do not exist. Go away! »(« Вас не існує. Забирайтеся! »), Слід перевірити наявність файлу Passwd в C: \ etc. Якщо цей файл існує, то тимчасово перейменуйте його або додайте до нього своє ім'я, наприклад C: \ etc \ Soms_Passwd.
Далі в базовому каталозі сервера OpenSSH потрібно створити конфігураційний файл sshd_config (без розширення). Надалі цей файл можна копіювати для установки на інші сервери. У sshd_config може бути описано велику кількість різних змінних і їх значень, але найчастіше досить декількох.
У лістингу 1 показаний приклад файлу sshd_config. Мінлива HostKey визначає місце розташування пари ключів RSA, а змінна HostDSA-Key - ключів DSA. Якщо ключі RSA не створювалися, то рядок з описом HostKey можна пропустити. Якщо файли ключів переносяться в інші каталоги, слід змінити відповідні рядки в sshd_config. Потрібно мати на увазі, що при вказівці шляхів замість зворотного слеша використовується прямий. Це зроблено для сумісності з правилами вказівки шляху в Unix.
Далі слід створити базу даних для аутентифікації користувачів. У більшості систем Unix для аутентифікації користувачів застосовується файл Passwd. Cygwin продовжив цю традицію проведення аутентифікації SSH в Windows. Якщо OpenSSH виконує аутентифікацію користувача, то Cygwin перевіряє ім'я користувача в Passwd. Якщо ім'я в Passwd, не знайдено, то у доступі навіть локальному адміністратору комп'ютера. Якщо ж ім'я знайдено, то Cygwin звертається до Windows для верифікації пароля. В першу чергу пароль перевіряється в локальній базі SAM, а потім - в базі даних домену (якщо вона доступна).
Тепер саме час перейти до тестування OpenSSH. Для цього слід завантажити оболонку shell від імені локальної системи. Це робиться тому, що для правильного функціонування сервер OpenSSH повинен завантажуватися в контексті безпеки LocalSystem. Найпростіший спосіб зробити це - перейти в командний рядок і, якщо використовується планувальник завдань Task Scheduler, ввести:
В іншому випадку слід ввести:
Далі, незалежно від типу планувальника, потрібно набрати:
Після того як планувальник завантажить від імені LocalSystem командний процесор, можна запустити сервер OpenSSH в режимі налагодження (для цього вказується перемикач -d):
Якщо установка сервера OpenSSH була проведена некоректно, то повідомлення про помилки допоможуть усунути неполадки. Найбільш характерними є помилки в конфігураційних файлах, а також відсутність доступу до цих файлів з боку облікового запису LocalSystem. Після усунення помилок сервер OpenSSH можна завантажити в режимі нормального функціонування (без перемикача -d). Щоб перевірити, як взаємодіють сервер і клієнт, потрібно ввести з Windows-комп'ютера, на якому встановлений клієнт OpenSSH, команду:
Де user відповідає імені користувача, якому дозволено локальне підключення до сервера і чиє ім'я включено в файл Passwd. Якщо на клієнтському комп'ютері є свій Passwd, то слід переконатися, що в ньому присутня ім'я користувача. Якщо команда виконується на сервері, то для введення імені сервера можна використовувати localhost. Через кілька секунд клієнт повинен отримати повідомлення про неможливість ідентифікувати сервер і пропозиція продовжити підключення.
Це цілком нормально. Клієнт отримав від сервера публічний ключ і спробував перевірити його за допомогою файлів known_hosts або known_hosts2. Так як це перше підключення до сервера, то публічний ключ ще не був збережений клієнтом. Тому слід натиснути Yes для продовження підключення. Система видасть повідомлення про додавання ключа, його слід проігнорувати. Потім екран прийме вид, як показано на Екрані 1.
![Ssh в windows (ввести командному рядку) Ssh в windows](https://images-on-off.com/images/172/sshvwindows-63dfb5bc.jpg)
Екран 1. Перше підключення за допомогою OpenSSH.
Надалі клієнт не стане нагадувати про ключі сервера, якщо тільки не виявить, що той змінився. Якщо клієнт помітив зміну, це може означати, що хтось видалив (модифікував) файли known_hosts або known_hosts2, або змінив зберігається на сервері ключ, або зроблена спроба незаконного підключення до даного з'єднання з сервером. Тому, якщо повідомлення про ключі з'являється і після самого першого підключення до сервера, слід провести розслідування на предмет можливої спроби вторгнення. Відразу після підключення необхідно перевірити журнал додатків (Application log), який повинен фіксувати як успішні, так і невдалі підключення. Можна використовувати записи цього журналу для контролю спроб незаконного підключення до сервера OpenSSH.
Щоб служба OpenSSH правильно функціонувала, вона повинна запускатися від імені облікового запису LocalSystem. Це дає OpenSSH необхідні права, щоб діяти в якості будь-якого користувача. Можна замість LocalSystem використовувати будь-яку іншу обліковий запис, але тоді доведеться ознайомитися з документацією і призначити цього запису необхідні права. Також слід визначити змінну оточення CYGWIN як tty для того, щоб сервер коректно інтерпретував вхідні дані. Слід створити командний файл, як показано в лістингу 3, і помістити його в базовий каталог. Замість того щоб перезавантажувати сервер, потрібно скористатися цим файлом для завантаження OpenSSH.
Ліквідація процесу OpenSSH
Як зазначалося раніше, для роботи з процесом OpenSSH потрібно запустити командний процесор від імені системи (з обліковим записом LocalSystem). Для цього використовується розглянута вище процедура. Потім слід ввести в командному рядку
щоб отримати список всіх процесів, що виконуються Cygwin. Необхідно запам'ятати ідентифікатор PID самого першого процесу OpenSSH і ввести команду
Служба буде перезапущено з оновленими даними файлу Passwd.
SSH чудово доповнює будь-пакет адміністратора для управління системами або мережею, але не може бути засобом на всі випадки життя. При правильному використанні OpenSSH дозволяє посилити захист, однак слід виконувати кілька правил.
По можливості надайте віддалений доступ тільки адміністраторам.Використовувати SSH1 тільки для сумісності зі старими клієнтами.
SSH дозволяє віддалено виконувати практично всі команди, які можна ввести з консолі сервера. Використовувати всі переваги SSH допомагають програми з наборів Resource Kit, що дозволяють виконувати зупинку або перезавантаження віддаленого сервера, виводити список виконуються завдань і переривати їх, і багато іншого. Отже, встановити і налаштувати OpenSSH зовсім не складно, так що було б непогано замінити всі telnet-сервери організації на сервери SSH. OpenSSH забезпечує не тільки безпеку сесії, але і здатний захищати файли при їх копіюванні, виконувати перепризначення портів, використовувати для аутентифікації замість паролів публічні і приватні пари ключів. Після вивчення можливостей OpenSSH переваги його використання в якості основи для набору програм адміністратора стають очевидні.
Прим .: деякі поради по установці і приклади файлів конфігурацій для цієї статті люб'язно надав Брет Джордан з університету шт. Юта.
Лістинг 1. Приклад файлу The Sshd_config
Лістинг 2. Приклад файлу Passwd
Лістинг 3. Приклад файлу Start-sshd.bat