173
Всеволод Стахов https://rspamd.com

Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

  • Upload
    ontico

  • View
    779

  • Download
    4

Embed Size (px)

Citation preview

Page 1: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Всеволод Стахов https://rspamd.com

Page 2: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Часть I: Знакомство

Page 3: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Зачем нужен rspamd? SpamAssassin → rspamd в “Рамблер-Почте”

Page 4: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Какой бывает спам Актуальные виды

Page 5: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Какой бывает спам Актуальные виды

• Мошеннические письма (scam):

Page 6: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Какой бывает спам Актуальные виды

• Мошеннические письма (scam):

• “Нигерийские” письма

Page 7: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Какой бывает спам Актуальные виды

• Мошеннические письма (scam):

• “Нигерийские” письма

• Фишинг (банки, соцсети)

Page 8: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Какой бывает спам Актуальные виды

• Мошеннические письма (scam):

• “Нигерийские” письма

• Фишинг (банки, соцсети)

• Реклама:

Page 9: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Какой бывает спам Актуальные виды

• Мошеннические письма (scam):

• “Нигерийские” письма

• Фишинг (банки, соцсети)

• Реклама:

• Традиционная текстовая

Page 10: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Какой бывает спам Актуальные виды

• Мошеннические письма (scam):

• “Нигерийские” письма

• Фишинг (банки, соцсети)

• Реклама:

• Традиционная текстовая

• Картинки, сложный html и другие методы обфусикации

Page 11: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Какой бывает спам Актуальные виды

• Мошеннические письма (scam):

• “Нигерийские” письма

• Фишинг (банки, соцсети)

• Реклама:

• Традиционная текстовая

• Картинки, сложный html и другие методы обфусикации

• Подделки под сообщения соцсетей

Page 12: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Scam: типичный пример

Page 13: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Реклама: примеры

Page 14: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Реклама: примеры

Page 15: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Методики борьбы Принципы

Page 16: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Методики борьбы Принципы

• Политики (особенно эффективны против Scam’a)

• DNS списки (ip адреса, URL)

• SPF, DKIM, DMARC

• Репутация отправителя

Page 17: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Методики борьбы Принципы

• Политики (особенно эффективны против Scam’a)

• DNS списки (ip адреса, URL)

• SPF, DKIM, DMARC

• Репутация отправителя

• Контент фильтрация (поиск заданных паттернов в письмах)

Page 18: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Методики борьбы Принципы

• Политики (особенно эффективны против Scam’a)

• DNS списки (ip адреса, URL)

• SPF, DKIM, DMARC

• Репутация отправителя

• Контент фильтрация (поиск заданных паттернов в письмах)

• Статистический анализ (например, bayes)

Page 19: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Методики борьбы Трудности

Page 20: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Методики борьбы Трудности

• Политики:

• Требуют сетевых запросов, которые могут долго выполняться

• Ложные срабатывания

Page 21: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Методики борьбы Трудности

• Политики:

• Требуют сетевых запросов, которые могут долго выполняться

• Ложные срабатывания

• Контент фильтрация:

• Затратна в плане CPU

• Быстро устаревает

Page 22: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Методики борьбы Трудности

• Политики:

• Требуют сетевых запросов, которые могут долго выполняться

• Ложные срабатывания

• Контент фильтрация:

• Затратна в плане CPU

• Быстро устаревает

• Статистический анализ:

• Неточен

• Сложно сканировать в многопользовательских системах

Page 23: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Пример работы rspamd

Page 24: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Особенности rspamd

Page 25: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Особенности rspamd • Нормализация текста (snowball stemmer)

Page 26: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Особенности rspamd • Нормализация текста (snowball stemmer)

• Конвертирование всех писем в utf-8

Page 27: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Особенности rspamd • Нормализация текста (snowball stemmer)

• Конвертирование всех писем в utf-8

• Поддержка настроек пользователей

Page 28: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Особенности rspamd • Нормализация текста (snowball stemmer)

• Конвертирование всех писем в utf-8

• Поддержка настроек пользователей

• Возможность создания нескольких метрик для писем

Page 29: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Особенности rspamd • Нормализация текста (snowball stemmer)

