Привіт, друже! Ну що, вітаю! У тебе тепер є свій власний Linux
VPS хостинг – шматочок інтернету, де ти повноправний господар. Круто, правда? Можна розгорнути сайт, підняти VPN, запустити бота, та хоч ігровий сервер для друзів – можливості обмежені лише фантазією (і тарифом, звичайно). Але разом з цією свободою приходить і відповідальність. Твій сервер дивиться в інтернет 24/7, і повір, охочих "постукати" у незахищені двері вистачає. Не хвилюйся, я тут, щоб допомогти тобі зробити перші, але найважливіші кроки щодо зміцнення оборони твого нового цифрового будинку. Це як поставити надійний замок на двері квартири після переїзду.
Це керівництво – твій стартовий набір для налаштування безпеки VPS. Ми не будемо лізти в нетрі криптографії або будувати неприступну фортецю (це теми для окремих розмов), але ми закриємо найочевидніші діри, через які найчастіше лізуть непрохані гості. Ми пройдемося по основних моментах: змінимо стандартний пароль, створимо окремого користувача (тому що сидіти під root постійно – погана ідея!), налаштуємо вхід за SSH-ключами (забудеш про паролі, як про страшний сон), підкрутимо сам SSH-сервер, налаштуємо базовий фаєрвол за допомогою UFW (він простіший, ніж здається!) і поставимо Fail2Ban – вірного стража, який буде відганяти любителів підбирати паролі.
Навіть якщо ти зовсім новачок і слова на зразок `sudo` або `sshd_config` викликають легку паніку – розслабся. Я все поясню максимально просто і по кроках. Поїхали зміцнювати твій Ubuntu VPS (або CentOS VPS, принципи дуже схожі)!
1. Перший вхід і зміна пароля root: Найперша справа
Коли ти орендував VPS, хостер напевно прислав тобі IP-адресу сервера і пароль для користувача `root`. Root – це суперкористувач в Linux, він може робити *абсолютно все*. І перше, що потрібно зробити – це змінити стандартний, часто автоматично згенерований пароль на свій власний, складний і унікальний.
Підключаємося до сервера по SSH. Якщо ти на Windows, використовуй клієнт на зразок PuTTY. Якщо на Linux або macOS – просто відкрий термінал.
ssh root@ТВОЯ_IP_АДРЕСА_СЕРВЕРА
Система запитає пароль – вводи той, що прислав хостер. При введенні пароля в терміналі символи не відображаються – це нормально, так і повинно бути для безпеки. Тисни Enter.

