1. Введение в VPS и базовая настройка сервера
Введение в VPS и базовая настройка сервера
Любой современный веб-проект, будь то корпоративный портал, интернет-магазин или небольшое приложение, требует надежного места для размещения. В мире веб-разработки таким местом выступает сервер. Сегодня мы разберем концепцию VPS (Virtual Private Server), научимся подключаться к нему и проведем первичную настройку безопасности, которая станет фундаментом для всех последующих этапов разработки.
Что такое виртуальный частный сервер
Исторически сайты размещались на физических машинах. Однако покупка и обслуживание целого компьютера ради одного небольшого сайта экономически нецелесообразны. Так появилась концепция виртуализации.
VPS — это виртуальная машина, которая эмулирует работу отдельного физического сервера. На одном мощном физическом оборудовании (хост-ноде) с помощью специального программного обеспечения (гипервизора) создаются десятки изолированных виртуальных серверов.
!Схема виртуализации физического сервера
Каждый такой сервер имеет свою операционную систему, выделенный объем оперативной памяти, процессорное время и дисковое пространство. Ресурсы распределяются строго математически. Если физический сервер имеет 128 ГБ оперативной памяти, то сумма памяти всех запущенных на нем виртуальных машин не может превышать этот лимит: , где — общая память физического сервера, — количество виртуальных машин, а — память конкретного виртуального сервера.
Для лучшего понимания сравним популярные виды хостинга:
| Характеристика | Виртуальный хостинг (Shared) | Виртуальный сервер (VPS) | Выделенный сервер (Dedicated) | | :--- | :--- | :--- | :--- | | Аналогия из жизни | Комната в общежитии | Отдельная квартира | Собственный дом | | Изоляция ресурсов | Нет (соседи могут забрать все ресурсы) | Строгая (ваши ресурсы гарантированы) | Абсолютная (все железо ваше) | | Права доступа | Ограниченные (только файлы сайта) | Полные (права root) | Полные (права root) | | Сложность управления | Низкая (все настроено за вас) | Средняя (требуются навыки администрирования) | Высокая (включая аппаратный мониторинг) | | Примерная стоимость | От 1 до 5 долл. в месяц | От 5 до 40 долл. в месяц | От 100 долл. в месяц |
Для большинства проектов на старте и этапе активного роста именно VPS является золотой серединой, предоставляя полный контроль над окружением за разумные деньги.
Подключение к серверу по SSH
После аренды сервера хостинг-провайдер присылает три ключевых параметра: IP-адрес, логин (обычно это root) и пароль. Для управления сервером используется протокол SSH (Secure Shell). Это сетевой протокол прикладного уровня, позволяющий производить удаленное управление операционной системой и туннелирование TCP-соединений с шифрованием всех передаваемых данных.
Для подключения откройте терминал (в macOS и Linux он встроен, в Windows можно использовать PowerShell или утилиту PuTTY) и введите команду:
Вместо 192.168.1.10 необходимо указать реальный IP-адрес вашего сервера. При первом подключении система предупредит о неизвестном отпечатке ключа (fingerprint) — с этим нужно согласиться, введя yes. После ввода пароля вы окажетесь в командной строке удаленного сервера.
> Свежеустановленный сервер подобен квартире с открытой настежь дверью в неблагополучном районе интернета. Как только сервер получает публичный IP-адрес, его начинают сканировать автоматизированные боты, пытаясь подобрать пароль к учетной записи root. > > Хабр: Мой первый VPS
Именно поэтому базовая настройка безопасности должна выполняться в первые же минуты после покупки.
Этапы базовой настройки безопасности
Превращение «голой» системы в защищенную крепость состоит из четырех обязательных шагов. Мы будем рассматривать команды для операционной системы Ubuntu, так как она является стандартом де-факто для веб-разработки.
Шаг 1. Обновление системы
Первое правило системного администратора — использовать актуальное программное обеспечение. В старых версиях пакетов могут содержаться известные уязвимости. Для обновления списка пакетов и их установки выполните:
Команда apt update скачивает актуальные списки доступных программ из репозиториев, а apt upgrade непосредственно устанавливает новые версии. Флаг -y автоматически отвечает «да» на все вопросы системы в процессе установки.
Шаг 2. Создание нового пользователя
Работать под учетной записью root (суперпользователя) крайне опасно. Одно неверное движение или запуск вредоносного скрипта могут уничтожить всю систему, так как у root нет никаких ограничений. Правильный подход — создать обычного пользователя и наделить его правом временно повышать привилегии через команду sudo (Superuser do).
Создадим пользователя с именем developer:
Система попросит задать пароль и ввести дополнительные данные (их можно пропустить нажатием Enter). Теперь добавим этого пользователя в группу sudo:
Теперь вы можете отключиться от сервера командой exit и зайти заново, но уже под новым именем: ssh developer@192.168.1.10.
Шаг 3. Настройка авторизации по SSH-ключам
Пароли можно подобрать или перехватить. Гораздо более надежный метод — использование асимметричного шифрования с помощью SSH-ключей.
Механизм работает так: на вашем локальном компьютере генерируется пара ключей. Приватный ключ (Private key) хранится у вас и никому не передается. Публичный ключ (Public key) копируется на сервер. При попытке входа сервер шифрует случайное сообщение публичным ключом и просит ваш компьютер расшифровать его. Сделать это можно только с помощью правильного приватного ключа.
!Интерактивная визуализация работы SSH-ключей
Для генерации ключа на вашем локальном компьютере (не на сервере!) выполните:
Алгоритм ed25519 на сегодняшний день считается одним из самых быстрых и безопасных. После генерации ключ нужно скопировать на сервер:
Убедившись, что вы можете зайти на сервер без ввода пароля, необходимо запретить вход по паролю в настройках SSH-службы сервера. Для этого редактируется файл /etc/ssh/sshd_config, где параметр PasswordAuthentication меняется на no.
Шаг 4. Настройка межсетевого экрана (Firewall)
Сервер имеет 65 535 сетевых портов. По умолчанию многие из них могут быть открыты, что создает потенциальные векторы для атак. Межсетевой экран позволяет жестко задать правило: «запретить все входящие соединения, кроме явно разрешенных».
В Ubuntu для этого используется утилита UFW (Uncomplicated Firewall). Настроим базовые правила:
Разберем эти команды. Сначала мы запрещаем все входящие запросы и разрешаем все исходящие (чтобы сервер мог скачивать обновления). Затем мы делаем критически важное исключение — разрешаем подключения по протоколу OpenSSH (порт 22). Если забыть эту команду и включить фаервол, вы навсегда потеряете доступ к своему серверу. Последняя команда активирует защиту.
В будущем, когда мы будем настраивать веб-сервер, мы добавим в исключения порты 80 (HTTP) и 443 (HTTPS). Например, при запуске интернет-магазина, который должен принимать 10 000 посетителей в сутки, эти порты станут единственными «дверями» для клиентов, тогда как база данных и внутренние службы останутся надежно скрыты за фаерволом.
Выполнив эти четыре шага, вы получаете надежную, обновленную и защищенную систему. В следующих материалах мы перейдем к установке веб-сервера, привязке доменного имени и подготовке окружения для деплоя кода.