• Конвертирование всех писем в utf-8

• Поддержка настроек пользователей

• Возможность создания нескольких метрик для писем

• Web интерфейс для управления

Page 30: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Особенности rspamd • Нормализация текста (snowball stemmer)

• Конвертирование всех писем в utf-8

• Поддержка настроек пользователей

• Возможность создания нескольких метрик для писем

• Web интерфейс для управления

• Совместимость с правилами SpamAssassin’а

Page 31: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Особенности rspamd • Нормализация текста (snowball stemmer)

• Конвертирование всех писем в utf-8

• Поддержка настроек пользователей

• Возможность создания нескольких метрик для писем

• Web интерфейс для управления

• Совместимость с правилами SpamAssassin’а

• OpenSource (BSD 2-clause)

Page 32: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Методы фильтрации Политики

Page 33: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Методы фильтрации Политики

• Поддержка SPF, DKIM, DMARC

Page 34: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Методы фильтрации Политики

• Поддержка SPF, DKIM, DMARC

• Плагин DNSBL - работа с DNS блок-листами

Page 35: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Методы фильтрации Политики

• Поддержка SPF, DKIM, DMARC

• Плагин DNSBL - работа с DNS блок-листами

• Плагин SURBL - работа с DNS листами URL

Page 36: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Методы фильтрации Политики

• Поддержка SPF, DKIM, DMARC

• Плагин DNSBL - работа с DNS блок-листами

• Плагин SURBL - работа с DNS листами URL

• Плагин репутации (IP, подсети, автономной сети и страны)

Page 37: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Методы фильтрации Политики

• Поддержка SPF, DKIM, DMARC

• Плагин DNSBL - работа с DNS блок-листами

• Плагин SURBL - работа с DNS листами URL

• Плагин репутации (IP, подсети, автономной сети и страны)

• Универсальный плагин для обработки списков

Page 38: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Методы фильтрации Анализ контента

Page 39: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Методы фильтрации Анализ контента

• Регулярные выражения

Page 40: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Методы фильтрации Анализ контента

• Регулярные выражения

• Быстрый поиск по шаблону (trie)

Page 41: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Методы фильтрации Анализ контента

• Регулярные выражения

• Быстрый поиск по шаблону (trie)

• Совместимость с существующими правилами SpamAssassin

Page 42: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Методы фильтрации Анализ контента

• Регулярные выражения

• Быстрый поиск по шаблону (trie)

• Совместимость с существующими правилами SpamAssassin

• Специализированные плагины (maillist, one received, chartable)

Page 43: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Методы фильтрации Статистические методы

Page 44: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Методы фильтрации Статистические методы

• Bayes фильтр с sqlite/mmap бэкэндами

Page 45: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Методы фильтрации Статистические методы

• Bayes фильтр с sqlite/mmap бэкэндами

• Нечеткие хеши

Page 46: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Интеграция rspamd milter

Page 47: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Интеграция rspamd milter

• rmilter + postfix/sendmail:

Page 48: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Интеграция rspamd milter

• rmilter + postfix/sendmail:

• поддерживает все возможности rspamd (например, выборочный грейлистинг)

Page 49: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Интеграция rspamd milter

• rmilter + postfix/sendmail:

• поддерживает все возможности rspamd (например, выборочный грейлистинг)

• умеет разделять входящие и исходящие потоки почты

Page 50: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Интеграция rspamd milter

• rmilter + postfix/sendmail:

• поддерживает все возможности rspamd (например, выборочный грейлистинг)

• умеет разделять входящие и исходящие потоки почты

• умеет хранить информацию об ответах на собственные письма

Page 51: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Интеграция rspamd milter

• rmilter + postfix/sendmail:

• поддерживает все возможности rspamd (например, выборочный грейлистинг)

• умеет разделять входящие и исходящие потоки почты

• умеет хранить информацию об ответах на собственные письма

• дополнительные проверки: clamav, dcc

Page 52: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Интеграция rspamd milter

• rmilter + postfix/sendmail:

• поддерживает все возможности rspamd (например, выборочный грейлистинг)

• умеет разделять входящие и исходящие потоки почты

• умеет хранить информацию об ответах на собственные письма

