FireWall - это ОЧЕНЬ просто


Данная статья является результатом удачной попытки :) применить на практике знания, полученные мною из ранее опубликованных статей:

и найденой документации от IBM: по использованию штатного FireWall-а из комплекта MPTS 6.0 - TCP/IP 4.3.

Все предлагаемые рекомендации, кроме оговоренных отдельно, использованы лично мною на практике и полученый результат меня вполне удовлетворил. Но это не означает, что все это есть истина последней инстанции и не содержит ошибок, допущенных мною по недомыслию, недопониманию или незнанию. Поэтому буду рад любым дополнениям и исправлениям

Итак, в TCPIP 4.1 для ОS/2 (а именно в MPTN 5.3) фирма IBM включила FireWall, к которому забыла положить документацию. К счастью, нашлись люди, которые нашли этот FireWall и разобрались, как им пользоваться. Этот FireWall включает:

Примечание: Эта версия описания не включает туннелирования.

Собрав всю информацию можно, получить шаги для установки FireWall-а:

1. Проверить наличие в config.sys строк, и если их нет - то добавить:

1.1 Переменные среды (не обязательны), указывающие расположение различных логов (по-умолчанию все логи будут располагаться в %ETC%\):
 SET FWERROR=C:\MPTN\ETC\SECURITY\LOGS
 SET FWLOGS=C:\MPTN\ETC\SECURITY\LOGS
1.2 Драйвера, при этом последний из них используется для шифрования и, наверное, может быть безболезненно удален, если Вы его не используете (на практике я это не проверял):
 DEVICE=C:\MPTN\PROTOCOL\IPSEC.SYS
 DEVICE=C:\MPTN\PROTOCOL\FWIP.SYS
 DEVICE=C:\MPTN\PROTOCOL\CDMF.SYS
 DEVICE=C:\MPTN\PROTOCOL\MD5.SYS
1.3 Демон ведения логов и команда запуска FireWall-а (на мой взгляд это наиболее подходящий способ запуска FireWall-а):
 RUN=C:\MPTN\BIN\FSSD.EXE
 CALL=C:\MPTN\BIN\CFGFILT.EXE -u -i -d
P.S. в целях экономии памяти, да и отсутствии особой необходимости, можно отказаться от ведения логов. Для этого можно не добавлять демон ведения логов и опустить ключ "-d", опять же - на практике это не проверялось.

2. Создать файлы конфигурации:

%ETC%\fwsecad.cnf -- список secure интерфейсов (Файрвол для ОС/2 различает два типа сетевых интерфейсов: secure (защищенный) и non-secure (незащищенный)). В каждой строке файла указываем один IP адрес. Адреса, которых нет в списке считаются non-secure; Настоятельно рекомендую заполнить этот файл, иначе при предложенном варианте загрузки FireWall-а будет выдаваться предупреждающее сообщение об отсутствии secure интерфейса и будет ожидаться нажатие клавиши для продолжения работы, что неприемлемо для серверов. С другой стороны эту проблему можно обойти с помощью добавления в config.sys параметра PAUSEONERROR=NO;

Пример:

 172.16.2.14
%ETC%\Security\fwfiltrs.cnf - список правил для фильтра;

Пример:

 permit 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 all any 0 any 0 both both both l=no f=yes t=0
Разрешение прохождения всех пакетов.

%ETC%\fwlog.cnf -- уровень логов:

 10: Debug
 20: Информационный
 30: Предупреждения
 40: Ошибки
 50: Тревоги
Пример:
 level=20
Будут записаны все сообщения уровней 20 и выше;

Хотелось бы обратить особое внимание на установку этого параметра, и вот почему:

Исходя из всего этого, я бы рекомендовал: Сообщения записываются в файлы вида fw<Дата>, где <Дата> -- текущая дата, например файл fw0529. Они будут располагатся в каталоге, указаном переменной среды FWLOGS или в %ETC%\.

Все ошибки, связаные с ведением логов, будут записаны в файл fwerror.err, который будет располагатся в каталоге, указаном переменной среды FWERROR или в %ETC%\.

3. Если вам не понравился метод, предложенный в пункте 1.3, для включения FireWall-а запустить:

 detach fssd
 cfgfilt -u -i -d
Эти строки лучше добавить в \mptn\bin\setup.cmd, \tcpip\bin\tcpstart.cmd или \startup.cmd, так как они должны запускаться при старте компьютера.

4. Описание утилит:

cfgfilt - используется для загрузки или проверки настрек фильтра:
 cfgfilt.exe [-c] [-u [-i]] [-f [file]] [-d [{start|stop}]] [-m [#]] [-p [port#]]
если опции не заданы, действие по умолчанию - запись дампа.

Опции:
-c Отключить набор правил и перейти к набору по-умолчанию (всё запрещено);
-d Включить (start) или выключить (stop) ведение логов. По умолчанию включить.
-f Проверить набор правил;
-i Инициализация фильтра. Должна использоваться вместе с -u;
-m Максимальное количество одновременных соединений Real Audio;
-p Порт Real Audio;
-u обновление правил для фильтра, используя файл %ETC%\security\fwfiltrs.cnf;

inetcfg - используется для включения (inetcfg -s firewall 1) или выключения (inetcfg -s firewall 0) всего FireWall-а.

cfgfilt при запуске автоматически включает FireWall.

fssd - демон ведения логов.

fwlslog - используется для просмотра файла логов.

5. Описание файла fwfiltrs.cnf

Файл fwfiltrs.cnf состоит из строк, каждая из которых является правилом. Файрвол при получении пакета проверяет файл сверху вниз до:
  1. Нахождения запрещающего правила - пакет не обрабатывается;
  2. Нахождения разрешающего правила - пакет обрабатывается;
  3. Конца списка правил. При этом пакет не обрабатывается.
Файрвол работает по принципу "Запрещено всё что не разрешено".

Строка правила состоит из полей, разделенных пробелами:

1) Тип правила:

deny - запрещающее;
permit - разрешающее.

2,3) Адрес отправления пакета:

Два поля: адрес и маска. Могут задаваться в двух нотациях: Десятичной вида x.y.z.u и шестнадцатиричной вида 0xFFFFFFFF.

4,5) Адрес получателя пакета:

См. 2,3

6) Протокол. Тип протокола IP пакета:

all - любой пакет;
icmp - только запросы ICMP;
udp - только пакеты UDP;
tcp - только пакеты TCP;
tcp/ack - только пакеты TCP с установленным битом "acknowledgment";
ipsp - только IPSP (протокол, используемый IBM при тунелировании).

7,8) Порт отправления/Тип ICMP:

Первое поле определяет операцию сравнения, второе номер порта (для ICMP это тип ICMP). Возможные варианты операций сравнения: any(любой), eq(=), neq(<>), lt(<), gt(>), le(<=), ge (>=).

9,10) Порт назначения/Код ICMP:

Используются также, как и предыдущие. Для ICMP пакетов это поле Код ICMP.

11) Адаптер. Тип адаптера:

secure - защищенный;
non-secure - не защищенный;
both - оба;

12) Маршрутизирование:

Обозначает тип пакета по отношению к данному компьютеру. Возможные варианты:

local - отправителем или назначением пакета является данный компьютер;
route - пакет проходит через данный компьютер;
both - оба варианта;

13) Направление:

Определяет входящие/исходящие пакеты:

inbound - входящий;
outbound - исходящий;
both - оба варианта.

Внимание! Необязательные поля задаются в форме имя=значение. Пример:

 deny 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 icmp eq 8 any 8 both both inbound l=yes f=only t=0 
14) Контроль протоколирования. Имя поля "l" (необязательное):

Определяет протоколировать ли прохождение пакета, подпадающего под даное правило.

yes - протоколировать (значение по-умолчанию для запрещенных пакетов);
no - не протоколировать (значение по-умолчанию для разрешенных пакетов).

15) Контроль фрагментации. Имя поля "f" (необязательное):

yes - проверять заголовки, фрагменты и нефрагментированые пакеты;
no - проверять только нефрагментированые пакеты;
only - проверять только заголовки и фрагменты.

16) ИД тунелирования. Имя поля "t" (необязательное):

Определяет тунель, через который посылать пакет. Значение 0 обозначает не применять тунели.

6. Настройка FireWall-а

Итак, после добавления строчек в config.sys и создания конфигурационных файлов (именно того содержания как в примерах) можно перезагрузить OS/2 и приступить к настройке FireWall-а.

Лично мне очень понравилась утилитка для конфигурирования FireWall-а "FirewallConfig/2, Created by sehh" из пакета "ServerConfig/2".

Предупреждение: Неосторожная запись запрещающего правила может привести к полной неработоспособности сети. Файрволл просто перестанет пропускать пакеты!

Далее предполагается что IP адрес компьютера -- 172.16.2.14, и маска локальной сети -- 255.255.0.0. Содержимое файла fwsecad.cnf:

 172.16.2.14 
- Разрешение Telnet для одного адреса Разрешаем телнет только для одного внешнего адреса (172.16.1.7) и запрещаем для всех остальных:
 permit 172.16.1.7 255.255.255.255 172.16.2.14 255.255.255.255 all any 0 eq 23 both both both
 deny 0.0.0.0 0.0.0.0 172.168.2.14 255.255.255.255 all any 0 eq 23 both both both
Это удобное правило для повышения защиты telnet соединения. - Запрещаем пинг на наш компьютер:
 deny 0.0.0.0 0.0.0.0 172.16.2.14 255.255.255.255 icmp eq 8 any 0 both both both
Правило запрещает ICMP пакеты тип 8 (ICMP_ECHO). Типы ICMP приведены в табличке:
 #define ICMP_ECHOREPLY 0 /* echo reply */
 #define ICMP_UNREACH 3 /* dest unreachable */
 #define ICMP_SOURCEQUENCH 4 /* packet lost, slow down */
 #define ICMP_REDIRECT 5 /* shorter route */
 #define ICMP_ECHO 8 /* echo service */
 #define ICMP_TIMXCEED 11 /* time exceeded */
 #define ICMP_PARAMPROB 12 /* ip header bad */
 #define ICMP_TSTAMP 13 /* timestamp request */
 #define ICMP_TSTAMPREPLY 14 /* timestamp reply */
 #define ICMP_IREQ 15 /* information request */
 #define ICMP_IREQREPLY 16 /* information reply */
 #define ICMP_MASKREQ 17 /* address mask request */
 #define ICMP_MASKREPLY 18 /* address mask reply */
- Ведем лог для telnet:
 permit 0.0.0.0 0.0.0.0 172.16.2.14 255.255.255.255 all any 0 eq 23 both both both l=yes 
все пакеты, приходящие на порт 23, будут регистрироваться.
Андрей Колесник


Интересные ссылки:
Комментариев к странице: 0 | Добавить комментарий
Домой | Проект ядро Core/2 | Проект OS/4 Download | Новости | Гостевая книга | Подробно обо всем | Нужные программы | Проекты | OS/2 FAQ | Всячина | За и Против | Металлолом | #OS2Russian | RDM/2 | Весёлые картинки | Наша галерея | Доска объявлений | Карта сайта | ПОИСК | ФОРУМ