Захист сервера Ubuntu: Практичний підхід до захисту контейнерів та розгортання
13:45, 17.08.2026
Існує кілька корисних підходів, які можна застосувати для забезпечення безпеки сервера 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. Просто дотримуючись наших практичних рекомендацій, ви зможете значно мінімізувати віртуальні атаки на вашу систему. Якщо ви хочете піти ще далі, вам також потрібно перевірити інші можливі вразливості, пов’язані зі службою та вашими програмами. Однак це вже зовсім інша тема для обговорення!