🖥 fail2ban банит. SSH-ключи не пускают вообще
Сегодня я выложил ролик, в котором показал, как заблокировать перебор паролей SSH через fail2ban. Бот ошибся трижды — IP в бане на час. Работает, но у этого подхода есть потолок: бот всё равно успевает попробовать три комбинации до блокировки.
Есть способ закрыть саму возможность входа по паролю. Сервер просто перестанет принимать пароли и будет пускать только по криптографическому ключу.
Как настроить. Генерируем ключевую пару на своей машине:
ssh-keygen -t ed25519
Копируем публичный ключ на сервер:
ssh-copy-id user@твой_сервер
Проверяем, что вход по ключу работает, и только после этого отключаем пароли. На Ubuntu 22.04 и 24.04 строку нужно добавлять не в основной конфиг, а отдельным файлом, иначе cloud-init её перезапишет и настройка не применится:
echo "PasswordAuthentication no" | sudo tee /etc/ssh/sshd_config.d/99-disable-password.conf
sudo systemctl restart sshd
На Debian и других дистрибутивах без cloud-init достаточно прописать PasswordAuthentication no в /etc/ssh/sshd_config и перезапустить службу.
После этого даже бесконечный перебор паролей ничего не даст: метода входа по паролю на сервере больше нет. fail2ban из ролика можно не применять.
Вообще именно в комментариях к ролику часто писали, не лучше применять именно этот метод, вместо fail2ban, поэтому я решил здесь написать про SSH-ключи.
Какой подход используете на своих серверах? 🔥