Firewall level какой выбрать

Обновлено: 03.07.2024

Безопасность компьютера, подключенного к сети, не была поводом для серьезного беспокойства разве что на заре компьютеризации. В наши дни ситуация кардинально изменилась, и операционная система, не снабженная надежным и функциональным файрволом, вряд ли может претендовать на звание «сетевой». Но все это не про FreeBSD - ее по этому критерию можно назвать «трижды сетевой»!

Краткое введение в вопрос

Для начала разберемся, что такое файрвол. Это подсистема, выполняющая обработку трафика, проходящего через интерфейсы машины. Определение не совсем академическое, но, надеюсь, понятное. Под обработкой может подразумеваться фильтрация пакетов на основании определенных правил (что пропустить, а что отбросить), модификация пакетов (например, подмена IP-адресов в ходе NAT-трансляции), перенаправление пакетов (форвардинг), контроль использования доступной полосы пропускания (трафик-шейпинг).

Изначально файрволы проектировались для работы на сетевом и транспортном уровнях модели OSI, то есть фильтрация выполнялась на основе информации, которую можно было получить из заголовков IP- и TCP/UDP-пакетов. Однако зачастую файрволы вторгаются и на другие уровни стека: канальный уровень (фильтрация по MAC-адресам), прикладной уровень (использование специфических для FTP-пакетов параметров) и т.д.

FreeBSD готова предложить тебе целых три файрвола, на любой вкус: родной IPFirewall (ipfw), присутствующий в ней с доисторических времен; IPFilter (ipf), разрабатываемый как независимый продукт и доступный для целой плеяды ОС (разве что Windows осталась обделенной); и PacketFilter (pf), портированный из OpenBSD, слава о безопасности которой уже, наверное, достигла ближайших к нам обитаемых миров. Поддержка ipf появилась во FreeBSD 4.0, pf чуть позже - начиная с 5.3. На границе четвертой и пятой ветвей претерпел некоторые изменения и доморощенный ipfw, предоставив пользователям ряд дополнительных возможностей. В 5.х новая версия стала доступна под именем ipfw2.

Поскольку сейчас проблемы стабильности пятой ветки в версиях 6.x успешно преодолены, то нет особого смысла ставить более древние версии. Так что будем считать, что «из коробки» тебе доступны все три файрвола - ipfw/ipfw2, ipf и pf.

Все включено

Инсталляция - это самый простой вопрос. Все три рассматриваемых фильтра включены в базовую поставку FreeBSD, и для их использования требуется либо загрузить модули, либо вкомпилировать их поддержку в ядро. Лично мне больше по душе второй путь (видимо, привычка), тем более что поддержка некоторых дополнительных опций (например, очередей ALTQ) возможна только из ядра.

Для того, чтобы подгружался тот или иной модуль, достаточно в /etc/rc.conf указать соответствующие опции (о них будет сказано ниже).

Подсказки о том, как собрать поддержку этих файрволов в ядре, ты найдешь в /usr/src/sys/conf/NOTES. Основные опции:

Инструментарий и конфигурационные файлы

Для инициализации файрволов в системе предусмотрены соответствующие сценарии: /etc/rc.d/. Как и для обычных сервисов, эти скрипты воспринимают команды start и stop. Например, команда /etc/rc.d/ipfw start приводит к следующим действиям: проверяется, доступен ли этот фильтр (в данном случае по переменной sysctl net.inet.ip.fw.enable), и если нет, то предпринимается попытка загрузить модуль ipfw.ko; согласно настройкам в rc.conf, исполняется тот или иной сценарий инициализации (обычно текущий список правил очищается и загружается исходный из указанного в конфиге файла). Аналогично работают и другие сценарии.

Для управления ipfw существует одноименная утилита /sbin/ipfw. Фактически, с ее помощью можно полностью контролировать работу этого файрвола. Подробно с ее синтаксисом можно ознакомиться на странице man ipfw(8). Наиболее часто используемые команды: add (добавить правило), delete (удалить правило), flush (полностью очистить таблицу правил), show (показать текущие правила со счетчиками).

Фильтр ipf управляется семейством более специализированных программ: /sbin/ipf (работа с правилами фильтрации), /sbin/ipfstat (вывод статистики), /sbin/ipmon (сбор логов), /sbin/ipnat (работа с правилами NAT) и т.д. Подробности - на соответствующих man-страницах.

Практически вся работа с фильтром pf выполняется утилитой /sbin/pfctl (смотри man pfctl(8)). Насколько я понял, pfctl (как и ipf) не позволяет работать с отдельными правилами фильтрации прямо из командной строки (как в случае ipfw), но чаще всего возможности загружать правила из файла более чем достаточно (в OpenBSD 4.х это ограничение снято - примечание редактора).

Во FreeBSD основным конфигурационным файлом, отвечающим за работу операционной системы в целом, и за старт соответствующих файрволов в том числе, является /etc/rc.conf. Обычно задаются:

Файлы, указанные в примере, содержат правила фильтрации - именно отсюда происходит инициализация фильтра при загрузке (подробности смотри в документации). Поддержка NAT включается лишь в случае необходимости. Правила для сбора логов опущены (на сей счет смотри /etc/defaults/rc.conf).

Простейший пример

Начнем с чего-нибудь простенького и классического. Здесь и далее будем считать, что rl0 - внешний сетевой интерфейс, а ed0 - внутренний. Например, запретим любой входящий трафик на внешний интерфейс, кроме идущего на порты 80 и 8080; через ed0 разрешим все (здесь и далее правила даются в том виде, в котором они будут заноситься в rules-файлы):

