SpaceCore WIKI
Українська
Українська
  • Особистий кабінет та реєстрація
    • Реєстрація
    • Test page
    • Розділ «Клієнт»
    • Розділ «Фінанси»
    • Верифікація акаунта (KYC)
  • Обслуговування клієнтів
    • Як зробити замовлення?
    • Як звернутися в підтримку?
    • Панель ігрового хостингу
    • Налаштування BILLmanager 6 для реселінгу
  • Комунікації
    • Сповіщення в Telegram
    • Сповіщення веб-хостингу
    • Використання пінг-бота в Telegram
  • Інформаційна дошка
    • Заблоковані порти (VPS/VDS)
    • Що таке IOPS?
    • ПДВ для ЄС та Великобританії
  • VPS та виділені сервери
    • Як використовувати VPS/VDS?
    • Зміна пароля для VDS
  • Конфігурація ОС та програмного забезпечення
    • Java [Linux]
    • Screen
    • Відновлення пароля в Linux
    • Підключення за допомогою SSH ключів
    • Відключення доступу до Linux за допомогою пароля
    • Розгортання MikroTik RouterOS на VDS
  • ШІ
    • Розгортаємо DeepSeek на власному сервері всього за кілька кліків
  • Windows
    • Підключення через RDP
    • Налаштування підключення RDP
    • Зміна пароля
    • Установка через QEMU
    • Додаток до IPv4
    • Завантаження файлів
    • Bruteforce Windows
  • Налаштування мережі та безпека
    • Без взаємодії з приватними мережами
    • Робота з TCPDump
    • Зміна значення MTU
    • Налаштування IPTables
    • [DNS] Temporary failure resolving...
    • Вимірювання швидкості мережі [SpeedTest]
    • Як придбати доменне ім'я?
    • Як направити мій домен на IP-адресу?
    • Як захистити свій сервер? Основи кібербезпеки
  • VPN та конфіденційність
    • WireGuard VPN [Easy]
    • OpenVPN [Easy]
    • Outline VPN
    • Встановлення TorrServer
    • Встановлення 3X UI
    • Встановлення Marzban
    • Проксі для визначених сайтів (V2RayN)
    • Використання Nekoray
  • System monitoring
    • Моніторинг трафіку за допомогою VnStat
    • Використання інструменту MTR
    • Отримання серійних номерів дисків
  • Адміністрування та резервне копіювання
    • Робота з FTP-сховищем
    • Автоматичне відвантаження резервних копій
    • Встановлення FTP-сервера
    • Монтування дисків у Linux
  • Розробка вебсайтів
    • Встановлення Apache2
    • Встановлення Nginx
    • Встановлення PHP
    • Встановлення MySQL
    • Встановлення PHPMyAdmin
    • Генерація SSL від Let's Encrypt
  • Minecraft
    • Встановлення Minecraft Java Server
    • Встановлення сервера Minecraft Bedrock/PE
    • Встановлення сервера BungeeCord
    • Встановлення ядра Sponge Forge 1.12.2
    • Налаштування server.properties
    • Встановлення іконки на сервер
    • Опції запуску
    • Встановлення ресурс-пака на сервер
  • Hetzner Servers
    • Control Panel
    • Зміна пароля через Rescue
    • Встановлення операційної системи
  • 🇩🇪Contabo
    • Панель керування
    • Розширення дискового простору
Powered by GitBook
On this page
  • Linux (базові налаштування)
  • Регулярні оновлення системи
  • Використання SSH-ключів
  • Зміна порту SSH
  • Резервне копіювання даних
  • Linux (для просунутих)
  • Налаштування брандмауера
  • Fail2Ban — блокування брутфорсерів
  • Двофакторна автентифікація Google (2FA)
  • Антивiрус ClamAV
  1. Налаштування мережі та безпека

Як захистити свій сервер? Основи кібербезпеки

PreviousЯк направити мій домен на IP-адресу?NextWireGuard VPN [Easy]

Last updated 3 months ago

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

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

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

Linux (базові налаштування)

Зверніть увагу, що за замовчуванням команда sudo може не виконуватися в ОС Debian. Може знадобитися встановлення пакета sudo через команду apt install sudo або просто видалення sudo з використовуваних команд.

Перед початком використовуйте команду sudo apt install nano (Ubuntu/Debian) або yum install nano (CentOS), щоб переконатися, що утиліта nano дійсно встановлена на вашій системі.

Регулярні оновлення системи

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

sudo apt update && sudo apt upgrade -y

sudo yum update -y

Використання SSH-ключів

Завдяки SSH-ключам процес підбору пароля стає практично неможливим. Уявіть собі, існує 2**2048 комбінацій ключа.

