FireWall - это ОЧЕНЬ просто
Данная статья является результатом удачной попытки :) применить на практике знания, полученные мною из ранее опубликованных статей:
- TCP/IP v4.1 Security - первый шаг (Виталий Тимчишин)
- Практическое применение файрвола (Виталий Пеленёв)
- A Comprehensive Guide to Virtual Private Networks, Volume I: IBM Firewall, Server and Client Solutions (sg245201.pdf)
- A Secure Way to Protect Your Network: IBM SecureWay Firewall for AIX V4.1 (sg245855.pdf)
- Protect and Survive Using IBM Firewall 3.1 for AIX (sg242577.pdf)
Все предлагаемые рекомендации, кроме оговоренных отдельно, использованы лично мною на практике и полученый результат меня вполне удовлетворил. Но это не означает, что все это есть истина последней инстанции и не содержит ошибок, допущенных мною по недомыслию, недопониманию или незнанию. Поэтому буду рад любым дополнениям и исправлениям
Итак, в TCPIP 4.1 для ОS/2 (а именно в MPTN 5.3) фирма IBM включила FireWall, к которому забыла положить документацию. К счастью, нашлись люди, которые нашли этот FireWall и разобрались, как им пользоваться. Этот FireWall включает:
- Туннели: Динамические и ручной настройки
- Типы SA: Тунель, транспорт.
- Протоколы IPSec: Все (AH и ESP)
- Типы заголовков: RFC 18xx
- Защита: Все (авторизация, шифрование, шифрование/авторизация, авторизация/шифрование)
- Трансформации AH: MD5 с ключами
- Трансформации ESP: CDMF
- Соединения: ЛВС и Модемные
- Другие функции: Фильтрование и логи
Собрав всю информацию можно, получить шаги для установки FireWall-а:
1. Проверить наличие в config.sys строк, и если их нет - то добавить:
1.1 Переменные среды (не обязательны), указывающие расположение различных логов (по-умолчанию все логи будут располагаться в %ETC%\):SET FWERROR=C:\MPTN\ETC\SECURITY\LOGS SET FWLOGS=C:\MPTN\ETC\SECURITY\LOGS1.2 Драйвера, при этом последний из них используется для шифрования и, наверное, может быть безболезненно удален, если Вы его не используете (на практике я это не проверял):
DEVICE=C:\MPTN\PROTOCOL\IPSEC.SYS DEVICE=C:\MPTN\PROTOCOL\FWIP.SYS DEVICE=C:\MPTN\PROTOCOL\CDMF.SYS DEVICE=C:\MPTN\PROTOCOL\MD5.SYS1.3 Демон ведения логов и команда запуска FireWall-а (на мой взгляд это наиболее подходящий способ запуска FireWall-а):
RUN=C:\MPTN\BIN\FSSD.EXE CALL=C:\MPTN\BIN\CFGFILT.EXE -u -i -dP.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 и выше;
Хотелось бы обратить особое внимание на установку этого параметра, и вот почему:
- при установке level=10 отладочную информацию начинает выдавать даже утилита cfgfilt уже при запуске FireWall-а;
- уровень логов для пакета, обработанного разрешающим правилом, равен 20, а обработанного запрещающим правилом -- 30. Следовательно, если вам необходимо просто вести статистику для определенных пакетов, не запрещая их, уровень логов должен быть равен 20. Иначе, имея совершенно верный по логике конфигурационный файл, вы не сможете ничего увидеть в логе!
- установить уровень логов равным 20;
- указывать для всех правил необязательный параметр, отвечающий за протоколирование обработанных пакетов, или ВСЕГДА помнить правила протоколирования по-умолчанию (см. 5.14);
- пользоваться утилитой для конфигурирования FireWall-а "FirewallConfig/2" (см. 6).
Все ошибки, связаные с ведением логов, будут записаны в файл 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) Тип правила:
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=014) Контроль протоколирования. Имя поля "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 | Весёлые картинки | Наша галерея | Доска объявлений | Карта сайта | ПОИСК | ФОРУМ