Заощадьте 15% на всіх хостингових послугах

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код: Skills Почати
Рубрики
Linux Безпека

Як захистити ваш Linux сервер від вразливостей: Повний посібник з посилення безпеки

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

Цей посібник проведе вас через десять перевірених часом методів зміцнення Linux-сервера з реальними командами, прикладами конфігурації та експертними рекомендаціями. Якщо ваша інфраструктура працює на VPS Hosting або Dedicated Servers у AlexHost, ці практики допоможуть вам побудувати стійке, стійке до атак середовище з нуля.

Чому безпека Linux сервера вимагає постійної уваги

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

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

1. Тримайте системні пакети в актуальному стані

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

Debian / Ubuntu:

sudo apt update
sudo apt upgrade -y

CentOS / RHEL / AlmaLinux / Rocky Linux:

sudo dnf update -y
# or for older systems:
sudo yum update -y

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

Debian/Ubuntu — увімкніть unattended upgrades:

sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades

Зробіть звичкою перевіряти оновлення щонайменше раз на тиждень. Підпишіться на списки розсилки безпеки для вашого дистрибутива (наприклад, Ubuntu Security Notices), щоб бути в курсі критичних розкриттів.

2. Посилення безпеки SSH

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

Крок 1: Створіть сильну пару ключів SSH

На вашій локальній машині створіть пару ключів RSA з 4096 бітами (або використовуйте більш сучасний алгоритм Ed25519):

# RSA (widely compatible)
ssh-keygen -t rsa -b 4096

# Ed25519 (recommended for modern systems)
ssh-keygen -t ed25519

Крок 2: Скопіюйте ваш публічний ключ на сервер

ssh-copy-id user@your_server_ip

Як альтернатива, додайте публічний ключ вручну до ~/.ssh/authorized_keys на сервері.

Крок 3: Посиліть /etc/ssh/sshd_config

Відкрийте файл конфігурації демона SSH:

sudo nano /etc/ssh/sshd_config

Застосуйте наступні посилені параметри:

# Disable password-based authentication entirely
PasswordAuthentication no

# Prevent direct root login via SSH
PermitRootLogin no

# Change the default SSH port to reduce automated scan noise
Port 2222

# Limit authentication attempts
MaxAuthTries 3

# Disable unused authentication methods
ChallengeResponseAuthentication no
X11Forwarding no
AllowTcpForwarding no

# Restrict SSH access to specific users
AllowUsers yourusername

# Set idle session timeout (seconds)
ClientAliveInterval 300
ClientAliveCountMax 2

Крок 4: Перезавантажте службу SSH

sudo systemctl restart sshd

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

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

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

UFW (Uncomplicated Firewall) — Ubuntu / Debian

# Set default policies
sudo ufw default deny incoming
sudo ufw default allow outgoing

# Allow essential services
sudo ufw allow 2222/tcp    # SSH on custom port
sudo ufw allow 80/tcp      # HTTP
sudo ufw allow 443/tcp     # HTTPS

# Enable the firewall
sudo ufw enable

# Verify rules
sudo ufw status verbose

firewalld — CentOS / RHEL / AlmaLinux

sudo systemctl enable --now firewalld

# Allow services
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https

# Reload to apply
sudo firewall-cmd --reload

Розширена опція: iptables / nftables

Для детального контролю досвідчені адміністратори можуть використовувати iptables або сучасну структуру nftables безпосередньо. Ці інструменти дозволяють обмежувати швидкість, відстежувати стан з’єднання та створювати складні ланцюги правил, які виходять за межі того, що надає UFW.

4. Розгорніть інструменти запобігання вторгненням та моніторингу цілісності

Реактивна безпека недостатня. Вам потрібні інструменти, які активно виявляють та реагують на підозрілу поведінку.

Fail2Ban — автоматизований захист від перебору пароля

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

sudo apt install fail2ban -y   # Debian/Ubuntu
sudo dnf install fail2ban -y   # CentOS/RHEL

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

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

Рекомендовані параметри SSH в’язниці:

[sshd]
enabled = true
port    = 2222
maxretry = 5
bantime  = 3600
findtime = 600
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd

Моніторинг цілісності файлів

  • AIDE (Advanced Intrusion Detection Environment): Створює криптографічну базову лінію вашої файлової системи та сповіщає вас про несанкціоновані зміни.
  • OSSEC / Wazuh: Система виявлення вторгнень на основі хоста (HIDS) з аналізом журналів, виявленням rootkit та можливостями активного реагування.
sudo apt install aide -y
sudo aideinit
sudo aide --check

5. Вимкніть та видаліть непотрібні сервіси

Кожен запущений сервіс — це потенційна поверхня атаки. Сервіси, які ви не використовуєте, не повинні працювати — точка.

Список усіх активних сервісів:

sudo systemctl list-units --type=service --state=active

