Технология Reputation IP Filter

Репутационный IP-фильтр (Reputation IP Filter) – технология, позволяющая вести историю по каждому из IP-адресов, соединяющихся с Dr.Web для почтовых серверов UNIX, и на основе данной истории либо временно блокировать данный IP-адрес, либо предпринимать другие действия. Данная технология позволяет эффективно распознавать распространителей спама, а также бороться с DHA-атаками.

Блок Reputation IP Filter включается, если задан хоть один фильтр в настройке ReputationIPFilter (одноименный параметр в секции [Receiver]), либо если значение параметра MaxConcurrentConnection в этой же секции не равно 0. По умолчанию значение параметра ReputationIPFilter установлено в score_filter, т.е. IP-фильтр включен и IP-адреса будут отфильтровываться на основании среднего значения счета, выставленного всем сообщениям и сессиям с этих IP-адресов (см. ниже).

Вся информация по IP-адресам хранится в оперативной памяти и сбрасывается в файлы. Сохранение в файлы происходит при завершении работы процесса drweb-receiver. Чтение файлов происходит только при запуске модуля drweb-receiver.

Файлы сохраняются и загружаются, только если в ReputationIPFilter есть хотя бы один фильтр. Также сохранения не происходит, если нет никакой информации (не было ни одного IP-соединения). Сохранение происходит в каталог, указанный в параметре BaseDir секции [General] в файлы ipv4.bin (для адресов IPv4) и ipv6.bin (для адресов IPv6). Если при сохранении или чтении возникает ошибка, то это будет отражено в журналах.

warning

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

Проверка IP-адреса в Reputation IP Filter происходит сразу после проверки SMTP-ограничений SessionRestrictions в том случае, если IP-адрес не помечен флагом trusted (подробнее о SMTP-ограничениях и флаге trusted можно узнать в главе Секция [Receiver]).

Таким образом, если необходимо обезопасить некоторые IP-адреса от блокировки в Reputation IP Filter, то их необходимо пометить флагом trusted в SMTP-ограничениях, заданных в SessionRestrictions. Аналогично, если в Reputation IP Filter был по ошибке временно заблокирован IP-адрес, то его необходимо пометить как trusted в SessionRestrictions, и тогда все следующие соединения с этого IP-адреса будут игнорироваться Reputation IP Filter.

Репутационный IP-фильтр позволяет выставлять счет IP-адресу на основе набираемой по данному адресу статистики и временно блокировать IP-адрес в случае, если его итоговый счет превышает некоторое пороговое значение.

Доступны следующие фильтры: anti_dha, errors_filter, score_filter.

Reputation IP Filter проверяет IP-адрес сразу после прохождения им проверки SessionRestriction, если адрес этот не отмечен как trustеd (т.е. если в результате проверок SMTP-ограничений, указанных в SessionRestriction адрес отмечается как trusted, то он не будет проходить через Reputation IP Filter).

Фильтры перечисляются через запятую и проверяются в порядке задания. Для каждого фильтра в начале указывается его название, затем перечисляются параметры, разделяемые пробелами (все эти параметры не являются обязательными).

Параметры представляют собой пары NAME=VAL (между знаком равенства и значением не должно быть пробелов).

Общие параметры для каждого из фильтров (здесь U - положительное целое число, I - целое число, D - положительное число с плавающей точкой):

min_msgs=U - минимальное число сообщений, переданных на проверку в MailD core, после которого срабатывает фильтр. Если значение равно 0, то параметр игнорируется.

min_errors=U - минимальное число ошибок, зарегистрированных на этапе SMTP-сессии, после которого срабатывает фильтр. Если значение равно 0, то параметр игнорируется.

min_wrong_rcpts=U - минимальное число ошибочных получателей письма (которые были отклонены после SMTP-команды RCPT TO), переданных SMTP-клиентом, после которого срабатывает фильтр. Если значение равно 0, то параметр игнорируется.

min_conn=U - минимальное число соединений с этого IP-адреса, после которого срабатывает фильтр. Если значение равно 0, то параметр игнорируется.

block_period=T - задает время блокировки IP-адреса, если он подпадает под ограничения данного фильтра. T - имеет тип {time}. Если значение установлено в 0, то блокировки не происходит, даже если IP-адрес подпадает под ограничения фильтра.

score=I - счет, который будет выставлен всем сообщениям в данной сессии. Также он будет добавлен к общему счету IP-адреса. Если это значение установлено не в 0, то при срабатывании фильтра вместо блокировки IP-адреса на время, указанное в значении параметра block_period, будет производиться выставление счета, на основе которого можно будет в дальнейшем осуществлять фильтрацию писем и адресов.

Для каждого из имеющихся фильтров имеются свои собственные параметры и значения по умолчанию для общих параметров:

anti_dha - противодействие DHA-атакам (directory harvest attack). Для использования этого фильтра необходимо задать весь список защищаемых адресов (в параметре ProtectedEmails в секции [Receiver]).

Специфические параметры:

owrong_per_valid_rcpts=D - отношение ошибочных получателей письма (которые были отклонены после SMTP-команды RCPT TO) к корректным получателям. Основной параметр, который определяет работу фильтра. Если не было найдено ни одного корректного получателя, то это число принимается равным единице. Если значение установлено в 0, фильтр полностью игнорируется. Значение по умолчанию: 10.0

Значения по умолчанию для общих параметров:

omin_msgs=0

