1. О программе


1.1 Что это за программа?
1.1.1 Введение
1.1.2 По сути
1.1.3 Как это работает?
1.1.4 Возможности программы
1.2 Системные требования








1.1 Что это за программа?


1.1.1 Введение


    Никогда не задумывались о том, что в любом дистрибутиве Linux штатно уже есть весь необходимый функционал для создания полноценного интернет-шлюза, который сможет не только предоставлять доступ в Интернет, но и считать трафик, квотировать его по объему, ограничивать доступ на основе "черных" и "белых" списков, сохранять базу статистики трафика в MySQL и многое другое?
    Ведь семейство программ Netfilter имеют в себе весь необходимый функционал, для того чтобы в связке друг с другом все это реализовать...

    Да, конечно, с технической стороны все это вполне можно реализовать, имея под рукой только дистрибутив ОС Linux. Но на практике процесс администрирования такой системы превращается в тихий ужас, т.к. инструментарий для управления всей вышеописанной красотой далеко не так удобен и вовсе не так уж централизован как хотелось бы: централизованной "панели управления" Netfilter просто нет. А уж о том чтобы штатными средствами через какой-то более-менее удобный интерфейс управлять подсчетом трафика в iptables можно вообще забыть - средства группировки и визуализации счетчиков трафика отсутствуют.

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

    Попросту, системные администраторы, не желая изобретать велосипед, выбирают ПО каких-то третьих сторон, которое заточено конкретно для подсчета и (если получится) блокировки трафика. Это нормально, ведь сисадмин это не совсем как бы программист, у него совсем иные задачи. Надеюсь, Читатель меня понимает и подробно причины объянять не нужно.

    Собственно, Fantomas Iptconf - это тот самый "велосипед" для Iptables/Netfilter. А если точнее, то это попытка собрать все инструменты, необходимые для управления вышеописанной системой, в одном месте с целью получить удобную и эффективную frontend-систему для управления клиентским трафиком и маршрутизатором на основе Netfilter framework, а также для частичного администрирования самой операционной системы.

    Программа написана на PHP, имеет открытый исходный код и представляет собой front-end менеджер, состоящий из веб-интерфейса и консольного CLI-скрипта, с помощью которых Вы можете выполнять всю работу по настройке и администрированию маршрутизатора.

    В основу Fantomas Iptconf положен способ управления доступом и трафиком клиентов на базе политик - описаний типов трафика, действий над ними и некоторых параметров. Политики назначаются клиентам, при этом программа генерирует для них правила iptables согласно политике. Если политика удаляется с клиента, правила онуляются. Все просто :)

    Создав нужный набор политик, дальше можно двумя щелчками мыши в веб или одной командой консоли "на лету" управлять трафиком клиентов, добавляя или удаляя клиентам политики.

    По каждой политике ведется подсчет трафика, сохраняется база статистики Ulogd в БД MySQL, формируются отчеты по трафику, поддерживаются гибкие ограничения трафика на основе списков Ipset в режимах blacklist или allow_only (сет-листами можно рулить "на лету" из втроенной сет-панели), поддерживаются ограничения трафика по объему по каждой политике клиента... и многое другое (полный перечень возможностей см. в следующем разделе)...

Наверх    Содержание



1.1.2 По сути


    Fantomas Iptconf Manager - открытая front-end система управления, учета и контроля межсетевого трафика для Iptables/Netfilter, использует для работы только штатные средства пакета Netfilter (iptables, ipset, ulogd), без дополнительных программ.

    Программа написана на PHP, имеет открытый исходный код и представляет собой front-end менеджер, состоящий из веб-интерфейса и консольного CLI-скрипта. Основное назначение и цель программы - предоставить администратору сервера легкий и эффективный инструментарий для управления клиентским трафиком и маршрутизатором на основе Netfilter framework, а также для частичного администрирования операционной системы.

    В основу Fantomas Iptconf положен способ управления доступом и трафиком клиентов на базе политик - описаний типов трафика, действий над ними и некоторых параметров. Создав нужный набор политик, дальше можно двумя щелчками мыши в веб или одной командой консоли "на лету" управлять трафиком клиентов, добавляя или удаляя клиентам политики.

Наверх    Содержание