• дополнительные проверки: clamav, dcc

• умеет подписывать исходящие письма (DKIM)

Page 53: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Интеграция rspamd Другие способы

Page 54: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Интеграция rspamd Другие способы

• exim - встроенная поддержка (с версии 4.86)

Page 55: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Интеграция rspamd Другие способы

• exim - встроенная поддержка (с версии 4.86)

• haraka - встроенная поддержка

Page 56: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Интеграция rspamd Другие способы

• exim - встроенная поддержка (с версии 4.86)

• haraka - встроенная поддержка

• любые MTA - LDA режим, когда клиент rspamd проверяет письмо и вызывает через pipe LDA для доставки письма (не работает грейлистинг)

Page 57: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Часть II: Архитектура

Page 58: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Rspamd в двух словах

Page 59: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Rspamd в двух словах

• Написан на plain C

Page 60: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Rspamd в двух словах

• Написан на plain C

• Использует неблокирующую (событийную) модель обработки данных

Page 61: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Rspamd в двух словах

• Написан на plain C

• Использует неблокирующую (событийную) модель обработки данных

• Плагины и правила написанны на языке Lua

Page 62: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Rspamd в двух словах Приоритеты разработки

Page 63: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Rspamd в двух словах Приоритеты разработки

• Производительность и масштабируемость

Page 64: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Rspamd в двух словах Приоритеты разработки

• Производительность и масштабируемость

• Качество фильтрации и расширяемость

Page 65: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Rspamd в двух словах Приоритеты разработки

• Производительность и масштабируемость

• Качество фильтрации и расширяемость

• Портабельность и интеграция с MTA

Page 66: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Rspamd в двух словах Приоритеты разработки

• Производительность и масштабируемость

• Качество фильтрации и расширяемость

• Портабельность и интеграция с MTA

• Безопасность

Page 67: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Rspamd в двух словах Приоритеты разработки

• Производительность и масштабируемость

• Качество фильтрации и расширяемость

• Портабельность и интеграция с MTA

• Безопасность

• Простота, работа “из коробки” и документация

Page 68: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Событийная модель Никогда не блокируется*

*почти никогда

Page 69: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Событийная модель Никогда не блокируется*

• Плюсы:

✅ Может обрабатывать сетевые запросы независимо

✅ Посылает все сетевые запросы одновременно

✅ Обрабатывает сразу много сообщений и хорошо сканируется

*почти никогда

Page 70: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Событийная модель Никогда не блокируется*

• Плюсы:

✅ Может обрабатывать сетевые запросы независимо

✅ Посылает все сетевые запросы одновременно

✅ Обрабатывает сразу много сообщений и хорошо сканируется

• Cons:

📛 Очень сложная работа с callback’ами

⛔ Сложно ограничить потребление памяти

*почти никогда

Page 71: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Последовательная обработка Традиционный подход

Rule 1 Rule 2 Rule 3

DNS Hashes

Ожидание Ожидание

Обработка

Page 72: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Событийная модель Подход rspamd

Rule 1 Rule 2 Rule 3

DNS Hashes

Ожидание

Обработка

Page 73: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Rule 1Rule 1Rules

DNS Hashes

Ожидание

Событийная модель Что происходит на самом деле

Page 74: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Событийная модель Несколько наблюдений

• Rspamd может генерировать множество параллельных сетевых запросов: time: 5540.8ms real, 2427.4ms virtual, dns req: 120543

Page 75: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Событийная модель Несколько наблюдений

• Rspamd может генерировать множество параллельных сетевых запросов: time: 5540.8ms real, 2427.4ms virtual, dns req: 120543

• Для коротких сообщений (которые составляют 99% от всех сообщений) ожидание занимает в сотни раз больше времени, чем обработка: time: 996.140ms real, 22.000ms virtual,

Page 76: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Обработка сообщения в rspamd

RulesRulesFilters

RulesRulesPre-filters

RulesRulesPost-filters

📩 Сообщение

📬 Результат

Ожидание

Ожидание

Ожидание зависимостей

Page 77: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Процессы rspamd

Scanning processesScanning processesScaner processes Controller Сервисные процессы

Main process

✉✉

HTTP📬 ✉✉✉

