Правила для Jetico Personal Firewall

Чуть раньше я уже писал про лучший на мой взгляд файрвол для Windows. И обещал выложить свои правила для него. Что я и делаю. Собственно сами файлы ниже, а вначале некоторые объяснения по поводу того, как именно я представляю себе файрвол в ОС Windows.

  • Персональный файрвол для винды это инструмент который позволяет задать ограничение для программ выполняющихся в винде и для служб самой винды.
  1. Какие типовые задачи должен позволять решать этот инструмент?
    1. Возможность накладывать ограничения на сетевой траффик на уровне IP и ниже (пакетная фильтрация).
    2. Возможность задавать ограничения на сетевой траффик в приязке к приложениям, этот траффик генерирующим (фильтрация на уровне приложений).
  2. Кроме того от файрвола хотелось бы:
    1. Простой формы представления всех правил и настроек.
    2. Возможность протоколирования всех событий (прохождение пакетов, срабатывание правил и т.д.).
    3. Возможность задавать шаблоны правил, которые затем можно легко применять к разным программам.
    4. Возможность задавать “Зоны” - диапазоны IP-адресов, которые затем можно использовать в правилах.
  3. Дополнительные возможности, которые может предоставлять файрвол:
    1. Базовые функции IDS (Intrusion Detection System)
    2. Отслеживание windows-специфичных механизмов, которыми могут воспользоваться (и пользуются) вредоносные программы, чтобы получить доступ к сети (hooks, внедрение в код дочернего процесса, скрытый запуск других программ (в первую очередь браузеров) и т.п.)

Фильтрация траффика на уровне приложений не относится к функциям файрвола. Да, файрвол может предоставлять интерфейсы для плагинов, позволяющие плагинам осуществлять такую фильтрацию (кэширование DNS, вырезание банеров и поп-апов из HTTP, проверка антивирусом файлов, загружаемых по тем или иным протоколам), но это не должно быть встроенным в его ядро (кивок в сторону Нортонов, Касперских и им подобных).

Собственно мой выбор пал на Jetico потому что это единственный файрвол, который соответствует всем перечисленным выше требованиям (кроме пункта 3.1 - обнаружение атаки еще можно реализовать, создав правило, соответствующее этой атаке, но вот реализовать реакцию на нее в виде автопереконфигурирования файрвола - нет). При этом он крайне стабилен и, что самое главное, бережно относится к системным ресурсам.

Если кому интересно, из конкурентов я пробовал как минимум следующие:

  • Agnitum Outpost Firewall Pro
  • ZoneAlarm Pro
  • Sygate Personal Firewall Pro
  • Kerio Personal Firewall
  • AtGuard
  • Norton Personal Firewall
  • Tiny Firewall

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

Все программы можно разделить на три класса:

  1. Доверенные программы, к которым не надо применять никаких ограничений.
  2. Программы, которым разрешено соединяться только с определенным сервисом на определенном сервере.
  3. Программы, которым запрещено все.

При этом для программ из первого класса надо иметь возможность задавать ограничение по “Зоне”:

  1. Разрешено соединение только с локальным компьютером.
  2. Разрешено соединение с компьютерами из домашней сети.
  3. Разрешено соединение с компьютерами из локальной сети провайдера.
  4. Разрешено соединение со всеми.

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

Перейдем к программам из 2го класса.

Почему-то во многих файрволах (и JPF с правилами по-умолчанию не исключение) принято так или иначе задавать правила для приложений в виде “Программа The Bat! - это почтовая программа и она должна ходить только на порт 25 и 110″. К чему это приводит? Либо пользователь вынужден переодически тыкать мышкой в всплывающее окно с сообщением, что программа полезла куда-то еще (Особенно часто такое бывает с браузерами, потому что пользователи обычно забывают указать, что помимо 80го порта есть еще https (443), ftp-control (21), прокси (1080, 3128), да и вообще нередко встречаются веб-сервера на экзотических портах не говоря уже о забавном соедиении с ftp-data в пассивном режиме). Забавнее бывает, когда к этому правилу еще прибавляют “а на остальные ей ходить нельзя” и потом долго разбираются с вопросом “А почему у меня не работает IMAP (POP3S, IMAPS, SMTPS - подставьте по вкусу)?”

