Я только что получил экземпляр Ubuntu на Linode. Чтобы обезопасить SSH на нем, я установил fail2ban
(используя apt-get
), но затем возникла проблема: fail2ban
мой IP продолжал баниться (на ограниченное время, к счастью), хотя я вводил правильный пароль. Поэтому я удалил fail2ban
и установил denyhosts
вместо этого. Та же проблема, но более серьезная: похоже, каждый раз, когда я захожу по SSH, мой IP банится. Я удаляю его из /etc/hosts.deny
, перезапускаю denyhosts
и снова вхожу в систему, и мой IP снова банится.
Единственное объяснение, которое приходит мне в голову, это то, что я захожу по SSH как root (да, да, я знаю); может быть, где-то что-то установлено, что блокирует любого, кто заходит по SSH как root, даже если он успешно вошел в систему? Мне это кажется странным. Есть идеи? (Внесение моего IP в белый список — это временное решение. Я не хочу иметь возможность входить только с одного IP.)
решение1
Кажется, я видел, как кто-то говорил, что некоторые из этих приложений будут считать неудачные попытки входа с ключом попыткой перебора. У вас есть ssh-agent, работающий с ключами? Подключение с помощью этого набора будет предлагать каждый ключ по очереди, прежде чем вернуться к паролю, так что, возможно, это причина. Попробуйте установить уровень журнала sshd выше и проверьте журналы fail2ban/denyhost.
Редактировать:здесьэто первоисточник, который подсказал мне, как это исправить.
решение2
пожалуйста, ознакомьтесь со следующими ссылками:
- http://denyhosts.sourceforge.net/faq.html#3_9
- http://denyhosts.sourceforge.net/faq.html#3_19
- http://denyhosts.sourceforge.net/faq.html#allowed
если вы хотите отказаться от всей идеи fail2ban и denyhosts, сделайте так, как говорит Натан Пауэлл ниже, измените порт с 22 на что-то более непонятное
и еще несколько идей:
iptables: следующий пример отклонит входящие соединения, которые совершают более 2 попыток подключения к порту 22 в течение десяти минут:
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
вход на основе ключа
портовый молоток (knockd)
решение3
Если sshd установлен на уровень ведения журнала VERBOSE (или выше), он помещает фразу '...Failed none...' в системный журнал всякий раз, когда пользователь успешно входит в систему. По умолчанию fail2ban настроен считать это неудачей. Я исправил проблему, установив уровень ведения журнала для sshd обратно на INFO.
Подробности смотрите в моем ответе на этот вопрос.fail2ban банит меня после серии *успешных* входов
решение4
Если вы открыты для возврата к fail2ban, вы всегда можете использовать директиву ignoreip
в jail.conf
. Например:
ignoreip = 127.0.0.1 192.168.1.0/32
Таким образом, вас не заблокируют из-за неаккуратного набора текста ;-) Это также означает, что вас не смогут заблокировать, подделав ваш IP-адрес (хотя для любого TCP-трафика это не представляет большой проблемы).