8.2.12 Установка та налаштування OpenSSH

The Host Banner OpenSSH

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

Системні вимоги

  • Віртуальний або Виділений сервер
  • Мінімальні ресурси: 1 CPU, 512 MB RAM, 10 GB SSD
  • Ubuntu 24.04 LTS
  • Root-доступ або доступ з правами sudo

Важливо: якщо ви налаштовуєте OpenSSH на публічному сервері, то налаштуйте його для безпечної роботи – https://thehost.ua/ua/wiki/root/install-openssh#dopolnitelnye-nastroyki-open-ssh

Установка OpenSSH Server

За замовчуванням OpenSSH Server в Ubuntu 24.04 доступний у репозиторіях.

Оновлюємо індекс пакетів і встановлюємо OpenSSH Server:

sudo apt update
sudo apt install -y openssh-server

Перевіряємо статус служби SSH:

sudo systemctl status ssh

openssh_status

Очікуваний результат:

● ssh.service - OpenBSD Secure Shell server
   Active: active (running)

Якщо служба не запущена — запустіть вручну:

sudo systemctl start ssh --now

Перевірка підключення, на локальній машині виконайте:

ssh user@IP_СЕРВЕРА

Детальніше з способами підключення можете ознайомитись у нашій інструкції.

Зверніть увагу: що потрібно замінити user і IP_СЕРВЕРА на ваш логін і IP-адресу.

Якщо використовуєте ключі — підключайтеся з прапором -i:

ssh -i ~/.ssh/id_rsa user@IP_СЕРВЕРА

Налаштування логування

Налаштуємо докладне логування. Відкриваємо конфігураційний файл:

sudo nano /etc/ssh/sshd_config

Додаємо або змінюємо такі параметри:

LogLevel VERBOSE

LogLevel

Зберігаємо і перезапускаємо службу:

sudo systemctl restart ssh

Для перегляду логів використовуйте:

sudo journalctl -u ssh

journalctl

Або для системних логів:

sudo tail -f /var/log/auth.log

Додаткові налаштування OpenSSH

Для підвищення безпеки сервера рекомендується змінити стандартні параметри.

Вимкнення автентифікації за паролем

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

PermitRootLogin without-password
PasswordAuthentication no

password

Дозволити вхід лише за ключами

Щоб додатково посилити безпеку, увімкніть вхід тільки за ключами. Це повністю виключить можливість підключення за паролем.

PubkeyAuthentication yes

pubkey

Зміна стандартного порту (за замовчуванням 22)

Стандартний порт SSH (22) часто сканують зловмисники. Перенос SSH-сервісу на нестандартний порт допоможе зменшити кількість автоматичних атак.

Port 2222

port

Зверніть увагу: зміна порту допомагає знизити кількість автоматизованих атак.

Обмеження за IP

Для обмеження доступу за IP можна використовувати iptables або ufw

UFW:

sudo ufw allow from <ВАШ_IP> to any port 2222 proto tcp
sudo ufw enable

iptables:

# Дозволити нові підключення до порту 2222 лише з вашого IP
sudo iptables -I INPUT -p tcp -s <ВАШ_IP> --dport 2222 -m conntrack --ctstate NEW -j ACCEPT

# Блокувати всі інші підключення до порту 2222
sudo iptables -A INPUT -p tcp --dport 2222 -j DROP

Зверніть увагу: що потрібно замінити <ВАШ_IP> на вашу реальну адресу (наприклад, 203.0.113.45). Правило з -I (insert) ставить дозвільне правило на початок, щоб оброблялося першим.

Важливо: перш ніж перевіряти — залиште активне SSH-з’єднання або консоль через VNC, щоб не заблокувати себе.

Перевіряємо підключення:

ssh -p 2222 user@IP_СЕРВЕРА

Після внесення змін обов’язково перезапустіть SSH:

sudo systemctl restart ssh

Перевірка роботи

Перевірити роботу служби можна командою:

sudo systemctl status ssh

openssh_status

Перевірити лог підключення:

sudo grep sshd /var/log/auth.log

Очікуваний результат:

Accepted publickey for user from IP port ...
Поширені помилки
Помилка/Симптом Причина/Рішення
Connection refused SSH-сервер не запущений або firewall
Permission denied (publickey) Доступ заборонено (publickey)
Port 22 not open Використовується нестандартний порт — вкажіть ключ підключення -p або вкажіть його у Вашому SSH клієнті
Cannot restart ssh: failed Помилка перезапуску SSH — перевірте конфігурацію /etc/ssh/sshd_config

Команди діагностики

Перевірити статус firewall можна наступним чином.

Якщо використовуєте UFW:

sudo ufw status verbose

ufw_status_verbose

Для iptables:

iptables -L -v -n

Перегляд останніх спроб входу:

sudo last -a | grep ssh

Також корисною буде команда, яка показує коли та з яких ip були підключення:

w

who log in