Но самое забавно впереди: допустим для некоторой почтовой программы мы-таки зададим необходимые ограничения по портам. И что? Это защитит нас от гнусных хакеров (”лишнего” интеллекта программы)? На самом деле не очень. Да, если вышеупомянутый TheBat! все же полезет на вебсайт производителя с целью поинтересоваться своей легальностью (чего он все же не делает), то мы это заметим, но ведь он может поступить хитрее: отправить что-либо через 110й порт на сервере, контролируемом производителем (или злоумышленником, если мы говорим о попытке взлома).

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

Что касается программ из 3го класса (”Программы, которым запрещено все”), то очевидно, что это вырожденный случай ограничения по зоне.

Очевидно, что не все программы можно отнести к этим 3м (а точнее теперь уже 2м) классам. Самый очевидный контрпример - отнесение программы к 1му классу, но введение дополнительных правил, которые разрешают отдельные соединения вне расрешенной для программы зоны или, наоборот, запрещающие какие-то соединения внутри (случай, когда можно все, кроме как стучать разработчику).

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

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

Ура. Теперь можно перейти к описанию собственно моих правил. Хотя нет :) Вначале еще несколько слов о внутренней логике работы JPF, которая мне показалась не совсем очевидной и заставила разбираться с ним пару дней, прежде чем я понял что к чему.

Несмотря на то, что все правила JPF вынесены в одну таблицу в их обработке есть несколько особенностей. Обработка правил инициируется в трех случаях:

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

Если обрабатывается взаимодействие процессов, то JPF заходит из корневой таблицы только в те, в которых существуют правила “Process Attack”.

Если обрабатывается входящий или исходящий пакет, то переход идет только в таблицы с правилами типа “System Protocol” и “System IP” и “Application”. Надо отметить, что Stateful inspection срабатывает не только на пакеты, приходящие в рамках уже установленной сессии, но и на пакеты приходящие на порт, который в данный момент кто-то слушает.
И, наконец, при обработке отправки/приема пакетов приложениями переход выполняется только в таблицы с правилами типа “Application”.

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

Для тех, кто не понял:

Значит алгоритм на псевдоформальном языке.

Пришел пакет

PF:
для каждой таблицы типа нетворк или IP в корневой таблице
{
для каждого правила из таблицы
{
если выполняются все условия правила, то РЕЗУЛЬТАТ:=вердикт правила;
goto AFTER_PF;
}
}
РЕЗУЛЬТАТ:=???(никогда не интересовался какой у джетики вердикт по-умолчанию)
AFTER_PF:
если РЕЗУЛЬТАТ==REJECT отбросить пакет и выйти из обработчика
AF:
для каждой таблицы типа application в корневой таблице
{
для каждого правила из таблицы
{
если выполняются все условия правила, то РЕЗУЛЬТАТ:=вердикт правила;
goto AFTER_AF;
}
}
РЕЗУЛЬТАТ:=???(никогда не интересовался какой у джетики вердикт по-умолчанию)
AFTER_AF:
если РЕЗУЛЬТАТ==REJECT отбросить пакет и выйти из обработчика
передать пакет дальше в стек винды и выйти из обработчика

