Інтернет - це не тільки море можливостей, а й джерело постійних загроз для вашого сервера. Якщо залишити його без належного захисту, він може стати жертвою атак, таких як злом, спам-розсилка або використання ваших ресурсів зловмисниками.
Навіть якщо ваш сервер використовується для невеликого проєкту, нехтування базовими заходами безпеки може призвести до серйозних проблем. У цій статті ми розповімо про п'ять ключових кроків, які допоможуть вам убезпечити ваш Linux-сервер в інтернеті
1. Оновлення системи: Ваш перший крок до захисту
Кожна програма або операційна система з часом стає вразливою, якщо не оновлювати її. Зловмисники постійно шукають і використовують уразливості в старих версіях програмного забезпечення. На щастя, розробники випускають патчі, що закривають ці дірки.
Оновити систему легко: для дистрибутивів на основі Debian використовуйте команду:
Якщо ви використовуєте інший дистрибутив, команди можуть відрізнятися, наприклад, dnf update
для RedHat сумісних ОС, наприклад, AlmaLinux, Fedora або Rocky Linux. Крім того, налаштуйте автоматичні оновлення, щоб ваш сервер завжди залишався актуальним.
2. Сильні паролі та вимкнення root-доступу (з ключами SSH)
Пароль типу "123456" або "password" — пряме запрошення для зловмисників. Хакери і всілякі зломщики використовують brute-force атаки (методом перебору) або атаки за словником, які дають змогу відносно швидко розкрити слабко захищені облікові записи на сервері. Завжди використовуйте максимально складні унікальні паролі довжиною щонайменше 12 символів, використовуючи комбінацію букв, цифр і спеціальних символів
Але найкраще для віддаленого доступу використовувати SSH-ключі — це найбезпечніший спосіб аутентифікації на сервері. Замість паролів ви створюєте пару ключів: приватний (зберігається у вас) і публічний (розміщується на сервері). Навіть якщо зловмисник дізнається ваш логін, без приватного ключа він не зможе увійти. Давайте розберемо, як це налаштувати.
2.1. згенеруйте пару ключів на вашій локальній машині:
-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
Цей спосіб автоматизує процес. Виконайте команду на своїй локальній машині:
Замініть
username
таserver_ip
на ваш логін та IP-адресу сервера.
Введіть поточний пароль для підтвердження. Після цього публічний ключ буде автоматично додано до файлу ~/.ssh/authorized_keys
на сервері.
Спосіб 2: Ручне встановлення ключа
Якщо ssh-copy-id
недоступний, виконайте наступні кроки.
Скопіюйте вміст публічного ключа на локальній машині:
Підключіться до сервера по SSH з паролем:
На сервері створіть папку для ключів (якщо її немає):
Створіть або доповніть файл ~/.ssh/authorized_keys
:
Вийдіть із сервера і перевірте вхід за ключем:
Вхід повинен бути виконаний без запиту пароля.
2.4. обмеження root-доступу
Відкрийте файл налаштувань SSH-сервера:
Для суворої безпеки можна відключити віддалений вхід під користувачем root
, для цього у файлі /etc/ssh/sshd_config
, додаємо рядок:
Якщо ви хочете залишити можливість входу під користувачем root
, але тільки з використанням SSH-ключа, знайдіть або створіть рядки з такими параметрами:
PermitRootLogin prohibit-password
— root може входити тільки за ключем.PasswordAuthentication no
— вимкнення входу за паролем для всіх користувачів.PubkeyAuthentication yes
— увімкнення аутентифікації за ключами.
Після внесення змін до файлу конфігурації слід перезапустити демон ssh.
Тепер root-доступ можливий тільки зі встановленим ключем, що значно підвищує безпеку.
3. Налаштування фаєрвола: Перший рубіж оборони
Фаєрвол допомагає обмежити доступ до сервера тільки для потрібних додатків. Наприклад, залиште відкритим порт для SSH (за замовчуванням 22) і ваш веб-сервер, якщо він є. Для налаштування фаєрвола використовуйте ufw
(Uncomplicated Firewall):
Це базове налаштування, яке можна розширювати. Блокування зайвого трафіку значно знижує шанси атаки.
Блокування зайвого трафіку значно знижує шанси атаки
4. SSH: захист і альтернативні порти
SSH - це головний спосіб керування сервером, тому він має бути захищений. Крім вимкнення root-доступу
, змініть стандартний порт 22 на менш очевидний, наприклад, 2222. Це можна зробити у файлі /etc/ssh/sshd_config
:
Для захисту від брутфорс-атак встановіть Fail2Ban. Він автоматично блокує IP-адреси, з яких намагаються підібрати пароль. Встановлення просте:
Fail2Ban стежитиме за спробами входу і блокуватиме підозрілі адреси.
5. Моніторинг і регулярні перевірки
Навіть налаштувавши захист, потрібно регулярно перевіряти, що відбувається на сервері. Використовуйте інструменти на кшталт htop
для моніторингу ресурсів, netstat
для перевірки мережевих підключень або аналізуйте логи через logwatch
. Ці інструменти допоможуть виявити підозрілу активність, таку як невідомі підключення або високе завантаження процесора
Не забувайте періодично перевіряти доступність серверних служб і актуальність ваших налаштувань безпеки
Висновок: Безпека як інвестиція
Налаштування захисту Linux-сервера — це не тільки мінімізація ризиків, а й показник вашої відповідальності як власника ресурсів в інтернеті. Чим краще захищений сервер, тим менше шансів, що ви зіткнетеся з проблемами. Дотримуйтесь цих базових кроків, і ваш сервер стане фортецею, готовою витримати більшість загроз. Пам'ятайте, що безпека - це процес, що вимагає регулярної уваги та оновлення.
Тепер ваш сервер готовий до роботи в мережі. Але якщо ви відчуваєте, що чогось не вистачає, не соромтеся звернутися по допомогу до професіоналів або продовжуйте вивчати цю тему.