Ноя 05 2008

Подбор паролей ssh

За последнее время, количество атак на ssh, возросло, просто катастрофически. И хотя, любой, нормальный человек, понимает, что нормальный, правильный пароль подобрать по словарю почти не реально, количество записей в auth.log, таково, что нормально найти интересующую нас запись, без использования grep, почти не реально. Для защиты от этих атак, в последнее время появилась масса утилит. Я пользуюсь bruteforceblockerом. При выборе я руководствовался, тем, что во первых, bruteforceblocker, использует pf, во вторых, присутствует база ip адресов нарушителей, которые уже были занесены в базу проэкта, другими пользователями. Для меня это плюс.

Устанавливаем:

cd  /usr/ports/security/bruteforceblocker
make install clean

По окончании установки, приступаем к настройке.
Настроим конфигурационный файл /usr/local/etc/bruteforceblocker.conf:

# vim: syntax=perl
 
$cfg = {
        email           => 'hilik@hilik.org.ua',                      # email на который слать отчеты о
                                   #добавленном в черный список ip
        table           => 'bruteforce',                # имя таблицы pf в который заносятся ip
        tablefile       => '/var/db/ssh-bruteforce',    # файл в который записываются ip
        max_attempts    => 3,                           # количество неудачных попыток
        timeout         => 3600,                        # время за которое учитываются неудачные попытки
        report          => 1,  # Отправлять заблокированные ip в базу проэкта,
                                 #если 1, отправлять
        debug           => 0, # режим отладки, что бы включить, установите в 1
        use_remote      => 1,  # Запрашивать заблокированные ip из базы проэкта
        mindays         => 365, # Запрашивать адреса, добавленные за последние
                                       #365 дней 
        mincount        => 2,#Эта опция устанавливает количество пожаловавшихся почтовых
                                  #ящиков, если меньше этой цифры - считать информацию не
                                  #достоверной и не блокировать ip
 
        mail            => '/usr/bin/mail',             # Путь к утилите mail
        pfctl           => '/sbin/pfctl',               # Путь к pfctl
 
        # whitelist - белый список, список адресов, которые не будут блокироваться
        whitelist       => [qw{
                                127.0.0.1
                                192.168.0.15
                                192.168.0.1
                             }],
};
 
#leave 1; here!
1;

Для того что бы bruteforceblocker получал сведения о неудачных попытках ввода пароля, пропишем его в /etc/syslogd.conf, что бы syslogd слал информацию на STDIN скрипту:

auth.info;authpriv.info                         | exec /usr/local/sbin/bruteforceblocker

После того как кто то попытается авторизоваться у вас на хосте по ssh, bruteforceblocker запустится автоматически.
Теперь остается добавить поддержку в pf:
Прописываем таблицу в которой находтся ip черного списка

#Table from ssh bruteforce blocker
table <bruteforce> persist file "/var/db/ssh-bruteforce"
</bruteforce>

Добавляем правила блокирующие доступ к ssh от адресов, находящихся в таблице bruteforce:

#Block ip from bruteforce blocker
block in quick log on $ext_if proto tcp from <bruteforce> to any port ssh
</bruteforce>

Проверим работоспособность pf c новыми правилами:

pfctl -nf /etc/pf.rules

/etc/pf.rules — это файл с правилами файервола
Если, сообщений об ошибках в правилах, не последовало, применяем новый файервол:

pfctl -f /etc/pf.rules

Добавить в закладки:

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Украинская Баннерная Сеть