Теперь наконец-то про мои правила. Хотя нет :)) Про зоны. Дело в том, что в Jetico есть одна фича, которая плохо видна невооруженным взглядом: это файлик settings.xml - из гуевого конфигуратора “Configuration Wizard” можно лишь задать две зоны: “Trusted” и “Blocked” (может я что и путаю, давно им пользовался). А вот если открыть его в текстовом редакторе - возможностей намного больше (ищите в докуметации, если там написано, хотя я не уверен). В частности там можно задать произвольное количество различных зон. У меня это “Blocked Zone” (которая на самом деле пустая, так как у меня нет сетей-недоброжелателей, которые надо было бы блокировать), “Infoline Zone” - зона в которую я выпускаю программы, работающие только в локальной сети Infoline (это UKCable++, FTP-сервер и т.п.) и “Trusted Zone” - то, что находится внутри моей домашней сети (второй компьютер, виртуальные машины VmWare и т.п.). Соответственно имена этих указаны во многих правилах вместо диапазонов.
И вот наконец правила:

Во-первых практически во всех таблицах есть в начале и в конце отключенное правило с вердиктом continue, которое можно использовать в целях отладки.

Таблица Process Attack Table - ничего особенного, точно так же как у авторов JPF просто правило ask в конце, которое добавляет новые правила при необходимости.

Таблица Protocols Table - разрешает ARP и WiFi.

Таблица IP Table - разрешает все для TrustedZone, запрещает все для BlockedZone, для зоны InfolineZone разрешает пинговать себя и для зоны Internet (ну на самом деле такой зоны нет, прото для единообразия так таблица названа) запрещает некоторые атаки и разрешает все что надо для работы. Все правила там прокомментированы вполне пристойно.

Таблица Application Table - в самой таблице заданы только несколько правил для svchost.exe разрешающие DNS и DHCP. В принципе в этой таблице можно размещать и другие правила созданные вручную. А также из этой таблицы вызывается таблица Ask User в конце которой выводится запрос к пользователю (правила сгенерированные этим запросом сохраняются тоже в этой таблице).

В таблице Application Table (и ее подтаблице Ask User) в качестве вердиктов можно использовать следующие таблицы:

  • AccessToNetworkOnly - для приложения будет разрешен доступ к сети (и открытие сокетов), но соединяться оно само ни с чем не сможет (даже с локальными сервисами). Зачем это надо: Например приложение PuntoSwitcher устанавливает общесистемный хук. При старте оно также хочет получить доступ к сети (access to network). Мы можем запретить ему это, но тогда все приложения, к которым будет прицеплен установленый пунтосвитчером хук (то есть в данном случае все гуевые приложения), не смогут получить доступ к сети (а то мало ли что за хук он установил). Но мы-то знаем, что он ничего плохого не делает и поэтому просто запретим ему соединяться с другими серверами (да и с локалхостом тоже), но доступ к сети все-таки дадим.
  • LocalHostOnly - доступ до локальных адресов.
  • TrustedOnly - только до зоны Trusted (например у меня TrustedOnly стоит для svchost.exe, чтобы можно было использовать shared folders внутри домашней сети).
  • InfolineOnly - только до локальной сети Инфолайна.
  • FullAccess - полный доступ.

Таким образом при попытке приложения получить доступ к сети мы можем сразу указать максимальную для него (приложения) зону доступа из выпадающего меню:

JPF Question

Возвращаясь к введенным ранее классам приложений:

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

На этом на сегодня достаточно. Если есть какие-то вопросы или замечания - пишите в комментариях.

PS. В моих правилах отсутствуют правила для PPPoE, так как PPPoE настраивается модемом. Если у вас он настраивается компьютером, то надо добавить соответствующие правила в таблицу Protocol Table.

Скачать правила для Jetico Personal Firewall.

Файлы из архива распакуйте в C:\Program Files\Jetico\Jetico Personal Firewall\Config

NB! JPF проверяет для бинарников контрольные суммы, поэтому, если у Вас отличная от моей версия винды (у меня XP SP2 Eng), то поправьте правила для svchost.exe в таблице Applications table (DNS и DHCP) - просто выберете в контекстном меню “Редактировать” и задайте в качестве приложения свой svchost.exe.

RSS feed | Trackback URI

31 Comments »

Comment by f3ath
Comment by GQ
2006-05-30 20:04:34

