Сегодня я хочу предложить одну из самых лучших прог в этом секторе - это fail2ban., с этим может справится только fail2ban. Fail2ban, это небольшой набор скриптов, написанных на python. Принцип работы: отслеживать изменения в лог файлах различных сервисов и по определенным сигнатурам, выполнять определенные действия. Для поиска характерных признаков подбора пароля, используются регулярные выражения в файлах фильтров. Для выполнения действий используются action файлы. Так что будем устанавливать. Настраивать будем защиту sshd, proftpd, dovecot и может ещё какую службу. Для работы естественно потребуется включенный фаервол.
Установка fail2ban
Идём сюда:
# cd /usr/ports/security/py-fail2ban
запускаем инсталляцию:
# make install clean
Дальше идём сюда /usr/local/etc/fail2ban и наблюдаем следующую структуру каталога:
папка action.d - содержит файлы действий
папка filter.d - файлы фильтров
файл fail2ban.conf - основной файл конфигурации
файл jail.conf - файл настройки защиты конкретных сервисов
Настройка fail2ban
Чтобы в процессе конфигурации не натворить плохого, все файлы, которые мы будем править будем переименовывать из .conf в .local. В первую очередь копируем файл jail.conf в файл с именем jail.local.
# cp /usr/local/etc/fail2ban/jail.conf /usr/local/etc/fail2ban/jail.local
Основной файл конфигурации /usr/local/etc/fail2ban/fail2ban.conf здесь можно оставить всё по умолчанию, можно только установить уровень логирования на 4, чтобы мы могли видеть побольше сообщений. Далее идём в папку /usr/local/etc/fail2ban/action.d видим кучу фаерволов, нас интересует пока только bsd-ipfw.conf. Переименовываем его в bsd-ipfw.local. Оставляем в нём всё по умолчанию. Можно только внести строчку
actionunban = ipfw table 1 delete
чтобы при выходе из fail2ban обнулялась таблица, иначе там зависнут все забаненные навечно. Добавляем в ipfw правило, блокирующее все IP адреса, находящиеся в таблице table 1:
# ${FwCMD} add deny all from table\(1\) to me
Правило ставим сразу после вот этого правила
${FwCMD} add allow ip from any to any via lo0
Переходим в каталог filter.d. Тут у нас лежат фильтры, которые по регулярному выражению ищут определенные строки в лог файлах. Нас интересуют sshd.conf и proftpd.conf и dovecot.conf, как и ранее копируем их в sshd.local, proftpd.local и dovecot.local соответственно. В файлах я все оставил как есть.
А теперь мы дошли до самого вкусного, что есть в этой проге, чего нет ни в одной аналогичной проге. Проверить работоспособность того или иного фильтра с регулярными выражениями можно с помощью скрипта fail2ban-regex, идущего в поставке fail2ban. Например проверяем фильтр proftpd.local, натравливая его на лог файл авторизаций:
# fail2ban-regex /var/log/auth.log /usr/local/etc/fail2ban/filter.d/proftpd.local
Данная команда выведет полную статистику, сколько строк из лог файла попадают под то или иное регулярное выражение, в отладке просто незаменимая вещь.
С фильтрами вроде разобрались, теперь вернемся к файлу jail.local и приведем его к следующему виду:
[ssh-iptables]
enabled = true
filter = bsd-sshd
action = bsd-ipfw
mail-whois[name=SSH, dest=alex2@2gogo.ru]
logpath = /var/log/auth.log
maxretry = 3
bantime = 240
findtime = 600
ignoreip = 127.0.0.1
backend = poller
[proftpd-iptables]
enabled = true
filter = proftpd
action = bsd-ipfw
mail-whois[name=ProFTPD, dest=alex2@2gogo.ru]
logpath = /var/log/auth.log
maxretry = 3
bantime = 240
findtime = 600
ignoreip = 127.0.0.1
backend = poller
[dovecot-iptables]
enabled = true
filter = dovecot
action = bsd-ipfw
mail-whois[name=Dovecot, dest=alex2@2gogo.ru]
logpath = /var/log/dovecot-info.log
maxretry = 3
bantime = 240
findtime = 600
ignoreip = 127.0.0.1
backend = poller
Мне нужно было, чтобы fail2ban отправлял письма, поэтому я включил mail-whois и не забываем отредактировать соответствующий файл в директории action.d, в данном случае mail-whois.local, там все довольно просто. Ну вот вроед всё настроили, пора запускать fail2ban. Прописываем в /etc/rc.conf
fail2ban_enable="YES"
и запускаем его
# /usr/local/etc/rc.d/fail2ban start
Если всё сделали правильно он запустится, если нет, разбирайтесь где накосячили. Если запустился, проверяем на бан, заходим со стороннего ip адреса, с неправильным паролем, должно забанить на время, которое вы указали.
Ну вот! Вроде всё.
(c)ht tp://rtfm.2gogo.ru/fail2ban-luchshaya-zashchita-ot-atak
Коментувати