Базовая защита SSH на новом сервере
Сразу после создания сервера в журнале появляются попытки подбора паролей. Несколько простых настроек убирают большую часть этого шума и делают вход предсказуемым.
1. Отдельный пользователь и ключ
Создайте ключ на своём компьютере и скопируйте открытую часть на сервер:
ssh-keygen -t ed25519 -f ~/.ssh/server_ed25519
ssh-copy-id -i ~/.ssh/server_ed25519.pub admin@server.example
Закрытый ключ остаётся только у вас. Защитите его парольной фразой.
2. Настройка sshd
Вместо правки основного файла положите свои параметры в отдельный, он читается раньше и не затрётся при обновлении пакета:
sudo tee /etc/ssh/sshd_config.d/10-hardening.conf >/dev/null <<'EOF'
PasswordAuthentication no
PermitRootLogin no
KbdInteractiveAuthentication no
MaxAuthTries 3
LoginGraceTime 20
EOF
3. Проверка без потери доступа
Ошибка в конфигурации может закрыть вход. Порядок безопасных действий:
- Оставьте текущую сессию открытой.
- Проверьте синтаксис:
sudo sshd -t. - Примените:
sudo systemctl reload ssh. - В новом окне убедитесь, что вход по ключу работает, и только потом закрывайте старую сессию.
4. Ограничение подбора
Если порт SSH открыт всему интернету, добавьте защиту от перебора. Подойдёт fail2ban или правило брандмауэра с ограничением частоты:
sudo ufw limit 22/tcp
sudo ufw enable
Перед ufw enable убедитесь, что порт SSH разрешён.
Что проверить в итоге
| Команда | Ожидаемый результат |
|---|---|
sudo sshd -T | grep -i passwordauth | passwordauthentication no |
ss -tlnp | grep :22 | sshd слушает порт |
journalctl -u ssh --since today | Видны только успешные входы по ключу и отклонённые попытки |