Захист сервера Ubuntu: Практичний підхід до захисту контейнерів та розгортання

watch 1m, 21s
views 2

13:45, 17.08.2026

Зміст статті
arrow

  • Початкові кроки налаштування
  • Створення нового користувача
  • Увімкніть аутентифікацію за допомогою SSH-ключів
  • Перевірка користувача deploy та налаштування sudo
  • Обмеження входу за допомогою SSH-ключів
  • Налаштування брандмауера
  • Автоматизація оновлень безпеки
  • Впровадження Fail2Ban
  • Увімкнення двофакторної автентифікації
  • Налаштування Logwatch
  • Завершення налаштування

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

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

Початкові кроки налаштування

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

Ще одним важливим кроком є оновлення та встановлення останніх виправлень у системі. Ось як це можна зробити:

apt-get update
apt-get upgrade

Створення нового користувача

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

# Створити користувача «deploy»
useradd deploy
# Створити домашній каталог для користувача «deploy»
mkdir -p /home/deploy
# Створити каталог «.ssh» у домашньому каталозі користувача «deploy»
mkdir -p /home/deploy/.ssh
# Встановити відповідні права доступу для каталогу «.ssh»
chmod 700 /home/deploy/.ssh
# За бажанням змініть власника домашнього каталогу та каталогу «.ssh» на користувача «deploy»
chown -R deploy:deploy /home/deploy

Наступним кроком є налаштування необхідної оболонки за допомогою команди:

usermod -s /bin/bash deploy 

Увімкніть аутентифікацію за допомогою SSH-ключів

Ще одна корисна рекомендація — уникати використання паролів для входу на сервери. Ось кілька моментів щодо цієї теми:

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

Тепер скопіюємо id_rsa.pub1:

vim /home/deploy/.ssh/authorized_keys  

Ось як слід налаштувати правильні права доступу:

chmod 400 /home/deploy/.ssh/authorized_keys

chown deploy:deploy /home/deploy -R

Перевірка користувача deploy та налаштування sudo

Під час цього процесу ми залишимо SSH-з’єднання як root і спробуємо перевірити користувача deploy. Потім ми встановимо пароль для користувача deploy. Щоб створити більш безпечний пароль, ми скористаємося спеціальним менеджером, який також додасть певний рівень шифрування.

passwd deploy

Потім відкрийте sudo за допомогою команди:

visudo

Тепер ми додамо групу sudo під користувачем root:

root ALL=(ALL) ALL

%sudo   ALL=(ALL:ALL) ALL

Додайте користувача deploy за допомогою команди:

usermod -aG sudo deploy

Після виконання цих кроків користувач deploy отримає права sudo. Тепер ви можете або перезайти в оболонку, або скористатися наступною командою, щоб отримати доступ до цих прав:

exec su -l deploy

Обмеження входу за допомогою SSH-ключів

Налаштування знаходяться тут:

vim /etc/ssh/sshd_config

У файлі потрібно додати IP-адресу; наступна команда досить проста, при цьому ви повинні бути підключені до вашого VPN та пройти автентифікацію наступним чином:

PermitRootLogin no

PasswordAuthentication no

AllowUsers deploy@(ваш-VPN-або-статичний-IP)

Потім потрібно перезапустити службу SSH:

service ssh restart

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

Налаштування брандмауера можна виконати за допомогою Iptables або скористатися спрощеним варіантом на базі Iptables — ufw. У системі Ubuntu ufw встановлено за замовчуванням, тоді як у системі Debian його слід додатково встановити за допомогою:

apt-get install ufw

Почніть із відкриття файлу конфігурації:

vim /etc/default/ufw

Змініть наступне значення на yes:

IPV6=yes

Тепер ви можете налаштувати все з командного рядка за допомогою ufw наступним чином:

sudo ufw allow from {вказати-IP} to any port 22

sudo ufw allow 80

sudo ufw allow 443

sudo ufw disable

sudo ufw enable

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

Автоматизація оновлень безпеки

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

apt-get install unattended-upgrades

vim /etc/apt/apt.conf.d/10periodic

Внесіть у файл такі зміни:

APT::Periodic::Update-Package-Lists "2";

APT::Periodic::Download-Upgradeable-Packages "2";