1.1.3 Как это работает?


    Как это работает? Очень просто - когда через ядро Linux проходит пакет данных, удовлетворяющий одному из существующих правил Iptables, то модули ядра принимают действие ACCEPT для этого пакета, разрешая модулям iptables принимать дальнейшие действия над этим пакетом согласно созданной цепочке правил. Так вот, при каждом таком отрабатывающем правиле iptables, ядро системы ведет учет количества пакетов и количества байт данных, отработавших по каждому правилу. Это происходит в любом линуксе, поддерживающем iptables (т.е. во всех), независимо от того установлена ли какая либо билинговая система или нет. Те из Коллег, кто уже имел дело вплотную с iptables, прекрасно понимают о чем я. Собственно, первоначальная идея и состоит в том чтобы создать набор правил, содержащих нужные нам критерии для подсчета трафика (например, src host, dst host, proto, ports), и все, при прохождении такого трафика ядро системы будет накручивать показания счетчиков на созданных нами правилах iptables. А когда это будет нужно, мы можем значения этих счетчиков переписать и использовать по своему усмотрению... Собственно, Fantomas примерно так и считает трафик: в таблице mangle есть две цепочки - COUNT_IN и COUNT_OUT, в которых содержатся правила, "накручивающие" счетчики по критериям, которые Вы зададите для каждого из криентов. В этих же цепочках есть и правила, отвечающие за передачу описаний трафика демону ulogd, который в свою очередь ведет в mysql базу статистики проходящего трафика.
    Вот таким образом, имея под рукой только дистрибутив Linux, можно считать трафик, собирать и хранить статистику о нем. Однако настраивать и обслуживать такую конфигурацию вручную очень долго и геморройно, особенно если клиентов много. Поэтому Вам нужен Fantomas для того чтобы автоматизировать этот процесс. Для создания нужного набора правил, Fantomas использует специальные "наборы настроек", в которых содержится информация о критериях трафика и о действиях которые нужно предпринять по нему. Такие "наборы настроек" хранятся отдельным списком и называются Политики. Так вот, для того чтобы сгенерировать по клиенту какие то правила iptables, нужно взять нужную политику и добавить ее этому клиенту и Fantomas создаст правила по клиенту согласно описаний трафика в политике. И политик клиенту можно назначить не одну и не две - их может быть сколько угодно..

    К примеру, если Вы хотите дать клиенту доступ в интернет через NAT, то Вы должны создать политику, описывающую какие именно протоколы и порты (или оставить all) будут разрешены и в качестве действия указать SNAT или Masquerade. А после создания политики, Вы должны ее применить клиенту, и у него появится доступ. Причем, обратите внимание, для каждого клиента НЕ НУЖНО создавать отдельную политику - политика может быть одна, и Вы будете ее назначать разным клиентам, давая тем самым им однотипный доступ.
Например:

policy nat4users {
accept tcp (80,443,8080,3389)
accept udp 53
accept icmp
out macomnet
action snat
}
    В этом примере описывается политика с именем "nat4users", в которой описывается разрешение трафика нескольких протоколов с указанием разрешаемых портов назначения, далее указывается признак того что описанный трафик является исходящим и будет уходить через сетевой интерфейс, подключенный к провайдеру macomnet путем применения к трафику действия SNAT.

    Политика может иметь много других опций и особенностей, подробнее о политиках смотрите в разделе п.4.6 Политики.

Наверх    Содержание



