15%

Збережіть 15% на всі хостинг-послуги

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

Використовуй код:

Skills
Почати
30.10.2024
2 +1

Як встановити та налаштувати SSH сервер на Debian (Повний посібник)

SSH (Secure Shell) — один із найфундаментальніших протоколів у сучасному адмініструванні серверів. Він забезпечує зашифрований автентифікований канал для віддаленого доступу до Linux-серверів та керування ними — що робить його незамінним інструментом для системних адміністраторів, розробників і всіх, хто керує віддаленою машиною. Незалежно від того, чи керуєте ви середовищем VPS Хостингу або Виділеним Сервером, правильне встановлення та захист SSH-сервера — одне з перших завдань, яке слід виконати.

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

Передумови

Перш ніж почати, переконайтеся, що у вас є:

  • Сервер на основі Debian (Debian 10 Buster, 11 Bullseye або 12 Bookworm)
  • Користувач без прав root з привілеями sudo, або прямий доступ root для початкового налаштування
  • Базове знайомство з командним рядком Linux
  • Мережевий доступ до вашого сервера

Крок 1: Оновіть систему та встановіть OpenSSH Server

Перед встановленням будь-якого програмного забезпечення рекомендується оновити індекс пакетів і оновити наявні пакети до останніх версій. Це забезпечує сумісність і зменшує вразливості безпеки.

sudo apt update && sudo apt upgrade -y

Тепер встановіть пакет OpenSSH server:

sudo apt install openssh-server -y

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

Перевірте, чи запущена служба SSH

Підтвердіть, що служба ssh активна та увімкнена:

sudo systemctl status ssh

Ви повинні побачити виведення, подібне до:

● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since ...

Якщо служба не запущена, запустіть її вручну та увімкніть для запуску під час завантаження:

sudo systemctl start ssh
sudo systemctl enable ssh

Крок 2: Ознайомтеся з файлом конфігурації SSH

Основний файл конфігурації демона SSH розташований за адресою:

/etc/ssh/sshd_config

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

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Тепер відкрийте файл у текстовому редакторі:

sudo nano /etc/ssh/sshd_config

Розділи нижче проведуть вас через найважливіші параметри конфігурації.

Крок 3: Захистіть конфігурацію SSH

3.1 Змініть стандартний порт SSH (Рекомендовано)

За замовчуванням SSH прослуховує порт 22. Це широко відомо, і автоматизовані боти постійно сканують інтернет на наявність відкритих з’єднань на порту 22, намагаючись здійснити атаки методом перебору. Зміна порту на нестандартне значення значно зменшує цей шум.