Сразу отметим две вещи. Во-первых, синтаксисы ipf и pf во многом схожи (хотя есть и детали - в ipf нельзя опускать параметр in/out; pf требует указания протокола, если используется фильтрация по порту и т.д.) и заметно отличаются от такового в ipfw. Во-вторых, важно помнить о порядке срабатывания правил. В ipfw пакет проходит по списку до первого соответствия, после чего к нему сразу применяется указанное действие. В ipf и pf действие, соответствующее правилу, запоминается, а пакет продолжает свое движение по списку, и последующие правила могут переопределить действие предыдущих. То есть в этом случае применяться будет последнее совпавшее правило. Это можно переопределить с помощью
ключевого слова quick, которое отменяет дальнейшую проверку.

Особенности посложнее

Как ни странно, но многие умудряются довольствоваться показанными выше простейшими правилами. Однако мощь и гибкость файрволов проявляются в более сложных вещах. Рассмотрим некоторые примеры.

При работе по протоколу TCP сначала устанавливается соединение и затем в рамках этого соединения идет обмен пакетами со схожими характеристиками. Причем если файрвол пропускает первый пакет, то и все последующие в обычной жизни тоже должны быть пропущены. А раз так, то какой смысл прогонять каждый пакет 700-мегабайтного iso-файла по всей цепочке правил, чтобы убедиться в том, что и так уже очевидно? В общем-то, никакого, и потому все три рассматриваемых файрвола поддерживают концепцию «установленного соединения»:

// ipfw
add check-state
add allow tcp from any to any out setup via rl0 keep-state

// ipf
pass out on rl0 proto tcp from any to any flags S keep state

// pf
pass out on rl0 proto tcp from any to any flags S/SA keep state

Так, мы разрешаем соединения, инициированные «изнутри» сети. Обрати внимание, что для ipfw ты можешь поставить правило check-state в любом месте (до него пакеты, принадлежащие установленным соединениям, будут обрабатываться на общих основаниях; если забудешь его указать, динамические правила сработают на первом keep-state), в то время как pf и ipf автоматически вставляют его в начало цепочки. Здесь же демонстрируется способность фильтров работать с флагами заголовков TCP-пакетов.

Натинг, форвардинг и редирект

Еще одной популярной функцией современных файрволов является трансляция сетевых адресов (NAT). В ipfw натинг как таковой не поддерживается и реализуется с помощью внешнего демона natd через divert-сокеты. А ipf и pf реализуют NAT-преобразования непосредственно. Примеры:

// ipfw (должен быть запущен natd на порту 8668)
add divert 8668 ip from 192.168.0.0/24 to any out via rl0
add divert 8668 ip from any to 200.200.200.200 in via rl0

// pf (размещаются в общей конфигурации перед правилами фильтрации)
nat on rl0 from 192.168.0.0/24 to any -> 200.200.200.200/32

Для ipfw, как видишь, используется divert на порт 8668, и нужно самому думать о переброске на этот порт входящих и исходящих пакетов. В ipf и pf все заметно проще - укажи одно правило, а об остальном фильтр позаботится сам. Только не забывай в случае ipf подключать еще и ipnat в /etc/rc.conf (смотри выше). Кстати, nat-правила будут выполняться перед любыми другими - ipnat можно рассматривать как отдельный фильтр, работающий до ipf. Pf и ipf поддерживают также двунаправленную трансляцию между внешним и внутренним адресами - bimap и binat соответственно.

Иногда возникает необходимость выполнить «проброс» внешнего соединения на внутренние адреса. Для этого в ipf и pf используются правила редиректа rdr, в случае ipfw приходится использовать redirect-опции демона natd. Все файрволы поддерживают форвардинг - перенаправление пакетов на произвольный шлюз. В ipfw для этого используется действие fwd, в pf/ipf - опции route-to/fastroute и reply-to.

С NAT-трансляцией связана еще одна вещь - проксирование FTP. Если ты настраивал FTP-сервер, то помнишь, сколько из-за файрвола приходится приложить усилий, чтобы заставить работать пассивный режим (а активный из-за тех же файрволов не сильно любят клиенты). Конечно, открыть верхние порты - самый простой выход, но IPFilter предоставляет для этих целей функцию проксирования соединений на прикладном уровне: он будет анализировать проходящие пакеты и открывать нужные порты динамически, по мере необходимости. Это реализуется добавлением «proxy port ftp ftp/tcp» в конец map-правила (в pf придется использовать штатную программу ftp-proxy). Не путай это с опцией synproxy файрвола pf, которая
отвечает за проксирование TCP-соединений (то есть когда удаленная сторона сначала полностью устанавливает соединение с файрволом, и лишь затем оно перебрасывается адресату).

Трафик-шейпинг

Продвинутой фишкой современных файрволов является возможность управлять доступной полосой пропускания. В ipfw это делается с помощью интерфейса dummynet, в pf - посредством ALTQ. У ipf я поддержки шейпинга не обнаружил, хотя упоминания, что он умеет работать с ALTQ-очередями, встречаются. Например, так можно решить задачу ограничения доступной полосы пропускания (по входящему трафику) до 128 кбит/с:

// ipfw
add pipe 1 ip from any to 192.168.0.0/24
pipe 1 config bw 128Kbit/s

// pf
altq on rl0 cbq queue q_limited
queue q_limited bandwidth 128Kb cbq(default)
pass quick from any to 192.168.0.0/24 keep state queue q_limited

