Как мы оседлали OPNsense

в 12:46, , рубрики: BSD, freebsd, nix-системы, open source, UNIX, Блог компании Smart-Soft, информационная безопасность, сетевое администрирование, Сетевое оборудование, Сетевые технологии, системное администрирование

Здравствуйте!

Пока не стихают холивары на тему, аморально или нет использовать бесплатные платформы для создания коммерческих продуктов, мы тихой сапой сделали это. И не стесняемся брать с клиентов деньги, потому что запилили на базе свободного кода реально классную штуку — универсальный аппаратный шлюз безопасности. Раньше у нас был коммерчески успешный межсетевой экран, но для Microsoft Windows. Бурный поток идей в какой-то момент вышел из берегов «винды», и встал вопрос — а что дальше? А дальше — Linux или Net/Open/Free BSD. Наши гуру собрались, покурили и решили вместо изобретения собственного велосипеда использовать OPNsense. Эта статья поможет тем, кто захочет сделать нечто подобное.

Как мы оседлали OPNsense - 1

Почему OPNsense?

Во-первых, OPNsense — форк открытой UTM-системы pfSense, который считается одним из лучших решений такого класса на базе FreeBSD. Мы изучили код OPNsense и нам понравилось его качество, а также подход к реализации функциональности. Здесь активно используются современные принципы разработки и прежде всего — модель MVC, когда данные хранятся в одном месте, а отображение делается с помощью специальной подсистемы шаблонов. Есть контроллеры на каждый модуль, реализовано нормальное WebAPI по всей функциональности, код хорошо структурирован, а лидеры проекта много внимания уделяют стилю программирования. Это облегчает нам разработку и поддержку, разделение функциональности на отдельные модули, выделение плагинов и прочую программерскую рутину. Помимо прочего, лицензия BSD идеально подходит создателям коммерческого продукта — она не содержит связанных с т.н. «копилефтом» ограничений. Последняя в списке, но не последняя по значимости причина — раньше наши разработчики уже использовали FreeBSD в своих проектах. Имеющийся опыт и навыки ни в коем случае нельзя сбрасывать со счетов.

Начало работы

Сотрудничество с командой OPNsense началось с создания русской локализации для основной ветки проекта. Это было затратно, профессиональные переводчики работали несколько месяцев, чтобы русифицировать огромное количество элементов интерфейса, системных сообщений и справочной информации с большим количеством специальных терминов — все это мы до сих пор поддерживаем в актуальном состоянии. Кстати, когда мы сталкиваемся с ошибками в OPNsense, то предлагаем исправления, улучшения и доработки продукта, которые становятся доступны всем желающим совершенно бесплатно, так что и «наживающиеся на бесплатном ПО барыги» внесли свою лепту в развитие свободного кода.

Вливаемся в мейнстрим

Ребята из OPNsense оказались готовыми к сотрудничеству. Когда мы делаем какие-то изменения, ключевые разработчики проекта реагируют оперативно и сразу же дают обратную связь. Если мы отдаём новую функциональность в основную ветку базового проекта, поддерживать её приходится самим, но поиск ошибок и тестирование серьезно упрощаются. Есть моменты, с которыми нам тяжело жить, но с ними приходится мириться — плюсы свободного ПО перевешивают минусы.

Если мы делаем затрагивающий большой объём кода рефакторинг, разработчики OPNsense не всегда могут быстро переварить изменения. У них просто не хватает для этого ресурсов, поэтому в Traffic Inspector Next Generation уже доступны функции, которых в базовой версии до сих пор нет. В OPNsense используется стандартный syslog, мы же давно перешли на syslog-ng — он позволяет, например, писать логи в БД. Система протоколирования много чего затрагивает, объём изменений получился огромным. Для переноса кода в OPNsense мы попытались разбить его на несколько итераций, но процесс пока не завершён.

Второй момент связан с изменениями веб-интерфейса. В OPNsense модель MVC используется далеко не повсеместно, унаследованный код там тянется ещё с pfSense и нам предложили перевести его на новые «рельсы». Переделку мы начали со страницы работы с сертификатами, но когда в OPNsense прикинули объём необходимых для принятия нового кода в основную ветку работ, волосы у них встали дыбом.

Проблемы…

Хоть мы и являемся официальными контрибьюторами OPNsense, это не даёт повышенных привилегий на изменение кода свободного продукта. Своё хозяйство сообщество контролирует самостоятельно, протестировать и принять наши изменения разработчики проекта должны сами. Мы только можем им предложить переделать какие-то решения, чтобы облегчить прохождение изменений.