Обучение

Сообщения Результаты

Page 78: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Статистика в rspamd

Page 79: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Статистика в rspamd• Использует цепи Маркова из статистических токенов

Page 80: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Статистика в rspamd• Использует цепи Маркова из статистических токенов

• Использует метаданные в письме (mime структуру, вложения, заголовки)

Page 81: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Статистика в rspamd• Использует цепи Маркова из статистических токенов

• Использует метаданные в письме (mime структуру, вложения, заголовки)

• Статистические данные хранятся в sqlite3

Page 82: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Статистика в rspamd• Использует цепи Маркова из статистических токенов

• Использует метаданные в письме (mime структуру, вложения, заголовки)

• Статистические данные хранятся в sqlite3

• Синхронизация: обучение всех серверов вместе (есть защита от повторного обучения)

Page 83: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Структура токенов Quick brown fox jumps over lazy dog

1234

1

2

Page 84: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Пример работы статистики Сложный случай - спам в картинках

Проц

ент пи

сем

0%

25%

50%

75%

100%

Spam Ham

8%5%

92%95%

Правильно распознано Не распознано

Page 85: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Нечеткие хеши Общие данные

Page 86: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Нечеткие хеши Общие данные

• Используются для поиска похожих писем

Page 87: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Нечеткие хеши Общие данные

• Используются для поиска похожих писем

• Сочетают обычные хеши для вложений и алгоритм шинглов для текста

Page 88: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Нечеткие хеши Общие данные

• Используются для поиска похожих писем

• Сочетают обычные хеши для вложений и алгоритм шинглов для текста

• Хранилище хешей - sqlite3

Page 89: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Нечеткие хеши Общие данные

• Используются для поиска похожих писем

• Сочетают обычные хеши для вложений и алгоритм шинглов для текста

• Хранилище хешей - sqlite3

• Синхронизация: обучение всех серверов вместе (есть защита от повторного обучения)

Page 90: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Алгоритм шингловQuick brown fox jumps over lazy dog

w1 w2 w3

w2 w3 w4

w3 w4 w5

w4 w5 w6

w1 w2 w3

w2 w3 w4

w3 w4 w5

w4 w5 w6N хешей

h1

h2

h3

h4

h1’

h2’

h3’

h4’

Page 91: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Алгоритм шингловh1 h2 h3

h1’ h2’ h3’

h1’’ h2’’ h3’’

h1’’’’’ h2’’’’ h3’’’’

min

min

min

min

N шингловN наборов хешей

Page 92: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Алгоритм шинглов

Page 93: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Алгоритм шинглов• Однозначный вероятностный алгоритм

Page 94: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Алгоритм шинглов• Однозначный вероятностный алгоритм

• В качестве хеш-функции - siphash с разными ключами

Page 95: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Алгоритм шинглов• Однозначный вероятностный алгоритм

• В качестве хеш-функции - siphash с разными ключами

• Ключи генерируются при помощи криптографической хеш-функции

Page 96: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Алгоритм шинглов• Однозначный вероятностный алгоритм

• В качестве хеш-функции - siphash с разными ключами

• Ключи генерируются при помощи криптографической хеш-функции

• Размер окна - 3 слова, число хешей - 32 (больше - медленно)

Page 97: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Часть III: Производительность

Page 98: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Общие принципы

Page 99: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Общие принципы• Думать о производительности. Всегда.

Page 100: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Общие принципы• Думать о производительности. Всегда.

• Если что-то можно не делать, то не делать это

Page 101: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Общие принципы• Думать о производительности. Всегда.

• Если что-то можно не делать, то не делать это

• Если есть более оптимальное частное решение задачи, то использовать его (ассемблерные вставки, конечные автоматы)

Page 102: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Общие принципы• Думать о производительности. Всегда.

• Если что-то можно не делать, то не делать это

• Если есть более оптимальное частное решение задачи, то использовать его (ассемблерные вставки, конечные автоматы)

• Если можно сделать примерно, но быстро, или очень точно, но долго, то делать быстро

Page 103: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Оптимизация правил Глобальная оптимизация

Page 104: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Оптимизация правил Глобальная оптимизация

• Останавливать проверки, если письмо уже набрало порог очков

