SSH (ч.1): Набір програм SSH

2 квітня 2023 1 хвилина Автор: Endpool

Що таке і для чого потрібний SSH

SSH – це набір програм, які дозволяють виконати вхід на віддалену машину для виконання команд на ній. Він призначений для забезпечення захищеного зашифрованого зв’язку між двома вузлами через незахищену мережу. З’єднання X11, довільні порти TCP і сокети домену UNIX також можуть бути переадресовані захищеним каналом. У SSH входять програми, які додатково дозволяють передавати файли із зашифрованого з’єднання. SSH несе в собі різні покращення безпеки, серед них автентифікація користувача/хоста, шифрування даних та цілісність даних, завдяки чому неможливі популярні атаки на кшталт підслуховування (сніфінгу), DNS/IP спуфінгу, підробка даних (data forgery), перехоплення з’єднання (connection hijacking) і т. д. Користувачам ftp, telnet або rlogin, які використовують протокол, що передає дані у вигляді відкритого тексту, рекомендується переключитися на SSH. Підтримка SSH реалізована у всіх UNIX системах, і на більшості з них в числі стандартних утиліт присутні клієнт і сервер ssh. SSH-клієнт може знадобиться для роботи з файлами сайту, для їх перегляду і редагування, роботи з базами даних.

Існує низка реалізацій SSH-клієнтів і для не-UNIX ОС. Велику популярність протокол отримав після широкого розвитку сніферів, як альтернативне небезпечному телнету рішення для управління важливими вузлами. Протокол SSH розроблений на комерційній основі, також є і безкоштовний варіант OpenSSH, який особливо популярний серед веб-розробників. OpenSSH — це реалізація з відкритим кодом протоколу SSH, що дозволяє шифрувати з’єднання в мережі за допомогою набору програм. Якщо ви хочете мати SSH на Linux, ви можете встановити OpenSSH, який складається з сервера OpenSSH і клієнтських пакетів. Технологія працює за принципом сервер-клієнт. Тобто, на віддаленій машині, на якій ви хочете виконувати команди, потрібно запустити сервер OpenSSH. До цього сервера можна підключатись за допомогою клієнтів OpenSSH. На одному комп’ютері можуть бути встановлені і сервер, і клієнт. Їх запуск та налаштування виконуються незалежно один від одного.

Утиліти SSH

До серверних утиліт OpenSSH відносяться:

  • sshd (OpenSSH Daemon) – програма демон для ssh. sshd чекає на підключення від клієнтів.
  • sftp-server (серверна підсистема SFTP) – це програма, яка бере участь у передачі файлів за протоколом SFTP. sftp-server не призначений для прямого виклику, зазвичай вона автоматично задіюється демоном sshd.

Отже, на сервері основної уваги вимагає sshd, а програма sftp-server буде запущена автоматично за необхідності.

До клієнтських утиліт OpenSSH відносяться:

  •  ssh (клієнтська програма SSH) – це програма для виконання входу на віддалену машину та виконання команд на цій віддаленій машині.
  •  scp — програма для копіювання файлів на віддалену машину з локальної, або у зворотному напрямку — з локальної на віддалену. Під час передачі даних використовується зашифрований канал. sftp — це також програма передачі файлів по безпечному каналу. Ця програма схожа на FTP.
  • ssh-keygen – утиліта для створення ключів аутентифікації та керування ними. Також вона може використовуватись для відкликання ключів.

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

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

  • ssh-add – Додає приватний ключ до агента аутентифікації.
  • ssh-agent — це програма зберігання закритих ключів, яка використовується для автентифікації з відкритим ключем (RSA, DSA, ECDSA, Ed25519). ssh-agent зазвичай запускається на початку сеансу X або сеансу входу в систему, а всі інші вікна чи програми запускаються як клієнти для програми ssh-agent. Завдяки використанню змінних середовища агент може бути знайдений та автоматично використаний для аутентифікації під час входу на інші машини з використанням ssh.
  • ssh-keyscan – це утиліта для збирання відкритих ключів хоста SSH з кількох хостів. Вона була розроблена для допомоги у створенні та перевірці файлів ssh_known_hosts. ssh-keyscan надає мінімальний інтерфейс, що підходить для використання скриптами оболонки та perl.
  • ssh-keysign — використовується ssh для доступу до ключів локального хоста та генерування цифрового підпису, необхідного під час автентифікації на основі хоста. ssh-keysign вимкнена за замовчуванням і може бути включена лише у глобальному файлі конфігурації клієнта /etc/ssh/ssh_config, якщо для EnableSSHKeysign встановлено значення “yes”. ssh-keysign призначена не для виклику користувачем, а з ssh.
  • ssh-copy-id – використовує локально доступні ключі для авторизації на віддаленому комп’ютері.