Для детального ознайомлення з процесом використання SSH-ключів, а також відключення доступу до сервера за паролем рекомендуємо ознайомитися з нашими статтям

Зміна порту SSH

Порт 22, стандартний для SSH, вже давно став ціллю для зловмисників. Сканери та боти безперервно «простукують» інтернет у пошуках серверів, відкритих на цьому порту. Їхнє завдання — знайти доступний сервер і почати підбір паролів, використовуючи величезну базу простих і популярних комбінацій.

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

Простим рішенням стане зміна порту 22 на нестандартний, будь-який, який вам до вподоби. Наприклад, 50321.

Спочатку переконайтеся, що порт, який ви хочете використовувати, не зайнятий жодним іншим додатком. Для цього скористайтеся утилітою netstat. Переконайтеся, що встановлений необхідний пакет net-tools:

sudo apt install net-tools -y

sudo yum install net-tools -y

Перевірте порт 50321:

Зверніть увагу, що порт 50321 обраний всього лише як приклад. У разі необхідності ви можете використати будь-який інший.

sudo netstat -tuln | grep 50321

Нічого не вивелося? Отже, порт вільний. Можемо перевірити порт 22 і побачити, що він дійсно зайнятий і використовується.

Перейдіть до конфігурації SSH-сервера. Використовуйте текстовий редактор nano:

nano /etc/ssh/sshd_config

Приберіть # у рядку port і замість 22 вкажіть бажаний. У нашому випадку — 50321. Це має виглядати так:

Перемкніть розкладку на англійську мову та натисніть CTRL+X, далі Y, а потім Enter для збереження файлу.

Перезапустіть сервіс SSH:

sudo systemctl restart ssh

sudo systemctl restart sshd

Після перезапуску не поспішайте закривати поточне вікно сервера. Залиште його відкритим тимчасово. Якщо щось піде не так, то можна буде скасувати зміни.

Спробуйте в новому вікні підключитися до сервера, використовуючи зазначений порт.

Резервне копіювання даних

На цих трьох пунктах можна було б завершити базові налаштування безпеки. Регулярні оновлення, SSH-ключі та нестандартний порт SSH у сукупності дають величезний ефект. Дотримання цих пунктів знизить імовірність злому на 90–95% порівняно зі стандартними налаштуваннями. Якщо ви недосвідчений користувач і не розміщуєте на сервері надсекретні дані, то цього буде більш ніж достатньо.

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

Для Ubuntu, Debian, CentOS можна використовувати вбудовану утиліту tar. Якщо вона не встановлена, скористайтеся командою apt install tar -y або yum install tar -y

tar -cvzf /шлях/до/backup.tar.gz /шлях/до/папки

/шлях/до/backup.tar.gz — шлях і назва архіву. /шлях/до/папки — шлях до папки, яка буде архівована. Ви можете вказати назву конкретного файлу або просто "*", щоб додати в архів усі папки та файли з поточного каталогу.

Наприклад, заархівуємо папку share, яка знаходиться в кореневому каталозі /root. Перевіряємо, що ми дійсно в каталозі /root:

Використовуємо команду для архівації через tar:

tar -cvzf backup.tar.gz share

Після завершення архівації використовуйте команду ls, щоб переконатися, що файл дійсно створений.

Далі існує маса варіантів дій із цим архівом. Ви можете завантажити його на свій комп'ютер через sFTP або на хмарне сховище. Створення ручної копії раз на 2 тижні буде цілком достатньо (однак це залежить від типу вашого проєкту).

Можна налаштувати автоматичне створення архіву через Cron із подальшим завантаженням на зовнішнє сховище — навіть із інтервалом у 24 години. Але це вже для особливо великих проєктів.

Linux (для просунутих)

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

Скористаємося утилітою iptables (вбудована в Ubuntu, Debian, CentOS). Перевірити поточні правила можна так:

sudo iptables -L -v -n

Щоб уникнути проблем із втратою доступу до сервера, передусім слід явно дозволити порт SSH. Залежно від того, який порт для SSH ви використовуєте, вкажіть його в параметрі --dport.

У нашому випадку це буде порт 50321:

sudo iptables -A INPUT -p tcp --dport 50321 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

Далі наведено список часто використовуваних команд в iptables. Рекомендуємо розглядати використання певних конфігурацій файрвола індивідуально.

Заборонити весь трафік із конкретної адреси. Де в аргументі -s вказується вихідна адреса:

sudo iptables -A INPUT -s 192.168.1.100 -j DROP

Заборонити вхідний трафік на певному порту. Де --dport — це порт, що блокується:

sudo iptables -A INPUT -p tcp --dport 8080 -j DROP

Для збереження створених правил використовуйте команду:

sudo /sbin/iptables-save