Кстати говоря, ipfw тоже умеет работать с очередями ALTQ (правда, ограниченно). Но для управления самими очередями по-прежнему нужно использовать утилиту pfctl. Также нужно отметить в ipfw поддержку опции prob, которая позволяет отбирать из потока правила с некоторой долей вероятности. Например, правило «add prob 0.2 deny ip from any to any» случайным образом отбросит 20% всего трафика. В частности, это можно использовать для имитации канала с потерями. Аналогичные задачи в pf решаются опцией probability.

Прочие особенности

Из дополнительных функций рассматриваемых файрволов можно отметить следующие:

  • возможность фильтрации по MAC-адресам; стоит отметить, что на сегодняшний день ее поддерживает только ipfw (в OpenBSD при использовании связки bridge + pf фильтрация по MAC-адресам также возможна, смотри мою статью «Файрвол-невидимка» в июльском номере журнала за 2005 год - примечание редактора);
  • балансировка исходящих соединений между несколькими интерфейсами (в pf и ipf поддерживается алгоритм round-robin, когда использующие его несколько правил динамически меняются местами в процессе работы);
  • ipfw и pf способны отслеживать принадлежность сокетов конкретным пользователям и таким образом осуществлять фильтрацию на основе UID/GID владельца соединения.

Ipfw поддерживает также признак jail - правило будет применено только в случае, если пакет принадлежит указанной «тюрьме». Фильтр pf предоставляет уникальную возможность выполнить нормализацию пакетов одним правилом – scrub; также есть antispoof - защита от подмены адресов (опция antispoof работает и в ipfw). Все три фильтра (с поправкой на синтаксис и некоторые детали) умеют работать с различными полями IP-, TCP/UDP-заголовков, включая флаги.

Фильтр pf, помимо всего прочего, поддерживает адресные пулы, которые удобны для балансировки нагрузки между несколькими соединениями и для NAT-трансляции в больших сетях. Также может оказаться полезной функция тегирования - маркировки пакетов с помощью специальных тегов и последующая их обработка по этим тегам. Кроме того, pf умеет определять операционную систему источника пакетов! То есть ты можешь пропускать трафик с *nix-машин и блокировать все пакеты Windows-клиентов.

Из синтаксических особенностей отмечу, что и pf, и ipfw позволяют работать с таблицами – это очень удобный способ группировки различных IP-адресов. Плюс к этому, pf дает возможность использовать списки (при обработке они автоматически развернутся в нужное число правил) и макросы.

Итоги

Как видишь, все три файрвола во FreeBSD достаточно функциональны и удобны в работе. Судя по высказываниям, встречающимся в интернете, большинство отдает предпочтение фильтру pf, как более быстрому, мощному и комфортному в работе. С этим трудно не согласиться, хотя ipfw предоставляет некоторые функции, отсутствующие в других файрволах (фильтрацию по MAC, divert-сокеты). С другой стороны, pf выглядит более удобным при работе с очередями (но при этом требуется пересобрать ядро; а вот dummynet можно подгрузить модулем) и особенно для NAT-преобразований. Несомненными плюсами являются нормализация пакетов, антиспуфинг и целый арсенал самых различных «тонких настроек». IPFilter хорош в случае,
когда приходится администрировать парк разношерстных систем - есть возможность работать с одним и тем же файрволом (я обычно использую ipf в NetBSD, Solaris и QNX - примечание редактора).

Если говорить с точки зрения удобства синтаксиса, то это во многом вопрос личных предпочтений. Таблицы существенно упрощают администрирование крупных сетей, а списки и макросы pf порой могут очень пригодиться. Зато интерактивность ipfw, позволяющая менять состав правил на лету без полной их перезагрузки, весьма комфортна для разного рода экспериментов.

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



Полную версию статьи ты можешь прочитать в мартовском номере Хакера!

Лучший файрвол для Windows

Казалось бы, выбор файрвола для Windows — дело не сложное: устанавливай да пользуйся. Но файрволы для ПК бывают разные, и выбор может стоить усилий и времени. В этой статье мы рассмотрим 8 файрволов и проверим их возможности и умолчательные настройки при помощи простого функционального теста.

Наиболее важные факторы при выборе файрвола для Windows — это простота и легкость настройки, наличие обучающего режима, когда файрвол действует на нервы задает кучу вопросов при попытках выйти в сеть для каждого ПО, а все остальное запрещает. Еще, пожалуй, важны наличие русского интерфейса и бесплатность, а также дополнительные функции.

Лучший файрвол для Windows

Сравнивать будем следующие программы:

  • Comodo Firewall
  • Avast! Internet Security
  • AVG Internet Security
  • Outpost Firewall Pro
  • ZoneAlarm Free Firewall
  • PrivateFirewall
  • GlassWire
  • TinyWall

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

Обычный юзер отличается от продвинутого чисто утилитарным подходом к софту: нажали «Установить» и верим в чудо автоматизации, которое спасет и защитит от злых дядек с их скриптами и троянами. А как там оно устроено внутри, большинству совершенно не важно.

Поэтому условия эксперимента решили максимально упростить. Мы установим каждый из файрволов на чистую ОС Windows 10 x64 и попробуем запустить одну тулзу, которая начинает ломиться на внешний сервер, имитируя подозрительную сетевую активность. Затем мы включим режим обучения и повторим тест снова. Наконец, на третьем этапе мы настроим файрвол на основе белого списка, запретив ему все, что явно не разрешено.

Ну и не будем забывать про важные для нас критерии: стоимость лицензии, язык интерфейса и простоту настройки и установки. А полученные результаты мы потом сравним.

Comodo Firewall

