+7 (495) 660-35-00

info@iteron.ru

129226, РФ, Москва

Сельскохозяйственная, д. 11, к.3, оф. 148

09:00 - 21:00

без выходных

Как настроить свой первый сервер (VPS) с нуля

 IT Заметки    

Вы приобрели свой первый виртуальный сервер (VPS) — что делать дальше? Многие начинающие пользователи задаются вопросами: как настроить сервер с нуля, какие шаги необходимы для базовой конфигурации и безопасности, и что делать после покупки VPS, чтобы подготовить систему к работе. Настройка сервера с нуля включает несколько ключевых этапов: подключение, создание пользователей, установка необходимых инструментов и обеспечение защиты системы.

В этом руководстве мы рассмотрим настройку своего сервера на базе Linux (например, Ubuntu или Debian). Вы узнаете, как подключиться к серверу по SSH, установить nano (простой текстовый редактор для работы с конфигурационными файлами), настроить основные параметры безопасности (SSH-ключи, брандмауэр, Fail2Ban), а также подготовить сервер для работы веб-приложений.

Подключение к серверу по SSH

Первым шагом в настройке сервера является подключение к нему. Обычно после аренды VPS хостинг-провайдер предоставляет вам IP-адрес, логин (как правило, root) и пароль для удалённого доступа. Подключение к Linux-серверу осуществляется по протоколу SSH (Secure Shell) — он позволяет безопасно управлять сервером через зашифрованное соединение.

Как подключиться по SSH: если вы работаете в Linux или macOS, откройте терминал и выполните команду подключения, указав свой IP-адрес:

ssh root@<ваш_IP_адрес>

Замените <ваш_IP_адрес> на адрес вашего сервера. Система запросит пароль — введите пароль, полученный от провайдера (символы при вводе пароля отображаться не будут — это нормально). Если все данные верны, вы увидите приглашение командной строки сервера. Пользователям Windows для подключения по SSH удобно воспользоваться программой PuTTY или Windows Terminal (в Windows 10/11 уже есть встроенный клиент SSH). В PuTTY достаточно ввести IP сервера и порт (по умолчанию SSH использует порт 22) — после успешного подключения откроется консоль сервера.

Совет: При первом подключении по SSH клиент может предупредить о новом ключе хоста и запросить подтверждение. Смело соглашайтесь (ответьте "yes"), это сохранит отпечаток ключа сервера на вашем компьютере.

Создание нового пользователя и отказ от root-доступа

После успешного входа вы находитесь в системе под пользователем root. Root — это учетная запись администратора с неограниченными привилегиями. Работать постоянно под root небезопасно: одна случайная команда может нанести серьёзный вред системе, и злоумышленники часто нацелены именно на учетку root. Правильная практика при настройке сервера — создать собственного пользователя с административными правами и в дальнейшем подключаться под ним.

Создание пользователя: Linux-системы позволяют создать нового пользователя командой adduser. Например, создадим пользователя с именем admin (вы можете выбрать другое имя):

sudo adduser admin

Система попросит задать пароль для нового аккаунта (выберите надежный пароль и запомните его). Далее можно ввести дополнительные данные (имя, телефон и т. д.); это не обязательно — можно пропустить, нажав Enter.

Добавление в sudo: Чтобы новый пользователь мог выполнять административные действия, добавим его в группу sudo (группа пользователей, которым разрешено использование команды sudo для повышенных привилегий). Выполните команду:

sudo usermod -aG sudo admin

Теперь пользователь admin получает право выполнять команды с привилегиями суперпользователя, предваряя их словом sudo. Фактически, это позволяет управлять системой, не заходя напрямую под root. Это повышает безопасность, поскольку прямой вход под root мы в дальнейшем отключим.

Выйдите из текущей сессии root (командой exit или сочетанием Ctrl+D) и попробуйте войти на сервер заново, но теперь под новым пользователем:

ssh admin@<ваш_IP_адрес>

После ввода пароля вы окажетесь в консоли, но уже от имени admin. Если всё прошло успешно, можно продолжать настройку от нового пользователя (при необходимости используя sudo для админ-команд). Root-аккаунт нам больше не понадобится для повседневных задач.

Установка nano — простого текстового редактора