Знайдіть наступний рядок (він може бути закоментований символом #):

#Port 22

Розкоментуйте його та змініть значення:

Port 2222

> Примітка: Виберіть номер порту між 1024 і 65535, який ще не використовується іншою службою. Поширені альтернативи включають 2222, 2200 або 4422. Не забудьте відповідно оновити правила брандмауера (див. Крок 5).

3.2 Вимкніть вхід від імені root (Настійно рекомендується)

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

PermitRootLogin no

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

3.3 Обмежте доступ SSH для конкретних користувачів

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

AllowUsers your_username deploy_user

Крім того, ви можете обмежити доступ за групою:

AllowGroups sshusers

3.4 Вимкніть автентифікацію за паролем (Після налаштування автентифікації за ключем)

Після того, як автентифікація SSH за ключем запрацює (див. Крок 6), повністю вимкніть входи на основі пароля, щоб усунути вектори атак методом перебору:

PasswordAuthentication no

3.5 Додаткові директиви захисту

Додайте або змініть наступні рядки для більш надійного рівня безпеки:

# Disable empty passwords
PermitEmptyPasswords no

# Limit authentication attempts per connection
MaxAuthTries 3

# Set idle session timeout (seconds)
ClientAliveInterval 300
ClientAliveCountMax 2

# Disable X11 forwarding if not needed
X11Forwarding no

# Use only SSH Protocol 2
Protocol 2

# Restrict to specific address family (IPv4 only example)
AddressFamily inet

Відповідний розділ вашого фінального /etc/ssh/sshd_config повинен виглядати приблизно так:

Port 2222
PermitRootLogin no
MaxAuthTries 3
PasswordAuthentication no
PermitEmptyPasswords no
AllowUsers your_username
X11Forwarding no
ClientAliveInterval 300
ClientAliveCountMax 2

Крок 4: Перевірте конфігурацію та перезапустіть SSH

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

sudo sshd -t

Якщо помилок не виявлено, застосуйте зміни, перезапустивши демон SSH:

sudo systemctl restart ssh

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

sudo systemctl status ssh

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

Крок 5: Оновіть правила брандмауера

Якщо ви використовуєте UFW (Uncomplicated Firewall) — стандартний інструмент брандмауера в Debian — вам потрібно дозволити трафік на новому порту SSH.

Якщо ви змінили порт на 2222:

sudo ufw allow 2222/tcp
sudo ufw reload

Якщо ви залишили стандартний порт 22:

sudo ufw allow ssh
sudo ufw reload

Перевірте поточний стан брандмауера:

sudo ufw status verbose

Якщо UFW ще не увімкнено, активуйте його (спочатку переконайтеся, що ваш порт SSH дозволено, щоб уникнути блокування):

sudo ufw enable

Крок 6: Налаштуйте автентифікацію SSH на основі ключів

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

6.1 Згенеруйте пару SSH-ключів на вашій клієнтській машині

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

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

> Чому Ed25519? Ed25519 — це сучасний алгоритм на основі еліптичних кривих, який пропонує кращу безпеку та продуктивність порівняно зі старішим алгоритмом RSA. Якщо ваша система не підтримує його, використовуйте RSA з 4096-бітним ключем: ssh-keygen -t rsa -b 4096

Коли з’явиться запит, виберіть місце збереження (за замовчуванням ~/.ssh/id_ed25519) і встановіть надійну парольну фразу для додаткового рівня захисту.

6.2 Скопіюйте публічний ключ на ваш сервер

Використовуйте ssh-copy-id для безпечного передавання вашого публічного ключа на сервер:

ssh-copy-id -p 2222 username@your_server_ip

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

Якщо ssh-copy-id недоступний, ви можете зробити це вручну:

# On your local machine, display your public key:
cat ~/.ssh/id_ed25519.pub

# On the server, add it to authorized_keys:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "your_public_key_here" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

6.3 Перевірте вхід на основі ключа

З вашої клієнтської машини підключіться до сервера:

ssh -p 2222 username@your_server_ip

Вам буде запропоновано ввести парольну фразу ключа (не пароль облікового запису). Після підтвердження ви увійдете в систему безпечно.

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

Тепер, коли автентифікація за ключем працює, поверніться до /etc/ssh/sshd_config і переконайтеся:

PasswordAuthentication no

Перезапустіть SSH для застосування:

sudo systemctl restart ssh

Крок 7: Моніторинг та підтримка безпеки SSH

Встановлення та налаштування SSH — це не одноразове завдання. Постійний моніторинг є необхідним для виявлення спроб вторгнення та підтримки безпечного середовища.

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

sudo journalctl -u ssh | grep "Failed password"

Або використовуйте lastb для перегляду невдалих спроб входу:

sudo lastb | head -20

Встановіть Fail2Ban для блокування атак методом перебору

Fail2Ban відстежує файли журналів і автоматично блокує IP-адреси, які демонструють зловмисну поведінку (наприклад, повторні невдалі спроби входу):

sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Створіть локальну конфігурацію jail для SSH:

sudo nano /etc/fail2ban/jail.local

Додайте наступне:

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

Перезапустіть Fail2Ban для застосування:

sudo systemctl restart fail2ban

Підтримуйте OpenSSH в актуальному стані

Регулярно оновлюйте OpenSSH для виправлення відомих вразливостей:

sudo apt update && sudo apt upgrade openssh-server -y

Підключення до вашого SSH-сервера: Короткий довідник

СценарійКоманда
Стандартний порт (22)ssh username@your_server_ip
Нестандартний портssh -p 2222 username@your_server_ip
Конкретний файл ідентифікаціїssh -i ~/.ssh/id_ed25519 username@your_server_ip
Детальне виведення (налагодження)ssh -v username@your_server_ip
Копіювання файлів через SSHscp -P 2222 file.txt username@your_server_ip:/path/

Вибір правильного середовища хостингу для SSH

Кроки в цьому посібнику застосовуються до будь-якого сервера на основі Debian, але тип хостингу, який ви використовуєте, впливає на те, як ви отримуєте доступ до свого середовища та керуєте ним:

  • VPS Хостинг: VPS з cPanel або іншими Панелями керування VPS надає вам повний root SSH-доступ разом із графічним інтерфейсом керування — ідеально для користувачів, яким потрібні і потужність, і зручність.
  • Виділені сервери: З Виділеним сервером ви маєте повний контроль на рівні апаратного забезпечення, що робить конфігурацію SSH ще більш критичною, оскільки ви несете повну відповідальність за безпеку машини.
  • Спільний хостинг: Плани Спільного веб-хостингу зазвичай надають обмежений або відсутній SSH-доступ, оскільки середовище є спільним для кількох користувачів. Якщо SSH є обов’язковою вимогою, рекомендованим шляхом є перехід на VPS.

Висновок

Встановлення та налаштування SSH-сервера на Debian є фундаментальною навичкою для будь-якого системного адміністратора або розробника, який працює з віддаленими Linux-серверами. Дотримуючись цього посібника, ви:

  • ✅ Встановили OpenSSH Server на Debian
  • ✅ Захистили конфігурацію SSH, змінивши стандартний порт, вимкнувши вхід root і обмеживши доступ користувачів
  • ✅ Налаштували автентифікацію SSH на основі ключів для безпарольних, безпечних входів
  • ✅ Налаштували правила брандмауера для захисту вашого порту SSH
  • ✅ Впровадили Fail2Ban для захисту від атак методом перебору
  • ✅ Встановили процедуру моніторингу та обслуговування

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

15%

Збережіть 15% на всі хостинг-послуги

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

Використовуй код:

Skills
Почати