bolt Valebyte VPS від $4/міс — NVMe, запуск за 60 секунд.

Отримати VPS arrow_forward

Захист серверів на базі Linux: кращі практики

calendar_month October 01, 2024 schedule 9 хв. читання visibility 856 переглядів
person
Valebyte Team
Захист серверів на базі Linux: кращі практики
summarize

TL;DR

  • Регулярно оновлюйте ядро і ПЗ через apt update/upgrade для усунення відомих вразливостей.
  • Використовуйте SSH-ключі замість паролів і впровадьте двофакторну аутентифікацію (2FA) для захисту доступу.
  • Відключайте невикористовувані служби і порти, щоб мінімізувати поверхню атаки на вашу інфраструктуру.
  • Після оновлення ядра Linux обов'язково перезавантажуйте сервер для активації критичних патчів.
  • Налаштуйте unattended-upgrades для автоматичної установки патчів безпеки, але стежте за логами.

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

Фундамент безпеки: Оновлення та патчі

A digital shield protecting a server rack, symbolizing robust security for Linux servers.

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

Що і як оновлювати?

  • Операційна система і ядро: Це основа. Переконайтеся, що ваша система завжди отримує останні оновлення безпеки.
  • Бібліотеки: Багато додатків залежать від системних бібліотек. Уразливості в них можуть бути експлуатовані через, здавалося б, безпечні додатки.
  • Прикладне ПЗ: Веб-сервери (Nginx, Apache), бази даних (PostgreSQL, MySQL), поштові сервери і будь-яке інше ПЗ, встановлене на сервері.

Для більшості дистрибутивів процес оновлення досить простий. Наприклад, в Debian/Ubuntu-подібних системах:


sudo apt update          # Оновити списки пакетів
sudo apt upgrade         # Оновити встановлені пакети до нових версій
sudo apt dist-upgrade    # Оновити систему, дозволяючи зміну залежностей (може бути корисно для серйозних оновлень)

Після оновлення ядра завжди потрібне перезавантаження сервера для застосування змін. Це може бути незручно для продакшн-систем, але критично важливо для безпеки.

Автоматичні оновлення: За чи проти?

Для деяких систем, особливо тестових або з низькою критичністю, можна розглянути автоматичні оновлення за допомогою утиліти unattended-upgrades. Це мінімізує ручне втручання, але вимагає обережності та регулярного моніторингу, оскільки автоматичне оновлення може іноді викликати проблеми сумісності або недоступності сервісів.


# Встановлення unattended-upgrades (для Debian/Ubuntu)
sudo apt install unattended-upgrades

# Включення і налаштування (відкриється редактор nano)
sudo dpkg-reconfigure unattended-upgrades

# Приклад налаштування для автоматичного застосування тільки security-оновлень
# В файлі /etc/apt/apt.conf.d/50unattended-upgrades
// Automatically upgrade packages from these (origin:distribution) pairs
Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
//  "${distro_id}:${distro_codename}-updates";
//  "${distro_id}:${distro_codename}-proposed";
//  "${distro_id}:${distro_codename}-backports";
};

Мережевий захист: Ваш цифровий щит

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

Налаштування брандмауера

Основний принцип: "заборонити все, що не дозволено явним чином". Незалежно від того, чи використовуєте ви iptables, firewalld або UFW (Uncomplicated Firewall), цей принцип повинен бути наріжним каменем вашої політики.

Приклад з UFW (для Debian/Ubuntu-подібних систем)

UFW — це зручна оболонка для iptables, яка значно спрощує налаштування правил.


# Включити UFW (за замовчуванням забороняє весь вхідний трафік)
sudo ufw enable

# Дозволити SSH (стандартний порт 22)
sudo ufw allow ssh

# Якщо ви змінили порт SSH на, скажімо, 2222
# sudo ufw allow 2222/tcp

# Дозволити HTTP (порт 80)
sudo ufw allow http

# Дозволити HTTPS (порт 443)
sudo ufw allow https

# Перевірити статус брандмауера
sudo ufw status verbose

Не забудьте дозволити вихідний трафік, якщо це необхідно для роботи вашого сервера (наприклад, для доступу до зовнішніх API або репозиторіїв пакетів).

Відключення непотрібних служб і закриття портів

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

Як перевірити запущені служби і відкриті порти?

  • Служби: Використовуйте systemctl для перегляду активних служб.
  • Порти: Використовуйте ss (або застарілий netstat) для перегляду відкритих портів.