Настройка любого сервера связана с редактированием текстовых конфигурационных файлов (например, настройки SSH, параметры брандмауэра и пр.). По умолчанию в Linux-системах часто установлен редактор vi/vim, однако новичкам он может показаться сложным. Поэтому имеет смысл установить более простой и интуитивно понятный текстовый редактор nano. Он позволит легко вносить изменения в файлы настроек.

Примечание: Во многих последних дистрибутивах Linux, редактор nano уже установлен.

Чтобы установить nano, используйте систему управления пакетами apt (Advanced Package Tool), которая присутствует в Ubuntu, Debian и других производных дистрибуциях. Предварительно обновим индексы пакетов командой:

sudo apt update

Это подтянет актуальную информацию о доступных программах. После этого выполните установку редактора:

sudo apt install nano -y

Команда apt install nano (дословно "install nano", то есть установить nano) скачает и установит пакет nano из репозиториев. Опция -y в конце автоматически подтверждает установку без дополнительных вопросов. Через несколько секунд nano будет установлен в систему.

Теперь вы можете открывать и править файлы конфигурации с помощью nano. Основные сочетания клавиш в этом редакторе пригодятся в дальнейшей настройке сервера:

  • Ctrl+O - сохранить изменения в файле (write Out).
  • Ctrl+X - выйти из редактора (eXit) и вернуться в консоль.
  • Ctrl+K - вырезать текущую строку (Cut).

Внизу окна nano всегда отображаются подсказки по управлению (значок ^ означает клавишу Ctrl). Например, ^X соответствует Ctrl+X. Благодаря nano редактирование настроек станет гораздо удобнее для начинающего администратора.

Обновление системы и установка пакетов

Перед тем как углубляться в настройки, убедитесь, что ваша система актуальна. Новая VPS может содержать устаревшие версии пакетов, поэтому рекомендуется сразу выполнить обновление. Это повысит стабильность и безопасность сервера.

Обновление списка пакетов: команду sudo apt update мы уже выполнили ранее (перед установкой nano). Она должна выполняться в начале работы с новым сервером, чтобы система "знала" о последних версиях программ.

Установка обновлений: далее запустите полноценное обновление системы:

sudo apt upgrade -y

Эта команда установит все доступные обновления для уже инсталлированных программ и компонентов системы (опция -y также автоматизирует подтверждение). Если ядро системы обновилось, может потребоваться перезагрузка; обычно можно выполнить sudo reboot по завершении обновления, а затем снова войти по SSH.

После перезапуска сервера и повторного подключения убедитесь, что вы заходите под созданным пользователем (не root). Теперь ваш сервер обновлен и готов к дальнейшей настройке.

Примечание: Менеджер пакетов apt используется в Debian-подобных дистрибуциях (Ubuntu, Mint и др.). Если ваш сервер работает на другой ОС (например, CentOS/Rocky Linux с менеджером yum/dnf), принцип обновления и установки программ аналогичен, но команды будут другими (yum update и т.п.). В данном руководстве мы ориентируемся на Ubuntu/Debian как одни из самых популярных вариантов для VPS.

Настройка SSH-доступа и безопасность входа

Когда базовые приготовления завершены, необходимо настроить безопасный доступ по SSH. По умолчанию вы вошли по паролю, но для постоянного использования такой метод нежелателен: пароль могут подобрать, а прямой доступ под root мы планируем отключить. Более безопасный способ аутентификации — с помощью SSH-ключей.

Использование SSH-ключей вместо пароля

SSH-ключи представляют собой пару файлов: открытый (public) и закрытый (private) ключ. Закрытый ключ хранится у вас (на локальном компьютере) и защищён фразой-паролем (по желанию), а открытый ключ добавляется на сервер. При попытке входа SSH-клиент доказывает серверу владение закрытым ключом, и пароль для входа уже не требуется. Такой подход значительно повышает безопасность.

Сгенерировать ключи можно на своей локальной машине. В Linux/macOS для этого используется утилита ssh-keygen. В Windows можно воспользоваться PowerShell (команда ssh-keygen доступна, если установлен OpenSSH-клиент) или PuTTYgen для генерации ключей RSA. Простейший способ (на локальном компьютере в терминале):

ssh-keygen -t ed25519

Эта команда создаст пару ключей ED25519 (более современный алгоритм, чем RSA) и предложит указать путь для сохранения (по умолчанию ~/.ssh/id_ed25519) и защитную фразу для закрытого ключа (можно оставить пустой, нажав Enter, но для дополнительной безопасности лучше задать фразу). После выполнения у вас появятся файлы id_ed25519 (закрытый ключ) и id_ed25519.pub (открытый ключ).

