
Firewall под Юниксами - настройка и использование
Спецвыпуск Хакера, номер #005, стр. 005-088-1
MegaBoklan <mb@policeoffice.com> 
В этой статье мы поговорим о двух Firewall'aх, которые присутствуют в большинстве современных некоммерческих ЮНИКС-систем. А именно: о прогах IPFilter и IPChains. Вот расшифровка некоторых терминов, которые мы будем юзать в этой статье или которые просто тебе понадобятся, если ты хочешь работать с firewall'ами.
Firewall - программа, выполняющая фильтрацию сетевого трафика по заданным правилам. 
IP - Internet Protocol. 
ICMP - Internet Control Message Protocol.
UDP - User Datagram Protocol.
TCP - Transmission Control Protocol.
IGMP - Internet Group Management Protocol. 
broadcast - адреса для широковещательных запросов x.x.x.0 и x.x.x.255 
Сетевой интерфейс - физическое устройство (сетевая карта) или псевдоустройства, PPP интерфейс. 
IPFilter
Данный Firewall по умолчанию присутствует в системах OpenBSD, FreeBSD и NetBSD, он также доступен для систем Linux, Solaris и IRIX. Он представляет собой фильтр пакетов семейства TCP/IP. IPFilter может быть установлен как в виде отдельного модуля ядра, загружаемого при необходимости, так и в виде компонента, встроенного в само ядро. В пакет IPFilter входят следующие программы: 
  ipf      - выполняет чтение правил из файла или из командной строки и добавляет их в ядро.
  ipfstat  - выполняет вывод детальной статистики фильтра пакетов.  
  ipftest  - читает правила из файла и затем для каждого создает примерный пакет для тестирования.
  ipmon    - выполняет чтение логов ipf.
  ipsend   - создает пакеты с заданными параметрами и выполняет их отсылку.
  ipresend - выполняет чтение сохраненных пакетов из файла (snoop, tcpdump, etherfind) и посылает их снова. 
  iptest   - программа для тестирования надежности TCP/IP стека.
Домашняя страница IPFilter находится по адресу: http://coombs.anu.edu.au/~avalon/. 
Если ты работаешь на OpenBSD, FreeBSD или NetBSD, то для того чтобы включить IPFilter, тебе потребуется внести изменения в файл конфигурации /etc/rc.conf. Открой его твоим любимым текстовым редактором и найди следующую строчку: 
ipfilter=NO 
и вместо NO напиши YES :). Для того чтобы активировать ipf без перезагрузки, набери: 
# ipf -Fa -f /etc/ipf.rules -E 
По умолчанию файл, содержащий список правил для IPFilter'a, находится по адресу /etc/ipf.rules. По желанию это можно изменить путем модифицирования файла /etc/rc.conf. Просто пропиши новый адрес в этой строке:
ipfilter_rules=/etc/ipf.rules   # Rules for IP packet filtering
Впервые открыв файл с правилами, ты найдешь в нем нечто подобное:
pass  in  from any to any
pass  out from any to any
Эти две строчки разрешают все входящие и все исходящие соединения. Каждое правило должно начинаться с ключевого слова 'pass' - пропустить, или 'block' - блокировать. Ключевое слово 'in' означает входящие пакеты, а 'out', соответственно, исходящие. Далее следуют условия для этого правила. Во время работы IPFilter начинает чтение правил для поступившего пакета сверху вниз. Например:
block in all
pass in all
Первое правило говорит, что следует блокировать все пакеты, однако IPFilter продолжает чтение правил дальше и в данном случае пропустит пакет, потому что последнее правило это позволяет.