Новый VPS с публичным IP-адресом начинает получать автоматические попытки входа уже через несколько минут. Ничего личного: боты просто сканируют все адреса. Несколько базовых шагов останавливают почти всё это. Этот чек-лист рассчитан на свежий сервер с Ubuntu 24.04 или Debian 12/13 и занимает около пятнадцати минут.
1. Сначала обновите всё
apt update && apt full-upgrade -y
reboot
Войдите снова после перезагрузки. Всегда начинайте с полностью обновлённой системы.
2. Создайте пользователя без root
Постоянная работа под root делает опасной любую опечатку. Создайте обычного пользователя с правами sudo:
adduser deploy
usermod -aG sudo deploy
3. Настройте ключи SSH
На своём компьютере создайте пару ключей, если её нет, и скопируйте публичную часть на сервер:
ssh-keygen -t ed25519 -C "my-vps"
ssh-copy-id deploy@YOUR_SERVER_IP
Откройте второй терминал и убедитесь, что можете войти как deploy по ключу, прежде чем продолжать. Не закрывайте исходный сеанс, пока не убедитесь.
4. Отключите вход по паролю и под root
Отредактируйте конфигурацию демона SSH:
sudo nano /etc/ssh/sshd_config.d/99-hardening.conf
Добавьте эти строки в файл:
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
Проверьте синтаксис и перезагрузите конфигурацию:
sudo sshd -t && sudo systemctl reload ssh
5. Включите брандмауэр
UFW — самый простой вариант. Сначала разрешите SSH, затем включите брандмауэр:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80,443/tcp # only if you run a web server
sudo ufw enable
sudo ufw status verbose
Открывайте порты только для служб, которые вы действительно запускаете. Всё остальное по умолчанию закрыто.
6. Добавьте fail2ban
Fail2ban следит за логами и временно банит адреса, которые постоянно не проходят вход.
sudo apt install -y fail2ban
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
Настройки по умолчанию для SSH разумны. Поскольку вы уже отключили пароли, это в основном уменьшает шум в логах и пустую нагрузку на CPU.
7. Включите автоматические обновления безопасности
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
Это автоматически устанавливает патчи безопасности. Иногда перезагружайтесь ради обновлений ядра или позвольте инструменту делать это в тихий час.
8. Проверьте, что слушает порты
sudo ss -tulpn
Всё, что слушает на 0.0.0.0 неожиданно для вас, стоит проверить. Службы только для локального использования (базы данных, кэши, панели администратора) должны слушать на 127.0.0.1.
9. Базовый мониторинг и резервные копии
- Просматривайте логи с помощью
journalctl -u ssh --since todayвремя от времени. - Проверяйте ресурсы с помощью
htopиdf -h, чтобы переполненный диск или неуправляемый процесс не застали вас врасплох. - Делайте резервные копии. Делайте снимок сервера перед крупными изменениями и храните копию вне сервера для всего, что нельзя воссоздать.
Что делать дальше
Теперь ваш сервер взломать гораздо труднее, чем настроенный по умолчанию. Дальше обновляйте ПО, запускайте каждую службу от отдельного непривилегированного пользователя и открывайте только необходимое. Если нужен приватный туннель до сервера, хорошим следующим шагом станет наше руководство по настройке WireGuard.
Частые вопросы
Что сделать в первую очередь на новом VPS?
Обновите пакеты, создайте пользователя без прав root, перейдите на SSH-ключи, отключите вход по паролю и включите брандмауэр.
Стоит ли менять порт SSH?
Это уменьшает шум в журналах, но не является настоящей защитой. Гораздо важнее ключи и брандмауэр.