Установка і настройка ssh - ubuntu

Установка і настройка SSH - Ubuntu

Установка і настройка ssh - ubuntu

Отже, SSH (secure shell) - безпечний сервер терміналів, надає віддалений доступ до системи. Безпечний, тому що весь трафік між клієнтом і сервером здійснюється у зашифрованому. А так він безпечний з настройками за замовчуванням? Якщо Ви маєте сервер з можливістю підключення по SSH через інтернет, обов'язково знайдуться бажаючі підібрати пароль для входу. Думаю, не варто пояснювати, що можливий зловмисник зможе отримати практично необмежений доступ до системи.

У всіх сучасних дистрибутивах Ubuntu розробники намагаються підвищити рівень безпеки при стандартних параметрах, але цього не завжди буває достатньо, а іноді ми самі вибираємо неправильну концепцію і робимо помилки.

Установка SSH сервера в Ubuntu.

Установка SSH сервера в Ubuntu виконується за допомогою такої команди:

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

Основний файл конфігурації SSH - сервера - файл / etc / ssh / sshd_config. доступний для читання або редагування тільки супер користувачеві (root). Для застосування змін необхідно перезапустити ssh-сервер.

Налаштування безпеки SSH сервера.

Протокол за замовчуванням.

Знову ж в сучасних дистрибутивах за замовчуванням реалізується протокол SSH2. Якщо у Вашому випадку зазначено щось на кшталт:

Необхідно залишити тільки 2:

Використання небезпечного протоколу SSH1 не рекомендується.

За замовчуванням в останніх релізах Ubuntu, доступ користувача root через SSH обмежений.

Я рекомендую Вам змінити параметр на no:

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

Ще трохи про root в Ubuntu, створений за замовчуванням користувач (при установці системи) може вирішувати всі адміністративні завдання через sudo. Активувати користувача root для доступу до системи мені здається необгрунтованим рішенням.

Надання доступу тільки зазначеним користувачам або групам.

Уявімо, що на Вашому сервері є певна кількість користувачів, але надавати доступ по SSH необхідно тільки деяким. Так давайте обмежимо коло користувачів, що мають доступ:

Також Ви можете вказати необхідну групу, наприклад administrators:

Забороніть доступ з "порожніми" паролями.

Ви повинні явно заборонити віддалений доступ з використанням порожніх паролів:

Зміна стандартного порту.

SSH за замовчуванням працює на 22 порту. Відповідно основна маса атак буде спрямована саме на цей порт, далі використовуючи підбір імені користувача та пароля, відбуватимуться спроби отримати доступ до сервера. Ми вже виключили найвідоміше ім'я користувача з бази можливого зловмисника (root) і дозволили доступ тільки певним користувачам, тепер скоротимо кількість можливих атак (боти, які шукають уразливості через загальні порти), змінивши порт, який використовується за умовчанням (новий порт повинен бути вільний!) .

Змінимо, наприклад, на:

Заходимо в систему під тим користувачем, якому будемо налаштовувати доступ по SSH до сервера.

Згенеруємо RSA ключ довгою 4096, Вам буде запропоновано вказати місце зберігання, залишимо за замовчуванням (/home/UserName/.ssh/id_rsa), також буде запропоновано задати пароль на створюваний ключ. Якщо пароль не вказувати, то під час аутентифікації на сервері за сертифікатом вводити його не доведеться, це менш надійно. Рекомендую Вам вказати пароль:

У вказаній директорії буде створена пара ключів:

Перевіримо, чи створені файли:

Встановимо права на папку і файли:

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

Ключ id_rsa передається клієнту:

Після чого видаляється з сервера:

Створимо файл authorized_keys (знаходимося в системі під тим же користувачем "UserName", для якого створювався сертифікат) і скопіюємо в нього вміст файлу id_rsa.pub, визначимо власника і виставимо права на директорію і файл.

Перевіримо, що текст скопіювали:

Якщо текст скопійовано, можна видалити публічний ключ:

Необхідно раскоментіровать рядки і виставити параметри наступним чином:

Перезапустити SSH сервер:

Після того, як Ви сформували сертифікати для всіх користувачів (кому необхідний доступ по SSH), рекомендую Вам відключити аутентифікацію за паролем, відредагувавши все той же файл / etc / ssh / sshd_config

Увага перед відключенням аутентифікації по паролю переконайтеся в можливості доступу по ключу

Підключення до SSH сервера через PuTTY, використовуючи сертифікат.

Для початку необхідно виконати конвертацію приватного ключа (ключ користувача UserName), який раніше ми забрали з сервера.

Для цього нам потрібна програма PuTTYgen.

Завантажуємо файл приватного ключа "Conversions - Import Key".

Якщо Ви встановили, пароль вводимо його.

Вибираємо "Save private key" і зберігаємо отриманий ppk файл. Зберігати його варто в місці, де він не зможе бути скомпрометований.

Відкриваємо програму PuTTY і налаштовуємо з'єднання:

Session - Port Порт, зазначений в настройках SSH сервера;

Connection - Data - Autologin username Ім'я користувача;

Connection - SSH - Auth - Private key file for authentication Шлях до ppk файлу;

Session - Save Зберігаємо сесію;

Session - Saved Session (вибираємо нашу сесію) - Load - Open - Сесія повинна запуститися;

Вводимо пароль і натискаємо Enter, після цього потрапляємо в систему.

У разі якщо сертифікат користувача був скомпрометований, виконуємо скасування сертифіката і забороняємо доступ користувачеві.

Для того, щоб закрити доступ користувачу UserName до Хосту за сертифікатом, перейдемо в папку де зберігається його сертифікат:

Видалимо файл його публічного сертифікат authorized_key з сервера OpenSSH, якщо ж ви необачно не видаляла файли id_rsa.pub і id_rsa. видаліть їх. Переглядаємо вміст каталогу коммандой "ls".

Видаляємо необхідні файли:

У прикладі нижче цей час обмежена до 30 секунд:

Таймаут при відсутності активності сполуки.

Автоматичне відключення з'єднання після певного часу, протягом якого зафіксовано бездіяльність в консолі.

ClientAliveCountMax - Параметр вказує на повну кількість повідомлень, які надсилаються ssh-сервером для розпізнавання активності ssh-клієнта. За замовчуванням це 3.

ClientAliveInterval - Параметр вказує на час очікування в секундах. По закінченню ssh-сервер відішле повідомлення-запит клієнта. За замовчуванням значення цього параметра - 0. Сервер не відсилає повідомлення для перевірки.

Відключення ssh-клієнта автоматично після 5 хвилин (300 секунд):