Як тільки увійшов, відразу змінюємо пароль командою:
passwd
Система попросить ввести новий пароль, а потім повторити його для підтвердження. Придумай щось дійсно надійне: довге (12+ символів), з буквами різного регістру, цифрами і спецсимволами. Забудь про "qwerty", "123456" або кличку кота! Запиши пароль в надійне місце (менеджер паролів – твій кращий друг).
2. Створення нового користувача: Не працюй під root!
Сидіти постійно під `root` – все одно що ходити по мінному полю з зав'язаними очима. Одна помилка в команді – і можна випадково знести що-небудь важливе. Тому створимо звичайного користувача, якому будемо давати права суперкористувача (`sudo`) тільки тоді, коли це дійсно необхідно. Це один із стовпів налаштування безпеки VPS.
Давай створимо користувача, наприклад, з ім'ям `alex` (заміни на будь-яке бажане):
adduser alex
Система задасть кілька питань: спочатку попросить придумати пароль для нового користувача (знову ж таки, складний!), а потім запропонує ввести додаткову інформацію (ім'я, телефон і т.д.) – це можна пропустити, просто натискаючи Enter.
Тепер дамо нашому `alex` право виконувати команди від імені `root` за допомогою `sudo`. Це потрібно, щоб він міг встановлювати програми, редагувати системні файли і робити інші важливі речі. В Ubuntu/Debian для цього користувача додають в групу `sudo`:
usermod -aG sudo alex
(Примітка: В CentOS/RHEL група зазвичай називається `wheel`, команда буде `usermod -aG wheel alex`)
Все, користувач створений і наділений потрібними правами. Тепер вийди з сервера (`exit`) і зайди вже під новим користувачем:
ssh alex@ТВОЯ_IP_АДРЕСА_СЕРВЕРА
Тепер, якщо тобі потрібно виконати команду з правами суперкористувача, просто додавай перед нею `sudo`. Наприклад, оновити список пакетів:
sudo apt update
Система попросить пароль користувача `alex` (не `root`!). В перший раз може з'явитися невелике попередження про відповідальність – це нормально.
Потрібен надійний і захищений Linux VPS?
Наші VPS-плани пропонують ідеальне поєднання продуктивності та безпеки для ваших проектів. Захистіть свій сервер з самого початку. — від €4.49/міс.
Вибрати VPS-план →
3. Налаштування SSH-ключів: Забудь про паролі, здрастуй безпека
Вхід по паролю – це, звичайно, звично, але не найбезпечніший варіант. Паролі можна підібрати (брутфорс), підгледіти, та й просто незручно їх постійно вводити. Набагато надійніше використовувати SSH-ключі. Це пара файлів: приватний (секретний, зберігається у тебе на комп'ютері) і публічний (не секретний, кладеться на сервер). Коли ти підключаєшся, система перевіряє, чи відповідає твій приватний ключ публічному на сервері. Якщо так – ти всередині, без всяких паролів!
3.1. Генеруємо ключі у себе на комп'ютері
Спочатку потрібно створити цю пару ключів на твоєму локальному комп'ютері.
- На Linux/macOS: Відкрий термінал і виконай:
ssh-keygen -t rsa -b 4096
Система запитає, куди зберегти ключі (зазвичай підходить шлях за замовчуванням `~/.ssh/id_rsa`, просто натисни Enter). Потім запропонує задати кодову фразу (passphrase) для додаткового захисту приватного ключа. Це як пароль для самого ключа. Настійно рекомендую його задати! Вводи фразу, потім повтори.
- На Windows: Найзручніше використовувати утиліту PuTTYgen (зазвичай йде в комплекті з PuTTY, можна скачати окремо). Запусти PuTTYgen, переконайся, що вибрано тип ключа RSA і кількість біт не менше 2048 (краще 4096), натисни "Generate". Поводи мишкою по порожньому полю для генерації випадковості. Після генерації задай кодову фразу в полях "Key passphrase" і "Confirm passphrase". Обов'язково збережи *обидва* ключа: публічний ("Save public key") і приватний ("Save private key"). Публічний ключ тобі також знадобиться в текстовому вигляді з верхнього поля "Public key for pasting...".
3.2. Копіюємо публічний ключ на сервер
Тепер потрібно скопіювати *публічний* ключ (зазвичай файл `id_rsa.pub` або той, що ти скопіював з PuTTYgen) на твій Linux VPS. Ми копіюємо його для користувача `alex`, під яким плануємо працювати.
Найпростіший спосіб (якщо у тебе Linux/macOS і на сервері є `ssh-copy-id`):
ssh-copy-id alex@ТВОЯ_IP_АДРЕСА_СЕРВЕРА
Введи пароль користувача `alex`, і утиліта сама все зробить: підключиться, створить потрібні папки і файли на сервері і додасть туди твій ключ.
Ручний спосіб (якщо `ssh-copy-id` немає або ти на Windows):
- Підключись до сервера по SSH під користувачем `alex`, використовуючи пароль.
- Створи папку `.ssh` в домашній директорії, якщо її ще немає, і встанови правильні права:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
- Створи (або відкрий) файл `authorized_keys` в цій папці і встанови права:
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
- Тепер відкрий цей файл в текстовому редакторі, наприклад, `nano`:
nano ~/.ssh/authorized_keys
- Скопіюй вміст твого *публічного* ключа (вміст файлу `id_rsa.pub` або текст з поля PuTTYgen) і встав його в редактор `nano`. Якщо в файлі вже є ключі, вставляй новий ключ на новому рядку.
- Збережи файл (в `nano` це Ctrl+O, Enter) і вийди з редактора (Ctrl+X).
3.3. Перевіряємо вхід за ключем
Тепер спробуй знову підключитися до сервера під користувачем `alex`. Якщо ти задавав кодову фразу для ключа, система попросить ввести її. Пароль користувача `alex` питати вже не повинна. Якщо все пройшло успішно – вітаю, вхід по ключах налаштовано!
rocket_launch
Quick pick
Looking for a server that just works?
Valebyte VPS — NVMe, 24/7 support, deploy in 60 seconds.
View VPS plans
arrow_forward
4. Захист SSH-сервера: Затягуємо гайки
Раз вже ми налаштували вхід по ключах, можна зробити SSH-доступ ще безпечніше. Для цього потрібно відредагувати конфігураційний файл SSH-сервера. Він зазвичай лежить тут: `/etc/ssh/sshd_config`. Відкриваємо його з правами `sudo`:
sudo nano /etc/ssh/sshd_config
Шукаємо і змінюємо (або додаємо, якщо їх немає) наступні рядки:
4.1. Відключаємо вхід для root
Ми створили окремого користувача, так що `root` для прямого входу більше не потрібен. Це сильно знижує ризики, так як ім'я `root` – стандартне, і його завжди пробують атакувати першим.
Знайди рядок `#PermitRootLogin prohibit-password` або `PermitRootLogin yes`. Розкоментуй (прибери `#` на початку, якщо є) і зміни значення на `no`:
PermitRootLogin no
4.2. Відключаємо вхід по паролю
Увага! Роби це *тільки* після того, як ти на 100% переконався, що вхід по SSH-ключах працює для твого користувача (`alex` в нашому прикладі)! Інакше ти ризикуєш втратити доступ до сервера.
Знайди рядок `#PasswordAuthentication yes`. Розкоментуй і зміни значення на `no`:
PasswordAuthentication no
Це повністю відключить можливість входу по паролю, залишивши тільки ключі. Прощавайте, брутфорс-атаки!
4.3. (Опціонально) Змінюємо стандартний порт SSH
За замовчуванням SSH слухає порт 22. Всі боти і сканери в інтернеті довбаються саме в нього. Змінивши порт на нестандартний (наприклад, 2222 або будь-який інший вільний вище 1024), ти зробиш свій сервер менш помітним для автоматичних атак. Це "безпека через неясність" (security through obscurity), вона не замінить інші заходи, але може бути корисним доповненням.
Знайди рядок `#Port 22`. Розкоментуй і зміни 22 на обраний тобою порт, наприклад:
Port 2222
Важливо: Якщо ти змінюєш порт, не забудь потім дозволити його в фаєрволі (про це нижче) і вказувати його при підключенні:
ssh -p 2222 alex@ТВОЯ_IP_АДРЕСА_СЕРВЕРА
Після внесення змін в `sshd_config`, збережи файл (Ctrl+O, Enter в `nano`) і вийди (Ctrl+X). Щоб зміни застосувалися, потрібно перезапустити SSH-сервіс:
sudo systemctl restart sshd
(У старих системах або деяких дистрибутивах команда може бути `sudo systemctl restart ssh` або `sudo service sshd restart`).
Порада: Перш ніж закривати поточну SSH-сесію, відкрий нове вікно терміналу і спробуй підключитися з новими настройками (з ключем, без пароля, можливо, з новим портом). Переконайся, що все працює, перш ніж відключатися!
5. Налаштування Фаєрвола з UFW: Ставимо стіну
Фаєрвол (міжмережевий екран) – це як охоронець на вході, який пропускає тільки тих, хто є в списку. Він контролює вхідний і вихідний трафік, дозволяючи тільки потрібні з'єднання. В Ubuntu часто встановлений `UFW` (Uncomplicated Firewall) – дуже проста і зручна обгортка над стандартним `iptables`. Якщо у тебе CentOS, там може бути `firewalld`, але `UFW` можна доустановити.
Перевіримо, чи встановлений UFW, і якщо ні – встановимо (для Ubuntu/Debian):
sudo apt update
sudo apt install ufw
Тепер налаштуємо базові правила. Спочатку заборонимо всі вхідні з'єднання за замовчуванням і дозволимо всі вихідні:
sudo ufw default deny incoming
sudo ufw default allow outgoing
Тепер потрібно дозволити ті порти, які нам потрібні. Найголовніше – дозволити SSH, інакше ми самі себе заблокуємо!
sudo ufw allow ssh
Ця команда автоматично дозволить стандартний порт 22. Якщо ти міняв порт SSH на інший (наприклад, 2222), то використовуй номер порту:
sudo ufw allow 2222/tcp
Якщо ти плануєш запускати веб-сервер, потрібно дозволити порти HTTP (80) і HTTPS (443):
sudo ufw allow http
sudo ufw allow https
Або можна вказати номери портів:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Додай сюди ж інші порти, які можуть знадобитися твоїм додаткам.
Коли всі потрібні правила додані, включаємо фаєрвол:
sudo ufw enable
Система попередить, що це може розірвати поточні SSH-з'єднання (зазвичай не розриває, якщо правило для SSH додано вірно). Підтверди (`y`).
Перевірити статус і поточні правила можна командою:
sudo ufw status verbose
Тепер твій Linux VPS захищений базовим фаєрволом!
6. Встановлення та налаштування Fail2Ban: Автоматичний банхаммер
Навіть з відключеним входом по паролю і нестандартним портом, боти все одно можуть намагатися стукати в твій SSH (і інші сервіси). Fail2Ban – це відмінна утиліта, яка стежить за логами сервера (наприклад, логами спроб входу по SSH) і автоматично блокує IP-адреси, з яких йде підозріла активність (наприклад, багато невдалих спроб входу). Це сильно знижує навантаження на сервер і відсіває автоматичний брутфорс.
Встановлюємо Fail2Ban (для Ubuntu/Debian):
sudo apt update
sudo apt install fail2ban
Після установки Fail2Ban зазвичай відразу запускається зі стандартною конфігурацією, яка вже включає захист для SSH. Основний конфігураційний файл – `/etc/fail2ban/jail.conf`, але його безпосередньо редагувати не рекомендується, так як він може перезаписатися при оновленні. Замість цього створимо локальний файл конфігурації `/etc/fail2ban/jail.local`, де і будемо вносити наші зміни.
Скопіюємо стандартний файл:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Тепер відкриємо `jail.local` для редагування:
sudo nano /etc/fail2ban/jail.local
Що тут можна налаштувати? Знайди секцію `[DEFAULT]`. Тут можна змінити загальні параметри, наприклад:
bantime: На який час блокувати IP (наприклад, `1h` - 1 година, `1d` - 1 день).
findtime: Проміжок часу, за який вважаються невдалі спроби.
maxretry: Кількість невдалих спроб, після яких IP блокується.
Наприклад, можна поставити `bantime = 1d`, щоб банити на добу.
Далі знайди секцію `[sshd]` (або `[ssh]` в старих версіях). Переконайся, що там є рядок `enabled = true`. Якщо ти міняв порт SSH, то в цій секції потрібно вказати новий порт, змінивши рядок `port = ssh` на `port = 2222` (або твій порт).
[sshd]
enabled = true
port = ssh # або твій порт, наприклад, 2222
# інші параметри можна залишити за замовчуванням або налаштувати
Збережи файл (Ctrl+O, Enter) і вийди (Ctrl+X).
Перезапустимо Fail2Ban, щоб застосувати зміни:
sudo systemctl restart fail2ban
Перевірити статус сервісу і подивитися, чи заблокував він вже кого-небудь для SSH, можна так:
sudo fail2ban-client status sshd
Тепер Fail2Ban буде пильно стежити за спробами входу і автоматично банити порушників.
rocket_launch
Quick pick
Looking for a server that just works?
Valebyte VPS — NVMe, 24/7 support, deploy in 60 seconds.
View VPS plans
arrow_forward
7. Трохи мудрості
“Безпека через неясність — це не безпека.”
— Лінус Торвальдс
Пам'ятай про це. Зміна порту SSH – це лише маленький додатковий штрих, а не основний захист. Справжня безпека будується на надійних методах аутентифікації (SSH-ключі), контролі доступу (фаєрвол, права користувачів) і моніторингу (Fail2Ban).
8. Висновки: Чого ми навчилися?
Фух! Ось ми і пробіглися по основних кроках базового налаштування безпеки VPS. Давай коротко згадаємо, що ми зробили:
- Змінили пароль root: Прибрали стандартний пароль, замінивши його на складний.
- Створили звичайного користувача з sudo: Перестали постійно працювати під всемогутнім root, знизивши ризик випадкових помилок.
- Налаштували вхід по SSH-ключах: Зробили вхід на сервер зручніше і набагато безпечніше, ніж по паролю.
- Захистили SSH-сервер: Відключили прямий вхід для root і вхід по паролю, опціонально змінили стандартний порт.
- Налаштували фаєрвол UFW: Обмежили вхідні з'єднання, дозволивши тільки необхідні сервіси (SSH, веб і т.д.).
- Встановили і налаштували Fail2Ban: Автоматизували блокування IP-адрес, що намагаються підібрати паролі або сканувати порти.
Це не вичерпний список всіх заходів безпеки, але це міцний фундамент, який захистить твій Linux VPS від більшості автоматичних атак і випадкових загроз. Тепер ти можеш спати трохи спокійніше, знаючи, що твоя цифрова фортеця має базовий захист. Далі можна вивчати більш просунуті теми: налаштування бекапів, моніторинг системи, використання систем виявлення вторгнень (IDS/IPS), але початок покладено, і це головне!
Удачі тобі в освоєнні твого нового сервера!
Потрібна максимальна безпека і продуктивність?
Для критично важливих додатків і максимального захисту розгляньте наші виділені SSD-сервери. Отримайте повний контроль і неперевершену продуктивність.
Знайти сервер →