Теперь открытый ключ нужно перенести на сервер в учетную запись admin. Проще всего это сделать командой ssh-copy-id (выполняется на локальном компьютере):

ssh-copy-id admin@<ваш_IP_адрес>

Эта утилита сама найдёт ваш публичный ключ (по умолчанию id_rsa.pub или id_ed25519.pub) и добавит его в файл ~/.ssh/authorized_keys на сервере (в домашней директории пользователя admin). Вам понадобится ввести пароль учетной записи admin на сервере (который вы задавали при создании пользователя) — после чего ключ будет установлен и привязан к этой учетке.

Если по каким-то причинам ssh-copy-id недоступен, можно скопировать содержимое вашего публичного ключа вручную. Откройте файл ключа (например, командой cat ~/.ssh/id_ed25519.pub на локальном компьютере) и скопируйте его содержимое. На сервере создайте (или откройте, если файл уже есть) файл ~/.ssh/authorized_keys для пользователя admin и вставьте туда скопированную строку. Файл authorized_keys должен содержать весь текст открытого ключа в одной строке. Для редактирования удалённого файла удобно воспользоваться командой:

sudo nano /etc/ssh/sshd_config

(Подробнее об этой команде — см. следующий раздел о настройке SSH-демона.)

Конфигурация SSH: отключение пароля и root-доступа

Когда ключи настроены, можно отключить вход по паролю и запретить логин под root. Эти параметры задаются в конфигурационном файле SSH-сервера. Откройте файл настройки SSH (sshd) с помощью нашего редактора nano (от имени пользователя admin, имеющего права sudo):

sudo nano /etc/ssh/sshd_config

В этом файле нужно найти и изменить несколько директив. Нас интересуют следующие строки:

  • PermitRootLogin — отвечает за возможность входа под пользователем root. Измените значение на no (отключить прямой root-логин).
  • PasswordAuthentication — отвечает за вход по паролю. Установите no, чтобы запретить аутентификацию по паролю и разрешить только вход по ключам.
  • PubkeyAuthentication — убедитесь, что параметр установлен в yes (разрешить вход по публичному ключу). Обычно в современных системах он включен по умолчанию.

