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 продолжает чтение правил дальше и в данном случае пропустит пакет, потому что последнее правило это позволяет.