Посмотрите в журнал авторизации любого нового сервера, и фоновое излучение интернета появится немедленно: боты для подбора учётных данных, перебирающие словари против root, сканеры, зондирующие прошлогодние уязвимости, краулеры, снимающие отпечатки всего, что отвечает на порту 80. Ничего личного, и почти всё автоматизировано — а это хорошая новость: автоматизированные атаки побеждаются базовой гигиеной, применённой до развёртывания реальной нагрузки. Это руководство и есть та самая гигиена, сжатая до десяти минут на Debian 12/13 (всё переносится на Ubuntu с небольшими правками). Намеренно не четырёхтысячная фреймворк-инструкция: это именно те двери, которые реально пробуют боты, закрытые в порядке важности. Запустите на каждом сервере, который развернёте здесь, — а затем переходите к VPN, ноде или почтовому серверу, ради которых пришли.
Что намеренно пропускает этот контрольный список
Стук в порты, стены sysctl для усиления ядра, настройка SELinux/AppArmor, наборы обнаружения вторжений — все это реальные инструменты, ни один из которых не является первоочередным для VPS единственного назначения в первый день, и некоторые легко привести к блокировке. Принцип Парето здесь честен: ключи + без паролей + default-deny + автопатчи останавливают практически всю нецелевую компрометацию. Добавляйте тяжёлую артиллерию, когда ваша модель угроз называет конкретного противника, способного преодолеть основы, — и если конфиденциальность на уровне диска важна для вашей модели, помните, что слой KVM позволяет запустить полнодисковое шифрование внутри гостевой ОС.
Пошаговая инструкция
- Войти один раз, обновить всё
apt update && apt full-upgrade -y && rebootШаблоны — это снапшоты; разрыв между датой снапшота и сегодняшним днём — именно то окно, которое зондируют сканеры. Сначала применяйте патчи, перезагружайтесь в новое ядро, затем настраивайте.
- Создать пользователя и установить SSH-ключ
adduser ops && usermod -aG sudo ops mkdir -p /home/ops/.ssh && nano /home/ops/.ssh/authorized_keys # paste your ed25519 public key chmod 700 /home/ops/.ssh && chmod 600 /home/ops/.ssh/authorized_keys && chown -R ops:ops /home/ops/.sshСгенерируйте ключ на локальной машине, если у вас его нет:
ssh-keygen -t ed25519. Протестируйтеssh ops@your-ipво втором терминале перед продолжением. - Заблокировать sshd
Отредактируйте
/etc/ssh/sshd_config.d/hardening.conf:PermitRootLogin no PasswordAuthentication no KbdInteractiveAuthentication no MaxAuthTries 3 AllowUsers opsЗатем
systemctl restart ssh— сначала убедившись, что сессия на основе ключа работает. Подбор пароля заканчивается здесь: угадывать нечего. Перевод порта на нестандартный снижает шум в журналах, но косметически, а не с точки зрения безопасности; делайте это для порядка, если хотите. - Поднять брандмауэр с default-deny (nftables)
Встроенный брандмауэр Debian, минимальный набор правил в
/etc/nftables.conf:table inet filter { chain input { type filter hook input priority 0; policy drop; ct state established,related accept iif lo accept tcp dport 22 accept icmp type echo-request limit rate 5/second accept icmpv6 type { echo-request, nd-neighbor-solicit, nd-neighbor-advert, nd-router-advert } accept } }systemctl enable --now nftables. Открывайте дополнительные порты только при развёртывании сервисов, которым они нужны — руководство по VPN открывает 51820/udp, руководство по почте 25/465/993 и т. д. Default-deny означает, что забытый тестовый демон становится недоступным, а не источником взлома. - Добавить fail2ban для оставшегося шума
apt install -y fail2ban printf "[sshd] enabled = true maxretry = 4 bantime = 1h " > /etc/fail2ban/jail.d/ssh.local systemctl enable --now fail2banПри уже отключённых паролях это глубокая защита плюс гигиена журналов — повторные нарушители сбрасываются брандмауэром вместо того, чтобы засорять журнал авторизации.
- Включить автоматические обновления безопасности
apt install -y unattended-upgrades dpkg-reconfigure -plow unattended-upgradesКоманда безопасности Debian теперь патчит ваш сервер, пока вы спите. Самая эффективная строка на этой странице по числу нажатий клавиш: большинство реальных компрометаций эксплуатируют патчи, которые существовали месяцами.
- Двухминутная проверка
Убедитесь в защищённости извне:
ssh root@your-ip # must be refused nmap -p- your-ip # only 22 (and your service ports) open last -a; journalctl -u ssh -n 50 # familiarise yourself with normalПри желании добавьте TOTP двухфакторную аутентификацию на вашем аккаунте VPSCrypto — панель может пересобрать или переустановить сервер, поэтому заслуживает той же заботы, что и root.
Резервные копии — часть безопасности
Укрепление снижает вероятность; резервные копии ограничивают ущерб. Еженедельные снапшоты включены в каждый план, но снапшоты живут вместе с сервером — для всего, что нельзя потерять, также отправляйте зашифрованные офлайн-копии: restic или borg на второй сервер (Pup за $3.50 по ссылке в другом регионе отлично подходит как цель резервного копирования) займёт минуты на настройку. Протестируйте восстановление хотя бы один раз; непроверенная резервная копия — это надежда, а не план.
Часто задаваемые вопросы
Стоит ли менять порт SSH?
Это контроль шума в журналах, а не безопасность — сканеры находят нестандартные порты за секунды с помощью masscan. Делайте это, если тихие журналы помогают замечать реальные аномалии; никогда не считайте это слоем защиты. Настоящая защита — аутентификация только по ключам и MaxAuthTries.
Нужен ли fail2ban, если пароли отключены?
Строго говоря, для SSH — нет: брутфорсить нечего. Он остаётся в списке, потому что также покрывает другие сервисы, которые вы можете добавить позже (почта, панели), и делает журналы читаемыми. Пропустите на минималистичном сервере, если предпочитаете.
Нужен ли брандмауэр VPS, если у хостинга есть защита от DDoS?
Они решают разные проблемы. Защита от DDoS upstream поглощает флуд; ваша политика nftables контролирует, какие сервисы вообще доступны. Default-deny — о забытом демоне, а не о гигабитах.
А что насчёт Ubuntu вместо Debian?
Всё применимо; Ubuntu поставляется с ufw как более удобным интерфейсом (ufw default deny incoming; ufw allow 22/tcp; ufw enable) и включает unattended-upgrades по умолчанию в последних релизах. Усиление sshd идентично.
Как восстановить доступ, если я заблокировал себя?
Используйте консольный доступ в вашей личной панели — он независим от sshd, поэтому вы можете исправить неверную конфигурацию или восстановить снапшот. Именно поэтому вы тестируете новую конфигурацию SSH во втором сеансе, не закрывая первый.

