До основного вмісту

Чеклист безпеки нового Linux-сервера: 30 кроків

Безпека · 19.04.2026 · 4 хв читання
Ілюстрація до статті «Чеклист безпеки нового Linux-сервера: 30 кроків»

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

Розділ 1: Оновлення системи

apt update && apt upgrade -y
apt install unattended-upgrades -y
dpkg-reconfigure -plow unattended-upgrades  # увімкнути автооновлення безпеки

Розділ 2: Користувачі та sudo

useradd -m -s /bin/bash admin
usermod -aG sudo admin
passwd admin
# Перевірити, що root-вхід за паролем вимкнено
passwd -l root

Розділ 3: SSH Hardening

# Детально вже описано в статті SSH Hardening
# Головне:
Port 2222
PermitRootLogin no
PasswordAuthentication no
AllowUsers admin

Розділ 4: Firewall (UFW)

apt install ufw -y
ufw default deny incoming
ufw default allow outgoing
ufw allow 2222/tcp  # SSH (ваш порт)
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
ufw status verbose

Розділ 5: fail2ban

apt install fail2ban -y
systemctl enable --now fail2ban

Розділ 6: Синхронізація часу

apt install chrony -y
systemctl enable --now chrony
timedatectl status

Розділ 7: Моніторинг та аудит

apt install auditd audispd-plugins -y
systemctl enable --now auditd
apt install logwatch -y

Повний чеклист із 30 пунктів

#ДіяПріоритет
1apt update && apt upgradeКритичний
2Увімкнути unattended-upgradesВисокий
3Створити non-root користувачаКритичний
4Налаштувати SSH-ключіКритичний
5Змінити порт SSHСередній
6PermitRootLogin noКритичний
7PasswordAuthentication noКритичний
8Налаштувати UFW/nftablesКритичний
9Встановити fail2banВисокий
10Налаштувати NTP (chrony)Середній
11Налаштувати hostname та /etc/hostsНизький
12Встановити auditdСередній
13Налаштувати logrotateСередній
14Встановити ClamAV (за потреби)Середній
15Налаштувати rkhunterСередній
16Налаштувати резервні копіїКритичний
17Перевірити відкриті портиВисокий
18Налаштувати swap (якщо немає)Середній
19Налаштувати sysctl hardeningСередній
20Увімкнути HSTS для веб-сервераВисокий
21Налаштувати SSL (Let's Encrypt)Критичний
22Вимкнути невикористовувані сервісиСередній
23Перевірити SUID-файлиСередній
24Налаштувати моніторинг uptimeВисокий
25Налаштувати email-сповіщенняСередній
26Задокументувати конфігураціюСередній
27Налаштувати CrowdSec або OSSECСередній
28Перевірити права на файли конфігівВисокий
29Налаштувати ротацію SSH-ключівНизький
30Провести тест на проникненняСередній
Sysctl hardening — додатковий рівень захисту ядра. Додайте в /etc/sysctl.d/99-security.conf:
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
kernel.randomize_va_space = 2
kernel.dmesg_restrict = 1
Застосувати: sysctl --system

Типові помилки під час первинного налаштування

СимптомПричина
SSH-з'єднання обривається одразу після ufw enableЗабули заздалегідь дозволити порт SSH (ufw allow 2222/tcp) до увімкнення — файрвол активувався і закрив єдиний канал доступу
sshd: no hostkeys available після зміни портуУ sshd_config змінили Port, але не перезапустили сам сервіс, або в конфігу є помилка і sshd взагалі не стартує
fail2ban: Fail to start jail 'sshd'... Permission deniedBackend fail2ban не налаштовано на читання systemd journal, або logpath у jail.local вказує на неіснуючий файл після зміни порту SSH
unattended-upgrades: no packages foundУ /etc/apt/apt.conf.d/50unattended-upgrades не розкоментовано потрібні рядки Origins-Pattern для конкретного дистрибутива
chronyd: Could not synchroniseВихідний UDP-порт 123 заблокований файрволом провайдера або самим ufw, якщо правило default deny outgoing виставлено занадто суворо

Коли цього чеклиста недостатньо

  • Сервер зберігає платіжні дані або підпадає під формальний стандарт (PCI DSS і подібні) — 30 кроків дають базову гігієну, але не замінюють офіційний аудит відповідності
  • Потрібен захист від атак на рівні застосунку — SQL-ін'єкції, XSS і логічні вразливості чеклист не закриває, він охоплює лише ОС і мережевий периметр
  • Інфраструктура складається з десятків серверів — повторювати 30 кроків вручну на кожному не масштабується, потрібна автоматизація через Ansible або Terraform
  • Потрібен захист від обʼємної DDoS-атаки — fail2ban і ufw ефективні проти точкового перебору, але безсилі проти атаки на пропускну здатність каналу, для цього потрібен захист на рівні провайдера або CDN

Перевірка результату

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

# Які порти справді слухають на сервері
sudo ss -tlnp

# Правила файрвола збігаються з очікуваними
sudo ufw status verbose

# jail fail2ban активний і банить спроби підбору
sudo fail2ban-client status sshd

# Ключові сервіси увімкнені в автозавантаження
sudo systemctl is-enabled fail2ban auditd chrony
Чи була стаття корисною?
← Назад до бази знань Поставити питання підтримці