id: Гость   вход   регистрация
текущее время 22:16 08/12/2024
Владелец: Вий (создано 14/09/2006 22:50), редакция от 28/07/2010 08:42 (автор: Гость) Печать
Категории: инфобезопасность, защита сети, сайт проекта, руководства
создать
просмотр
редакции
ссылки

МЕШОК ИНФОРМАЦИИ


Предположим ситуация такая – новый фаервол, поставили "Спрашивать всё, что не
разрешено". И ничего ещё не разрешили. Также не делали "автоматическую"
конфигурацию (например Outpost сканит программы установленные на компе и для
известных программ добавляет правила по умолчанию) – мало ли что они там
наконфигурируют автоматически. Что произойдёт при выходе в Нет? Начнут
всплывать окошки типа "Такая-то прога просит исходящее соединение" или
"Такая-то прога запрашивает входящее сообщение". И надо выбрать разрешить
ли доступ, запретить, или создать правило которое будет всегда разрешать или
запрещать доступ данному соединению. Параметры: программа (путь),
направление(вход/выход), локальный порт, удалённый порт, удалённый адрес
(IP и возможно домен).


В Windows DNS lookup делает SVCHost.exe. DNS lookup – получение IP адреса по доменному имени.
Удалённый порт – 53. Удалённый адрес – адрес шлюза/провайдера.


DHCP – Dynamic Host configuration Protocol – для назначения динамического IP – порты 67,68


Чаще всего входящие соединения надо запрещать – это скорее всего попытки несанкционированного
доступа к компьютеру.


Windows ломится на windowsupdate.com – для проверки обновлений. Для получения update'ов это
надо разрешить.


Служба синхронизации времени – по-моему 123 порт.


Основные протоколы используемые при хождении по Сети
HTTP – Hyper Text Transfer Protocol – порт 80. Для браузера надо разршить. А запретить например можно для ICQ клиента – рекламу он качает именно по http (я не ошибаюсь? в новых версиях не поменялось?)
FTP – File transfer protocol – 20,21 – есть два режима – пассивный активный. Пассивный – устанавливает соединения клиент (т.е. мы), и по нему качаем данные – это порт 21. Активный – к нам ломится сервер – порт 20 – устанавливает входящее соединение.


Для подключения к прокси-серверам часто используется порт 3128.


Jabber – 5222 и 5223 порты. 5222 – это незащищённое соединение, 5223 – с использованием SSL


Есть такой протокол NetBIOS – насколько я знаю – нужен только в локальной сети (если вообще нужен), поэтому если вы выходите в инет напрямую – можно и нужно его выключить.


Потокол ICMP – используется для проверки достижимости хоста(?). Например его использует команда ping. Есть несколько типов ICMP запросов ответов. Для простого клиента можно поставить – разрешить входящий ответ и исходящий запрос – так чтобы мы могли делать ping'и и запретить исходящий ответ и входящий запрос – чтобы нас нельзя было пинговать.


Протокол OSPF – какой-то служебный(по-моему для маршрутизаторов) – я его выключил и всё нормально.
IGMP – туда же.


В Windows есть возможность – Remote Procedure Call (RPC) – его тоже надо блокировать.
SMB – Samba – для шаринга дисков – выключить. Нужен (наверное) в локальной сети.


Remote Desktop Connection (порт 3389) – позволяет другому пользователю подключаться и работать за вашим компьютером (?) – выключить.


Raw sockets – тип сокета, дающий низкоуровневый доступ к нижележащим сетевым протоколам. В ОС семейства Windows поддержка raw sockets была реализована в Windows 2000, но настоящую огласку данный факт получил с выходом Windows XP. Это решение открыло новое пространоство для действий злоумышленника, и Microsoft навлекла тем самым целую волну критики аналитиков безопасности.
Использование raw sockets на целевой машине (target machine) упрощает спуфинг IP-адресов в пакетах IP и ICMP, SYN Flood и пр. В особенности Windows-машина с включенными raw sockets является привлекательным плацдармом в качестве машины-зомби для организации DDOS-атаки.
Agnitum Outpost Firewall Pro начиная с версии 2.5 поддерживает raw sockets, хотя многие специалисты сходятся во мнении, что их следовало бы полностью отключить. Так или иначе, следует обратить внимание на настройки, ответственные за raw sockets.


У меня Windows Explorer постоянно лезет на 239.255.255.250:1900 – запретил – всё работает нормально вроде. Туда же пытается ломиться svchost.exe. Вообще из дефолтных настроек для svchost.exe я оставил только два разрешающих пункта – DNS client TCP и UDP connection.


Евсюков Денис 30.05.2006 16.25
Настройка wipfw, консольный фаервол под windows, портированный из FreeBSD


