безопасность

warning: Creating default object from empty value in /usr/local/www/drupal6/modules/taxonomy/taxonomy.pages.inc on line 33.

Чуть-чуть про безопасность в Exim

Пока игрался с Exim, случайно оставил дырочку или точнее ОГРОМНОЕ ОТВЕРСТИЕ для использования сервера в качестве релей - для авторизации достаточно было подобрать пользователя, пароль мог быть любым.

Проблему нашел по жалобам пользователей, что почта подтормаживает и письма странно уходят - то уходят, то не уходят и загрузка системы подпрыгнула 2-3% до 100%.

Оказалось, что за несколько часов, через меня пытались отправить около 50 тысяч сообщений под одной учеткой. Сначала подумал, что как-то подняли пароль к учетке и этим воспользовались, но потом разобрался, что сам дурак и закрыл все.

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

Оказалось, что Exim легко умеет ограничивать количество отправленной почты в единицу времени. Не совсем понятно, почему это не прикручено по умолчанию, с какими-нибудь небольшими лимитами. Кому нужно, найдут сразу, а у остальных будет мелкая дополнительная защита от возможности больших лишних рассылок.

Добавил в exim/configure в секцию acl_check_rcpt:

0
Your rating: Нет

Использование спам ловушек для обучения байесовских фильтров

В продолжение игрушек со спамом захотелось прикрутить автоматическое обучение байесовских фильтров спаму на основе спам ловушек.

У меня используются SpamProbe и Rspamd.

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

  1. Анализируем лог почтового сервера на попытку доставить письмо в несуществующий ящик.
  2. Считаем количество попыток для каждого ящика.
  3. Если попыток больше определенного, я решил, что более 30, то заносим в базу спам ловушек. Порог требуется для того, чтобы не попадали адреса, которые люди неправильно набрали при вводе.
  4. Все письма поступающие на эти адреса передаем спам фильтру на обучение.
  5. Смотрим результат и периодически перепроверяем какие еще адреса имеет смысл добавить.

Реализация для EXIM:

Сбор адресов

( bzcat /var/log/exim/rejectlog.* ; cat /var/log/exim/rejectlog ) | grep -E 'Unrouteable|not found' | grep -v -E 'root|abuse|postmaster' | sed 's/.*rejected RCPT//;s/.*<//;s/>.*//' | sort | uniq -c | awk '$1 > 30 {print $2}' | sort > /usr/local/etc/exim/spam_trap.txt

0
Your rating: Нет

Сбор мыслей в кучу по подключению Rspamd к Exim

После некоторого тестирования решил, что сил хватит поддерживать корпоративную почту на должном уровне полностью своими руками на Exim. Перевел MX на себя с роутингом ящиков на другие сервера, т.к. сейчас, кроме моего сервера, часть нашей почты обслуживает Яндекс, часть Вымпелком/Билайн/АДС.

Т.к. теперь, почта идет на прямую ко мне и имеет смысл анализировать заголовки писем, задумался, что-же такое прикрутить, т.к. SpamProbe является только бейсовым фильтром.

Остановился на Rspamd в связи с:

  1. Вроде, не сильно грузит систему
  2. По описанию автора, писался под Rambler-почту
  3. Писал наш согражданин
  4. Поддерживается текущим Exim "из коробки"
  5. Обещает, что может, все что нужно.

У меня возникло ощущение, что документация на него предполагает, что вы дружитесь со своим почтовым сервером и спокойно можете прикрутить к нему SpamAssassin.

Т.к. это не совсем мой случай, то вылезли некоторые проблемы.

1. В подключении полностью подменяют секцию проверки тела сообщения:

acl_smtp_data = acl_check_spam

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

0
Your rating: Нет

Описание подключения SpamProbe на exim и результат работы

Судя по всему, в марте прошлого года подключил к своему почтовому серверу на Exim спамфильтр SpamProbe.

По виду, все делалось по статье -  SpamProbe - фильтруем спам

Схема работы следующая:

  • Подключен к Exim через system_filter, который по необходимости сам как-то дергает SpamProbe. Хорошо это или плохо не знаю, но SpamProbe не висит демоном, а запускается каждый раз на проверку письма.
  • В Exim настроен роутер, который передает в транспорт по доставке писем пользователям в папочку Spam в случае если:
    • У получателя включен спамфильтр
    • SpamProbe определил письмо как спам
    • адрес отправителя не находится в белом листе
  • Транспорт по доставке спама передат письма dovecot с указанием положить в папку Spam.

Обучение идет с использованием dovecot, протокола imap и Antispam плагина к dovecot по следующей схеме:

0
Your rating: Нет

Результаты работы Clamav на моем сервере.

Очередной шажок по улучшению почтового сервера - вопрос в защите от вирусов.

По какой-то статье, возможно этой, поднял clamav, сейчас решил посмотреть на результаты его работы.

В среднем за сутки с понедельника по пятницу у меня проходит около 1гб почты и около 1,5 т писем.

Clamav был начал работать с 18 сентября сего года.

К нему сразу было прикручена блокировка всех архивов с exe,  scr, pif и т.д. таким изуверским способом:

0
Your rating: Нет

Авторизация на компьютере с Ubuntu по usb флешке или Bloetooth устройству

Было скучно, читал интернеты и наткнулся на статью "Посторонним вход воспрещен", более коротко - "Аутентификация при помощи Bluetooth телефона или USB Flash в Debian/Ubuntu Linux"