Накопление различий с кодом основного продукта — серьёзная проблема. Мы стараемся строить свою работу таким образом, чтобы максимально облегчить процесс обновления. Когда обновление OPNsense переносится в Traffic Inspector Next Generation, наша функциональность не должна ломаться и она, в свою очередь, не должна ломать новую функциональность OPNsense. Важно понимать, что Traffic Inspector Next Generation не является независимо развивающимся форком — взаимодействие продуктов происходит постоянно и держать их в неконфликтующем состоянии трудно. Объём работы бешеный, но с этим приходится жить. Не получится просто воткнуть свой логотип и брать за продукт за деньги, хотя некоторые умники пытаются это делать.

…и решения

Разбираемся с проблемами следующим образом: если есть возможность добавить функциональность плагином, мы так и поступаем. У OPNsense хорошо продуман API для встраивания плагинов, он редко меняется и вопросам обратной совместимости разработчики уделяют достаточно внимания. Когда выходит новая версия OPNsense, мы тоже поднимаем новую версию Traffic Inspector Next Generation и актуализируем кодовую базу без лишней головной боли, хотя совсем без головной боли обойтись не получается.

Ещё один интересный момент, не все свои наработки мы отдаём в OPNsense. Какие-то из них нужны только на российском рынке, а у проприетарных модулей есть лицензионные ограничения. В нашей стране действует закон, который обязывает, например, кафе с точкой доступа Wi-Fi производить идентификацию клиента. В Traffic Inspector Next Generation это делается через SMS, но за рубежом локальная российская кухня никому не интересна.

Можно упомянуть антивирус Касперского — для него у нас собран пакет с использованием библиотек «Лаборатории Касперского». В основную ветку такой пакет не интегрируешь. Есть ещё российский фильтр ресурсов по категориям NetPolice, предполагающий подписку на сервис, ну и, конечно, связанные с сертфикацией ФСТЭК вещи. Такие, например, как проверка целостности системы и оповещение администраторов о её нарушениях.

Разбиение функциональности на модули и активное использование плагинов позволили нам эффективно отделить мух от котлет, но между двумя продуктами накопилась масса различий. Помимо уже упомянутых можно назвать модуль отчётов по трафику и единый Центр управления для работы с несколькими устройствами Traffic Inspector Next Generation. Ещё есть плагин для интеграции с Microsoft Active Directory, система ограничения доступа к сетевым ресурсам по IP- и MAC-адресам и NTLM-аутентификация. Часть этих вкусностей рано или поздно появится в OPNsense, но многих там не будет никогда.

Машина различий

Самое главное отличие: Traffic Inspector Next Generation — это аппаратно-программный комплекс, т.е. коробочное решение. Мы берём железо ведущих производителей серверного оборудования, создаём для него софт и продаём все, что называется, одним куском. Плюсы очевидны: заказчик получает не требующий сложной настройки продукт без проблем с программной совместимостью. При этом у него есть ограниченная гарантия и, разумеется, бесплатная техническая поддержка по телефону и электронной почте.

Создатели свободного ПО не могут протестировать все аппаратные платформы и предлагают использовать софт на свой страх и риск. Из поддержки у них есть только документация и форумы, которые у нас тоже имеются (притом русскоязычные). Добавьте сюда дополнительную функциональность, о которой мы уже рассказали, и вы получите русифицированный OPNsense на стероидах вместе с готовым к употреблению железом — за это можно заплатить. Тем более, в продаже имеются конфигурации с сертификатом ФСТЭК и вот этого OPNsense точно вам не предложит по объективным причинам.

Вывод: свободное ≠ бесплатное

Использование свободных продуктов в качестве основы для коммерческих решений требует комплексного подхода и наличия подготовленной команды. Большое сообщество разработчиков быстрее замечает и исправляет ошибки, а также отслеживает внесенные изменения. В нашем случае получается двойной контроль: мы проверяем код OPNsense, а другие участники проекта инспектируют наш открытый код. В результате растёт качество и увеличивается надёжность обоих продуктов. Сложно не заметить и уменьшение расходов: нам не нужно оплачивать лицензии на операционную систему, средства разработки и реализующие UTM-функциональность модули. Это не значит, что мы получили всё совершенно бесплатно. Разработчики команды Smart-Soft посвятили немало лет созданию решений для платформы FreeBSD. Наш опыт — значительная составляющая стоимости создания Traffic Inspector Next Generation, да и прямых финансовых затрат здесь тоже немало. Разработка решений на базе СПО — удовольствие далеко не бесплатное и если этот момент упустить, сделать что-то достойное не получится.

Автор: Smart_Soft

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js