Community
136
HostiServer
2026-01-15 13:14:00

Безпека SSH у 2026: ключі, Fail2Ban, hardening — повний гайд

⏱️ Час читання: ~7 хвилин | 📅 Опубліковано:15 січня 2026

Безпека SSH досі критична у 2026 році

Давайте ми вам пояснимо чому з саме таких слів ми розпочинаємо цю статтю: середній Linux-сервер отримує сотні спроб брутфорсу SSH щодня. Не на тиждень — щодня. А під час активних атак це число може злетіти до тисяч.

Якщо ви хоч раз заглядали в /var/log/auth.log на свіжому VPS(Cloud), то знаєте, про що мова. Через кілька годин після запуску ваш сервер вже під прицілом. Автоматизовані боти постійно сканують діапазони IP, шукаючи сервери зі слабкими паролями, стандартними портами та дозволеним root-логіном. Вони не якісь надзвичайні, бо це їм і не потрібно — так як занадто багато серверів досі працюють із безпекою рівня "двері без замка".

Хороша новина: SSH — один із найбезпечніших протоколів, коли-небудь створених.

Погана новина: більшість людей ніколи не налаштовують його правильно.

3D ілюстрація сервера під масованою брутфорс-атакою

Парольна автентифікація: час рухатись далі

Отже, давайте чесно — паролі зручні. Їх можна запам'ятати (іноді), ввести з будь-якого пристрою, і вони не потребують особливого налаштування. Але у 2026 році покладатися на парольну автентифікацію для SSH — це як закривати банківське сховище на навісний замок.

Математика безжальна. Навіть "сильний" 12-символьний пароль з різним регістром, цифрами та символами має близько 72 біт ентропії. SSH-ключ? 4096 біт криптографічної випадковості. Це не просто краще — це зовсім інший всесвіт безпеки.

Як це відбувається: Брутфорс-атаки на SSH рідко "вгадують" пароль випадково. Зазвичай використовують злиті бази паролів з інших сервісів. Якщо ваш пароль на сервері хоч трохи схожий на той, що ви колись використовували для якогось форуму чи старого акаунту — він вже в словнику атакуючого.

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

Перевага ключів

Автентифікація SSH-ключами працює на простому, але елегантному принципі: ваш приватний ключ ніколи не покидає вашу машину. Коли ви підключаєтесь до сервера, він кидає вам виклик — довести, що у вас є приватний ключ, який відповідає публічному ключу на сервері. Це відбувається через криптографічну математику — жоден секрет не передається мережею.

Навіть якщо хтось перехопить всю вашу SSH-сесію, він не зможе витягнути приватний ключ. Навіть якщо хтось скомпрометує сервер і вкраде файл authorized_keys — він все одно не зможе залогінитись під вас без приватного ключа. Це сила асиметричної криптографії.

Генерація SSH-ключів: як зробити правильно

Не всі SSH-ключі однакові. У 2026 році у вас є кілька варіантів, і вибір має значення більше, ніж здається.

Алгоритм Розмір ключа Рівень безпеки Рекомендація
RSA 4096 біт Високий Добре для сумісності
Ed25519 256 біт* Відмінний Рекомендовано
ECDSA 256-521 біт Різний Краще уникати
DSA 1024 біт Застарілий Ніколи не використовувати

*256-бітний ключ Ed25519 забезпечує безпеку, еквівалентну ~3000-бітному RSA завдяки ефективності еліптичної криптографії.

Створення ключа Ed25519 (рекомендовано)

На вашій локальній машині (не на сервері) відкрийте термінал і виконайте:

ssh-keygen -t ed25519 -C "your_email@example.com"

Вас попросять вказати розташування файлу та passphrase. Завжди використовуйте надійний passphrase. Так, це означає вводити його щоразу при підключенні — але ssh-agent може безпечно кешувати його, а сам passphrase забезпечує критичний захист, якщо хтось отримає ваш файл приватного ключа.

💡 Порада: Використовуйте passphrase, який легко набирати, але важко вгадати. Речення чудово підходить: "Мій кіт важить 5 кг" стає запам'ятовуваним, швидким для набору passphrase, який брутфорсити мільярди років.

Для старих систем: RSA 4096

