Hetzner · Cloud · Документация

Первый сервер в Hetzner Cloud: SSH-ключи, Firewall и базовая защита Ubuntu

Обновлено

Ноутбук с окном терминала, ключ и щит, защищающий облачный сервер

Новый облачный сервер получает публичный IPv4-адрес сразу после создания, и уже через несколько минут на SSH-порт начинают приходить попытки подбора паролей. Поэтому первые полчаса стоит потратить на базовую защиту: вход по ключу, ограничение доступа файрволом, обычный пользователь вместо root, автоматические обновления и резервные снимки. Ниже — порядок действий для Ubuntu 24.04 LTS в Hetzner Cloud; те же команды подходят для большинства Debian-подобных дистрибутивов. Если вы выбираете между облаком и физическим сервером, сначала прочитайте сравнение Hetzner Cloud и выделенных серверов.

Что понадобится

  • Аккаунт Hetzner с рабочим способом оплаты. Условия регистрации и оплаты описаны в статье Как оплатить Hetzner.
  • Компьютер с OpenSSH-клиентом (Linux, macOS или Windows 10/11 с OpenSSH).
  • 15–30 минут. Не закрывайте рабочую SSH-сессию, пока не проверите вход в новой.

Шаг 1. Создайте SSH-ключ

Ключ — пара файлов: закрытый остаётся у вас, открытый отправляется на сервер. Современный алгоритм — ed25519:

ssh-keygen -t ed25519 -C "my-laptop" -f ~/.ssh/hetzner_ed25519

Задайте парольную фразу на закрытый ключ. Публичный ключ — файл hetzner_ed25519.pub; его содержимое вставляется в консоль Hetzner. Закрытый ключ (файл без .pub) никому не передавайте и не вставляйте в чаты и репозитории.

Шаг 2. Создайте проект и сервер

  1. В Hetzner Console создайте проект: ресурсы (серверы, сети, файрволы, ключи) относятся к проекту.
  2. Добавьте SSH-ключ в раздел Security → SSH keys: вставьте содержимое .pub.
  3. Нажмите «Add Server» и выберите локацию. Для европейской аудитории подойдут Германия и Финляндия; для остальных задач учитывайте задержку (измерьте её ping и mtr до тестового адреса).
  4. Выберите образ — Ubuntu 24.04.
  5. Выберите тип сервера. Актуальные линейки и доступность смотрите в консоли: цены в 2026 году менялись дважды, а часть тарифов бывает недоступна (подробности).
  6. Отметьте добавленный SSH-ключ. Если ключ не отметить, Hetzner отправит пароль root на почту — такой вариант лучше не использовать.
  7. В разделе Firewalls выберите файрвол (создадим его на шаге 3) или создайте после сервера.
  8. Включите резервные копии (Backups), если вам нужны автоматические копии: это отдельная платная опция. Для снимков вручную достаточно Snapshots.
  9. Нажмите «Create & Buy now».

После создания консоль покажет IP-адрес сервера. Подключитесь:

ssh -i ~/.ssh/hetzner_ed25519 root@IP_СЕРВЕРА

При первом соединении SSH спросит, доверять ли отпечатку ключа сервера — ответьте yes.

Шаг 3. Настройте Cloud Firewall

Cloud Firewall работает на уровне сети Hetzner, до того как пакеты дойдут до сервера, и не нагружает систему. По документации, если не задано ни одного правила, весь входящий трафик блокируется, а исходящий разрешён. Firewall не оплачивается отдельно. Лимиты: до 5 файрволов на сервер, до 500 правил на файрвол, до 50 файрволов во всех проектах; на сервер приходится до 80 000 одновременных соединений.

Создайте файрвол в разделе Firewalls → Create Firewall и добавьте входящие правила:

ПротоколПортИсточникЗачем
TCP22Ваш IP (или диапазон)SSH. Если IP динамический, откройте для всех и защитите ключами
TCP80ЛюбойHTTP для сайта и выпуска сертификатов
TCP443ЛюбойHTTPS
ICMP—Любойping и диагностика сети (по желанию)

Примените файрвол к серверу (вручную или по label selector). Прежде чем закрывать правило для SSH, убедитесь, что в консоли есть вход через Console (веб-консоль) — это запасной способ попасть на сервер при ошибке.

Шаг 4. Создайте пользователя с sudo

Работа под root опасна: ошибка команды затрагивает всё. Создайте обычного пользователя:

adduser deploy
usermod -aG sudo deploy
mkdir -p /home/deploy/.ssh
cp /root/.ssh/authorized_keys /home/deploy/.ssh/authorized_keys
chown -R deploy:deploy /home/deploy/.ssh
chmod 700 /home/deploy/.ssh && chmod 600 /home/deploy/.ssh/authorized_keys

Откройте новый терминал и проверьте вход и права:

ssh -i ~/.ssh/hetzner_ed25519 deploy@IP_СЕРВЕРА
sudo whoami   # должно вывести root

Шаг 5. Отключите вход root и вход по паролю

