Перейти до вмісту
Блог › Безпека › Методи забезпечення безпечних з’єднань засобами SSH

Методи забезпечення безпечних з’єднань засобами SSH

Встановлення безпечних мережевих з’єднань між клієнтськими машинами та сервером є невід’ємною частиною загального механізму забезпечення Інтернет-безпеки під час роботи в мережі. Зокрема, це дає змогу організувати надійну систему авторизації користувачів і уникнути зовнішнього втручання у переданий трафік, тобто зламу.

Протокол SSH (Secure Shell) – один із небагатьох, який здатний забезпечити повний захист даних за умови дотримання низки формальних правил під час його конфігурування. Розглянемо детальніше можливості протоколу та його правильне налаштування.

Характеристики та робота протоколу SSH

Розглядатимемо вільну реалізацію протоколу SSH – OpenSSH, яка має найбільше поширення та, відповідно, популярність серед адміністраторів хостинг-центрів.

OpenSSH реалізований у вигляді набору програмних компонентів, кожен із яких відповідає за виконання певних функцій. Наведемо деякі з його основних компонентів:

  • Ssh – встановлює віддалене з’єднання;
  • Sftp – забезпечує передавання файлів по мережі;
  • Sshd – демон на стороні сервера, який керує організацією доступу до даних;
  • Ssh-keygen – генерує на запит закритий і відкритий ключі.

Протокол має клієнт-серверну архітектуру, у якій сервер відповідає за приймання запитів на підключення від клієнтів на певний порт (за замовчуванням використовується порт 22). Далі відбувається процес автентифікації клієнтів, і у випадку її успішного завершення сервер «допускає» клієнта до системи.

Методів автентифікації може бути кілька. Зазначимо основні з них у порядку зростання рівня надійності:

  • За паролем;
  • За допомогою пари ключів;
  • Двофакторна автентифікація.

Автентифікація за паролем має найнижчий рівень захисту через сам принцип її побудови. У цьому випадку пароль має постійно зберігатися на сервері, що рано чи пізно призводить до його зламу, незалежно від складності — це лише питання часу.

За допомогою пари ключів можна організувати досить надійну систему захисту від зламу, за умови дотримання всіх формальних правил, наприклад, нікому не передавати свій закритий ключ.

Автентифікація клієнта в цьому випадку відбувається таким чином: за допомогою утиліти ssh-keygen генерується пара символьних послідовностей, одна з яких є особистим паролем власника (закритий ключ), а інша (відкритий ключ) має бути передана на машини, до яких власник надалі планує підключатися, і розміщена в директорії .ssh/authorized_keys.

Під час автентифікації сервер запитує у клієнта закритий ключ, і якщо він відповідає відкритому ключу — доступ відкривається.

Двофакторна автентифікація є найнадійнішим варіантом системи захисту. Сьогодні вона використовується повсюдно — у банківській сфері, для доступу до поштових акаунтів і особистих кабінетів користувачів на торгових інтернет-майданчиках тощо.

Суть її роботи полягає у використанні додаткового фактора безпеки (токена), який передається незалежним каналом зв’язку в реальному часі. Наприклад, кодове слово в SMS-повідомленні від банку — це додатковий токен, а GSM-зв’язок — незалежний канал передавання.

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

Засоби керування протоколом SSH

Керувати протоколом можна у командному режимі з термінала або ж змінюючи значення параметрів конфігураційних файлів, до яких належать:

  • системний файл ssh_config;
  • користувацький файл із назвою config;
  • серверний файл sshd_config.

Пріоритет зазначених засобів керування (у порядку спадання):

  1. Команди з параметрами у термінальному режимі;
  2. Налаштування користувацького файлу конфігурації;
  3. Налаштування системного та серверного файлів конфігурації.

Використовуючи параметри конфігураційних файлів, можна без труднощів забезпечити потрібний рівень захисту мережевого з’єднання або системи автентифікації клієнта. Нижче розглянемо один із варіантів захисту.

Параметри безпеки

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

  • AuthenticationMethods – встановлює діючі методи автентифікації;
  • PasswordAuthentication – дозволяє або забороняє автентифікацію за паролем;
  • PubkeyAuthentication – дозволяє або забороняє автентифікацію за відкритим ключем;
  • ClientAliveInterval – визначає час, коли відсутні будь-які дії з боку клієнта;
  • MaxAuthTries – визначає максимальну кількість спроб підключення з боку клієнта в межах одного з’єднання;
  • PermitRootLogin – дозволяє або забороняє віддалене підключення до сервера з правами користувача root;
  • AllowUser, DenyUser – визначають коло користувачів, яким дозволено (AllowUser) або заборонено (DenyUser) реєстрацію в системі;
  • Port – встановлює порт для підключення клієнтів;
  • CheckHostIP – дозволяє або забороняє перевірку IP-адреси за переліком, зазначеним у файлі known_hosts. Це адреси комп’ютерів, із якими раніше вже встановлювалися з’єднання, тобто ті, що заслуговують на довіру. У ньому також фіксуються їхні відкриті ключі.

Практична реалізація схеми захисту

На нашому сервері під керуванням ОС Ubuntu 22.04 встановимо потрібні значення параметрів безпеки у конфігураційних файлах SSH.

У терміналі за допомогою редактора nano відкриємо вміст системного файлу ssh_config, де й виконаємо потрібні налаштування:

$ nano /etc/ssh/ssh_config

Ми змінили значення параметрів безпеки, встановлені за замовчуванням, на такі:

PasswordAuthentication     no
PubkeyAuthentication yes
MaxAuthTries 3
PermitRootLogin no
AllowUser sany, serg
Port 27
CheckHostIP yes

У результаті ми отримали схему захисту, у якій:

  • Заборонено підключення за паролем;
  • Установлено автентифікацію на рівні відкритого ключа;
  • Встановлено максимальну кількість спроб підключення в межах одного з’єднання – 3 (за замовчуванням – 6);
  • Заборонено віддалене підключення з правами root;
  • Обмежено групу користувачів, яким дозволено реєстрацію в системі;
  • Змінено порт, установлений за замовчуванням, на інший — 27;
  • Дозволено звірку IP-адреси клієнта зі списком адрес, зафіксованих у known_hosts. Це означає, що з’єднання буде встановлюватися лише з перевіреними раніше машинами.

Ми реалізували схему захисту виключно за допомогою засобів керування протоколом SSH, не вдаючись до стороннього програмного забезпечення, наприклад, такого як IPTABLES та подібного. Це, по-перше, прискорює обробку даних, а по-друге — спрощує процес налаштування.

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

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Позначки: