Мы используем iptables
с ipset
списки на границе нашей сети. Обычно это хорошо работает. Я обновил правила, чтобы увеличить активность, и обнаружил, что правило обновления набора не всегда приводит к успешному обновлению набора. Правило находится в ПРЕДВАРИТЕЛЬНАЯ МАРШРУТИЗАЦИЯ
цепь калечить
Таблица.
Это правило (от iptables -L -nv -t мангл
):
SET all -- * * 0.0.0.0/0 0.0.0.0/0 match-set BlackHoleTargets dst ! match-set PrivateNets src add-set blackholescanners src
где BlackHoleTargets — набор hash:ip, в котором перечислены IP-адреса, которые не следует публиковать; PrivateNets — это набор hash:net, в котором перечислены внутренние (немаршрутизируемые) подсети, а blackholescanners — это набор hash:ip для захвата адресов машин, проверяющих неопубликованные адреса.
Я думал, что это работает хорошо — после сброса списка сканеров черных дыр он начинает быстро заполняться. Он имеет тайм-аут 12 часов и обычно содержит ~ 22 тыс. адресов. В настоящее время максимальный размер этого набора составляет 65536 элементов.
В рамках пересмотра правил мы ввели новое правило для серверов RDP с целью разрешения подключения только динамическому списку авторизованных клиентов. В рамках этого у нас есть правило для перехвата сеансов RDP, которые не авторизованы с помощью этого правила в фильтр
Таблица ВПЕРЕД
цепочка (выход из iptables -L -nv
):
SET tcp -- * * 0.0.0.0/0 xxx.xxx.xxx.0/24 tcp dpt:3389 multiport sports 1024:65535 add-set UnrecognisedRDP src,dst
куда ххх.ххх.ххх.0/24 — это диапазон в нашей сети, а UnrecognisedRDP — это hash:net,net, установленный для отслеживания этих сеансов.
Я вижу записи в таблице UnrecognisedRDP, где адрес назначения указан в BlackHoleTargets — я ожидаю, что исходный адрес должен быть в blackholescanners, но это не так, и он также не соответствует списку PrivateNets.
Например, у нас есть несколько записей в таблице UnrecognisedRDP (для разных адресов назначения) для адреса, начинающегося с 192.241.217 (полный IP-адрес скрыт). Адрес источника не соответствует набору PrivateNet (который содержит следующие подсети: 10.0.128.0/20; 10.1.0.0/16; 10.0.0.0/20; 10.0.16.0/24; 10.192.0.0/10; 10.2.0.0/. 24; 10.129.1.0/24), поэтому я ожидаю, что исходный адрес в списке UnrecognisedRDP будет в наборе сканеров черных дыр, но это не так. Список сканеров черных дыр неполный (количество записей: 19356 maxelem 65536).
Я попытался добавить повторяющееся правило в фильтр
Таблица ВПЕРЕД
цепочка непосредственно над правилом, которое добавляет адреса в таблицу UnrecognisedRDP. После сброса набора UnrecognisedRDP я все еще находил записи, добавленные в набор UnrecognisedRDP, которые не были добавлены в набор сканеров черных дыр. Счетчики пакетов показывают, что сработали оба правила.
Итак, мой вопрос: почему правило с -j SET --add-set blackholescanners src
успешно обновить набор?