Эта программа получила широкую известность еще в эпоху Windows XP, когда Comodo Firewall был едва ли не самым распространенным бесплатным файрволом в России. Пользуется он популярностью и сейчас. Что, в общем-то, неудивительно: разработчики обещают нам проактивную защиту с HIPS, межсетевое экранирование, защиту от переполнения буфера и несанкционированного доступа, защиту реестра и системных файлов, а также другие вкусные плюшки.

Однако во время установки файрвол вызвал смешанные чувства. Сначала предлагал поставить расширения для Яндекс.Браузера.

Файрвол предлагает установить расширения от Яндекса

Файрвол предлагает установить расширения от Яндекса

А потом, если не обратить внимание на «компоненты» и не выключить все ненужное, установщик инсталлирует на ваш компьютер свой браузер.

Отключение ненужных компонентов файрвола Comodo Забыли отключить ненужный компонент? Получите, распишитесь

Делаем первый тест, и Comodo пропускает утилиту для тестирования файрволов Firewall Tester.

Первый тест Comodo Firewall

Первый тест Comodo Firewall

Включили режим обучения в настройках — и файрвол почему-то никак не прореагировал на нашу тестовую программу, которая успешно подключилась к удаленному компьютеру.

Второй тест Comodo Firewall

Второй тест Comodo Firewall

Только после составления белого списка наконец удалось заблокировать Firewall Tester. Вывод напрашивается противоречивый: Comodo Firewall — очень известный файрвол, но установка ненужного софта портит все впечатление. А результаты теста оказались печальными: для обеспечения безопасности программе требуется основательная настройка.

Avast Premium Security

Кто-нибудь не слышал про компанию Avast Sofware? Все про нее слышали. Однако, помимо известного антивируса, Avast выпускает еще и файрвол, который входит в платный набор программ Avast Premium Security (раньше он назывался Avast Internet Security, но его переименовали — видимо, чтобы избежать путаницы с программой, которую мы рассмотрим следующей). То есть отдельно загрузить и установить файрвол не получится: он идет в дополнение к антивирусу, антиспам-модулю, модулю защиты беспроводных сетей и набору прочих функций, платная лицензия которого стоит 1450 рублей в год на один ПК.

При установке пакета нам предлагают поставить еще и Google Chrome, но от него хотя бы можно безболезненно отказаться.

Установка Avast Internet Security

Установка Avast Internet Security

Сразу после установки чуда не произошло: Firewall Tester успешно преодолела файрвол и установила соединение с удаленным сервером.

Первый тест Avast Internet Security

Первый тест Avast Internet Security

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

Запрос разрешения

Запрос разрешения

Настройки файрвола разбросаны по разным меню, из-за чего найти с первого раза то, что нужно, далеко не самая простая задача. В комплекте поставки Avast Premium Security имеется огромное количество дополнительных инструментов для анализа диска, реестра, эвристики, поиска вирусов. К сожалению нет возможности удалить весь этот функционал, чтобы оставить только один брандмауэр. Кроме того, пробная версия продукта постоянно просит обновиться до версии Pro и заплатить денег. Меня это Напрягает.

AVG Internet Security

Бесплатный антивирус AVG также знаком многим, правда о его эффективности существуют разные мнения. Файрвол (или, как его называют разработчики, «усиленный брандмауэр») тоже не предлагается в качестве отдельного продукта, а идет в комплекте поставки AVG Internet Security, куда входит еще целая куча разных программ, включая антивирус. Бесплатной версии нет, но есть возможность скачать триал и протестировать софтину бесплатно в течение месяца.

Примечательно, что антивирус AVG не так давно был куплен компанией Avast Sofware, но тем не менее продолжает существовать в роли самостоятельного продукта. Что ж, давайте посмотрим, есть ли в нем какие-то существенные отличия от «материнского» проекта.

Установка AVG начинается с узнаваемого окошка инсталлера.

Установка файрвола AVG

Установка файрвола AVG

При первом запуске мы видим уже знакомую картинку.

Первый тест AVG Internet Security

Первый тест AVG Internet Security

Можно смело сказать, что AVG продемонстрировал все то же самое, что и Avast. И в точности так же сумел распознать и заблокировать нашу «вредоносную» программу только после принудительного включения параноидального режима.

Конфигурация файрвола AVG Internet Security

Конфигурация файрвола AVG Internet Security

По результатам теста я пришел к выводу, что AVG Internet Security — это по большому счету Avast! Premium Security, только в профиль только под другой вывеской. Если вам нужен только файрвол, без антивируса, антиспама и прочих свистелок, наверное, стоит поискать другое решение.

Outpost Firewall Pro

  • Официальный сайт: отсутствует
  • Системные требования: Windows XP, Vista, 2003 Server, 2008 Server, 2012 Server, 7, 8, 8.1, 10
  • Лицензия: пробный период 30 дней
  • Стоимость: бесценно
  • Язык интерфейса: русский

В декабре 2015 года Яндекс купил технологию Agnitum, и компания прекратила выпускать и поддерживать Outpost Firewall. Но его все еще можно найти в интернете. Есть также бесплатная версия, но она, как обычно, урезана.

Установка программы типична, но при этом она хотя бы не предлагает в нагрузку тонну дополнительного и не всегда нужного ПО. Сразу после завершения установки Outpost Firewall Pro просит перезагрузить компьютер. Даем согласие и сразу же запускаем Firewall Tester.

Первый тест Outpost Firewall Pro

Первый тест Outpost Firewall Pro