Убедитесь, что в файле sshd_config эти опции выглядят так (если строки были закомментированы символом #, уберите решётку в начале):

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

Сохраните изменения (Ctrl+O, Enter) и выйдите из nano (Ctrl+X). Теперь перезапустите SSH-сервис, чтобы новые настройки вступили в силу:

sudo systemctl restart ssh

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

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

Настройка брандмауэра (Firewall)

Даже после настройки SSH стоит позаботиться о дополнительной защите на сетевом уровне. Брандмауэр фильтрует входящие подключения, разрешая только необходимые порты. В Ubuntu (и других дистрибуциях на базе Debian) для этих целей есть удобный инструмент UFW (Uncomplicated Firewall).

Установка UFW: возможно, UFW уже предустановлен в системе, но если нет, вы можете установить его командой:

sudo apt install ufw -y

После установки убедитесь, что брандмауэр не блокирует ваш текущий доступ по SSH. По умолчанию UFW имеет предопределённое правило OpenSSH. Разрешим подключение на SSH-порт (22):

sudo ufw allow OpenSSH

Эта команда открывает порт 22 (тот самый, который нужен для SSH). Если вы планируете использовать сервер в качестве веб-сервера, сразу разрешим HTTP и HTTPS трафик:

sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS

Порты 80 и 443 понадобятся для обслуживания веб-сайтов (80 - для незашифрованных запросов, 443 - для защищённых SSL/TLS). Комментарии после # здесь даны для понятности и не являются частью команды.

Теперь включим брандмауэр:

sudo ufw enable

UFW спросит подтверждение включения — отвечаем y (yes). Брандмауэр начнёт фильтровать трафик согласно заданным правилам. Чтобы убедиться, что правила применились, выполните:

sudo ufw status

В выводе статуса должны отображаться разрешённые нами порты (22, 80, 443). Остальные входящие подключения будут блокироваться по умолчанию. Firewall таким образом уменьшает вероятность несанкционированного доступа к вашим службам: даже если на сервере запущен какой-то сервис, о котором вы забыли, UFW не пропустит к нему внешний трафик, если порт не открыт явно.

Примечание: UFW — это надстройка над подсистемой iptables в Linux. Она упрощает управление правилами. В других дистрибутивах могут использоваться аналогичные инструменты (firewalld в CentOS, например), но концепция та же: закрыть все лишние порты, разрешив только нужные.

Защита от брутфорс-атак: установка Fail2Ban

Даже после отключения паролей и настройки брандмауэра сервер продолжает получать «фоновые» подключения из интернета. Злоумышленники могут пытаться подобрать ключи или эксплуатировать уязвимости сервисов. Для дополнительной защиты стоит установить систему предотвращения brute-force атак — Fail2Ban.

Fail2Ban отслеживает логи (например, логи SSH-авторизаций) и при обнаружении множества неудачных попыток входа с одного адреса автоматически блокирует этот IP на время. Это помогает отразить атаки перебором паролей или ключей.

Установить Fail2Ban можно через apt:

sudo apt install fail2ban -y

После установки сервис, как правило, стартует автоматически. Fail2Ban работает из коробки с базовыми настройками: по умолчанию он будет следить за журналом SSH (/var/log/auth.log в Ubuntu) и блокировать IP после 5 неудачных попыток входа на 10 минут. Эти значения можно настроить в конфигурации, но для начала стандартных правил достаточно.

При необходимости вы можете подстроить параметры Fail2Ban под себя. Конфигурационный файл по умолчанию — /etc/fail2ban/jail.conf — трогать не рекомендуется; лучше создать копию для локальных настроек:

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

В файле jail.local можно изменить bantime (длительность блокировки, например, 30m — 30 минут), findtime (период, за который отслеживаются попытки, например 10m) и maxretry (сколько неудачных попыток до бана, например 5). Также убедитесь, что в разделе [sshd] параметр enabled установлен в true (в последних версиях Ubuntu Fail2Ban обычно активирует jail для SSH по умолчанию). После внесения изменений перезапустите сервис:

sudo systemctl restart fail2ban

Fail2Ban будет работать в фоне, автоматически реагируя на подозрительную активность. Вы в любой момент можете посмотреть, какие IP заблокированы, с помощью команды:

sudo fail2ban-client status sshd

(Команда покажет статус jail для SSH, включая список банов, если они были.)

SSL-сертификат для веб-сервера (HTTPS)

Если вы планируете размещать на своем сервере веб-сайт или веб-приложение, важным шагом будет настройка SSL-сертификата для обеспечения защищённого соединения (HTTPS). SSL/TLS шифрует трафик между вашим сервером и клиентами, что предотвращает перехват конфиденциальных данных. Кроме того, браузеры помечают сайты без HTTPS как небезопасные.

Самый распространённый способ получить SSL-сертификат — воспользоваться бесплатными сертификатами Let’s Encrypt. Для автоматизации процесса на сервер обычно устанавливают утилиту Certbot.

Примечание: Данный шаг предполагает, что у вас уже настроен веб-сервер (например, Nginx или Apache) и привязан доменное имя к вашему VPS. Без доменного имени получить общепризнанный сертификат не выйдет, хотя для тестов можно сгенерировать самоподписанный сертификат.

Установка Certbot: для Ubuntu/Debian доступен пакет certbot. Если, скажем, вы используете Nginx, установим сразу плагин для него:

sudo apt install certbot python3-certbot-nginx -y

Certbot сможет сам редактировать конфигурацию Nginx для подключения сертификата. Для Apache есть аналогичный пакет python3-certbot-apache.

Получение сертификата: убедитесь, что DNS вашего домена указывает на IP сервера. Затем запустите certbot (пример для домена yourdomain.com):

sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

Certbot проведёт вас через процесс. Он сам докажет центру сертификации ваше право на домен (создаст временный файл на веб-сервере или выполнит проверку DNS), скачает готовый сертификат и настроит Nginx для работы по HTTPS. После успешного завершения вы получите сообщение об установке сертификата.

Автоматическое продление: сертификаты Let’s Encrypt действуют 90 дней, но certbot может автоматически их продлевать. Обычно пакет certbot добавляет таймер в systemd для авто-обновления. Проверить это можно так:

sudo systemctl list-timers | grep certbot

Если же вы хотите использовать cron, откройте планировщик заданий:

sudo crontab -e

и добавьте строку, выполняющую ежедневную проверку:

0 3 * * * certbot renew --quiet

Эта задача будет запускаться каждый день в 3:00 ночи и продлевать сертификат при необходимости (в тихом режиме, без вывода). В итоге ваш веб-сервер всегда будет оснащён актуальным SSL-сертификатом, а пользователи — защищены шифрованием данных.

Двухфакторная аутентификация для SSH (опционально)

Для особо требовательных к безопасности случаев можно добавить двухфакторную аутентификацию (2FA) при входе на сервер. С 2FA, помимо SSH-ключа, при подключении будет требоваться одноразовый код, сгенерированный на вашем смартфоне (например, в приложении Google Authenticator или Authy). Даже если кто-то получит ваш ключ, войти без одноразового кода не получится.

Реализовать 2FA для SSH можно с помощью пакета libpam-google-authenticator. Он интегрируется с PAM (механизмом аутентификации в Linux) и запрашивает код при входе.

Установка Google Authenticator:

sudo apt install libpam-google-authenticator -y

Затем запустите настройку для вашего пользователя (выполнять команду нужно под своим пользователем, а не под root, так как привязка идет к конкретной учетной записи):

google-authenticator

Вы увидите ряд вопросов и инструкций. Программа сгенерирует секретный ключ (QR-код и строка), которую нужно сохранить. Отсканируйте QR-код приложением Google Authenticator на телефоне или введите вручную секретный ключ. Обязательно запишите резервные коды (они пригодятся, если потеряете доступ к приложению). На вопросы о ограничении времени жизни кодов и др. можно отвечать утвердительно (Y) для безопасных значений по умолчанию.

Настройка PAM и SSH: после генерации ключа нужно включить модуль 2FA в системе. Откройте файл /etc/pam.d/sshd:

sudo nano /etc/pam.d/sshd

В самом конце добавьте строку:

auth required pam_google_authenticator.so

Это подключит модуль Google Authenticator для SSH. Далее откройте файл конфигурации SSH (/etc/ssh/sshd_config, знакомый нам по предыдущему разделу) и убедитесь, что там установлены следующие опции:

ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive

Параметр ChallengeResponseAuthentication должен быть yes (чтобы сервер запрашивал у пользователя дополнительные данные, в нашем случае - код). А опция AuthenticationMethods задаёт комбинацию методов: здесь мы указываем, что требуется publickey и keyboard-interactive (интерактивный ввод, который будет использоваться для 2FA). Благодаря этой строчке SSH будет требовать сначала успешной проверки ключа, а затем — одноразового кода (по протоколу keyboard-interactive).

Перезапустите SSH-сервис еще раз:

sudo systemctl restart ssh

Теперь при следующем входе по SSH после ключевой аутентификации сервер задаст вам дополнительный вопрос — код двухфакторной аутентификации. Введите одноразовый код из приложения на телефоне, и лишь после этого получите доступ к системе.

Имейте в виду, что настройка 2FA требует внимательности: если что-то пойдет не так (например, потеряете доступ к кодам и не отключили требование 2FA), можно закрыть себе доступ на сервер. Поэтому оценивайте необходимость 2FA: для большинства небольших проектов достаточно ограничиться ключевой авторизацией и strong-паролем на учетную запись.

Выводы и дальнейшие шаги

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

Что делать дальше? Теперь ваш Linux-сервер готов к установке сервисов под ваши задачи. Вы можете приступить к развертыванию своего веб-приложения, сайта, базы данных или любого другого программного обеспечения. Например, установка веб-сервера (Nginx/Apache), СУБД (MySQL/PostgreSQL) и окружения для бэкенда — следующий логичный шаг после базовой настройки. Конкретные действия зависят от того, для чего предназначен сервер.

Не забывайте регулярно обновлять систему (sudo apt update && sudo apt upgrade) или настроить автоматическое обновление безопасности (пакет unattended-upgrades может установить критические патчи в фоновом режиме). Также стоит делать резервные копии важных данных и мониторить ресурсы сервера (например, через утилиту htop или встроенную top).

Настройка своего сервера — это увлекательный процесс, который поначалу кажется сложным, но со временем станет рутинной задачей. Следуя данному руководству, даже начинающий сможет понять, как настроить сервер безопасно и грамотно. Ваш первый VPS готов к работе — удачного вам администрирования!

 

Читайте также

Отсканируйте код