Содержание


Защита сетевых сервисов с помощью Fail2ban

Часть 1. Общие принципы функционирования и конфигурирования подсистемы Fail2ban

Comments

Серия контента:

Этот контент является частью # из серии # статей: Защита сетевых сервисов с помощью Fail2ban

Следите за выходом новых статей этой серии.

Этот контент является частью серии:Защита сетевых сервисов с помощью Fail2ban

Следите за выходом новых статей этой серии.

Защита одиночного хоста или локальной сети, подключённых к Интернет, от внешних опасностей и угроз обычно не ограничивается каким-то одним программным и/или аппаратным средством. Для обеспечения надёжной защиты применяются комплексы, состоящие из отдельных программных средств. Такой способ является более гибким и позволяет варьировать степень и уровень защищёности.

Одним из программных средств, которое может быть включено в упомянутый выше защитный комплекс, является Fail2ban - программный пакет, предназначенный для обнаружения и предотвращения попыток вторжения в систему, подключённую к сети. Для работы Fail2ban необходим установленный и активизированный сетевой экран - firewall (в Linux-системах - это iptables) или, по крайней мере, подсистема отслеживания и управления сетевыми пакетами (в Linux-системах, например, TCP Wrapper).

Назначение Fail2ban

Основной задачей Fail2ban является обнаружение и блокирование отдельных IP-адресов, с которых производятся попытки несанкционированного проникновения в защищаемую систему. Такие "враждебные" IP-адреса определяются по результатам наблюдения за файлами журналов - log-файлами (например, /var/log/secure, /var/log/faillog и т.д.). Если с какого-либо IP-адреса выполняется слишком много попыток зарегистрироваться в защищаемой системе или производятся какие-либо другие подозрительные действия, то хост с этим IP-адресом блокируется на некоторый интервал времени, определённый системным администратором, т.е. ни один пакет, посланный с такого заблокированного хоста, не будет принят. Такая блокировка выполняется посредством изменения правил (rules) сетевого экрана (iptables).

Описанная выше функциональная схема позволяет защищаться от так называемых "brute force" атак, т.е. от многочисленных попыток войти в систему с различными вариантами паролей. Атаки такого рода достаточно часто практикуются сетевыми взломщиками.

Загрузка Fail2ban

Существуют готовые к установке бинарные пакеты для наиболее широко распространённых дистрибутивов, таких как Debian, Ubuntu, SuSE, Fedora, Gentoo, Arch, поэтому можно воспользоваться соответствующим менеджером пакетов для установки Fail2ban.

Дополнительную информацию об установочных пакетах можно получить на авторском сайте http://www.fail2ban.org.

Fail2ban написан на языке программирования Python, поэтому для работы требует установленной подсистемы интерпретации и поддержки этого языка.

Рекомендуется, но не является обязательным требованием, наличие в системе следующего программного обеспечения: сетевой экран (поддерживается iptables или shorewall), tcp-wrappers, команда обмена сообщениями электронной почты mail, система отслеживания изменений в файлах на основе inotify (поддерживается монитор Gamin).

Общая структура и схема функционирования Fail2ban

С точки зрения архитектуры Fail2ban представляет собой систему "клиент-сервер". Серверная часть - fail2ban-server - это многопоточная (multithreaded) программа, которая прослушивает (listen) Unix-сокеты, ожидая поступления команд, и отправляет клиенту необходимую информацию. Всё это происходит в режиме реального времени. Сам сервер не обладает никакой информацией о текущем статусе файлов конфигурации, поэтому при запуске находится в состоянии "по умолчанию" (default state), в котором не определены никакие блокировки и прочие параметры.

Клиентская часть - fail2ban-client - является внешним, интерфейсным компонентом всей описываемой подсистемы. Клиент устанавливает соединение через сокет сервера и посылает через него команды для конфигурирования сервера и выполнения требуемых операций. Клиент может считывать и передавать содержимое конфигурационных файлов или просто отправить на сервер одну команду, используя для этого командную строку shell-оболочки или собственный интерактивный режим, который активизируется при помощи ключа -i.

Принципы конфигурирования подсистемы Fail2ban

Набор файлов конфигурации может иметь вид, показанный в листинге 1. Структура каталогов и конфигурационных файлов получена при помощи стандартной утилиты tree.