Як встановити OpenSSH?

Для деяких конфігурацій служба OpenSSH встановлена ​​та включена за промовчанням. Як правило, це відноситься до систем, до яких важко отримати доступ іншим способом, крім SSH. Наприклад, на хостингах VPS (віртуальних приватних серверів) системи, що встановлюються, практично завжди навіть у мінімальній конфігурації вже мають встановлену і запущену службу SSH, тому після розгортання нового сервера, клієнту достатньо підключитися використовуючи надіслані облікові дані. В образах для ARM комп’ютерів, які часто не мають дисплея, зазвичай служба OpenSSH вже встановлена ​​і запущена.

У Debain та похідних (Kali Linux, Linux Mint, Ubuntu), програми OpenSSH можна встановити окремо, наприклад, є пакети для клієнта та для сервера openssh-client та openssh-server.

Або можна встановити метапакет ssh, який містить клієнтську, і серверну частину:

В Arch Linux клієнт та сервер OpenSSH зібрані в один пакет.

Для встановлення OpenSSH в Arch Linux виконайте:

В інших дистрибутивах Linux пошукайте пакет openssh або ssh.

Управління службою OpenSSH

Клієнт ssh запускається самим користувачем у міру потреби. Запуск служби OpenSSH потрібно лише на сервері.

OpenSSH поставляється з файлами служб systemd двох видів:

  • sshd.service, який тримає демона SSH постійно активним і запускає новий процес для кожного вхідного підключення. Це особливо підходить для систем з великою кількістю трафіку SSH.
  • sshd.socket + [email protected], які на вимогу породжують екземпляри демона SSH для кожного підключення. Використання цієї моделі означає, що systemd прослуховує SSH сокет і запускає процес демона тільки для підключення. Це рекомендований спосіб запуску sshd практично у всіх випадках. Видалено з пакета.

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

Для другої моделі (запуск SSH тільки на вимогу), зробіть так:

Для перевірки статусу служби:

Або якщо ви використовуєте сокет:

Приклад


Зверніть увагу, що в різних дистрибутивах служба може називатися ssh або sshd, отже, у наведених вище і далі командах, використовуйте імена:

 

sshd.socket

sshd.service

ssh.socket

ssh.service

Як перевірити журнал подій SSH служби?

Події SSH можна розділити на події:

  • запуску та зупинки цієї служби

  • події, пов’язані з підключенням користувачів

Переглянути логи SSH можна різними способами, один з варіантів (пам’ятайте, що в деяких системах служба називається ssh.service, без букви d):

Наприклад, для виведення останніх 100 записів:

Також можна переглянути події SSH за допомогою:

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

Універсальна команда незалежно від імені служби:

Як побачити невдалі спроби входу SSH?

Якщо налаштовано вхід по публічному ключу, але не відключено можливість входу по паролю, то після невірного ключа – можливість увійти з паролем.

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

Якщо налаштовано вхід паролем, то для виведення невдалих спроб наберіть команду:

При невдалій спробі входу через неправильний ключ, при рівні вербальності (LogLevel) за замовчуванням (INFO) спеціальні повідомлення не записуються в журнал. Подібні невдалі спроби можна знайти за записом «Connection closed by authenticating user», але це означає відключення на етапі аутентифікації, незалежно від способу аутентифікації — паролем чи ключом. Якщо встановити рівень вербальності на VERBOSE, то в журналі можна буде знайти записи про невдалі спроби входу за допомогою публічного ключа наступною командою:

Приклад входу по публічному ключу.

Як переглянути журнал підключень користувачів SSH?

Щоб показати підключення, коли вхід був зроблений за паролем:

Щоб показати підключення автентифікації за публічним ключем:

Інформацію про опції командного рядка можна побачити за допомогою:

Інші статті по темі
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.