Связаться со мной:
1 заметка с тегом

denyhost

Правильная настройка denyhosts. Защита ssh, разбан ip, очистка правил. Или как не забанить самого себя.

Denyhosts - это скрипт для защиты в основном ssh от взлома брутфорсом. Он анализирует число неудачных попыток коннекта к серверу и после определённого их количества блокирует ip с которого пытаются приконектится. Блокирует путём добавления ip в /etc/hosts.deny.

Установка довольно простая. В большинстве дистрибутивов linux скрипт есть в репозиториях. Во freebsd она есть в портах.

Установка для debian/ubuntu:

# apt-get install denyhosts

Установка для freebsd:

# cd /usr/ports/security/denyhosts

# make install clean

Многие в интернете пишут, что скрипт работает из коробки без дополнительных настроек. Это действительно так, но в один прекрасный день вы рискуете быть забаненым. Если например забудете пароль или введёте его неправильно. Разберём основные настройки конфига. Конфигурационный файл находится в /usr/local/etc/denyhosts.conf(для freebsd) или /etc/denyhosts.conf(для debian/ubuntu).

HOSTS_DENY = /etc/hosts.deny #Список забаненых ip
PURGE_DENY = 4w #Время бана в формате: m - минуты, h - часы, d - дни, w - недели, y - годы.
BLOCK_SERVICE = sshd #сервисы с которыми работает denyhosts
DENY_THRESHOLD_INVALID = 5 #Число неудачных попыток входа c несуществующим логином до бана
DENY_THRESHOLD_VALID = 5 #Число попыток входа с существующим логином, но неверным паролем до бана
DENY_THRESHOLD_ROOT = 1 #Число неудачных попыток входа до бана для пользователя root(по умолчанию эта директива равна одной попытке, права на ошибку у вас нет. Вкупе с временем бана выставленным на продолжительное время, в случае ошибки ввода пароля это даст интересный результат :-) ).

Остальные настройки описаны достаточно хорошо в комментариях конфигурационного файла. Это все настройки на которые я хотел бы обратить внимание.

Теперь разберёмся что делать если вас всё таки забанили. Всё описаное ниже можно сделать сложнее, выискивая ваш ip в списках забаненых и убирая его. Я считаю что это нецелесообразно, т.к в случае повторного перебора все "плохие ip" повторно будут забанены и ничего страшного неслучится. Так что мы просто будем делать очистку забаненых ip. Ну во-первых вам нужно хоть как-то подключится к серверу. Т.е вы должны знать пароль и подключатся с уникального ip, который ещё не забанен в denyhosts. Если вы не помните пароль к серверу, его можно сбросить с livecd или recovery. Итак, подключаемся к серверу по ssh и первое что делаем останавливаем denyhosts и очищаем файл hosts.deny

# /etc/init.d/denyhosts stop

# cp /dev/null /etc/hosts.deny

Затем в конфигурационном файле denyhosts ищем директиву WORK_DIR и смотрим в какой каталог она ведёт. Переходим в этот каталог и удаляем все файлы кроме allowed-hosts. Открываем этот файл и добавляем в него ваш ip. Поясню, в этом файле находятся исключения, т.е если вы добавите туда ваш ip, то скрипт больше не будет вас банить. Запускаем демон denyhosts

# /etc/init.d/denyhosts start

Всё пробуем подключится, подключение должно пройти успешно.