omka01
| Дата: Четверг, 28.08.2014, 16:55 | Сообщение # 1 |
| Fail2ban лучшая защита от атак
В прошлой статье, вот здесь, я уже касался программ, в частности bruteblock, которые могут защитить сервер от атак. Но сегодня я хочу предложить одну из самых лучших прог в этом секторе - это fail2ban. Дело всё в том, что на сервере уже установлено ни одна и не две, а уже несколько служб, которые смотрят наружу и которые нужно защитить, а с этим может справится только fail2ban. fail2ban, это небольшой набор скриптов, написанных на python. Принцип работы: отслеживать изменения в лог файлах различных сервисов и по определенным сигнатурам, выполнять определенные действия. Для поиска характерных признаков подбора пароля, используются регулярные выражения в файлах фильтров. Для выполнения действий используются action файлы. Так что будем устанавливать. Настраивать будем защиту sshd, proftpd, dovecot и может ещё какую службу. Для работы естественно потребуется включенный фаервол, во FreeBSD штатным является ipfw и мы его уже запустили, кто не знает как идёмсюда. Установка 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, [url=mailto:dest%3Dalex2%402gogo.ru]dest=alex2@2gogo.ru(link sends e-mail)] 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, [url=mailto:dest%3Dalex2%402gogo.ru]dest=alex2@2gogo.ru(link sends e-mail)] 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, [url=mailto:dest%3Dalex2%402gogo.ru]dest=alex2@2gogo.ru(link sends e-mail)] 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 адреса, с неправильным паролем, должно забанить на время, которое вы указали. Ну вот! Вроде всё.
Источник: http://rtfm.2gogo.ru/fail2ban-luchshaya-zashchita-ot-atak
|
|
| |