1.1.4 Возможности программы


  • Управление списком клиентов с разбивкой по группам, применение политик и отмена их действия по клиентам в реальном времени, соответственно, сразу при этом создаются или удаляются по клиенту правила доступа согласно политике;

  • Просмотр онлайн текущих состояний счетчиков трафика по списку политик клиентов - при каждом обращении Вы видите реальные показатели, взятые непосредственно из Iptables;

  • Формирование отчетов по трафику клиентов с возможностью задания условий группировки результатов по посещенным сайтам или по дате, рассчет процентных отношений позиций в отчете относительно общей суммы трафика, отчет может быть сформирован по всем клиентам, по одному клиенту или по одному конкретному правилу одной из ему назначенных политик;

  • Монитор трафика - средство визуализации top-рейтинга пользователей по объему скаченного трафика в порядке убывания, данные обновляются через заданный таймаут, можно указывать группу клиентов;

  • Конструктор политик - удобный инструмент для создания и редактирования политик, также есть просмотр, удаление, поиск политик, поиск клиентов которым политика назначена, есть вариант ручного редактирования текста политик;

  • Редактирование списка произвольных правил Inits

  • Шейпер скорости трафика клиентов, позволяющий создавать ограничения скорости входящего и исходящего трафика отдельно по клиенту независимо от набора используемых политик;

  • Обработка списков сет-листов Ipset в реальном времени во встроенной сет-панели, или ручное онлайн редактирование сет-листов в виде файлов на диске;

  • Обработка списка используемых подсетей - возможность добавлять вручную или из списка найденных подсетей, удаление, редактирование;

  • Обработка списка используемых подключений (сетевых интерфейсов) - также возможно добавлять вручную или из списка найденных интерфейсов, редактирование, удаление;

  • Встроенный порт-фильтр, работающий отдельной цепочке таблицы mangle, куда трафик попадает прямо из mangle PREROUTING, т.е. еще до отработки правил доступа клиентов - здесь можно использовать общие правила фильтрации трафика для всех клиентов или всей своей подсети. Порт-фильтр можно включить и выключить, в правилах можно задавать исходный хост, хост назначения, исходный порт, порт назначения, поддерживается инверсия;

  • Управление списком пользователей web-интерфейса, возможность указания статуса пользователя (админ или только промотр статистики), смена пароля, блокировка пользователя;

  • Просмотр состояния системы - загрузка процессора, свободное место на диске, оперативная память, возможность онлайн просмотра логов системы;

  • Монитор процессов - средство для просмотра списка системных процессов, с сортировкой по загрузке CPU в порядке убывания, данные обновляются по настраиваемому таймауту. Возможность делать запросы к команде top для просмотра состояния конкретно интересующих процессов.;

  • Онлайн панель состояния системных сервисов - старт, стоп, рестарт;
  • Возможность просмотра файлов экспортированных счетчиков - текущего и сбэкапленных;

  • Запуск процедур полного перегенерирования конфигурации - RELOAD (опция NoKeepCounts указывается там же), выгрузки счетчиков трафика всех клиентов в файл на диске (Export counters) и процедура открытия нового периода ("Объявить Амнистию"), можно из веб выполнить сохранение правил iptables (service iptcldr save) или рестарт iptables c перезагрузкой счетчиков и пересозданием конфигурации (service iptcldr restart);

  • Страница состояния Ulogd - состояние процесса ulogd, информация о БД (размер, дата обновления и т.п.), инструменты для обслуживания БД (repair, check, оптимизация, урезание БД до указываемой даты), состояние лога, просмотр лога (для удобства при открытии лог переворачивается последними записями наверх), рестарт сервиса ulogd;

  • Страница состояния MySQL - состояние процессов mysql, тесты соединения, информация о доступных БД, состояние лога, просмотр лога (тоже переворачивается), рестарт сервиса;

  • Страница для работы с Crond и Crontab - состояние процесса crond, информация о состоянии crontab, панель для онлайн конфигурирования crontab, просмотр лога Crond, рестарт сервиса Crond;

  • Программа ведет логи. Есть страница для онлайн просмотра логов с возможностью выбора событий по конкретному юзеру программы, по датам, можно выбрать события из одного файла или из всех сразу;

  • Раздел настройки основных параметров программы - панели настроек "Пути", "Интерфейс" и "Система";

  • Фильтрация доступа к веб-интерфейсу по списку разрешенных ip-адресов - для адресов, не входящих в список разрешенных, выполняется редирект на любой произвольный URL (настраивается);

  • Защита данных авторизации от перехвата по сети - данные шифруются еще до отправки на сервер, используется SESSID;



    Наверх    Содержание




    1.2 Системные требования

    Итак, для работы Fantomas потребуются:

  • PHP версий 4 - 5 (программа писалась и обкатывалась на PHP 5.2.9)

  • Linux Kernel версией посвежее (обкатывался и тестировался на 2.6.29.1, 2.6.29.2, 2.6.30.4)
    Об требуемых опциях ядра смотрите в следующем разделе в п.2.1.
  • Iptables версии от 1.4.0 (обкатывался на 1.4.3.2, 1.4.4)

  • Ipset версия думаю не принципиальна (обкатывался на 2.5.0, 3.0)

  • Ulogd версией посвежее ветки 1.хх (обкатывался на 1.24 с последними исправлениями с git)
    Как альтернатива git'у можете взять патч с моего сайта, там же где и Fantomas.
  • MySQL версией думаю от 4.1, (обкатывался на 5.1.34, 5.1.37)

  • Apache версия не принципиальна (обкатывался на 2.0.63)

  • OpenSSH версия не принципиальна




  • Наверх    Содержание












    Назад