Я хотел бы настроить способ задерживания спамеров, которые подключаются к моему почтовому серверу - я настроил fail2ban для запуска tarpit iptables, и, похоже, он работает. Вопрос в том, как я могу отключить процесс smtpd postfix, чтобы освободить эти ресурсы, при этом все еще удерживая брезент спамера?
Мне очень не хватает 60-х или около того задержки qmail, добавляемой каждому дополнительному получателю / сообщению, если они превышают, скажем, 10 сообщений ...
# limit max sends per minute
anvil_rate_time_unit = 60s
smtpd_client_event_limit_exceptions = $mynetworks
smtpd_client_recipient_rate_limit = 15
smtpd_client_message_rate_limit = 30
Вы можете попытаться уменьшить эти числа, 15 и 30 все еще несколько большие. Сегодня меня атаковали два спамера: один использует 90, а другой 183 различных IP-адреса. Если каждый отправляет со скоростью 15 в минуту, они отправляют 4.095 писем в минуту! Ну, это, конечно, было бы лучше, чем 100000 в минуту. :)
Но если вы установите слишком низкое значение, ваши клиенты, вероятно, будут жаловаться на то, что не могут прикрепить фотографии к своему длинному списку клиентов.
Tarpit Qmail просто добавил задержку между сообщениями, когда они превышали пороговое значение, что было нормально, независимо от того, сколько получателей было в списке. Это можно каким-то образом применить и к postfix, и вы можете безопасно ограничить список до 5 получателей / сообщений в минуту. : /
не совсем ловушка, но вы можете посмотреть на серый список - есть некоторые решения для postfix.
лично я вообще не нашел этого метода [поскольку люди ожидают, что почта будет работать почти в реальном времени], но одно можно сказать наверняка - он довольно эффективен для отсечения нежелательного спама.
Вы отправляете пакеты в tarpit, как только обнаруживаете спамера?
Если вы не можете найти способ убить конкретный процесс, обрабатывающий это соединение, может быть, вы сможете завершить текущее соединение? Должна быть возможность настроить iptables так, чтобы всякий раз, когда пакет соответствует черному списку вашего хоста, он сначала проверял, является ли он частью существующего соединения (если да, то пусть он проходит), а в противном случае отправляет его в NOTRACK & TARPIT?
Это может вам не помочь прямо сейчас, но в Postfix 2.8 планируется получить службу postscreen, которая представляет собой единый процесс предварительной проверки smtpd, который выполняет некоторые базовые проверки перед передачей соединения. В зависимости от того, насколько быстро вы определяете соединения как tarpittable, вы можете перехватить их до того, как они дойдут до smtpd. Чтобы получить это прямо сейчас, вам нужно будет запустить экспериментальную версию или извлечь из нее двоичный файл postscreen и попытаться интегрировать его в вашу текущую настройку (возможно, сложно).
На данный момент вы могли бы рассмотреть возможность инвертирования действия iptables, выполняемого fail2ban, чтобы Postfix получил пакет RST и освободил smtpd.