Листинг 1. Конфигурационные файлы и каталоги Fail2ban
$ tree /etc/fail2ban/
/etc/fail2ban/
├── action.d
│   ├── complain.conf
│   ├── dshield.conf
│   ├── hostsdeny.conf
│   ├── ipfilter.conf
│   ├── ipfw.conf
│   ├── iptables-allports.conf
│   ├── iptables.conf
│   ├── iptables-multiport.conf
│   ├── iptables-multiport-log.conf
│   ├── iptables-new.conf
│   ├── mail-buffered.conf
│   ├── mail.conf
│   ├── mail-whois.conf
│   ├── mail-whois-lines.conf
│   ├── mynetwatchman.conf
│   ├── sendmail-buffered.conf
│   ├── sendmail.conf
│   ├── sendmail-whois.conf
│   ├── sendmail-whois-lines.conf
│   └── shorewall.conf
├── fail2ban.conf
├── filter.d
│   ├── apache-auth.conf
│   ├── apache-badbots.conf
│   ├── apache-nohome.conf
│   ├── apache-noscript.conf
│   ├── apache-overflows.conf
│   ├── common.conf
│   ├── courierlogin.conf
│   ├── couriersmtp.conf
│   ├── cyrus-imap.conf
│   ├── exim.conf
│   ├── gssftpd.conf
│   ├── lighttpd-fastcgi.conf
│   ├── named-refused.conf
│   ├── pam-generic.conf
│   ├── php-url-fopen.conf
│   ├── postfix.conf
│   ├── proftpd.conf
│   ├── pure-ftpd.conf
│   ├── qmail.conf
│   ├── sasl.conf
│   ├── sieve.conf
│   ├── sshd.conf
│   ├── sshd-ddos.conf
│   ├── vsftpd.conf
│   ├── webmin-auth.conf
│   ├── wuftpd.conf
│   └── xinetd-fail.conf
└── jail.conf
2 directories, 49 files

При внесении изменений в конфигурацию к показанной в листинге 1 структуре обычно добавляются файлы с расширением .local (fail2ban.local, jail.local и т.п.). Параметры настройки, содержащиеся в .local-файлах, имеют преимущество над аналогичными параметрами, записанными в .conf-файлах. На практике это означает, что сначала считывается содержимое .conf-файлов, а затем содержимое .local-файлов, поэтому значения ранее определённых параметров могут быть заменены. Таким образом, в .local-файлах можно хранить лишь те значения параметров, которые требуется скорректировать. Более того, все необходимые изменения конфигурации следует вносить в соответствующие .local-файлы, а не в файлы с расширением .conf. Это помогает поддерживать корректность общей структуры конфигурации и избежать проблем при обновлении всей подсистемы Fail2ban.

Ведение журналов самой подсистемы Fail2ban обычно определяется двумя параметрами:

  • logtarget - задаёт направление потока для вывода информации о работе fail2ban. Этот параметр может иметь одно из следующих значений: STDOUT, STDERR, SYSLOG или имя файла. По умолчанию (если данный параметр не определён) присваивается имя файла /var/log/fail2banlog.
  • loglevel - определяет степень подробности выводимой информации. Возможные значения:
    1. ERROR (только информация об ошибках);
    2. WARN (информация об ошибках и предупреждающие сообщения);
    3. INFO (полная информация о работе);
    4. DEBUG (вывод более подробных описаний всех действий, состояний, ошибок, необходимых для отладки подсистемы).
    По умолчанию задан уровень 3 - INFO.

Ещё один параметр, определяющий функциональность Fail2ban, - это socket, который задаёт имя файла, используемого для обмена информацией между клиентом и сервером. По умолчанию этому параметру присваивается имя файла /var/run/fail2ban/fail2ban.sock.

Заключение

В данной статье были рассмотрены основные возможности, архитектура и конфигурация программного пакета Fail2ban, предназначенного для обнаружения и предотвращения попыток вторжения в систему, подключённую к сети. В следующей статье будет подробно рассмотрена конфигурация подсистемы Fail2ban.


Ресурсы для скачивания


Похожие темы


Комментарии

Войдите или зарегистрируйтесь для того чтобы оставлять комментарии или подписаться на них.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux, Open source
ArticleID=821845
ArticleTitle=Защита сетевых сервисов с помощью Fail2ban: Часть 1. Общие принципы функционирования и конфигурирования подсистемы Fail2ban
publish-date=06192012