Page 105: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Оптимизация правил Глобальная оптимизация

• Останавливать проверки, если письмо уже набрало порог очков

• Обрабатывать правила с отрицательным весом в первую очередь (для избежания ошибок второго рода)

Page 106: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Оптимизация правил Глобальная оптимизация

• Останавливать проверки, если письмо уже набрало порог очков

• Обрабатывать правила с отрицательным весом в первую очередь (для избежания ошибок второго рода)

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

• Учитывается среднее время выполнения, вес и частота срабатывания

• Жадный алгоритм сортировки

Page 107: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Оптимизация правил Локальные оптимизации

Page 108: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Оптимизация правил Локальные оптимизации

• Каждое правило оптимизируется при помощи абстрактного синтаксического дерева (AST): дало прирост в 3-4 раза для больших писем

Page 109: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Оптимизация правил Локальные оптимизации

• Каждое правило оптимизируется при помощи абстрактного синтаксического дерева (AST): дало прирост в 3-4 раза для больших писем

• Элементы в дереве упорядочиваются по аналогичному “жадному” алгоритму

Page 110: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Оптимизация правил Локальные оптимизации

• Каждое правило оптимизируется при помощи абстрактного синтаксического дерева (AST): дало прирост в 3-4 раза для больших писем

• Элементы в дереве упорядочиваются по аналогичному “жадному” алгоритму

• Регулярные выражения компилируются при помощи PCRE JIT (+100-150% скорости)

Page 111: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Оптимизация правил Локальные оптимизации

• Каждое правило оптимизируется при помощи абстрактного синтаксического дерева (AST): дало прирост в 3-4 раза для больших писем

• Элементы в дереве упорядочиваются по аналогичному “жадному” алгоритму

• Регулярные выражения компилируются при помощи PCRE JIT (+100-150% скорости)

• Код на Lua компилируется LuaJIT

Page 112: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Оптимизации AST Исключение лишних ветвей

&

|C

! B

A

A = 0, B = 1, C = 0

0

110

1

0

Порядок обработки

4/6 ветвей пропущено

Page 113: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Оптимизации AST N-арные операции

>

+ 2

! B

A

Порядок обработки

C D E

Что мы сравниваем?

Here is our limit

Останавливаем обработку

Page 114: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Оптимизации библиотеки C

Page 115: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Оптимизации библиотеки C• Собственное API для ведения логов:

• умеет работать с syslog/file/console

• фильтрует повторяющиеся сообщения и сообщения с не-ASCII символами

Page 116: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Оптимизации библиотеки C• Собственное API для ведения логов:

• умеет работать с syslog/file/console

• фильтрует повторяющиеся сообщения и сообщения с не-ASCII символами

• Собственная реализация printf:

• работает со структурами rspamd (строки фиксированной длины, int*_t)

• не зависит от локалей

• не пытается вычислять требуемую длину буфера

Page 117: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Оптимизации библиотеки C Строковые функции

Page 118: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Оптимизации библиотеки C Строковые функции

• Оптимизированные функции работы с base32/base64:

• работа с выровненными данными;

• оптимизация циклов для 64-х битных платформ

Page 119: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Оптимизации библиотеки C Строковые функции

• Оптимизированные функции работы с base32/base64:

• работа с выровненными данными;

• оптимизация циклов для 64-х битных платформ

• Реализация приведения текста к нижнему регистру (ASCII и UTF8 версия)

Page 120: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Оптимизации библиотеки C Строковые функции

• Оптимизированные функции работы с base32/base64:

• работа с выровненными данными;

• оптимизация циклов для 64-х битных платформ

• Реализация приведения текста к нижнему регистру (ASCII и UTF8 версия)

• Использование строк фиксированной длины

Page 121: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Оптимизации библиотеки C

Page 122: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Оптимизации библиотеки C

• Быстрые хеш функции (xxhash и blake2)

Page 123: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Оптимизации библиотеки C

• Быстрые хеш функции (xxhash и blake2)

• Быстрое шифрование (ассемблерные реализации)

Page 124: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Оптимизации библиотеки C

• Быстрые хеш функции (xxhash и blake2)

