Як убезпечити сервер Linux в інтернеті

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

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

1. Оновлення системи: Ваш перший крок до захисту

Кожна програма або операційна система з часом стає вразливою, якщо не оновлювати її. Зловмисники постійно шукають і використовують уразливості в старих версіях програмного забезпечення. На щастя, розробники випускають патчі, що закривають ці дірки.
Оновити систему легко: для дистрибутивів на основі Debian використовуйте команду:

sudo apt update && sudo apt upgrade -y

Якщо ви використовуєте інший дистрибутив, команди можуть відрізнятися, наприклад, dnf update для RedHat сумісних ОС, наприклад, AlmaLinux, Fedora або Rocky Linux. Крім того, налаштуйте автоматичні оновлення, щоб ваш сервер завжди залишався актуальним.

2. Сильні паролі та вимкнення root-доступу (з ключами SSH)

Пароль типу "123456" або "password" — пряме запрошення для зловмисників. Хакери і всілякі зломщики використовують brute-force атаки (методом перебору) або атаки за словником, які дають змогу відносно швидко розкрити слабко захищені облікові записи на сервері. Завжди використовуйте максимально складні унікальні паролі довжиною щонайменше 12 символів, використовуючи комбінацію букв, цифр і спеціальних символів

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

2.1. згенеруйте пару ключів на вашій локальній машині:

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

  • -t rsa — тип ключа (RSA).
  • -b 4096 — довжина ключа в бітах (чим більше, тим складніше зламати).
  • -C "your_email@example.com" — коментар для ідентифікації ключа.

Після виконання команди вас попросять вказати місце для збереження ключа (за замовчуванням ~.ssh/.ssh/id_rsa) та, за необхідності, встановити пароль для ключа.

2.2. перевірте створені файли:

Після успішного виконання команди в каталозі ~/.ssh мають бути створені два файли

  • Приватний ключ: ~/.ssh/id_rsa — залишається у вас, не передавайте його нікому!
  • Публічний ключ: ~/.ssh/id_rsa.pub — його копіюємо на сервер.

 

2.3. Встановіть публічний ключ на сервер

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

Спосіб 1: Використання ssh-copy-id

Цей спосіб автоматизує процес. Виконайте команду на своїй локальній машині:

ssh-copy-id username@server_ip

Замініть username та server_ip на ваш логін та IP-адресу сервера.

Введіть поточний пароль для підтвердження. Після цього публічний ключ буде автоматично додано до файлу ~/.ssh/authorized_keys на сервері.

Спосіб 2: Ручне встановлення ключа

Якщо ssh-copy-id недоступний, виконайте наступні кроки.

Скопіюйте вміст публічного ключа на локальній машині:

cat ~/.ssh/id_rsa.pub

Підключіться до сервера по SSH з паролем:

ssh username@server_ip

На сервері створіть папку для ключів (якщо її немає):

mkdir -p ~/.ssh
chmod 700 ~/.ssh

Створіть або доповніть файл ~/.ssh/authorized_keys:

echo "ваш_публичный_ключ" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

Вийдіть із сервера і перевірте вхід за ключем:

ssh username@server_ip

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

2.4. обмеження root-доступу

Відкрийте файл налаштувань SSH-сервера:

sudo nano /etc/ssh/sshd_config

Для суворої безпеки можна відключити віддалений вхід під користувачем root, для цього у файлі /etc/ssh/sshd_config, додаємо рядок:

PermitRootLogin no

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

PermitRootLogin prohibit-password
PasswordAuthentication no
PubkeyAuthentication yes

  • PermitRootLogin prohibit-password — root може входити тільки за ключем.
  • PasswordAuthentication no — вимкнення входу за паролем для всіх користувачів.
  • PubkeyAuthentication yes — увімкнення аутентифікації за ключами.

Після внесення змін до файлу конфігурації слід перезапустити демон ssh.

sudo systemctl restart sshd

Тепер root-доступ можливий тільки зі встановленим ключем, що значно підвищує безпеку.

3. Налаштування фаєрвола: Перший рубіж оборони

Фаєрвол допомагає обмежити доступ до сервера тільки для потрібних додатків. Наприклад, залиште відкритим порт для SSH (за замовчуванням 22) і ваш веб-сервер, якщо він є. Для налаштування фаєрвола використовуйте ufw (Uncomplicated Firewall):

sudo ufw allow ssh  
sudo ufw allow 80  
sudo ufw allow 443  
sudo ufw enable

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

Блокування зайвого трафіку значно знижує шанси атаки

4. SSH: захист і альтернативні порти

SSH - це головний спосіб керування сервером, тому він має бути захищений. Крім вимкнення root-доступу, змініть стандартний порт 22 на менш очевидний, наприклад, 2222. Це можна зробити у файлі /etc/ssh/sshd_config:

Port 2222

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

sudo apt install fail2ban

Fail2Ban стежитиме за спробами входу і блокуватиме підозрілі адреси.

5. Моніторинг і регулярні перевірки

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

Висновок: Безпека як інвестиція

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

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