Несмотря на то что Outpost Firewall больше не поддерживается, со своей основной функцией он справляется на отлично даже с настройками по умолчанию. А для любителей покопаться в режимах работы программы имеются настройки правил и возможность включать-отключать другие функции.

Настройки файрвола

Настройки файрвола

Программе ставим однозначный лайк, жаль только, что последняя платная версия больше не поддерживается, поэтому денег за нее занести больше некому (а Яндекс их брать, судя по всему, не хочет). Обновлений тоже ждать не приходится. Печалька.

ZoneAlarm Free Firewall

Компания ZoneAlarm не так широко известна, как Avast и AVG, но тоже увлекается разработкой антивирусов — в свободное от создания бесплатного файрвола время. ZoneAlarm Firewall имеет как бесплатную, так и коммерческую версию. Последняя отличается расширенными настройками, возможностью включать-отключать компоненты, добавлять сложные правила фильтрации трафика и отсутствием назойливой рекламы. Весь остальной функционал продуктов, по заявлениям разработчиков, идентичен.

После установки и запуска файрвола ZoneAlarm пропустил наше соединение.

Первый тест ZoneAlarm Free Firewall

Первый тест ZoneAlarm Free Firewall

Посмотрим, как он себя поведет после небольшой подстройки.

Второй тест ZoneAlarm Free Firewall

Второй тест ZoneAlarm Free Firewall

Увы, но с помощью переключения ползунков и изменения режимов работы программы Firewall Tester так и не получилось заблокировать. Только после явной блокировки это окончательно удалось. Любопытно, что, когда я копался в настройках, ZoneAlarm выдал вот такое окно запроса разрешения.

Режим обучения ZoneAlarm Free Firewall

Режим обучения ZoneAlarm Free Firewall

На скриншоте видно, что у этого файрвола, помимо стандартных вариантов «разрешить», «запретить» и «обучение», есть еще один интересный режим — kill, который вообще не дает запуститься приложению.

Режим kill ZoneAlarm Free Firewall

Режим kill ZoneAlarm Free Firewall

Одна проблема: нужно понимать, что блокируешь. Простой юзер может по незнанию прибить нужную программу, из-за чего у него обязательно отвалится какой-нибудь важный банк-клиент.

PrivateFirewall

Компания Privacyware специализируется в основном на разработке софта для защиты веб-серверов, поэтому файрвол для нее, похоже, побочный продукт жизнедеятельности. Возможно, поэтому PrivateFirewall разработчиком больше не поддерживается, и скачать продукт с официального сайта сейчас не получится. Зато его до сих пор можно найти на файлопомойках независимых ресурсах — правда, последняя актуальная версия датируется аж 2013 годом.

После непродолжительной установки идем в бой.

Первый тест PrivateFirewall

Первый тест PrivateFirewall

Жаль, но первый блин вышел комом — наш нехитрый тест оказался провален. Пробуем еще раз после включения обучающего режима.

Второй тест PrivateFirewall

Второй тест PrivateFirewall

На этот раз файрвол справляется с задачей: появляется окно с кнопками, позволяющими заблокировать Firewall Tester. Третий тест в «параноидальном» режиме программа также проходит успешно, что неудивительно.

Третий тест PrivateFirewall

Третий тест PrivateFirewall

У PrivateFirewall очень простой интерфейс, и даже без знаний английского можно легко в нем разобраться.

GlassWire

В отличие от предыдущих компаний-разработчиков, для GlassWire файрвол — это базовый продукт, что, вероятно, должно положительно сказаться на качестве его работы. Примечательно, что у GlassWire’s Firewall есть как «настольная», так и мобильная версия, но мы будем рассматривать только первую.

Установка программы простая и вполне типичная. По ее завершении приложение покажет нам красивый график нашей сетевой активности. Однако красота важна прежде всего для девушек с пoрнoхaбa произведений искусства, а нас в первую очередь интересуют функциональные возможности файрвола. Запускаем Firewall Tester.

Первый тест PrivateFirewall

Первый тест PrivateFirewall

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

Второй тест PrivateFirewall

Второй тест PrivateFirewall

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

TinyWall

  • Официальный сайт: tinywall.pados.hu
  • Системные требования: Microsoft Windows 7, 8, 10 (x86,x64), Intel Core 2 Duo or Faster Processor, 4 Гбайт RAM. Минимальные еще ниже
  • Лицензия: Freeware
  • Стоимость: бесплатно
  • Язык интерфейса: русский

Эта небольшой бесплатный файрвол — результат трудов венгерского разработчика Кароя Падоша (Károly Pados). Утилита интересна тем, что работает из трея — несколько непривычно. Но при этом уже при проведении первого теста не дает пробиться в сеть нашему «вредоносу».

Первый тест TinyWall

Первый тест TinyWall

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

Второй тест TinyWall

Второй тест TinyWall

Однако при составлении белого списка TinyWall ожидаемо справился с поставленной задачей.

Третий тест TinyWall

Третий тест TinyWall

Выводы: перед нами очень компактный и «облегченный» файрвол с небольшим количеством настроек. Однако этой самой настройки он все равно требует: в варианте из коробки программа мышей не ловит.

Какой файрвол лучше?

Сведем наши результаты в одну табличку.

Лучший файрвол Windows

Если смотреть на выбор файрвола глазами обычного пользователя, то наиболее удачным вариантом будет TinyWall или старичок Outpost Firewall Pro. Несмотря на хорошие показатели GlassWire, рекомендовать эту программу я не стану из-за высокой стоимости. В принципе, можно использовать любой рассмотренный в статье файрвол. Главное — это правильная настройка.