APT::Periodic::AutocleanInterval "14";

APT::Periodic::Unattended-Upgrade "1";

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

vim /etc/apt/apt.conf.d/50unattended-upgrades

Внесіть у файл такі зміни:

Unattended-Upgrade::Allowed-Origins {

    "${distro_id}:${distro_codename}";

    "${distro_id}:${distro_codename}-security";

    "${distro_id}:${distro_codename}-updates";

    "${distro_id}:${distro_codename}-backports";

};

Впровадження Fail2Ban

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

Пакет використовує кілька корисних протоколів фільтрації та забезпечує чудову інтеграцію з іншими сервісами, щоб гарантувати кращий захист від атак методом грубої сили або DDoS-атак. Вам слід регулярно перевіряти роботу Fail2Ban, оскільки він може заблокувати деяких справжніх користувачів. Щоб спростити цей процес, ви можете інтегрувати цей інструмент із SendMail, і ви одразу отримаєте повідомлення, щойно певна IP-адреса буде заблокована.

Для встановлення скористайтеся командою:

apt-get install fail2ban

Увімкнення двофакторної автентифікації

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

  • Отримати доступ до VPN, здобувши ключ/сертифікат
  • Отримати доступ до вашого комп’ютера, щоб дістати приватний ключ
  • Якимось чином дістати парольну фразу
  • І нарешті, для двофакторної автентифікації необхідний доступ до вашого телефону

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

Для встановлення скористайтеся:

apt-get install libpam-google-authenticator

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

su deploy

google-authenticator

Налаштування Logwatch

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

apt-get install logwatch

Потім додайте завдання:

vim /etc/cron.daily/00logwatch

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

/usr/sbin/logwatch --output mail --mailto admin@example.com --detail high

Завершення налаштування

Ось усе, що вам потрібно знати про безпеку вашого сервера Ubuntu. Просто дотримуючись наших практичних рекомендацій, ви зможете значно мінімізувати віртуальні атаки на вашу систему. Якщо ви хочете піти ще далі, вам також потрібно перевірити інші можливі вразливості, пов’язані зі службою та вашими програмами. Однак це вже зовсім інша тема для обговорення!

Поділитися

Чи була ця стаття корисною для вас?

Популярні пропозиції VPS

-10%

CPU
CPU
6 Epyc Cores
RAM
RAM
8 GB
Space
Space
100 GB NVMe
Bandwidth
Bandwidth
Unlimited
aiKVM-NVMe 8192 Linux

27.05

При оплаті за рік

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
75 GB SSD
Bandwidth
Bandwidth
Unlimited
wKVM-SSD 2048 Windows

10.23

При оплаті за рік

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB HDD
Bandwidth
Bandwidth
300 Gb
KVM-HDD HK 4096 Linux

12.15

При оплаті за рік

-18.4%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
75 GB SSD
Bandwidth
Bandwidth
2 TB
wKVM-SSD 2048 Metered Windows

24

При оплаті за рік

-7.2%

CPU
CPU
3 Xeon Cores
RAM
RAM
1 GB
Space
Space
20 GB SSD
Bandwidth
Bandwidth
Unlimited
KVM-SSD 1024 Linux

6.4

При оплаті за рік

-10%

CPU
CPU
8 Epyc Cores
RAM
RAM
32 GB
Space
Space
200 GB NVMe
Bandwidth
Bandwidth
Unlimited
KVM-NVMe 32768 Linux

70.49

При оплаті за рік

-10%

CPU
CPU
3 Epyc Cores
RAM
RAM
2 GB
Space
Space
20 GB NVMe
Bandwidth
Bandwidth
Unlimited
KVM-NVMe 2048 Linux

8.8

При оплаті за рік

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB HDD
Bandwidth
Bandwidth
Unlimited
KVM-HDD 4096 Linux

15

При оплаті за рік

-8.4%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
75 GB SSD
Bandwidth
Bandwidth
Unlimited
10Ge-wKVM-SSD 2048 Windows

37.4

При оплаті за рік

-7.1%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB HDD
Bandwidth
Bandwidth
Unlimited
wKVM-HDD 4096 Windows

21

При оплаті за рік

Інші статті на цю тему

cookie

Чи приймаєте ви файли cookie та політику конфіденційності?

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