Перейти к содержимому
RunStack
АвтоматизацияСкрипты· Обновлено 19 окт. 2026 г.

Защита сервера — rs harden

Скрипт по шагам включает базовую защиту: автообновления, fail2ban, SSH только по ключу, файрвол, swap. SSH и файрвол откатываются сами, если вы не подтвердили вход.

UbuntuUbuntuDebianDebian
Ubuntu 22.04 / 24.04 · Debian 12+
00

Новый сервер в интернете начинают перебирать по SSH через несколько минут после запуска. Базовая защита известна давно — вход только по ключу, fail2ban, файрвол, автообновления, — но каждый раз её делают руками, и самый страшный шаг в ней — не отрезать доступ самому себе.

rs harden проходит эти шаги по очереди: объясняет, что изменит, спрашивает и делает. Изменения SSH и файрвола откатываются сами, если за 3 минуты вы не подтвердили, что можете войти из нового окна.

Что делает

  1. Автообновления безопасности — unattended-upgrades: заплатки ставятся сами каждый день, без перезагрузок.
  2. fail2ban для SSH — 5 неудачных попыток за 10 минут, и IP блокируется на час. Если уже стоит fail2ban или CrowdSec — не трогает.
  3. SSH только по ключу — только если ключ для вашего пользователя уже есть: вход по паролю выключается, root — только по ключу, не больше 3 попыток. Настройки — отдельным файлом /etc/ssh/sshd_config.d/00-runstack-harden.conf, основной конфиг не меняется.
  4. Файрвол ufw — порты SSH открыты всегда, про каждый другой порт, который слушает наружу, спрашивает (80 и 443 — по умолчанию «да»). Если файрвол уже есть (ufw или nftables) — не трогает.
  5. Swap — 2 ГБ (4 ГБ при памяти от 8 ГБ), если его нет: без него при нехватке памяти ядро сразу убивает процессы.
  6. Время и ядро — синхронизация времени (NTP), защита от SYN-флуда, без ICMP-редиректов, полный ASLR.

Как выглядит

==> 3. SSH
    Выключает вход по паролю (только ключи), root — только по ключу, 3 попытки на соединение. Ключ найден у: deploy.
    Выключить вход по паролю в SSH? [y/N] y
┌──────────────────────────────────────────────────────────────────────┐
│ НЕ закрывайте это окно. Откройте НОВЫЙ терминал и проверьте:         │
│ ssh deploy@<сервер> по ключу                                         │
│ Работает — наберите здесь yes в течение 180 с. Иначе изменение       │
│ откатится.                                                           │
└──────────────────────────────────────────────────────────────────────┘
    yes / no: yes
    ✓ SSH: только ключи. Отменить: rm /etc/ssh/sshd_config.d/00-runstack-harden.conf && systemctl reload ssh
==> 4. Файрвол (ufw)
    Порт 3000/tcp (node) слушает 0.0.0.0. Разрешить его из интернета? [y/N] n

Как запустить

  1. Скопируйте команду из блока «Скачать» — он появится после входа. В команде ваш личный токен, он действует 12 часов.
  2. Выполните её на сервере в обычном терминале (не из cron и не через пайп без терминала): шаги с SSH и файрволом требуют вашего подтверждения.
  3. Дальше — sudo rs harden. Сначала можно посмотреть план: sudo rs harden --plan.
rs harden            каждый шаг с вопросом
rs harden --plan     только показать, что изменится
rs harden --yes      без вопросов: только шаги, которые не отрежут доступ
                     (обновления, fail2ban, swap, время, ядро)

Безопасно ли это

Скрипт меняет настройки сервера — поэтому каждый шаг с вопросом, а два опасных (SSH и файрвол) с таймером отката. Без терминала (--yes, автоматизация) SSH и файрвол не меняются никогда. Каждое изменение — отдельный файл с пометкой RunStack, его легко найти и удалить; как откатить каждый шаг — в вики. Проверить результат: sudo rs security.

Требования

  • Ubuntu 22.04 / 24.04 или Debian 12+ (apt), права root (sudo), systemd.
  • Для шага SSH — ключ в ~/.ssh/authorized_keys пользователя, под которым вы зашли. Нет ключа — шаг пропускается.
  • Подключение к серверу, которое вы не потеряете: у провайдера должна быть консоль (VNC) на крайний случай.

Вопросы

Сколько стоит? Сейчас бесплатно.

Что если я не успею подтвердить? Через 3 минуты изменение откатится само: SSH вернётся к прежним настройкам, файрвол выключится. Подключение, в котором запущен скрипт, не рвётся.

Порты Docker закроются файрволом? Нет: Docker публикует порты в обход ufw. Ограничивайте их через rs <сервис> access или публикуйте на 127.0.0.1. Подробнее — в вики.

Материалы доступны после входа и подтверждения email.