Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #68, АВГУСТ 2004 г.

Презерватив для Windows

Фленов Михаил

Xakep, номер #068, стр. 068-098-4


После этого создается новый интерфейс PfCreateInterface, и к нему добавляются фильтры с помощью функции AddFilter. Эта функция достаточно универсальная (и достаточно большая), поэтому не буду приводить ее на страницах ][. Если заинтересован, то посмотришь в исходнике на диске. Принцип ее работы сводится к подготовке параметров и вызову рассмотренной ранее функции PfAddFiltersToInterface.

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

AddFilter(true, '192.168.1.1', ptTcp, nil);

В этом случае любые обращения на любой порт с адреса 192.168.1.1 будут закрыты. А можно запретить и обращение на определенный порт с любого компьютера с помощью следующей записи:

AddFilter(true, nil, ptTcp, '21');

Таким образом, можно соорудить правила любой сложности и превратить свой компьютер в настоящую крепость. Единственное, что надо подправить в программе, – правильно указать маску сети. В примере зашита нулевая маска 0.0.0.0, а нужно поставить реальное значение.

Итог

Как видишь, создать собственный сетевой экран не так уж и сложно. Только вот в качестве движка будет использован встроенный в систему сервис Packet Filtering от MS. Для решения простых задач этого достаточно, а для вещей покруче придется устанавливать что-то более профессиональное.

Данный пример описывает создание сетевого экрана на основе правил. Более мощные системы имеют возможность определения основных атак, защиту от сканирования, проверку правильности приходящих данных и т.д.

Листинг 1. Пример использования фильтров

var

wsaData: TWSAData;

begin

//Загрузка библиотеки Winsock версии 1.1

if (WSAStartup(MakeWord(1, 1), wsaData) >< 0) then

begin

ShowMessage('Ошибка Winsock');

exit;

end;

// Определение локального адреса,

// на который будем ставить фильтр

GetLocalIPAddr(@ipLocal);

//Создание интерфейса

PfCreateInterface(0, PF_ACTION_FORWARD,

PF_ACTION_FORWARD, False, True, hIF);

// Добавление нескольких фильтров

AddFilter(true, '192.168.1.1', ptTcp, nil);

AddFilter(trye, '192.168.8.57', ptTcp, '21');

AddFilter(false, '192.168.1.3', ptAny, '7');

AddFilter(true, '192.168.1.4', ptUdp, '1024');

// Блокировка любых исходящих обращений к 80-му порту

AddFilter(false, nil, ptTcp, '21');

// Привязать интерфейс к локальному адресу

PfBindInterfaceToIPAddress(hIF, PF_IPV4, @ipLocal);

StopButton.Enabled:=true;

end;

CD

На компакт-диске ты найдешь исходный код программы и заголовочный файл fltdefs.pas.

WWW

Дополнительная инфа по фильтрации пакетов в Windows - http://msdn.microsoft.com/library/default.asp?url=/library/en-us/rras/rras/packet_filtering_reference.asp

Назад на стр. 068-098-3  Содержание