Проверил сначала авторизацию через флэшку -  нормально работает, вопрос, конечно, что будет с примонтированным разделом, если так лихо флэшку дергать.

Начал разбираться с авторизацией по блютуз устройсту - заходить без пароля, если рядом валяется телефон - это удобно, вроде тоже нормально отработало.

Как позжее выяснилось есть пара мелких подводных булыжников.

  1. Если используется шифрование домашнего каталога, то он остается не подмонтированным и его нужно монтировать вручную, соответственно вводя пароль.
  2. Приложение Ключи и пароли, так же требует отдельной авторизации. Некоторые умельцы просто снимают с нее пароль, но это не безопасно.

Далее стало интересно, как сделать, чтобы компьютер автоматически блокировался при исчезновении телефона.

Сначала нашел BlueProximit, но он у меня как-то не стабильно работал и мобила постоянно дергалась с целью установить сопряжение.

В итоге нарисовал свой скрипт, который ищет имя устройства по маку, когда находит, сверяет с тем, что имеется в конфиге и если находит, то выполняет какие-то действия.

Плюсы:

0
Your rating: Нет

Резервное копирование ZFS на меньший диск.

Как обычно, пока что-нить не сдохнет, думать не начнешь.

И по закону подлости, если дохнет, то сразу все.

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

Понятно дело, что что-то с винтами, но нормально выяснить было в лом/не хватало времени/сил/желания.

Теперь беда случилась несколько раз подряд и пришлось смотреть, благо выходные, что же ему не так. Как выяснилось у одного диска образовались проблемы при обращении к его началу - он цокал и становился недоступным.

А второй просто смартом ругался:

smartd[2027]: Device: /dev/ada2, 29 Currently unreadable (pending) sectors

Что то же, нифига не радует.

Хорошо что ZFS и его зеркало, да и диски с бекапами. Мертвый диск нашел, выдернул. Возник вопрос, что делать, при условии, что второй тоже может помереть, а в запасе, винт только меньший по размеру, т.е. в зеркало его не запихнешь.

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

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

0
Your rating: Нет

Теневые копии на samba через zfs.

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

Оказалось все довольно просто.

Имеем:

  • Freebsd 8.x и свежее
  • Samba (у меня samba36-3.6.9)
  • ZFS как файловая система под файлохранилище (она позволяет экономить место и очень быстро создает снепшоты)
  • zfsnap (Simple sh script to make zfs rolling snaphosts with cron) - простенький создатель снепшотов для ZFS под FreeBSD

Подготавливаем Samba:

[Public]
   path = /usr/data/samba/public
   public = yes
   writable = yes
   vfs objects = shadow_copy2
   shadow: snapdir = .zfs/snapshot
   shadow: sort = desc
   shadow: format = %Y-%m-%d_%H.%M.%S--1m

Задание cron для создания снепшотов:

0,30    7-20    *    *   *    root    /usr/local/sbin/zfSnap -d -z -R -a 1m zpool/usr/data/samba/public

После этого мы будем иметь возможность откатиться на любую дневную версию файлопомойки с интервалом в 30 минут с 7 утра до 8 вечера. При этом, места будет заниматься ровно столько, сколько необходимо для хранения всех этих изменений.

0
Your rating: Нет

Подключаю DKIM подпись к доменной почте на exim

Продолжаю учиться играть в почту.

При фильтрации почты на спам учитывается и такой момент как подпись писем от почтового сервера.

Идейно есть две вещи DomainKey и DKIM.

Если я правильно понял, то это очень похожие вещи, но сейчас, вроде, чаще используется DKIM.

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

Все настраивал по статье "Exim + DKIM на примере FreeBSD 8.2", но как обычно вышло все не без затыков.

Момент первый - куда втыкать.

 Эти строки нужно вставить в секцию remote_smtp транспорта, а не протокола:

  dkim_domain           = DKIM_DOMAIN
  dkim_selector         = YouSelectorName
  dkim_private_key      = DKIM_PRIVATE_KEY

Гуглится легко, но таки время.

Момент второй - как прописывать публичный ключ в DNS.

Т.к. ключ достаточно длинный, нужно его разбивать на несколько строк, т.е. у меня это выглядело так:

0
Your rating: Нет

Играюсь в анонимность в сети

Пока разбирался с OpenVPN и с чем его едят, узнал что он очень популярен для поднятия VPNа с целью скрытия своего IP адреса.

В сети много ресурсов которые за деньги и без готовы предоставлять впн для обхода блокировок провайдеров, правительств, контент провайдеров и т.д.

Из того что понравилось:

VPN Gate

цитата с хабра:

VPN Gate — академический эксперимент Проект представляет собой интернет-сервис как научных исследований в Высшей Школе Университета Цукуба, Япония. Цель данного исследования заключается в расширении знаний «Глобальные Распределенные открытый ретранслятор Сервера VPN».

Как говорит автор, целью проекта было помочь пользователям в странах, где действует государственная цензура интернет-трафика. VPN Gate так же бесплатен и открыт для всех желающих, как и Tor. С момента запуска в пятницу всего за пять дней сервисом воспользовались 77 тыс. пользователей, сгенерировав около четырёх терабайт трафика, так что спрос на бесплатные VPN явно присутствует.

0
Your rating: Нет
Ленты новостей