Деякі старі системи не підтримують Ed25519. У таких випадках використовуйте RSA з максимальним розміром ключа:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Параметр -b 4096 критичний. RSA-ключі за замовчуванням часто 2048 біт — технічно ще безпечні, але з меншим запасом на майбутнє. Якщо створюєте ключі сьогодні, немає причин не використовувати 4096.

Розгортання ключів на сервері

Ви згенерували ключі. Тепер їх потрібно доставити на сервер — а точніше, публічний ключ. Приватний ключ залишається на вашій машині. Крапка.

Простий спосіб: ssh-copy-id

Якщо ви ще можете залогінитись паролем, це найшвидший метод:

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@your-server-ip

Ця команда автоматично створює директорію ~/.ssh на сервері, якщо потрібно, додає ваш публічний ключ до authorized_keys і встановлює правильні права доступу. Готово.

Ручний метод

Іноді ssh-copy-id недоступний або потрібен більший контроль. Ось ручний процес:

# На локальній машині — покажіть публічний ключ
cat ~/.ssh/id_ed25519.pub
# На сервері — створіть SSH-директорію та файл
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
# Вставте публічний ключ, збережіть, потім встановіть права
chmod 600 ~/.ssh/authorized_keys

🚨 Критично: Права доступу мають значення. SSH мовчки відмовиться використовувати ключову автентифікацію, якщо ваша директорія ~/.ssh або файли мають неправильні права. Директорія повинна бути 700, authorized_keys — 600. Без винятків.

Керування кількома ключами

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

Створіть ~/.ssh/config на локальній машині:

Host work-server
    HostName 192.168.1.100
    User admin
    IdentityFile ~/.ssh/id_work_ed25519
Host personal-vps
    HostName 203.0.113.50
    User deploy
    IdentityFile ~/.ssh/id_personal_ed25519
    Port 2222

Тепер можна просто набрати ssh work-server замість того, щоб пам'ятати IP-адреси, імена користувачів і розташування ключів.

Зміцнення конфігурації SSH

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

Редагуйте /etc/ssh/sshd_config на сервері. Ось що найважливіше:

Вимкніть вхід під root

PermitRootLogin no

Це не обговорюється. Навіть з ключовою автентифікацією дозволяти прямий root-логін — зайвий ризик. Створіть звичайного користувача, додайте його до групи sudo і підключайтесь під ним. Атакуючому тепер потрібно скомпрометувати дві речі: ваш SSH-ключ і пароль sudo.

Вимкніть парольну автентифікацію

PasswordAuthentication no
PubkeyAuthentication yes

Коли переконаєтесь, що ключова автентифікація працює — вимкніть паролі повністю. Ця одна зміна усуває 99% автоматизованих атак на сервер. Боти можуть підбирати ваш логін весь день — без валідного ключа вони нікуди не потраплять.

⚠️ Перед тим як це зробити: Переконайтесь, що ключова автентифікація працює! Протестуйте, відкривши новий термінал і підключившись. Не закривайте існуючу сесію, поки не перевірите, що можете повернутись.

Змініть стандартний порт

Port 2222

Це security through obscurity — не зупинить цілеспрямованого атакуючого, але усуне шум від автоматичних сканерів, що бомблять порт 22. Ваш auth.log скаже вам дякую. Виберіть будь-який порт вище 1024 і нижче 65535.

Обмежте доступ користувачів

AllowUsers deploy admin
# або
AllowGroups sshusers

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

Зміцнення протоколу та шифрів

# Використовувати тільки SSH протокол 2
Protocol 2
# Тільки сильні шифри
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com
# Сильні алгоритми обміну ключами
KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org
# Сильні MAC
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com

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

Безпека сесії

# Відключати неактивні сесії через 15 хвилин
ClientAliveInterval 300
ClientAliveCountMax 3
# Обмежити спроби автентифікації
MaxAuthTries 3
# Вимкнути порожні паролі (очевидно)
PermitEmptyPasswords no

Після внесення змін завжди тестуйте конфігурацію перед перезапуском:

sudo sshd -t

Якщо помилок немає, перезапустіть SSH-сервіс:

sudo systemctl restart sshd

За межами базової конфігурації

Зміцнений sshd_config — чудово, але defense in depth означає додавання більше шарів захисту. Ось найефективніші додаткові заходи.

Fail2Ban: ваша автоматична охорона

Fail2Ban моніторить логи і автоматично банить IP-адреси, які демонструють шкідливу поведінку. Для SSH він відстежує невдалі спроби входу і блокує порушників.