Скачать можно здесь:
http://wipfw.sourceforge.net/


Установка очень проста. Нужно распаковать в любую папку
содержимое архива и затем запустить один из предлагаемых скриптов
install. Есть два скрипта, каждый из которых создан для задания
определенного действия по умолчанию. Есть скрипт разрешающий (т.е. если
в правилах что то не блокировано, то значит разрешено) и запрещающий
(наоборот, если явно не разрешено, значит блокировать), я уже по
привычке, вынесенной из аутпоста выбрал режим блокирования,
соответственно нужно прописывать разрешающие правила...


После запуска скрипта он прописывает пути в реестр, чтобы помнить, куда
его поставили и прописывает программу как сервис в системе, после чего
производит запуск установленного сервиса. В памяти программа занимает
очень мало, порядка 2 мегабайт в оперативной памяти и порядка 400-500 килобайт в
виртуальной памяти... С аутпостом не сравнить конечно, но у нас нет
интерфейса к программе и сама программа не контролирует работу
приложений в системе. Точнее интерфейс написан уже создателями самого
фаервола, но он идет отдельно. Данный интерфейс
служит только для создания правил работы, и не позволяет мониторить
работу фаервола. А по поводу второго вопроса хочется сказать, что фаер пришел из
среды FreeBSD, в которой так же как в Linux не производится контроль за
работающими приложениями и основная задача фаервола – защита
машины от атак извне. Все остальное зависит от пользователя и от программ по борьбе
с троянами и вирусами...


Итак, программа установлена, теперь пришла пора настройки. Настройка
производится путем правки файла rc.wf. Нужно править именно этот файл, т.к. он запускается
при запуске системы и конфигурирование производится именно им. Я
пробовал создавать свой скрипт конфигурации системы, типа файла .bat, он
производит настройку, но только на время работы компьютера, после
перезагрузки все изменения теряются. Чего не происходит в случае правки
данного файла...


Запуск скрипта производится с помощью файла sh.exe, это порт командного
процессора из FreeBSD, поэтому в начале файла требуется описание
программы, которая используется для обработки данного скрипта.
Если в начале строки стоит знак # – значит все что идет дальше по строке
является комментарием...


#!/bin/sh
#
#


Далее прописываем переменную для уменьшения кода, данная переменная
содержит вызов фаера с командой добавления правила


cmd="./ipfw add"


Для изменения правил нужно эти правила сначала очистить, а потом уже по
новой прописать, поэтому очищаем все правила...


# First flush the firewall rules
./ipfw -q -f flush


Разрешаем все сетевые пакеты на локальной машине...


#Localhost rules
$cmd pass all from any to any via lo*


Теперь задаем основное правило, т.е. программу мы поставили в режиме
блокировки, и теперь нам надо разрешать то, что нужно. Для себя я выбрал
режим разрешить все себе (т.е. все исходящие разрешены) и открыть порты
для входящих соединений в определенных сервисах...


#Для начала разрешаем все нам самим
$cmd allow all from me to any


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


# ICMP разрешаем пинг...
$cmd allow icmp from any to me icmptypes 0,3,4,11 in


Далее я думаю понятно... Разрешаем те порты для входящих, сервисы
которых как мы предполагаем будут работать на машине, включая http, мыло
и все остальное... Если этого не сделать, то запрос мы отправим, а вот
получить ответ уже не сможем и тем самым сервис работать просто напросто
не будет...


# Разрешаем получать IPшники по DHCP
$cmd pass udp from any 68 to any 67
$cmd pass udp from any 67 to any 68


# Разрешаем DNS
# DNS
$cmd allow tcp from any to any 53
$cmd allow tcp from any 53 to any
$cmd allow udp from any to any 53
$cmd allow udp from any 53 to any


# Разрешаем входящие ftp, ssh, email, tcp-dns, http, https, pop3, pop3s
(если вы чем либо из этого не пользуетесь то убираем то что не нужно...)
$cmd allow tcp from any 20,21,22,25,80,123,443,110,119,995 to me
$cmd allow tcp from any 5223,8010,8080 to me


# Разрешаем входящие сервера времени
$cmd allow udp from any 13,37,525 to me
$cmd allow tcp from any 13,37 to me


В АИСТе (интернет-провайдер г. Тольятти) используется технология VPN соединений для установления
интернет-соединений, она подразумевает использование прокола gre,
который не завязан на определенный порт, поэтому прописываем правило для
ip не используя указание порта. Для большей безопасности разрешаем
установку соединения только с сервером АИСТа (192.168.0.1)...


# VPN разрешаем vpn тунель
$cmd allow ip from 192.168.0.1 to me


