Сравнителен преглед на 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 = "ДА" # поддръжка на защитна стена