# Перегляд всіх активних служб
systemctl list-units --type=service --state=running
# Перегляд усіх прослуховуваних портів (TCP та UDP) ss -tuln

Якщо ви бачите службу, яка вам не потрібна (наприклад, FTP-сервер, якщо ви використовуєте SFTP, або якийсь RPC-сервіс), вимкніть її:

Потрібен надійний сервер для вашого бізнесу?

Застосуйте ці практики безпеки на наших VPS-серверах. Отримайте максимальний захист і продуктивність. — from €4.49/mo.

Вибрати VPS-план →

# Зупинити та вимкнути службу
sudo systemctl disable --now service_name

Керування доступом: Хто і як входить?

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

SSH: не просто пароль

SSH — це основний інструмент для віддаленого керування Linux-серверами. Його правильне налаштування критично важливе.

Перехід на аутентифікацію за SSH-ключами

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

  1. Генерація ключів на вашій клієнтській машині:
    
    ssh-keygen -t rsa -b 4096 -C "[email protected]"
            

    Настійно рекомендується використовувати парольну фразу (passphrase) для захисту приватного ключа.

  2. Копіювання публічного ключа на сервер:
    
    ssh-copy-id user@server_ip
            

    Якщо ssh-copy-id недоступний, можна скопіювати вручну, додавши вміст файлу ~/.ssh/id_rsa.pub до файлу ~/.ssh/authorized_keys на сервері.

Посилення конфігурації SSH-сервера (sshd_config)

Після того, як ви переконалися, що можете увійти за ключем, відредагуйте файл /etc/ssh/sshd_config:

  • Вимкніть аутентифікацію за паролем:
    
    PasswordAuthentication no
            
  • Вимкніть вхід для користувача root:
    
    PermitRootLogin no
            

    Завжди входьте під звичайним користувачем, а потім використовуйте sudo для виконання адміністративних завдань.

  • Змініть стандартний порт SSH (хоча це і "безпека через неясність", це знижує шум від сканерів):
    
    Port 2222 # Виберіть будь-який інший незайнятий порт
            

    Не забудьте дозволити цей новий порт у брандмауері!

  • Обмежте користувачів, яким дозволено вхід по SSH:
    
    AllowUsers user1 user2
    # Или AllowGroups sshusers
            

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


sudo systemctl restart sshd

Сильні паролі та двофакторна аутентифікація (2FA)

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

  • Мінімум 12-16 символів.
  • Поєднання великих і малих літер, цифр і спецсимволів.
  • Відсутність словникових слів або комбінацій, які легко вгадати.

Використовуйте модулі PAM, такі як pam_cracklib або pam_pwquality, для примусового виконання цих політик.

Двофакторна аутентифікація (2FA)

2FA додає ще один рівень захисту, вимагаючи другий фактор (наприклад, код з програми-аутентифікатора) крім пароля або ключа. Для SSH це можна реалізувати за допомогою libpam-google-authenticator.

Захист від брутфорсу з Fail2Ban

Fail2Ban — чудовий інструмент для захисту від атак підбору паролів. Він сканує логи на предмет повторюваних невдалих спроб входу і автоматично блокує IP-адреси порушників на певний час через брандмауер.


# Встановлення Fail2Ban
sudo apt install fail2ban

# Перевірка статусу (покаже, які "в'язниці" активні)
sudo fail2ban-client status
sudo fail2ban-client status sshd # Для конкретної "в'язниці" SSH
rocket_launch Швидкий вибір

Шукаєте сервер, який просто працює?

Valebyte VPS — NVMe, підтримка 24/7, розгортання за 60 секунд.

Переглянути тарифи VPS arrow_forward

Мінімізація поверхні атаки та посилення системи

Принцип найменших привілеїв

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


# Редагування sudoers (завжди використовуйте visudo)
sudo visudo

Приклад: дозволити користувачу developer перезапускати лише службу Nginx:


developer ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx

SELinux/AppArmor

Системи примусового контролю доступу (MAC), такі як SELinux (для RHEL/CentOS) або AppArmor (для Debian/Ubuntu), додають потужний рівень безпеки, обмежуючи, що процеси можуть робити з файлами, сокетами та іншими ресурсами системи, навіть якщо вони запущені з високими привілеями. Це може запобігти поширенню атаки, навіть якщо зловмисник зміг скомпрометувати службу.


# Перевірити статус SELinux
sestatus

# Перевірити статус AppArmor
sudo aa status

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