Для работы с ослом (имеенно в режиме High ID), требуется при установке
соединения позволить серверу соединение по любым портам, т.к. сервер при
соединении проверяет порты, и если тот порт, что он проверяет будет
недоступен, то он дает вам low id, что сказывается на способности
качать... Поэтому серверу разрешаем соединения по всем портам, и
открываем порты осла 4662 и 4672 для остальных. Я открыл порты и tcp и
udp хотя сейчас сеть kad не используется, на всякий случай, по сути порт
4672 можно и не прописывать, на работе это никак не скажется...


# Разрешаем осла
$cmd allow tcp from 81.28.160.141 to any
$cmd allow tcp from any to any 4662
$cmd allow udp from any to any 4672


У меня стоит модем Zyxel P660-R, он внешний и я управляю его работой по
телнету и получаю все его события (логи) по snmp протоколу, которые
нужно разрешить... 10.0.0.1 – это ип-адрес модема...


# Разрешаем snmp
$cmd allow udp from 10.0.0.1 to any 162,514


# Разрешаем telnet
$cmd allow tcp from 10.0.0.1 23 to any


Ну и резрешаем порты для работы ирк-сервера...


# Разрешаем IRC...
$cmd pass tcp from any to any 6667-6669
$cmd pass tcp from any 6667-6669 to any


Собственно все. Все сервисы работают. И работают отлично. Причем
работают так же и ssl и https, они включены в список...


Я проверял эффективность работы фаера на внешних серверах, сканирующих
порты и выявляющих уязвимости, все сервера сказали, что все порты
защищены, уязвимости нет... И это при том условии, что расходуется
минимум памяти, минимум процессорного времени и при всем этом прога еще
распространяется по лицензии FreeBSD, т.е. бесплатно...


После данного эксперимента я решил остаться именно на этом фаерволе...


Так выглядели правила фаервола в первой редакции, и с тех пор я немного
доработал правила, чем сейчас делюсь с Вами...


Я буду рассмартивать только те части, что претерпели изменения, все
остльное просто вырезал...


# Разрешаем входящие ftp, ssh, email, tcp-dns, http, https, pop3, pop3s
$cmd allow tcp from any 22,25,80,123,443,110,119,995 to me established
$cmd allow tcp from any 143,993,3128,5223,8010,8080,8081 to me established
$cmd allow tcp from 81.28.160.194 32000 to me established
$cmd allow tcp from any 20,21 to me


Итак, во первых к правилам добавляем пукт established, он означает
требование в каждом пакете содержать биты RST или ASK, т.е. входящие
пакеты будут приниматься только в том случае, если был запрос от Вас
самих... Именно поэтому порты фтп вынесены отдельно, с данным условием
фтп не работает... Добавились порты работы с прокси серверами, ssl почты
и добавлено правило для работы с веб-интерфейсом почты автограда...


Здесь все понятно из комментариев, опять же подключения только как ответ
на запрос пользователя...


# Разрешаем получение ключей PGP с серверов
$cmd allow tcp from any 389,11371 to me established


# Разрешаем входящие сервера времени
$cmd allow udp from any 13,37,525 to me
$cmd allow tcp from any 13,37 to me


Доработано правило для организации VPN соединений, спасибо большое Илье
Котлярову за подсказку! Теперь вместо открытия всего трафика с сервера,
открываем подключения только для нужных протоколов и портов...


# VPN разрешаем vpn тунель
$cmd allow 47 from 192.168.0.1 to me
$cmd allow tcp from 192.168.0.1 1723 to me


Правила для осла претерпели существенные изменения... Добавлены правила
позволяющие работу с любыми портами, обращающимся к нашему 4662 и
наоборот, при этом все "опасные" порты прикрыты... Соединение теперь
стабильное, всегда High ID, и количество соединений максимально, потерь
нет... 81.28.160.141 – сервер осла.


# Разрешаем осла
$cmd allow udp from 81.28.160.141 4665 to any
$cmd allow tcp from any 1024-65535 to any 4662
$cmd allow tcp from any 4661,4662 to any 1024-65535
$cmd allow udp from any to any 4672


И теперь самое главное, очень удобно логировать то, что было запрещено,
для этого переписываем правило по умолчанию с параметром log. После
чего, все пакеты deny фиксируются в файлах типа wipfw20060527.log в
каталоге C:\WINDOWS\security\logs\
И теперь, если после настройки фаера у вас како-нить сервис не работает,
смотрите файл wipfw(сегодняшняядата).log, где фиксируете по времени
обращения, какие порты были закрыты и почему, после чего уже намного
легче исправлять или добавлять новые правила...
Вот строка для логирования блокированных пакетов:


# Log denny all
$cmd drop log all from any to any


Если будут замечания, буду рад Вас выслушать...



 
Один комментарий [показать комментарии/форму]
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3