Лично я уже давно использую бесплатный и маленький файрвол TinyWall. Подробно про использование этого фаервола мы рассказывали в статье «Настройка и использование TinyWall».

Иногда получается, что при выполнении очередного проекта, я случайно открываю какие-то обстоятельства, которые, вроде, никто не скрывает, можно даже найти документацию, поясняющую суть… Но многие, включая меня, находятся в плену заблуждений, поэтому не ищут ту документацию, полагаясь на совершенно неверную картину мира. У меня уже намечается целый цикл из статей, в которых я просто сообщаю, что всё, оказывается, не так, как многие (включая меня) думали. Была у меня статья про DMA, была статья про производительность шины PCI Express. К этому же циклу можно отнести статью про конфигурационные ПЗУ для ПЛИС Altera.

Сегодня мне хотелось бы рассказать пару слов про работу Windows Firewall, или, как его называют в русифицированной ОС – брандмауэра. В целом, это очень хорошая штука, но в частности… Оказывается, по умолчанию он работает в достаточно интересном режиме. Как говорится: «А пацаны и не знают». Итак, начинаем разбираться, что там к чему.



Введение

Сначала поясню суть задачи, которую я решал. Мне надо было проверить, насколько корректно работает очередная плата с нашим сервисом All Hardware. Но не та, которую я проверял в одной из прошлых статей, а более навороченная, с ПЛИС Xilinx.

Что представляет собой сервис All Hardware. Это сайт, на который пользователь заходит, авторизуется и получает список различных плат, физически размещённых на сервере. Зачем он это делает? Чтобы поработать с платой, не покупая её. Например, посмотреть, подойдёт ли она ему, или просто поупражняться в работе с конкретным контроллером. Платы предоставляют производители, а сервис – даёт сеанс работы с ними, ограниченный по времени. Пользователь выбирает плату из списка и получает три вещи: IP адрес, номер порта и видео с камеры, которая смотрит на эту макетку. На самом деле, там ещё можно через SSH пробрасывать порты, но в них я – не специалист. По моей части – именно адрес, порт и видео.

Дальше пользователь в среде разработки, которая стоит на его локальной машине, должен выбрать удалённый отладчик (для большинства сред это старый добрый GDB, для Кейла – более извратный, но если интересно – про это можно сделать отдельную статью, к фаерволу это не относится). Туда вбиваются выданные IP и порт, после чего можно начинать сеанс удалённой отладки, ориентируясь о происходящем с платой по картинке с камеры и по проброшенным через SSH-портам.

Таким образом, любой желающий может пощупать работу с различными отладочными платами, не покупая их. При этом, как и в случае с Redd, среда разработки и исходные коды размещаются на локальной машине. На сервер уходит только двоичный код. Но по истечении сеанса работы, автоматика стирает ПЗУ, так что следующий пользователь считать код уже не сможет.

Итак, возвращаемся к теме статьи. Каким боком здесь фаервол? Всё просто. Мне предстояло поработать с ПЛИС Xilinx. А их среда разработки совершенно официально обладает функцией WebTalk. Мне совершенно не хотелось, чтобы она сообщала о моих действиях «куда следует», поэтому среда стояла на несетевой машине. Даже если бы очень захотела – руки у неё коротки. Нет физического канала и всё тут! Но концепция сервиса All Hardware такова, что сеть быть должна. Для проверки машину пришлось временно подключать к проводу (на самом деле, отсутствие сети — это скорее привычка, на той машине всё равно ничего интересного нет). Что делать? Наступить на горло своей паранойе? Ну уж нет! Я решил ограничить среде разработки перечень разрешённых адресов, чтобы она могла работать только с localhost и сервером All Hardware. Не знаю, что будет потом, а сейчас у сервера All Hardware IP-адрес один и тот же. Просто от сеанса к сеансу выдаются новые порты. Итак, цель ясна, приступаем к реализации.

Какой фаервол взять?

На Windows XP и Windows 7 я пользовался Outpost Firewall. Это отечественная разработка. Очень надёжная и удобная. Я даже купил себе по акции пожизненную лицензию на три машины. Однажды этот фаервол помог мне выявить трояна, которого не видел ни один антивирус. Когда я сумел взять файл с телом вируса, я скормил его нескольким антивирусам, поставляющимся на LiveCD. Ни один не заметил ничего подозрительного. А фаервол у меня просто был в параноидальном режиме, откуда я и узнал о подозрительной активности программы.

Всё было хорошо, пока производитель этого фаервола не закрылся при странных обстоятельствах. После этого, я сильно загрустил. Настолько загрустил, что на основном моём ноутбуке до сих пор стоит семёрка с Outpost, так как я не стал искать ему замену. Но среда разработки Xilinx хочет десятку! Прекрасно! Значит, пришла пора осваивать работу с фаерволом, встроенным в эту ОС!

Все мы знаем, что когда какая-то программа пытается получить доступ к сети, этот стандартный фаервол спрашивает у нас, разрешить ей работу с сетью или нет. Мы можем запретить сразу, а можем снять галочку разрешения после, об этом в сети имеется масса руководств. Вот эти галочки:


Это знают все. Но какова ценность этих знаний? Я опущу свои мысли, которые одолевали меня при чтении массы однотипных статей «как запретить приложению выход в сеть», не рассказывающих, как его не запретить, а только ограничить. Лучше я покажу свои выводы на специально сделанном для этого примере. Напишем два простейших консольных приложения.

Сервер

Первое приложение будет прикидываться сервером. Оно принимает UDP-пакеты, в которых приходят строки, и отображает их на экране. Для того чтобы мы говорили об одном и том же, вот его исходный текст на С++:

Запускаем эту программу, передав в качестве аргумента номер порта (скажем, 1234) и предсказуемо получаем запрос от фаервола:


Разрешим ему сетевую активность… Пусть он пока ждёт, а мы напишем клиентскую часть в виде другого EXE-шника.

Клиент

Пусть наш клиент шлёт серверу строки с крутящейся палочкой. Вот его текст:

Запускаем, указав адрес сервера и порт, который был у сервера (у меня это 192.168.1.95 и 1234), после чего в серверном окне начинает бежать чуть иная, чем я хотел, но всё же палочка:


Но волнует меня не то, что символ “\r” не возвращает каретку в начало строки, а то, что клиент – это отдельный процесс… Запускаемый из совершенно отдельного файла. А фаервол не запросил у меня разрешения на его сетевую активность. Вместо этого, он разрешил её сам, даже не поставив меня в известность о том, что программа куда-то полезет. Как так?

Немного теории о режимах работы фаервола

По умолчанию, Windows-фаервол разрешает все исходящие соединения, если они не запрещены явно. То есть, к нам не смогут подключиться извне, но если какая-то программа проникла на нашу машину (или мы поставили её добровольно), она вполне может отсылать, что угодно, и никто ей по умолчанию это не запретит!

Собственно, вот соответствующая настройка фаервола:


Разрешено всё, что не запрещено. Приложению можно явно запретить активность. Именно этому посвящено огромное количество статей в Интернете… Но троян заберётся на нашу машину незаметно, мы и не догадаемся, что именно его надо занести в запрещённые приложения. Опять же, это не решает моей задачи, вынесенной во введение статьи. Мне надо оставить доступ к тем адресам, которые я разрешил и запретить все остальные.

Чтобы это сделать, надо перевести фаервол в режим «запрещено всё, что не разрешено» для исходящих соединений. Я вечно путаюсь, как войти в соответствующий пункт меню… Ага, нашёл…