поправил урл.

 
 
Comment by KA6AH
2006-05-30 20:26:34

А как же правила “все, кроме…” как раз для программ, любящих ходить куда не надо и спрашивать про легальность?

Comment by GQ
2006-05-30 20:32:43

Говоришь, что эта пограмма обрабатывается таблицей FullAccess - создается соответствующее правило, а перед ним добавляешь свое правило запрещающее что не надо. (Ну или вначале заставляешь программу полезть куда не надо - чтобы JPF спросил - добавляешь запрещающее правило, а потом уже пытаешься пойти куда надо и добавляешь правило с вердиктом FullAccess).
Потом подправлю статью, чтобы там это было более очевидно.

 
 
Comment by Anonymous
2006-06-01 10:13:11

Молодец конечно, что со всем разобрался, но какой же это геморрой! :( Подобная настройка в обычном персональном файере просто недопустима, это ж какой-то КОШМАР для пользователей!!! Может всё-таки во второй версии (если она конечно всё-таки будет) всё сделают достаточно понятно и прозрачно.

Comment by GQ
2006-06-01 13:11:09

Для профессионала тут все понятно и главное намного прозрачнее, чем в других файрволах. Единственное, что запутывает, это размещение всех типов таблиц в одном корне. ИМХО сделали ли бы три корневых таблицы: для приложений, пакетов и хуков/аттак - было бы понятнее.

Comment by Anonymous
2006-06-02 17:28:26

Профессионалов единицы, а обычных пользователей большинство. Может быть ещё и поэтому разработчики оставили его бесплатным. потому как вряд ли бы его кто покупал. Лично для меня ПОНЯТНЫМИ и ПРОЗРАЧНЫМИ являются настройки в Kerio Personal Firewall. Единственный его минус для меня в его ресурсоёмкости (слишком сильно грузит процессор при больших скоростях в локалке, порядка 5-10 Мбайт/с).

Comment by GQ
2006-06-03 17:24:46

Меня не интересуют “обычные пользователи”. Керио - глюкавый.

 
 
 
 
Comment by AnexeR
2006-06-05 14:13:10

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

Comment by GQ
2006-06-06 22:40:27

В общем, да, конечно можно, но в том-то все и дело, что для персонального использования это лишние заморочки. По крайней мере такова моя ИМХА.

 
 
Comment by lola
2006-07-09 04:26:48

Как создает правление приложения в GQ файле правила Jetico?

Comment by GQ
2006-07-09 10:24:04

А можно задать вопрос на более понятном мне языке? Русском или английском…

 
 
Comment by lola
2006-07-09 14:26:58

Sorry, this be my Babylon translation from English to Russian, bad!
My question is: where I create application rule in Yours file if is needed? and can you
post one example file, Thanks GQ!

Comment by GQ
2006-07-09 15:05:08

Hello there :)
Heh, if you want to try my rules - 1st try to translate article above into English. I\’m not ready now to translate it myself now :(
The main idea that for any application I prefer not to count rules (allow to 80, 8080 ports and disallow any other), but set \”access level\”: full, infoline(that\’s my ISP with free traffic inside), localnet(my router, another pc etc.), localhost and access_to_network_only. The last one is JPF specific, it allows \”access to network\” (see JPF manual) and deny anything other.
Those acess levels could be set in dialog produced by \”Ask\” as \”verdict\”.(see screenshot above)
In some (rare) cases I can add some manual rules for application to shrink (for example to disallow spy information sending to developer) or to enlarge (e.g. application can access only my ISP, but also it can access developer website to check for update) access levels.
That\’s the basic idea of my configuration. In the article above there are some philosophy about that.
BTW, as I remember (can\’t check at this moment), there should be some rules as example: for firefox and something else.
And the last: in my rules I use some \”zones\” which was set in xml also available in archive.

 
Comment by GQ
2006-07-09 15:11:07

Sorry, this be my Babylon translation from English to Russian, bad!

Yee, that translation sounds like “How it creates administration of application in GQ file of Jetico’s rule”. Well, in Russian it more senseless :) my backtranlations add some right word order :)

 
 