Аудит та сканування вразливостей

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

  • Lynis: Відмінний інструмент для аудиту безпеки та посилення системи. Він перевіряє сотні параметрів конфігурації.
  • OpenVAS/Nessus: Сканери вразливостей, які можуть виявляти відомі вразливості в ПЗ і некоректні конфігурації.

Моніторинг та реагування: Очі та вуха вашого сервера

Навіть найкращі заходи безпеки не гарантують 100% захисту. Ключ до мінімізації збитків - це швидке виявлення і реагування на інциденти.

Централізоване логування

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

  • rsyslog/journald: Вбудовані системи логування Linux.
  • SIEM-системи (Security Information and Event Management): Наприклад, ELK Stack (Elasticsearch, Logstash, Kibana) або Splunk. Вони дозволяють збирати, аналізувати і візуалізувати логи з безлічі серверів, виявляючи аномалії і підозрілу активність.

Що шукати в логах:

  • Невдалі спроби входу (особливо багаторазові).
  • Незвичайна активність користувача (вхід в неробочий час, доступ до незвичайних файлів).
  • Помилки служб, перезапуски.
  • Зміни в системних файлах або конфігурації.

Моніторинг продуктивності та безпеки

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

  • Інструменти: Prometheus, Grafana, Zabbix, Nagios.
  • Налаштування алертів: Отримуйте повідомлення по пошті, SMS або в месенджери при перевищенні порогових значень або виявленні підозрілих подій.

Страховка від катастроф: Резервне копіювання

Резервне копіювання - це не міра безпеки в прямому сенсі, але це ваша остання лінія захисту від втрати даних, будь то через апаратний збій, людську помилку або успішну атаку зловмисників (наприклад, шифрувальника).

Стратегія 3-2-1

Це золотий стандарт резервного копіювання:

  • 3 копії даних: Оригінал і дві резервні копії.
  • 2 різних типи носіїв: Наприклад, на локальному диску і на мережевому сховищі.
  • 1 копія поза майданчиком: Одна з копій повинна зберігатися в географічно віддаленому місці.

Автоматизація та тестування

  • Автоматизуйте процес: Використовуйте cron для запуску скриптів резервного копіювання.
  • Перевіряйте цілісність: Переконайтеся, що резервні копії не пошкоджені.
  • Регулярно тестуйте відновлення: Найбільш марна резервна копія - це та, яку не можна відновити. Періодично проводите тестове відновлення даних на окремій машині.
  • Шифруйте резервні копії: Особливо ті, що зберігаються поза майданчиком.
rocket_launch Швидкий вибір

Шукаєте сервер, який просто працює?

Valebyte VPS — NVMe, підтримка 24/7, розгортання за 60 секунд.

Переглянути тарифи VPS arrow_forward

Заключне слово: Безперервний процес

Безпека сервера - це не проект, який можна "завершити". Це постійний, динамічний процес. Загрози еволюціонують, з'являються нові вразливості, і ваш захист повинен адаптуватися. Регулярно переглядайте свої політики безпеки, стежте за новинами в області кібербезпеки і оновлюйте свої знання.

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

Висновки

Для забезпечення надійного захисту Linux-серверів необхідний комплексний і багаторівневий підхід. Ключові заходи включають:

  1. Регулярні оновлення: Підтримка актуальності ПЗ на всіх рівнях системи.
  2. Суворий брандмауер: Принцип "заборонити все, що не дозволено", з використанням UFW, iptables або firewalld.
  3. Мінімізація поверхні атаки: Відключення непотрібних служб і закриття портів.
  4. Посилена SSH-аутентифікація: Використання ключів, відключення парольного входу і root-доступу.
  5. Надійні паролі та 2FA: Впровадження суворих політик паролів і двофакторної аутентифікації.
  6. Fail2Ban: Захист від атак підбору паролів.
  7. Принцип найменших привілеїв: Робота під звичайним користувачем з використанням sudo.
  8. SELinux/AppArmor: Застосування систем примусового контролю доступу.
  9. Моніторинг і логування: Постійний контроль активності і централізований збір логів для швидкого виявлення інцидентів.
  10. Надійне резервне копіювання: Реалізація стратегії 3-2-1 з регулярним тестуванням відновлення.

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

Масштабуйте безпеку з хмарними рішеннями

Захистіть ваші дані, використовуючи передові хмарні технології. Наші хмарні інстанси пропонують гнучкість і надійність.

Дослідити хмару →
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.