Вимкніть та зупиніть сервіс:

sudo systemctl disable service_name
sudo systemctl stop service_name

Повністю видаліть невикористовувані пакети:

sudo apt purge package_name -y
sudo apt autoremove -y

Типові кандидати на видалення на мінімальних серверах: telnet, rsh, finger, talk, avahi-daemon, cups (друк) та будь-які інструменти розробки, які не потрібні у виробництві.

6. Забезпечення строгих політик автентифікації

Паролі залишаються критичним фактором автентифікації для багатьох сервісів. Слабкі або повторно використовувані паролі легко експлуатуються.

Забезпечення складності пароля через PAM

Відредагуйте /etc/security/pwquality.conf:

minlen = 14
dcredit = -1
ucredit = -1
ocredit = -1
lcredit = -1
maxrepeat = 3

Включення двофакторної автентифікації (2FA) для SSH

Використовуючи google-authenticator (також працює з будь-яким додатком TOTP, як Authy або Aegis):

sudo apt install libpam-google-authenticator -y
google-authenticator

Відредагуйте /etc/pam.d/sshd для додавання:

auth required pam_google_authenticator.so

Оновіть /etc/ssh/sshd_config:

ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive
sudo systemctl restart sshd

7. Моніторинг журналів та активності системи

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

Основні файли журналів

# Authentication events (logins, sudo usage, SSH attempts)
sudo tail -f /var/log/auth.log          # Debian/Ubuntu
sudo tail -f /var/log/secure            # CentOS/RHEL

# General system messages
sudo tail -f /var/log/syslog

# Kernel messages
sudo dmesg | tail -50

Розширене управління та моніторинг журналів

ІнструментПризначення
LogwatchЩоденні звіти дайджесту журналів через електронну пошту
GoAccessАналіз журналів веб-сервера в реальному часі
Prometheus + GrafanaЗбір метрик та інформаційні панелі візуалізації
WazuhКореляція журналів та виявлення загроз на рівні SIEM
AuditdАудит системних викликів на рівні ядра

Налаштуйте централізовану відправку журналів (наприклад, на стек ELK або віддалений сервер syslog), щоб журнали залишалися доступними навіть якщо основний сервер скомпрометований.

8. Безпечні веб-додатки та бази даних

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

Посилення веб-сервера (Nginx / Apache)

Приховайте інформацію про версію, щоб запобігти розпізнаванню:

*Nginx — /etc/nginx/nginx.conf:*

server_tokens off;

*Apache — /etc/apache2/conf-enabled/security.conf:*

ServerTokens Prod
ServerSignature Off

Примусьте HTTPS скрізь, використовуючи безплатний SSL сертифікат від Let’s Encrypt:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

Додайте заголовки безпеки до конфігурації вашого веб-сервера:

add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header Referrer-Policy "strict-origin-when-cross-origin";

Посилення бази даних (MySQL / MariaDB / PostgreSQL)

# Run the MySQL secure installation wizard
sudo mysql_secure_installation

Ключові кроки посилення:

  • Прив’яжіть до localhost, якщо віддалений доступ явно не потрібен: встановіть bind-address = 127.0.0.1 у /etc/mysql/mysql.conf.d/mysqld.cnf
  • Видаліть анонімних користувачів та тестову базу даних
  • Використовуйте виділених користувачів бази даних з мінімальними привілеями — ніколи не підключайте додатки, використовуючи обліковий запис root
  • Зашифруйте конфіденційні дані в спокої, використовуючи вбудовані функції шифрування бази даних

9. Впровадження регулярних автоматизованих резервних копій

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

rsync — Інкрементальна синхронізація файлів

# Sync local directory to backup location
rsync -avz --delete /var/www/html/ /backup/www/

# Sync to a remote backup server
rsync -avz -e ssh /var/www/html/ backupuser@backup_server:/backup/www/

tar — Стиснені архіви

# Create a timestamped compressed archive
tar -czvf /backup/site-$(date +%Y%m%d).tar.gz /var/www/html/

# Verify archive integrity
tar -tzvf /backup/site-$(date +%Y%m%d).tar.gz

Автоматизація за допомогою Cron

crontab -e
# Daily backup at 2:00 AM
0 2 * * * rsync -avz /var/www/html/ /backup/www/ >> /var/log/backup.log 2>&1

# Weekly full archive on Sunday at 3:00 AM
0 3 * * 0 tar -czvf /backup/full-$(date +%Y%m%d).tar.gz /var/www/ >> /var/log/backup.log 2>&1

Найкращі практики резервного копіювання:

  • Дотримуйтесь правила 3-2-1: 3 копії, на 2 різних типах носіїв, з 1 віддаленою
  • Регулярно тестуйте процес відновлення — невідтестована резервна копія — це не резервна копія
  • Шифруйте резервні копії, що містять конфіденційні дані, за допомогою GPG або подібних інструментів
  • Зберігайте резервні копії на окремому сервері або сервісі зберігання, а не на тій же машині

