= Безопасность =
"FIREWALL": СТЕНА ОГНЯ, КОТОРАЯ ЗАЩИЩАЕТ
Константин Николаенко aka Steel Human lightnet@obninsk.ru
окончание: начало в #73, #74, #76, #77
В прошлой статье я остановился на структуре правил фильтрации. Как выяснилось, каждое правило действует определенным образом на указанный тип пакетов в зависимости от информации, характеризующей данный (поступивший на фильтрацию) пакет. Переходим непосредственно к предметной области: изучению этих самых правил...
В этой статье будет приведен краткий обзор использующихся в IPF правил фильтрации. Для более подробного изучения рекомендую почитать маны, ФАКи, списки рассылок и соответствующие форумы...
Основные правила
block in all
pass in all
Первое правило блокирует (block) все (all) входящие (in) пакеты. Прежде чем будет принято окончательное решение о пришедшем пакете, IPF перейдет к рассмотрению следующего правила, которое разрешает (pass) прохождение пакета. Таким образом, IPF просматривает ВЕСЬ набор правил (далее вы увидите, что этого можно избежать при помощи опции quick) и входящие пакеты будут проходить несмотря на то, что в первой строке находится block. Учтите, что управляющие слова не коммутативны, т.е. нельзя использовать правила типа all block in – всё должно находиться четко в определенной последовательности.
Фильтрация IP-адресов
Допустим, мы хотим заблокировать только пакеты, поступившие от какого-то (from) определенного IP-адреса (например, 195.112.97.8/16, где /16 – это маска подсети) на любой адрес (to any), то необходимо изменить правила так:
block in from 195.112.97.8/16 to any
pass in all
Однако, в данном случае пакеты все-таки заблокированы не будут, т.к. после просмотра строки block IPF снова перейдет к правилу pass, что пропустит пакет. Чтобы заблокировать входящий пакет, изменяем правила следующим образом:
block in quick from 195.112.97.8/16 to any
pass in all
Опция quick указывает фильтру, что после совпадения правила IPF прекращает дальнейший просмотр. Если же пакеты пришли с других IP-адресов, то они будут пропущены.
Контроль интерфейсов
Firewall может защищать сегменты сети с различными интерфейсами (например, xl0 – 3com ethernet, lo0 – loopback и проч.). Имя интерфейса указывается после опции on. При этом могут фильтроваться как входящие (in), так и выходящие пакеты (out). К примеру, если мы хотим заблокировать пакеты на интерфейсе ed3, идущие из (in) локальной сети LAN на адрес 192.110.5.1, но пропускать все пакеты в локальную сеть (кроме 192.110.5.1), то правила будут такими:
block in quick on ed3 from any to 192.110.5.1
pass in quick on ed3 all
block out quick on ed3 from 192.110.5.1 to any
pass out quick on ed3 all
Протоколы и порты
Правила можно применить и к определенным протоколам (proto), а также характерным портам (port). Например, заблокировать WWW-доступ (80 порт) по протоколу tcp к серверу с адресом 194.110.118.5 можно так:
block in quick on ed3 proto tcp from any to 194.110.118.5 port = 80
Далее в заключительной статье я собираюсь завершить обзор правил и затем привести пример настройки и администрирования простенького firewall'a для веб-сервера. В общем, не расслабляйтесь:)
Ссылки по теме:
http://www.obfuscation.org/ipf/ipf-howto.txt – путевый FAQ в виде учебника (ENG)
http://www.cert.org/security-improvement – рекомендации CERT. Есть раздел о firewall (ENG)
|