SSH-аутентификация - предотвращение атак Bruteforce
Я использую ssh-аутентификацию на основе сертификатов / ключей, а sshd работает на нестандартном порту.
Нужно ли мне устанавливать denyhosts/fail2ban или обнаружение, основанное на анализе журнала? Получу ли я какое-либо преимущество?
2 ответа
Вам действительно нужен доступ по SSH из любой точки Интернета? Если вы можете сузить его до пары фиксированных IP-диапазонов, таких как рабочий или домашний, и ограничить доступ по SSH только к ним, вам будет лучше.
Я понимаю, что это не очень хорошо, если вы находитесь вне дома и вам нужен доступ из случайной беспроводной сети на случайном диапазоне IP. Вот для чего нужен vpn, скажем openvpn с двухфакторной аутентификацией (один из которых - подписанный сертификат клиента), чтобы попасть в среду, в которой вы можете получить доступ к вашим ящикам с помощью SSH.
Два фактора vpn обеспечат вам большую безопасность, чем SSH на основе сертификатов, и дадут вам только одно место, где нужно делать экстренные обновления безопасности, если, например, обнаружена огромная дыра в Openssl. Тогда вы можете просто обновить свой сервер openvpn, а не паниковать, поспешно исправлять все ваши хосты, на которых работает ssh.
Если вы полностью отключили вход в систему на основе пароля (PasswordAuthentication = no в sshd_config), то атаки с применением грубой силы станут намного сложнее, если не невозможными - клиенту придется предоставить большое количество ключей, ни один из которых не связан с учетной записью или друг другу.
Тем не менее, вы все равно можете заблокировать IP-адреса, которые генерируют большое количество недопустимого трафика входа в систему - возможный вектор атаки DoS.
Denyhosts - это решение для обнаружения на основе анализа журналов; он сканирует журнал авторизации sshd для попыток входа в систему. Это работает как для паролей, так и для открытых ключей.
Fail2ban идет еще дальше и позволяет обновлять правила брандмауэра с этими результатами; он лучше подходит для предотвращения DoS-атак, чем denyhosts.