• Быстрое шифрование (ассемблерные реализации)

• Выравнивание данных

Page 125: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Оптимизации библиотеки C

• Быстрые хеш функции (xxhash и blake2)

• Быстрое шифрование (ассемблерные реализации)

• Выравнивание данных

• Поддержка инструментов анализа производительности и возможность оценки скорости работы каждого правила

Page 126: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Хранение IP адресов Несжатое radix дерево

IP1 IP2

01

01

01

01

Уровень на каждый бит: 32 уровня для IPv4 128 уровней для IPv6

Page 127: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Хранение IP адресов Компрессированное radix дерево

010

IP1 IP2

01

01

Page 128: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Часть IV: Безопасность

Page 129: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Основные принципы

Page 130: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Основные принципы• Писать безопасный код на plain C трудно

Page 131: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Основные принципы• Писать безопасный код на plain C трудно

• Основные угрозы:

• Взаимодействие с DNS

• Прослушивание трафика (шифровать надо все данные, передаваемые по сети)

• Вредоносные сообщения

Page 132: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Примеры проблем

Page 133: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Примеры проблем

• В письме может содержаться очень много данных для проверки в DNS (например, сотни тысяч URL)

Page 134: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Примеры проблем

• В письме может содержаться очень много данных для проверки в DNS (например, сотни тысяч URL)

• SPF записи могут иметь бесконечную рекурсию

Page 135: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Примеры проблем

• В письме может содержаться очень много данных для проверки в DNS (например, сотни тысяч URL)

• SPF записи могут иметь бесконечную рекурсию

• Нужны лимиты на число запросов для одного письма

Page 136: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Защита DNS

Page 137: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Защита DNS

• Криптографический генератор DNS id

Page 138: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Защита DNS

• Криптографический генератор DNS id

• Пул сокетов с постоянной ротацией

Page 139: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Защита DNS

• Криптографический генератор DNS id

• Пул сокетов с постоянной ротацией

• Рандомизация портов для запросов

Page 140: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Защита DNS

• Криптографический генератор DNS id

• Пул сокетов с постоянной ротацией

• Рандомизация портов для запросов

• Фильтрация входных данных (+ IDN кодирование)

Page 141: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Шифрование трафика

Page 142: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Шифрование трафика

• Безопасность -> скорость -> простота

Page 143: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Шифрование трафика

• Безопасность -> скорость -> простота

• TLS сложно интегрировать в non-blocking IO

Page 144: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Шифрование трафика

• Безопасность -> скорость -> простота

• TLS сложно интегрировать в non-blocking IO

• TLS делает много ненужного, увеличивая CPU load и latency

Page 145: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Протокол HTTPCrypt

Page 146: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Установление соединенияClientHelo

ServerHelo Certificates⚠

ClientChangeCipher

ServerChangeCipher

Data

TLS handshake

ClientPK Encrypted request

Encrypted reply Validation (optional)

HTTPCrypt handshake

Page 147: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Пропускная способность Шифрование кэшированных соединений

Page 148: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Пропускная способность Шифрование новых соединений

Page 149: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Пропускная способность Шифрование новых соединений

Page 150: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Задержка соединения Шифрование кэшированных соединений

Page 151: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Задержка соединения Шифрование новых соединений

Page 152: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Анализ производительности Почему HTTPCrypt работает быстро

Page 153: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Анализ производительности Почему HTTPCrypt работает быстро

• Более быстрая асимметричная криптография (ECDH)

Page 154: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Анализ производительности Почему HTTPCrypt работает быстро

• Более быстрая асимметричная криптография (ECDH)

• Отсутствие подписи и ее проверки (как требуется в TLS)

Page 155: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Анализ производительности Почему HTTPCrypt работает быстро

• Более быстрая асимметричная криптография (ECDH)

• Отсутствие подписи и ее проверки (как требуется в TLS)

• Шифрование без промежуточного копирования (на месте)

Page 156: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Анализ применимости

Page 157: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Анализ применимости• HTTPCrypt применяется для работы с клиентами сканера

Page 158: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Анализ применимости• HTTPCrypt применяется для работы с клиентами сканера

• Есть проект JavaScript реализации для защиты Web интерфейса