В Ubuntu 24.04 настройки sshd удобнее класть в отдельный файл в /etc/ssh/sshd_config.d/:

sudo tee /etc/ssh/sshd_config.d/10-hardening.conf <<'EOF'
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
EOF
sudo sshd -t && sudo systemctl reload ssh

Команда sshd -t проверяет синтаксис; если она вывела ошибку, перезагрузку делать не нужно. Не закрывая текущую сессию, откройте ещё одну и убедитесь, что вход работает. Если не получилось — исправьте файл в оставшейся сессии. Этот приём не даёт «запереть» себя за дверью.

В некоторых образах параметры могут быть заданы и в /etc/ssh/sshd_config.d/50-cloud-init.conf; проверьте итоговую конфигурацию: sudo sshd -T | grep -E 'permitrootlogin|passwordauthentication'.

Шаг 6. Защита от подбора паролей и сканеров

Когда пароли отключены, подбор не опасен, но он засоряет журнал и грузит процессор. Чтобы снизить шум, поставьте fail2ban:

sudo apt update
sudo apt install -y fail2ban
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd

Если вы используете Cloud Firewall с ограничением SSH по IP, fail2ban нужен меньше; но для веб-серверов его фильтры (nginx-http-auth, nginx-botsearch) остаются полезными. Для самого сервера можно добавить ещё локальный файрвол ufw — не как замену Cloud Firewall, а как второй рубеж:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80,443/tcp
sudo ufw enable

Не включайте ufw, пока не добавили правило для SSH. Подробности по настройке межсетевого экрана на выделенных серверах — в справке Межсетевой экран — FAQ.

Шаг 7. Автоматические обновления безопасности

sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

По умолчанию в Ubuntu устанавливаются обновления безопасности. Для обновлений ядра может потребоваться перезагрузка: команда [ -f /var/run/reboot-required ] && echo нужна перезагрузка подскажет, нужна ли она. Для продуктивных систем планируйте окно обслуживания.

Шаг 8. Время, имя хоста и swap

  • Часовой пояс: sudo timedatectl set-timezone Europe/Berlin (или другой нужный), проверка — timedatectl.
  • Имя хоста: sudo hostnamectl set-hostname web1.
  • Swap на небольших серверах помогает пережить пики памяти: sudo fallocate -l 2G /swapfile && sudo chmod 600 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile. Чтобы swap сохранился после перезагрузки, добавьте в /etc/fstab строку /swapfile none swap sw 0 0.

Шаг 9. Снимки, резервные копии и rDNS

Снимок (Snapshot) делается кнопкой в консоли и хранит состояние диска на момент создания; автоматические бэкапы — отдельная платная опция, которая включается для сервера. Снимок удобно делать перед рискованными изменениями. Для файловых бэкапов вне сервера подойдёт Storage Box. Если сервер отправляет почту, настройте обратную запись DNS: Облачный сервер rDNS. Приватные сети между серверами — в справке Конфигурация Hetzner Cloud Networks.

Шаг 10. Управление через hcloud

CLI hcloud позволяет создавать серверы из скриптов. Токен создаётся в проекте: Security → API tokens (права Read & Write). Токен показывается один раз и даёт доступ ко всему проекту, храните его как пароль.

hcloud context create my-project
hcloud server list
hcloud firewall list

Вопросы по API Hetzner разобраны на странице API Hetzner — частые вопросы.

Чек-лист после настройки

  • Вход по ключу работает, вход по паролю и под root отключён.
  • В Cloud Firewall открыты только нужные порты.
  • Автообновления безопасности включены.
  • Есть хотя бы один снимок или бэкап и проверено восстановление.
  • Токены API и закрытые ключи не лежат на сервере без необходимости.

Типичные ошибки

  • Закрыли SSH-порт файрволом и потеряли доступ: используйте веб-консоль и исправьте правила.
  • Включили PasswordAuthentication no до того, как проверили вход по ключу.
  • Сделали выход из единственной сессии root, не создав пользователя sudo.
  • Оставили открытыми порты баз данных (3306, 5432, 6379) на весь интернет: закройте их в Cloud Firewall.
  • Забыли удалить тестовый сервер: Hetzner списывает деньги, пока он существует, даже если выключен.

Частые вопросы

Можно ли войти на сервер по паролю?

Можно, если не указать SSH-ключ при создании, но это небезопасно. Лучше всегда использовать ключи и отключить вход по паролю.

Что делать, если я потерял доступ по SSH?

Откройте веб-консоль сервера в Hetzner Console и исправьте правила файрвола или настройки sshd. Если доступа нет и там, включите режим Rescue для облачного сервера и смонтируйте диск.

Нужен ли ufw, если есть Cloud Firewall?

Это необязательно. Cloud Firewall блокирует трафик до сервера, ufw добавляет второй уровень на самой системе и защищает при ошибках в облачных правилах.

Сколько стоит остановленный сервер?

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

Что делать, если нужен Windows?

Смотрите справку Windows в облаке Hetzner.