10. Застосуйте принцип найменших привілеїв

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

Дозволи файлів та каталогів

# Set ownership
sudo chown -R www-data:www-data /var/www/html/

# Set appropriate permissions
sudo chmod -R 755 /var/www/html/
sudo chmod -R 644 /var/www/html/*.html

# Find world-writable files (potential security risk)
find / -perm -0002 -type f 2>/dev/null

# Find SUID/SGID binaries (review carefully)
find / -perm /6000 -type f 2>/dev/null

Управління обліковими записами користувачів

# List all users with login shells
grep -v nologin /etc/passwd

# Lock unused accounts
sudo usermod -L username

# Restrict sudo access — edit with visudo
sudo visudo

Надавайте sudo доступ лише користувачам, які його справді потребують. Використовуйте групові правила sudo замість загальних ALL=(ALL) ALL записів.

Запуск застосунків від непривілейованих користувачів

Ніколи не запускайте веб-сервери, бази даних або процеси застосунків від користувача root. Створіть виділені облікові записи служб:

sudo useradd --system --no-create-home --shell /bin/false appuser
sudo chown -R appuser:appuser /opt/myapp/

Бонус: додаткові заходи посилення безпеки, які варто впровадити

ЗахідОпис
Вимкнути IPv6 (якщо не використовується)Зменшує поверхню атаки, якщо IPv6 не потрібен
Посилення ядра через sysctlВимкнути IP forwarding, увімкнути SYN cookies, обмежити core dumps
AppArmor / SELinuxФреймворки обов’язкового контролю доступу, які обмежують поведінку процесів
ClamAVВідкритий антивірус для сканування завантажених файлів та вкладень електронної пошти
LynisКомплексний інструмент аудиту безпеки для систем Linux
rkhunter / chkrootkitСканери виявлення rootkit
Сегментація мережіІзолюйте сервіси за допомогою VLAN або окремих мережевих інтерфейсів

Швидке посилення ядра через /etc/sysctl.conf:

# Disable IP forwarding
net.ipv4.ip_forward = 0

# Enable SYN flood protection
net.ipv4.tcp_syncookies = 1

# Disable ICMP redirects
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0

# Ignore broadcast pings
net.ipv4.icmp_echo_ignore_broadcasts = 1

# Restrict kernel pointer exposure
kernel.kptr_restrict = 2

# Restrict dmesg access
kernel.dmesg_restrict = 1

Застосуйте зміни негайно:

sudo sysctl -p

Вибір правильної основи хостингу для безпечного сервера

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

Плани VPS Hosting AlexHost забезпечують повний root-доступ, продуктивність на основі SSD та гнучкий вибір ОС — надаючи вам повний контроль для впровадження кожної техніки посилення безпеки з цього посібника. Для високонавантажених або ресурсомістких робочих навантажень Dedicated Servers пропонують ізольоване обладнання без шумних сусідів та максимальну продуктивність.

Якщо ви віддаєте перевагу керованому середовищу панелі керування, VPS з cPanel спрощує управління сервером, зберігаючи можливість застосування конфігурацій безпеки. І якщо ваш сервер розміщує веб-сайт або веб-додаток, поєднання його з надійним SSL Certificate забезпечує шифрування всіх даних під час передачі — обов’язковий мінімум для будь-якого виробничого розгортання.

Висновок: Безпека — це процес, а не одноразова подія

Захист Linux сервера — це не завдання, яке ви виконуєте один раз і забуваєте. Це постійна дисципліна, яка вимагає регулярної уваги, активного моніторингу та готовності адаптуватися в міру еволюції ландшафту загроз.

Ось ваш контрольний список затвердження з одного погляду:

  • ✅ Регулярно застосовуйте оновлення системи та автоматизуйте патчі безпеки
  • ✅ Затвердіть SSH: аутентифікація на основі ключів, відключення входу root, зміна порту за замовчуванням
  • ✅ Налаштуйте брандмауер з політикою за замовчуванням deny
  • ✅ Розгорніть Fail2Ban та моніторинг цілісності файлів
  • ✅ Відключіть усі непотрібні сервіси та пакети
  • ✅ Примусьте сильні паролі та увімкніть 2FA
  • ✅ Моніторьте журнали та налаштуйте сповіщення про аномальну активність
  • ✅ Захистіть веб-сервери, додатки та бази даних
  • ✅ Автоматизуйте та тестуйте резервні копії за правилом 3-2-1
  • ✅ Застосуйте принцип найменших привілеїв для користувачів, файлів та процесів

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

Ваша інфраструктура настільки ж міцна, наскільки міцна її найслабша конфігурація. Заблокуйте її сьогодні.