Привет, друг! Ну что, поздравляю! У тебя теперь есть свой собственный 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`!). В первый раз может появиться небольшое предупреждение об ответственности – это нормально.

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):

  1. Подключись к серверу по SSH под пользователем `alex`, используя пароль.
  2. Создай папку `.ssh` в домашней директории, если ее еще нет, и установи правильные права:
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh

  3. Создай (или открой) файл `authorized_keys` в этой папке и установи права:
    touch ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys

  4. Теперь открой этот файл в текстовом редакторе, например, `nano`:
    nano ~/.ssh/authorized_keys

  5. Скопируй содержимое твоего *публичного* ключа (содержимое файла `id_rsa.pub` или текст из поля PuTTYgen) и вставь его в редактор `nano`. Если в файле уже есть ключи, вставляй новый ключ на новой строке.
  6. Сохрани файл (в `nano` это Ctrl+O, Enter) и выйди из редактора (Ctrl+X).

3.3. Проверяем вход по ключу

Теперь попробуй снова подключиться к серверу под пользователем `alex`. Если ты задавал кодовую фразу для ключа, система попросит ввести ее. Пароль пользователя `alex` спрашивать уже не должна. Если все прошло успешно – поздравляю, вход по ключам настроен!

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 будет бдительно следить за попытками входа и автоматически банить нарушителей.

7. Немного мудрости

“Безопасность через неясность — это не безопасность.”

— Линус Торвальдс

Помни об этом. Смена порта SSH – это лишь маленький дополнительный штрих, а не основная защита. Настоящая безопасность строится на надежных методах аутентификации (SSH-ключи), контроле доступа (фаервол, права пользователей) и мониторинге (Fail2Ban).

8. Выводы: Чему мы научились?

Фух! Вот мы и пробежались по основным шагам базовой настройки безопасности VPS. Давай кратко вспомним, что мы сделали:

  1. Сменили пароль root: Убрали стандартный пароль, заменив его на сложный.
  2. Создали обычного пользователя с sudo: Перестали постоянно работать под всемогущим root, снизив риск случайных ошибок.
  3. Настроили вход по SSH-ключам: Сделали вход на сервер удобнее и намного безопаснее, чем по паролю.
  4. Защитили SSH-сервер: Отключили прямой вход для root и вход по паролю, опционально сменили стандартный порт.
  5. Настроили фаервол UFW: Ограничили входящие соединения, разрешив только необходимые сервисы (SSH, веб и т.д.).
  6. Установили и настроили Fail2Ban: Автоматизировали блокировку IP-адресов, пытающихся подобрать пароли или сканировать порты.

Это не исчерпывающий список всех мер безопасности, но это крепкий фундамент, который защитит твой Linux VPS от большинства автоматических атак и случайных угроз. Теперь ты можешь спать немного спокойнее, зная, что твоя цифровая крепость имеет базовую защиту. Дальше можно изучать более продвинутые темы: настройку бэкапов, мониторинг системы, использование систем обнаружения вторжений (IDS/IPS), но начало положено, и это главное!

Удачи тебе в освоении твоего нового сервера!