Фильтр блоков слоев WFP ALE_CONNECT_REDIRECT не работает

Я работаю с WFP, и у меня проблема с фильтром блокировки на слое FWPM_LAYER_ALE_CONNECT_REDIRECT_V4. Он должен блокировать трафик с локального IP, но это не так. Если я меняю слой на FWPM_LAYER_ALE_AUTH_CONNECT_V4, фильтр работает правильно.

Итак, у меня есть несколько вопросов:

1) Могу ли я заблокировать трафик с указанного локального IP-адреса на уровне FWPM_LAYER_ALE_CONNECT_REDIRECT_V4 (код ниже не работает)?

2) Можем ли мы создать условия с local_ip(remote_ip) на слоях ale_connect_redirect(или ale_bind_redirect)?

UINT32 test_wfp_filter(HANDLE engine_handle,
FWP_V4_ADDR_AND_MASK* source_ip,
UINT8 weight)
{  
UINT32 status;
FWPM_FILTER filter = { 0 };
FWPM_FILTER_CONDITION filter_conditions[1] = { 0 };

filter_conditions[0].fieldKey = FWPM_CONDITION_IP_LOCAL_ADDRESS;
filter_conditions[0].matchType = FWP_MATCH_EQUAL;
filter_conditions[0].conditionValue.type = FWP_V4_ADDR_MASK;
filter_conditions[0].conditionValue.v4AddrMask = source_ip;

status = UuidCreate(&(filter.filterKey));

if (status != NO_ERROR)
{
    return status;
}

filter.layerKey = FWPM_LAYER_ALE_CONNECT_REDIRECT_V4;

//With this layerKey filter doesn't work,
//but with FWPM_LAYER_ALE_AUTH_CONNECT_V4 filter works properly

filter.displayData.name = L"Blocking filter";
filter.displayData.description = L"Blocks all trafic from current comp";
filter.action.type = FWP_ACTION_BLOCK;
filter.subLayerKey = WFP_TEST_SUBLAYER;
filter.weight.type = FWP_UINT8;
filter.weight.uint8 = weight;
filter.filterCondition = filter_conditions;
filter.numFilterConditions = 1;

status = FwpmFilterAdd(engine_handle, &filter, 0, 0);
return 0;
}

Благодарю вас!


person chipic    schedule 25.01.2016    source источник


Ответы (1)


Не на 100% очевидно, чего вы пытаетесь достичь, но:

  1. Нет, уровни ALE_CONNECT_REDIRECT и ALE_BIND_REDIRECT предназначены для изменения сведений об источнике/назначении, связанных с потоком (до установления), а не для блокировки потока. Примером использования может быть написание локального прокси; вы можете установить выноску ALE_CONNECT_REDIRECT, которая изменяет сведения о месте назначения для попытки соединения, чтобы соединение фактически выполнялось с вашим собственным приложением, а не там, где оно изначально предназначалось.

  2. Вы определенно можете использовать условия IP-адреса источника и получателя с ALE_CONNECT_REDIRECT и ALE_BIND_REDIRECT, просто помните, что эти уровни предназначены для перенаправления, а не блокировки.

person steve_jones_1632    schedule 02.02.2016
comment
Хороший ответ :) Можете ли вы предоставить пример кода, как правильно использовать ALE_BIND_REDIRECT? мне трудно найти какой-либо пример кода, и документации для этого слоя несколько не хватает :( - person horseyguy; 03.06.2019