Введение

DenyHosts — это инструмент предотвращения вторжений, основанный на анализе журналов, для SSH-серверов, написанный на Python. Он предназначен для защиты SSH-серверов от атак методом перебора, путем отслеживания неудачных попыток входа в систему в журнале аутентификации и блокировки IP-адресов, с которых они осуществляются. DenyHosts разработан Филом Шварцем, который также является разработчиком отладчика регулярных выражений Kodos на Python.

Операция

DenyHosts проверяет конец журнала аутентификации на предмет недавних неудачных попыток входа в систему. Он записывает информацию об IP-адресах, с которых они исходят, и сравнивает количество недействительных попыток с пороговым значением, установленным пользователем. Если количество недействительных попыток превышает установленный порог, DenyHosts предполагает, что происходит атака перебором и блокирует дальнейшие попытки с этого IP-адреса, добавляя его в файл /etc/hosts. Таким образом, доступ с этого IP-адреса на сервер запрещается. DenyHosts версии 2.0 и выше поддерживают централизованную синхронизацию, что позволяет блокировать злоумышленников на нескольких компьютерах. Сайт denyhosts.net собирает статистику с компьютеров, на которых установлено это программное обеспечение. DenyHosts работает только с подключениями IPv4 и не поддерживает IPv6. DenyHosts можно запускать вручную, как демон или через cron.

Открытия

В июле 2007 года The Register сообщила, что с мая по июль того же года "скомпрометированные компьютеры" в Oracle UK входили в число десяти крупнейших источников атак перебором паролей по SSH в Интернете, согласно общедоступным спискам DenyHosts. После проведения расследования Oracle отвергла предположения о том, что какие-либо из ее компьютеров были скомпрометированы.

Уязвимости

Даниэль Б. Сид опубликовал статью, демонстрирующую уязвимость DenyHosts, а также подобных программ Fail2ban и BlockHosts, к удаленной инъекции логов – техники атаки, схожей с SQL-инъекцией, при которой специально сформированное имя пользователя используется для инициирования блокировки сайта, выбранного атакующим. Эта уязвимость была устранена в версии 2.6.

Вилки и потомки

Поскольку оригинальный автор Фил Шварц не продолжал разработку после выпуска версии 2.6 (декабрь 2006 года) и заявленной версии 2.7 (ноябрь 2008 года), для которой не существует фактического загружаемого пакета, разработка была возобновлена в феврале 2012 года Мэтом Руффало в репозитории GitHub. Независимый форк был создан в мае 2014 года на почти одноименном проекте DenyHost на SourceForge, с выпуском собственной версии 2.7. После версии 2.9 новый проект на SourceForge объединился с более ранним репозиторием на GitHub, и новые версии доступны обоими способами. Программное обеспечение для централизованного сервера синхронизации, которое может использоваться DenyHosts версий 2.0 и выше, так и не было выпущено. Независимое программное обеспечение для сервера синхронизации разрабатывается Яном Паскалем ван Бестом с июня 2015 года.