Comment by lola
2006-07-09 17:47:20

Leave behind my Russian.
In your “seting.xml” file “Infoline Zone” I see this IP
83.217.192.0/19, 87.228.0.0/17, 89.169.0.0/16, I must this change to my ISP IP?

Comment by GQ
2006-07-09 22:59:16

If you need some special settings for this IP’s - yes. Think youself.

 
Comment by KA6AH
2006-07-13 00:10:08

Whenever one person wants to escalate his knowledge (”more help or explanation aside”), the very first thing should be to formalize what exact question you are looking an answer for. Unless this is clear to yourself, learning further would be rather inefficient.

Comment by KA6AH
2006-07-13 00:11:20

This comment was misplaced and applies to the above #262

 
 
 
Comment by lola
2006-07-10 15:26:30

I continue to use your ruleset, I find it very usable, as I am not very experienced with firewall I expected me for an it is able more help or explanation aside more experts!

however thanks the same!

Comment by GQ
2006-07-11 00:47:16

Well, I’m sure, that using firewall like JPF without basic knowledge of network protocols is not the best idea. In such case may be Outpost or Kerio will be better.
But if you wanna some fun with it :) You’re welcome.
If you’re seeking for help from experts it may be better to ask for it on some english-speaking forum. Cause there are more smart guys and “two heads are better than one” (Russian saying).
And unfortunately I have no spare time to consult you in basic things :( Just may be some answers about my ruleset.
Regars, ALexander.

 
 
Comment by lola
2006-07-11 02:14:17

Hi ! ALexander or ‘GQ’
I am not really new with network protocols and JPF, only that until now I used classic ‘Optimal Protection’ ruleset from Jetico with classic creation of ‘table’ and all rules for
specific ‘application’. Found your ruleset, I am afresh me everything.
I must say that and a splendid creation, of this that I wanted to speak with you,(and who knows it to explain better than mama?) my saying :)
Esteems to you, ALexander.

 
Comment by lola
2006-08-02 19:58:21

Hi Alexander.
JETICO 2 *BETA* is OUT!
One good rule, as only you know to, do it would not go badly!

Esteems to you

Comment by GQ
2006-08-03 08:32:09

Thanks, I heard about it. And I also heard that it would no longer be freware =\

 
 
Comment by andrey
2007-01-19 23:54:29

Не очень понял о создании новой зоны через редактирование settings.xml. Как это связывается с соответствующей таблицей в IP Table?

Comment by GQ
2007-01-20 14:28:03

С таблицей - никак. Просто в правилах можно в поле ip адреса использовать зоны.

 
 
Comment by andrey
2007-01-20 16:18:50

В Вашем конфиге таблица AccesToNetworkOnly содержит кроме правила Allow access to network еще и Allow to Listen UDP Ports плюс Allow to Listen TCP Ports. Разве не достаточно только Allow access to network? У меня, например,lsass.exe, winlogon.exe и другие запросили только access to network.

Comment by GQ
2007-01-20 16:28:08

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

 
 
Comment by Bigfoot
2008-01-26 17:31:40

Очень жаль, что в правилах нет критерия времени. У меня вот интернет бесплатный с 1:00 до 7:00, и в это время можно пускать туда всех кто хочет, а в другое время нужно жосско следить за всеми. Джетико этого сделать не может :(

 
Comment by n000b
2008-03-16 05:32:27

очепятко!
… мы можем сразу указать ***макМИСальную*** для него (приложения) …

Comment by GQ
2008-03-16 21:08:31

10x, поправил

 
 
Name (required)
E-mail (required - never shown publicly)
URI
Subscribe to comments via email
Your Comment (smaller size | larger size)
You may use <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> in your comment.

Trackback responses to this post