omin_errors=0

omin_wrong_rcpts=20

omin_conn=0

oblock_period=2h

oscore=0

errors_filter - позволяет отфильтровывать IP-адреса на основании количества ошибок в SMTP-сессии, которые происходят при общении с данным IP-адресом.

Специфические параметры:

oerrors_per_msg=D - отношение числа ошибок на этапе SMTP-сессии к количеству сообщений, переданных в MailD core. Если не было передано ни одного сообщения, то это число принимается равным единице. Если параметр установлен в 0, то проверка игнорируется. Значение по умолчанию: 0

oerrors_per_conn=D - отношение числа ошибок на этапе SMTP-сессии к числу соединений с этого IP-адреса. Проверка срабатывает только в том случае, если значение параметра установлено не в 0 и было хотя бы одно соединение с данного IP-адреса. Значение по умолчанию: 2.0

Если заданы оба параметра, то в начале проверяется errors_per_msg, а затем - errors_per_conn. Если оба параметра установлены в 0, то фильтр игнорируется.

Значения по умолчанию для общих параметров фильтров:

omin_msgs=0

omin_errors=100

omin_wrong_rcpts=0

omin_conn=50

oblock_period=2h

oscore=0

score_filter - позволяет отфильтровывать IP-адреса на основании среднего значения счета, выставленного всем сообщениям и сессиям с этого IP-адреса. Входит в общую систему Unified Score и позволяет, к примеру, блокировать злостных распространителей спама уже на этапе SMTP-соединения.

Специфические параметры:

oscore_per_msg=D - отношение общего счета для данного IP-адреса (сумма всех счетов сообщений, отправленных с IP-адреса, и счетов, выставленных сессиям (например, другими репутационными IP-фильтрами или ограничениями)) к сообщениям, переданным в MailD core.  Если не было передано ни одного сообщения, то это число принимается равным единице. Если параметр установлен в 0, то проверка игнорируется. Значение по умолчанию: 0

oscore_per_conn=D - отношение общего счета для данного IP-адреса к числу соединений с этого IP-адреса. Проверка срабатывает только в том случае, если значение параметра установлено не в 0 и было хотя бы одно соединение с этого IP-адреса. Значение по умолчанию: 100.0

Если заданы оба параметра, то в начале проверяется score_per_msg, а затем – score_per_conn. Если оба параметра установлены в 0, то фильтр игнорируется.

Значения по умолчанию для общих параметров фильтров:

omin_msgs=0

omin_errors=0

omin_wrong_rcpts=0

omin_conn=100

oblock_period=2h

oscore=0

Пример:

ReputationIPFilter = errors_filter score=20, score_filter

Первый фильтр будет ставить для всех сессий и сообщений в них счет 20 для тех IP-адресов, число ошибок которых на этапе SMTP-сессии слишком велико, второй же фильтр блокирует все IP-адреса, у которых слишком большой средний счет относительно числа соединений с него.

Пример:

ReputationIPFilter = errors_filter errors_per_msg=0.05 errors_per_conn=1 min_msgs=0 min_errors=10 min_wrong_rcpts=3 min_conn=50, score_filter score_per_msg=20 score_per_conn=30 min_wrong_rcpts=3, anti_dha wrong_per_valid_rcpts=0.02 min_wrong_rcpts=20

В данном примере, фильтр errors_filter будет срабатывать, если выполняется одно из следующих условий:

отношение числа ошибок на этапе SMTP-сессии к количеству переданных в MailD core сообщений будет равно 0.05 (errors_per_msg=0.05);

отношение числа ошибок на этапе SMTP-сессии к числу соединений с этого IP-адреса будет равно 1 (errors_per_conn=1);

было зарегистрировано более 10 ошибок на этапе SMTP-сессии (min_errors=10);

число ошибочных получателей письма (которые были отклонены после SMTP-команды RCPT TO), переданных SMTP-клиентом, равно 3 (min_wrong_rcpts=3);

при 50 и более соединений с данного IP-адреса (min_conn=50).

score_filter будет срабатывать если:

отношение общего счета для данного IP-адреса к количеству сообщений, переданным в MailD core, будет равно 20 (score_per_msg=20);

отношение общего счета для данного IP-адреса к числу соединений с этого IP-адреса равно 30 (score_per_conn=30);

число ошибочных получателей письма (которые были отклонены после SMTP-команды RCPT TO), переданных SMTP-клиентом равно 3 (min_wrong_rcpts=3).

Фильтр anti_dha будет срабатывать если:

отношение ошибочных получателей письма (которые были отклонены после SMTP-команды RCPT TO) к корректным получателям равно 0.02 (wrong_per_valid_rcpts=0.02);

число ошибочных получателей письма (которые были отклонены после SMTP-команды RCPT TO), переданных SMTP-клиентом, равно 20 (min_wrong_rcpts=20).

Обратите внимание, что при прохождении IP-адресом проверки SessionRestriction на стадии подключения будут учитываться только те значения счетчиков, которые были набраны IP-адресом за предыдущие сессии и за стадию подключения текущей сессии, поэтому счетчик min_conn всегда сработает раньше всех. Если IP-адрес прошел проверку SMTP-ограничений, указанных в SessionRestriction, но на следующих стадиях сессии значения счетчиков превысили те, что указаны в настройках фильтра Reputation IP Filter, то блокировки этого IP-адреса уже не будет до следующей попытки соединения с ним.