Page 159: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Анализ применимости• HTTPCrypt применяется для работы с клиентами сканера

• Есть проект JavaScript реализации для защиты Web интерфейса

• Аналогичный метод применяется для работы с хранилищем хешей

Page 160: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Анализ применимости• HTTPCrypt применяется для работы с клиентами сканера

• Есть проект JavaScript реализации для защиты Web интерфейса

• Аналогичный метод применяется для работы с хранилищем хешей

• Библиотека rdns, используемая для работы с DNS, поддерживает DNSCurve, который позволяет шифровать DNS запросы теми же конструкциями

Page 161: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Выводы

Page 162: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Выводы

Page 163: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Выводы

• Rspamd спроектирован, чтобы обеспечивать высокую производительность

Page 164: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Выводы

• Rspamd спроектирован, чтобы обеспечивать высокую производительность

• Rspamd обладает большим набором правил и плагинов, поставляемых “из коробки”

Page 165: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Выводы

• Rspamd спроектирован, чтобы обеспечивать высокую производительность

• Rspamd обладает большим набором правил и плагинов, поставляемых “из коробки”

• Весь трафик, отправляемый rspamd по сети, можно шифровать

Page 166: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Вопросы?Всеволод Стахов

https://rspamd.com

Page 167: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Дополнительные материалы

Page 168: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Администрирование rspamd Основы

• Rspamd устанавливается из пакетов/портов для большинства систем и работает “из коробки”

• Предоставляется сервис нечетких хешей, обучаемый из honeypot’ов

• Web интерфейс для большинства повседневных задач

Page 169: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Администрирование rspamd Ручная настройка

• Секции

• Массивы

• Переменные

• Макросы

• Комментарии

section { key = “value”; number = 10K; }

upstreams = [ “localhost:80”, “example.com:8080”,

]

static_dir = “${WWWDIR}/“; filepath = “${CURDIR}/data”;

.include “${CONFDIR}/workers.conf”

.include (glob=true,priority=2) “${CONFDIR}/conf.d/*.conf”

.lua { print(“hey!”); }

key = value; // Single line comment /* Multiline comment /* can also be nested */ */

Page 170: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Администрирование rspamd Компоненты конфигурации

Глобальные опции

Настройки процессов

Настройки весов

Конфигурация плагинов

Опции статистики

• Основные правила, веса и другие настройки используются по умолчанию после установки

• rspamd.local.conf используется для добавления опций

• rspamd.override.conf используется для переопределения опций

• rspamd.local.lua содержит локальные правила на языке lua

Page 171: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Администрирование rspamd Обучение

• Для обучения статистики нужно примерно равное количество примеров спама и хама

• Обучение статистики и хешей делается сразу для всех серверов (защита от повторного обучения)

• Утилитой rspamadm можно выполнять слияние баз статистики и баз хешей

Page 172: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Администрирование rspamd Правила регулярных выражений

-- Outlook versions that should be excluded from summary rulelocal fmo_excl_o3416 = 'X-Mailer=/^Microsoft Outlook, Build 10.0.3416$/H'local fmo_excl_oe3790 = 'X-Mailer=/^Microsoft Outlook Express 6.00.3790.3959$/H'-- Summary rule for forged outlookreconf['FORGED_MUA_OUTLOOK'] = string.format('(%s | %s) & !%s & !%s & !%s',

forged_oe, forged_outlook_dollars, fmo_excl_o3416, fmo_excl_oe3790, vista_msgid)

Page 173: Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (University of Cambridge / Mimecast

Администрирование rspamd Правила на Lua

rspamd_config.R_EMPTY_IMAGE = function(task) local tp = task:get_text_parts() -- get text parts in a message for _,p in ipairs(tp) do -- iterate over text parts array using `ipairs` if p:is_html() then -- if the current part is html part local hc = p:get_html() -- we get HTML context local len = p:get_length() -- and part's length if len < 50 then -- if we have a part that has less than 50 bytes of text local images = hc:get_images() -- then we check for HTML images if images then -- if there are images for _,i in ipairs(images) do -- then iterate over images in the part if i['height'] + i['width'] >= 400 then -- if we have a large image return true -- add symbol end end end end end endend