sudo apt install fail2ban
sudo systemctl enable fail2ban

Стандартна конфігурація прийнятна, але можна налаштувати в /etc/fail2ban/jail.local:

[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600

Це банить будь-яку IP з 3 невдалими спробами протягом 10 хвилин на 1 годину. Так, досить агресивно, але автоматичні атаки потребують агресивної відповіді.

Правила файрволу

Використовуйте UFW для обмеження SSH-доступу:

# Дозволити SSH тільки з вашої IP або діапазону
sudo ufw allow from 192.168.1.0/24 to any port 2222
# Або якщо потрібен глобальний доступ
sudo ufw allow 2222/tcp
sudo ufw enable

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

Двофакторна автентифікація

Для максимальної безпеки поєднайте SSH-ключі з TOTP (Time-based One-Time Password):

sudo apt install libpam-google-authenticator

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

SSH Jump Hosts (Bastion)

3D схема архітектури Jump Host: безпечний доступ до внутрішньої мережі через шлюз

У production-середовищах ніколи не виставляйте SSH критичних серверів напряму в інтернет. Використовуйте bastion host — зміцнений мінімальний сервер, який виступає єдиною точкою входу до вашої мережі.

# У локальному ~/.ssh/config
Host production-db
    HostName 10.0.1.50
    User dbadmin
    ProxyJump bastion
Host bastion
    HostName 203.0.113.10
    User jump
    IdentityFile ~/.ssh/id_bastion

Тепер ssh production-db автоматично підключається через bastion. SSH-порт сервера бази даних ніколи не потрібно виставляти публічно.

Моніторинг безпеки SSH

Безпека — не одноразове налаштування, а безперервний процес. Ось як відстежувати, що відбувається з SSH на вашому сервері.

Слідкуйте за логами

Ваш auth.log розповідає історію кожної спроби автентифікації:

# Останні невдалі спроби
grep "Failed password" /var/log/auth.log | tail -20
# Успішні входи
grep "Accepted" /var/log/auth.log | tail -20
# Хто зараз залогінений
who
w

Відстежуйте використання ключів

Додавайте коментарі до записів authorized_keys для відстеження:

ssh-ed25519 AAAAC3... laptop-2026
ssh-ed25519 AAAAC3... work-desktop
ssh-ed25519 AAAAC3... emergency-backup

Періодично переглядайте цей файл. Якщо бачите ключ, який не впізнаєте — це проблема.

Налаштуйте сповіщення

Для критичних серверів налаштуйте алерти при успішних входах. Простий підхід через PAM-скрипт:

# /etc/pam.d/sshd — додайте рядок
session optional pam_exec.so /usr/local/bin/ssh-login-alert.sh

Скрипт може надсилати email, повідомлення в Slack або Telegram при кожному вході. Якщо отримуєте алерт, а це не ви заходите — ви дізнаєтесь одразу.

Типові помилки, яких варто уникати

За роки роботи з серверами ми бачили сотні SSH-конфігурацій. Деякі помилки повторюються настільки часто, що варто розібрати їх окремо.

Помилка №1: Тестування нової конфігурації без резервної сесії

Що відбувається: Адмін редагує sshd_config, перезапускає SSH-сервіс і раптом розуміє, що більше не може підключитись. Існуюча сесія вже закрита. Доступу немає.

Чому це небезпечно: Одна текстова помилка в конфігурації — і сервер стає недоступним. Без фізичного доступу або консолі від хостера єдиний варіант — перевстановлення системи.

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

Помилка №2: Зберігання приватних ключів без passphrase

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

Чому це небезпечно: Приватний ключ без passphrase — це як залишити ключі від квартири під килимком. Хто знайде файл — одразу має повний доступ до всіх ваших серверів.

Рішення: Завжди встановлюйте passphrase при генерації ключа. Щоб не вводити його щоразу — використовуйте ssh-agent, який кешує розшифрований ключ у пам'яті на час сесії.

Помилка №3: Один ключ для всього

Що відбувається: Один і той самий ключ використовується для робочих серверів, особистих проєктів, GitHub, і того VPS(Cloud), який "тимчасово" підняли для тестів три роки тому.

Чому це небезпечно: Компрометація одного сервера означає компрометацію всіх. Атакуючий отримує доступ до authorized_keys на зламаному сервері і тепер знає, де ще працює цей ключ.

Рішення: Створюйте окремі ключі для різних контекстів: робота, особисте, критична інфраструктура. Використовуйте ~/.ssh/config для зручного керування. Так компрометація одного ключа не потягне за собою все інше.

Помилка №4: Забуті старі ключі в authorized_keys

Що відбувається: Три роки тому ви додали ключ фрілансера для одного завдання. Проєкт закінчився, людина пішла, а ключ досі там. І ключ колишнього колеги. І той "тимчасовий" ключ з невідомого пристрою.

Чому це небезпечно: Кожен забутий ключ — потенційна точка входу. Люди втрачають пристрої, їхні акаунти зламують, а ваш сервер залишається вразливим через ключ, про який всі забули.

Рішення: Проводьте аудит authorized_keys щонайменше раз на квартал. Додавайте коментарі до ключів (хто, коли, навіщо). Видаляйте все, що більше не потрібно. Якщо не впізнаєте ключ — видаляйте одразу.

Помилка №5: Вимкнення паролів до підтвердження роботи ключів

Що відбувається: Адмін налаштовує ключову автентифікацію, одразу вимикає PasswordAuthentication, перезапускає SSH — і виявляє, що ключ чомусь не працює. Права доступу? Формат ключа? Неправильний шлях? Тепер це вже не важливо, бо доступу немає.

Чому це небезпечно: Ключова автентифікація може не працювати з десятка причин: неправильні chmod, ключ у не тому файлі, опечатка в конфігурації. Вимикати паролі до перевірки — це грати в рулетку з доступом.

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

🚀 Готові обрати правильний хостинг?

Гнучкість Cloud (VPS) або потужність виділеного сервера — рішення, які масштабуються разом з вашим ростом.

💻 Cloud (VPS) Хостинг

  • Від $19.95/місяць — Почніть з малого, масштабуйте миттєво
  • KVM віртуалізація — Гарантовані ресурси без overselling
  • Миттєві апгрейди — Без простою
  • 24/7 підтримка — Відповідь до 10 хвилин

🖥️ Виділені сервери

  • Від $200/місяць — Сучасні конфігурації
  • Кастомні конфігурації — Intel або AMD, найновіші моделі
  • Декілька локацій — EU + USA
  • 99.9% uptime — Надійність
  • DDoS захист — Включено
  • Безкоштовна міграція — Допоможемо

💬 Не впевнені, який варіант вам потрібен?
💬 Напишіть нам — допоможемо з усім!

Часті питання

Чи можна використовувати одночасно пароль і ключову автентифікацію?

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

Що робити, якщо втрачу приватний ключ?

Якщо втратите доступ до приватного ключа — втратите доступ до сервера. "Скидання пароля" тут немає. Тому резервні копії важливі: зберігайте приватний ключ у безпечному місці (зашифрованому, ідеально в менеджері паролів або secure vault). Деякі користувачі створюють "аварійну" пару ключів, що зберігається окремо саме для таких випадків.

Чи справді варто змінювати порт SSH?

Це не зупинить цілеспрямовану атаку, але драматично зменшить шум від автоматичних сканерів. Ваші логи стануть читабельними, а Fail2Ban матиме менше подій для обробки. Це 30 секунд налаштування для відчутного покращення якості життя. Тільки не забудьте оновити правила файрволу і задокументувати новий порт.

Чи вимикати root-логін, якщо я єдиний користувач?

Однозначно. Навіть адміністратори-одинаки виграють від розділення. Якщо атакуючий якось отримає ваш SSH-ключ, йому все одно потрібен пароль sudo для серйозної шкоди. Це також хороша звичка — колись ви можете додати інших користувачів або перейти до командного середовища.

Як часто ротувати SSH-ключі?

Універсального правила немає, але розгляньте ротацію щорічно або негайно, якщо: пристрій з ключем втрачено чи вкрадено, ви залишаєте роботу чи проєкт, або підозрюєте будь-яку компрометацію. Ключі Ed25519 із сильним passphrase можуть безпечно служити роками за нормальних обставин.

Contents

Share this article

VPS з підтримкою від

$19 95 / міс

Виділені сервери від

$80 / міс

CDN починаючи від

$0 / міс

 

Користуючись цим сайтом, ви погоджуєтеся на використання файлів cookies відповідно до нашої Політики Конфіденційності.