Сравнителен преглед на Fireblock FreeBSD защитни стени

Съдържанието на статията

Сигурността на компютър, свързан към мрежа, не е причина за сериозно безпокойство, освен ако не е в зората на компютъризацията. В днешно време ситуацията се е променила драстично и операционна система, която не е оборудвана с надеждна и функционална защитна стена, трудно може да претендира за титлата „мрежа“. Но всичко това не е за FreeBSD - по този критерий може да се нарече "тройна мрежа"!

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

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

Тъй като сега проблемите със стабилността на петия клон във версии 6.x са успешно преодолени, няма смисъл да се инсталират по-стари версии. Така че ще приемем, че и трите защитни стени са на ваше разположение "от кутията" - ipfw/ipfw2, ipf и pf.

All inclusive

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

За да бъде зареден този или онзи модул, е достатъчно да посочите подходящите опции в /etc/rc.conf (за тях ще стане дума по-долу).

За съвети как да изградите поддръжка на ядрото за тези защитни стени, вижте/usr/src/sys/conf/NOTES. Основни опции:

### ipfw
опции IPFIREWALL # поддръжка на защитна стена
опции IPFIREWALL_VERBOSE # поддръжка на регистрация
опции IPDIVERT # поддръжка за пренасочване на сокет (необходим за natd)
опции DUMMYNET # поддръжка на формуляра на dummynet

### ipf
опции IPFILTER # поддръжка на защитна стена
options IPFILTER_LOG # поддръжка за регистриране

### pf
устройство pf # поддръжка на защитна стена
устройство pflog # поддръжка на регистрация
устройство pfsync # състояние на проследяване
опции ALTQ # поддръжка за ALTQ шейпър

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

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

За управление на ipfw има помощна програма със същото име/sbin/ipfw. Всъщност с негова помощ можете напълно да контролирате работата на тази защитна стена. За подробности относно неговия синтаксис вижте ръководството ipfw (8). Най-често използваните команди са: добавяне (добавяне на правило), изтриване (изтриване на правило), измиване (напълно изчистване на таблицата с правила), показване (показване на текущите правила с броячи).

Ipf филтърът се контролира от семейство по-специализирани програми:/sbin/ipf (работа с правила за филтриране),/sbin/ipfstat (показване на статистически данни),/sbin/ipmon (събиране на регистрационни файлове),/sbin/ipnat (работа с NAT правила) и т.н. и т.н. Подробности - на съответните ръководства.

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

### ipfw
firewall_enable = "ДА" # поддръжка на защитна стена
firewall_type = "/ etc/ipfw.rules" # type (метод за инициализация)
natd_enable = "ДА" # natd поддръжка

### ipf
ipfilter_enable = "ДА" # поддръжка на защитна стена
ipfilter_rules = "/ etc/ipf.rules" # файл с правила
ipnat_enable = "ДА" # ipnat поддръжка
ipnat_rules = "/ etc/ipnat.rules" # файл с NAT правила

### pf
pf_enable = "ДА" # поддръжка на защитна стена