Fail2Ban — блокування брутфорсерів

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

Установка

sudo apt install fail2ban -y

sudo yum install epel-release -y

sudo yum install fail2ban -y

Переконайтеся, що служба Fail2Ban запущена, і перевірте її статус:

sudo systemctl start fail2ban
sudo systemctl enable fail2ban
sudo systemctl status fail2ban

Не рекомендується змінювати безпосередньо файли конфігурації /etc/fail2ban/fail2ban.conf і /etc/fail2ban/jail.conf, оскільки вони можуть бути перезаписані при оновленнях. Замість цього створіть їхні копії з розширенням .local:

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

Відкрийте файл у текстовому редакторі:

nano /etc/fail2ban/jail.local

Основні налаштування:

[DEFAULT]
# IP-адреси, які потрібно ігнорувати (наприклад, ваша IP-адреса).
ignoreip = 127.0.0.1/8 ::1

# Час блокування IP-адреси.
bantime = 10m

# IP-адреса блокується, якщо виконує "maxretry" спроб протягом "findtime".
findtime = 10m

# Максимальна кількість спроб до блокування.
maxretry = 5

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

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

sudo systemctl restart fail2ban

Перевірка журналу налагодження:

sudo tail -f /var/log/fail2ban.log

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

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

Установка модуля PAM для Google Authenticator

sudo apt install libpam-google-authenticator

sudo yum install epel-release -y

sudo yum install google-authenticator -y

Виконайте команду google-authenticator від імені користувача, для якого налаштовується 2FA:

google-authenticator

Вам буде поставлено наступне запитання:

  • Do you want authentication tokens to be time-based (y/n): Введіть y, щоб використовувати одноразові паролі (TOTP).

Далі відобразиться великий QR-код, дані для ручного додавання і коди відновлення. Збережіть ці дані у безпечному місці, вони знадобляться у випадку втрати доступу до генератора кодів.

Відскануйте наданий код. Після цього обліковий запис буде додано до вашого застосунку.

  • Update the .google_authenticator file (y/n): Введіть y для збереження налаштувань:

  • Do you want to disallow multiple uses of the same authentication token? (y/n): Рекомендується ввести y для запобігання повторному використанню одного й того ж токена.

За замовчуванням нове значення одноразового токена генерується мобільним застосунком кожні 30 секунд. Для компенсації можливого розсинхрону часу між клієнтом і сервером передбачено використання додаткових токенів до та після поточного часу. Це дозволяє допустити розсинхрон часу до 30 секунд між сервером автентифікації та клієнтом.

Якщо ви стикаєтеся з проблемами через низьку точність синхронізації часу, ви можете збільшити тимчасове вікно з його стандартного розміру (3 дозволених токени: попередній, поточний і наступний) до 17 дозволених токенів (8 попередніх, поточний і 8 наступних). Це забезпечить допустимий розсинхрон часу до 4 хвилин між клієнтом і сервером. — Введіть y щоб збільшити тимчасове вікно, що може бути корисним у разі розсинхронізації часу.

  • Enable rate-limiting (y/n): Введіть y для обмеження частоти спроб автентифікації, щоб запобігти атакам перебором.

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

sudo nano /etc/pam.d/sshd

Додайте наступний рядок на початок файлу. Це вказує системі використовувати модуль pam_google_authenticator для автентифікації.

auth required pam_google_authenticator.so

Збережіть і закрийте файл. Далі відкрийте файл конфігурації SSH:

sudo nano /etc/ssh/sshd_config

Установіть значення yes для параметра ChallengeResponseAuthentication. Ці налаштування увімкнуть використання PAM і вимагатимуть як публічного ключа, так і одноразового пароля для автентифікації.

Збережіть файл і закрийте. Перезапустіть службу SSH для застосування нових налаштувань:

sudo systemctl restart ssh

sudo systemctl restart sshd

Спробуйте підключитися до сервера. Спочатку буде запитано код автентифікатора

А потім пароль від сервера. Якщо все налаштовано правильно, підключення буде успішним.

Антивiрус ClamAV

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

Установка

sudo apt install clamav -y

sudo yum install epel-release -y

sudo yum install clamav clamav-update -y

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

sudo systemctl stop clamav-freshclam
sudo freshclam

Переконайтеся, що служба запущена:

sudo systemctl start clamav-freshclam

Ручне сканування:

clamscan -r /путь/к/папке

Сканування всіх файлів системи:

sudo clamscan -r -i /

Процес налаштування iptables докладно описаний в . Рекомендуємо ознайомитися.

Завантажте застосунок Google Authenticator: |

Підключення за допомогою SSH ключів
Відключення доступу до Linux за допомогою пароля
окремій статті
Android
IOS