И там сначала выбираем вкладку, соответствующую активному профилю (на моём рисунке это был «Общий профиль», а затем переключаем список выбора «Исходящие подключения» из «Разрешить (по умолчанию)» в «Блокировать».


Всё, мы можем спать спокойно? Увы, нет. Если бы всё было так просто – уверен, компания Microsoft сразу выбирала бы режим «Блокировать» для всех. Жаль, но всё только начинается.

Немного о прикладном мазохизме

Итак. Допустим, вы включили режим блокировки для исходящих… Сразу умерло всё, включая браузеры. В целом, никто не мешает в любой момент вернуть выбор в старое положение и откатиться к исходному варианту. Но давайте посмотрим, что нам вообще даёт новый режим. Мы получаем список правил. И у этих правил можно задать безусловное условие разрешения, а можно задать для приложения список открытых портов и список открытых адресов. Адреса можно задавать группой. Вот окно настройки портов:


Вот окно настройки адресов:



Мало того, никто не мешает открыть порт для любых программ, ограничив список допустимых адресов ему. То есть, мы говорим не «Программе такой-то разрешить доступ к портам таким-то», а «Всем программам, работающим через порт такой-то, разрешить работу, ограничив адреса следующей группой».

Всё замечательно, кроме одного. Если список правил для входящих соединений нам формирует система, то для исходящих всё надо добавлять самому. Как я говорил, у меня умер браузер – мне пришлось добавить его в разрешённые исходящие самостоятельно. Как настраиваются адреса, я не буду описывать, статья не об этом. Статей про настройку правил (с целью блокировки, правда) – пруд пруди. В целом, обычно я находил подходящее правило для входящих, копировал имя файла оттуда, после чего – создавал правило для исходящих, указав тот же файл. Ну, и разрешал активность этой программе.

Когда у меня возникла проблема с подключением к VPN в офисе, я поисследовал список готовых правил и нашёл вот такое (я заранее знал, что у нас VPN подключение идёт по протоколу L2TP):


Правило создано за нас, но не активировано. Я зашёл в его свойства, активировал его, после чего слева в списке появился зелёный шарик с галочкой, а VPN-соединение с офисом заработало.

Но так или иначе, а в целом, работа с таким фаерволом попахивает мазохизмом. Надо иметь железную волю, чтобы не закричать: «А надоело это всё» и не вернуться к старому режиму работы. Я уже почти дошёл до этого состояния (благо опыты с Xilinx для All Hardware уже были завершены), но один мой знакомый подсказал мне красивое решение.

Надстройка над штатным фаерволом

Оказывается, есть официально бесплатная программа Windows Firewall Control.


Она сама по себе ничего не делает, а просто управляет фаерволом, встроенным в Windows, предоставляя очень удобные интерфейсы. Теперь не надо бегать через кучу меню, чтобы что-то настроить. Все настройки удобно и компактно собраны на нескольких вкладках. Расписывать все функции этой программы я не буду. Цель статьи – не описать её, а просто отметить её существование. Дальше – все желающие смогут найти специализированные статьи, зная имя Windows Firewall Control.


Я могу разрешить ему доступ, после чего будет автоматически создано правило, я могу запретить доступ, я могу заблокировать приложение однократно.

Вот я ради интереса нашёл автоматически созданное правило в штатном списке фаервола и ограничил ему список доступных адресов:


В общем, с этим приложением жизнь стала намного проще даже при использовании штатного Windows Firewall. Настолько лучше, что эта машина с Windows 10 осталась в сети, ведь она уже не так беззащитна, как была до того.

Заключение

Штатный Windows Firewall по умолчанию работает в таком режиме, что любая программа может начать отсылать данные, о чём пользователь даже не будет проинформирован. Это никто не скрывает, но не все об этом знают. Можно, конечно, поставить сторонний фаервол, но вполне достаточно перевести штатный Windows Firewall в режим «запрещено всё, что не разрешено». К сожалению, при этом поддержка сетевой работоспособности штатными средствами превращается в ад. Но сторонняя официально бесплатная программа Windows Firewall Control устраняет это неудобство.

Будете ли вы пользоваться связкой из штатного фаервола и этой программы, либо достанете сторонний фаервол, вопрос открытый. Но то, что использовать штатный фаервол в режиме по умолчанию несколько боязно, по-моему, не подлежит сомнению.


Насколько безопасна ваша сеть? Используете ли вы файрвол для защиты вашей сетевой инфраструктуры?

Ранее я писал об управляемых облачных файрволах и получил предложение написать о бесплатных файрволах или файрволах с открытым исходным кодом.


Вот, пожалуйста!

Следующие бесплатные файрволы отличаются от файрволов веб-приложений. Они служат для защиты инфраструктуры, а не кода или приложения.

1. pfSense

Это решение для обеспечения безопасности с открытым исходным кодом на основе ядра FreeBSD. pfSense – это один из ведущих сетевых файрволов с коммерческим уровнем функционала.

pfSense доступно как оборудование, виртуальное устройство и загружаемый исходник (общая версия).


Бесплатно вы получаете общую версию.

Мне нравится их исчерпывающая документация, хорошо понятная и простая в использовании. Вот некоторые из значимых упоминаемых особенностей pfSense:

  • файрвол — фильтрация IP/портов, ограничение соединений, работа на канальном уровне, нормализация пакетов;
  • таблица состояний — по умолчанию все правила находятся в отслеживаемом состоянии, множественные конфигураций подходят для обработки состояний;
  • серверная балансировка нагрузки — встроенный балансировщик нагрузки для ее распределения между несколькими серверами;
  • NAT (преобразование сетевых адресов) — переадресация портов, отражение;
  • HA (высокая доступность) — переход на вторичный сервер, если основной дал сбой;
  • мульти-WAN (глобальная компьютерная сеть) – использование более чем одного интернет-соединения;
  • VPN (виртуальная частная сеть) — поддержка IPsec и OpenVPN;
  • создание отчетов – сохранение информации об использованных ресурсах;
  • мониторинг – мониторинг в режиме реального времени;
  • динамический DNS – включено несколько DNS-клиентов;
  • поддержка DHCP Relay.

Поразительно, не так ли?

Кроме того, у вас также есть возможность устанавливать пакеты всего одним щелчком мыши.

  • безопасность — stunner, snort, tinc, nmap, arpwatch;
  • мониторинг – iftop, ntopng, softflowd, urlsnarf, darkstat, mailreport;
  • создание сети — netio, nut, Avahi;
  • маршрутизация — frr, olsrd, routed, OpenBGPD;
  • обслуживание — iperf, widentd, syslog-ng, bind, acme, imspector, git, dns-server.

2. IPFire

IPFire основан на Netfilter и ему доверяют тысячи компаний по всему миру.


IPFire можно использовать как файрвол, прокси-сервер или VPN-шлюз — все зависит от того, как вы настроите его. Он обладает большой гибкостью в настройках.

IDS (система обнаружения вторжений) является встроенной, поэтому атаки обнаруживаются и предотвращаются с самого начала, а с помощью дополнения Guardian вы можете осуществлять автоматическую профилактику.

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

3. OPNSense

OPNSense является ответвлением pfSense и m0n0wall. Графический интерфейс доступен на нескольких языках, таких как французский, китайский, японский, итальянский, русский и др.


OPNSense обладает многими серьезными уровнями безопасности и функциями файрвола, такими как IPSec, VPN, 2FA, QoS, IDPS, Netflow, Proxy, Webfilter и т.д.

Он совместим с 32-битной или 64-битной системной архитектурой и доступен для загрузки как ISO-образ и USB-установщик.

4. NG Firewall

NG Firewall от Untangle — это единая платформа, где вы можете получить все необходимое для защиты сети своей организации.


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

В бесплатной версии вы получаете доступ к самой платформе NG Firewall, бесплатные приложения и 14-дневную пробную версию платных функций.

5. Smoothwall

Smoothwall express — это бесплатное решение с простым веб-интерфейсом для настройки и управления файрволом.


Smoothwall express поддерживает LAN (локальную сеть), DMZ (демилитаризованную зону), внутренний и внешний сетевой файрвол, веб-прокси для ускорения, статистику трафика и др.
Выключение или перезагрузка возможны непосредственно через веб-интерфейс.

Примечание: Следующие две программы предназначены только для серверов Linux.

6. ufw

ufw (несложный файрвол) работает с Ubuntu. Для управления системой фильтрации пакетов ядра Linux (Netfilter) он использует интерфейс командной строки.

7. csf

csf (ConfigServer security) протестирован и поддерживается на следующих ОS и виртуальных серверах:

  • RHEL/CentOS
  • CloudLinux
  • Fedora
  • OpenSUSE
  • Debian
  • Ubuntu
  • Slackware
  • OpenVZ
  • KVM
  • VirtualBox
  • XEN
  • VMware
  • Virtuozzo
  • UML

Я надеюсь, что вышеперечисленные бесплатные решения для файрвола помогут вам сэкономить деньги и защитить вашу инфраструктуру от взлома.

Читайте также: