Новый вид мамкиных хакеров [exim]?

Kaavain
На сайте с 28.07.2015
Offline
133
773

Последние дни наблюдаю необычную картину, причем на трех разных VPS. Если всегда попытки подбора пароля к exim были либо обычные - стучался очередной 3.14дор раз в 3-5 секунд, и его отрубал fail2ban после N попыток, так как они попадали в заданный интервал, либо второй вариант - медленные ..., которые стучались раз в 20-30 минут и f2b успевал про них забыть (для чего я увеличил до 100 минут интервал), то последние пару дней вижу как запросы выстреливаются с частостой блин почти килогерц - проходит за секунду с одного IP порядка 200-300 запросов, f2b не успевает так быстро сработать и блочит только через 1 секунду, то есть несколько сотен попыток проехало. Даже больше - иногда после того как f2b отрапартует что ban за следующие 500мс еще влетает сотня запросов.

Что это? Никто не исследовал?

Причем множество запросов не на авторизацию а на relay, вообще бессмысленно на мой взгляд.

Все бы ничего, но нагрузка на сервер (хотя в статистике нет ее особо) да и логи пухнут до 1-2 Мб.

Могу порекомендовать только хостинг: https://traf.at/vps - за 3 года все на 4++ и цены не подняли. Ну и банк для белых ИП: https://traf.at/bankm
LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#1
Kaavain :
Что это? Никто не исследовал?

Поиск товара для продажи. Поиском товаров занимаются разные люди и группы, у всех разный подход.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
Kaavain
На сайте с 28.07.2015
Offline
133
#2
LEOnidUKG #:

Поиск товара для продажи. Поиском товаров занимаются разные люди и группы, у всех разный подход.

Так это по 25 порту-то. Причем тут товары?

htexture
На сайте с 29.05.2017
Offline
194
#3
Kaavain #:

Так это по 25 порту-то. Причем тут товары?

Потом доступ, потом рассылка, потом бан по 25-ому порту.
Kaavain :
да и логи пухнут до 1-2 Мб.
У меня логи в ротации, логи по доступу к ссш за сутки от китайцев пухнут на гигабайты)
Kaavain
На сайте с 28.07.2015
Offline
133
#4
htexture #:
Потом доступ, потом рассылка, потом бан по 25-ому порту.

Не понял. 

Вообще идет бред какой-то, попытка отправить дерьмо от фейкового отправителя на фейковый ящик на моем же другом домене. При этом же первая попытка заканчивается relay is not permitted, нафига остальные 100500 делать.  

htexture
На сайте с 29.05.2017
Offline
194
#5
Kaavain #:

Не понял. 

Вообще идет бред какой-то, попытка отправить дерьмо от фейкового отправителя на фейковый ящик на моем же другом домене. При этом же первая попытка заканчивается relay is not permitted, нафига остальные 100500 делать.  

Я не в курсе, я лишь предположил. Возможно есть такие же мамкины сисадмины, которые вообще ехим оставляют с типичными паролями и всеми правами. (я не вникал в работу ексима)
LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#6
Kaavain #:

Так это по 25 порту-то. Причем тут товары?

При том. Идёт проверка сервера, где есть какие-то уязвимости, чтобы их потом продать.

Kaavain
На сайте с 28.07.2015
Offline
133
#7

Докладаю о борьбе с этим видом хакерства: победил его и не только его попутно, но с благодарностью приму критику или похвалу вымученного за четыре дня решения (особенно тяжело далось понимание "почему ругается на regex" после 2л винища)...

Итак, в exim.conf насоздавал правил. В коде ниже (Х) это в коде не нужно (если кто копировать будет), это сноски для комментов!

#My anti-spam rules
acl_check_helo:
accept (1)
  condition   = ${if !def:acl_c_helo_passed {true}{false}} (1а)
  condition   = ${if match{$sender_host_name}{$sender_helo_name}{yes}{no}}
  logwrite = -= Accepted as NAME match HELO: $sender_helo_name =-
  set acl_c_helo_passed = PASSED as NAME match HELO (1а)
accept (2)
  condition   = ${if !def:acl_c_helo_passed {true}{false}}
  condition   = ${if match{$sender_host_name}{^.*outlook.com\$}{yes}{no}}
  logwrite = -= Accepted as sender host seems to be Outlook: $sender_host_name =-
  set acl_c_helo_passed = PASSED as Outlook
drop(3)
  condition   = ${if !def:acl_c_helo_passed {true}{false}}
  condition   = ${if isip{$sender_helo_name}{true}{false}}
  logwrite = -XXX Wrong helo found: $sender_helo_name XXX-
drop (4)
  condition   = ${if !def:acl_c_helo_passed {true}{false}}
  condition   = ${if match{$sender_helo_name}{\N((?>\w+[\.|\-]){6,})\N}{yes}{no}}
  logwrite = -XXX Wrong helo found / too many dots: $sender_helo_name XXX-
drop (5)
  condition   = ${if !def:acl_c_helo_passed {true}{false}}
  condition   = ${if match{$sender_helo_name}{^(\\[|\\().*(\\)|\\])\$}{yes}{no}}
  logwrite = -XXX Wrong helo found / brackets found: $sender_helo_name XXX-
accept (6)
  logwrite = -= Considered helo $sender_helo_name as fair [$acl_c_helo_passed]. =- (6а)
  set acl_c_helo_passed = PASSED as NOT DENIED
#end of My ASR

    # Check on RCPT step
    acl_check_rcpt:

####SPAM settings by me
deny (7)
  !authenticated = *
  !verify = reverse_host_lookup
  logwrite = -XXX rDNS of $sender_host_name (helo: $sender_helo_name) IP: $sender_host_address is missing. XXX-
deny hosts = /etc/exim/blacklisted.domains (8)
  logwrite = -XXX domain $host_data blacklisted XXX-
####END my SPAM settings

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

(1) пропускать всех, у кого совпадает HELO и хост. Бывает не так часто, но я решил что раз уж чел заморочился - то вряд ли он спамер.

(1а) здесь я делаю проверку, не обработали ли это helo уже. Как я понял, helo запрашивается дважды - при первом подключении и при установлении защищенного соединения, вот чтобы не гонять проверки дважды - они идут только если уже не были произведены.

(2) ну это специально для Билла нашего Гейтса. Обнаружил что всякие аутлуки онлайн и прочая мелкомягкая фигня шлет в helo многоэтажные домены, кторые не совпадают с обратным ДНСом, и либо ослаблять (4) - но тогда пролезут гады многие - либо вот так. Возможно, костыль можно будет убрать из-за (1), пока срабатываний (2) я не увидел.

(3) в интернетах часто встречается проверка helo на чистый IP, пусть будет, но я пока видел только (5).

(4) Предполагается, что многоэтажный helo - признак гнилья. Хотя есть у меня сомнения, что какой-нибудь диалап на самом деле честный парень. Но думаю в данном случае он должен быть принят на (1).

(5) вот ради этого все и затевалось. Паразиты в хело пихают IP, но, чтобы не попасть на (3) они его оборачивают в скобки. Вот тут я долго пыхтел над регуляркой!!! Уже все даже снес нафиг спья... сгоряча, но потом допер - что экранировать надо дважды, ибо первый экран снимают {} и обработка регулярки ужа колдует со вторыми. И все сразу заработало. Можно вроде как оборачивать все в /N.../N но я не стал разбираться с этим.

(6) пропустить всех, кого не зарубили, заодно для контроля в лог писать кого и почему пустили.

И последние два правила - на стадии приема уже. Потому что...

(7) не мучить авторизованных, хотя, мне думается, можно было бы и без проверки авторизации обойтись. Отбить всех, у кого нет rDNS. Ибо вижу в логах кучу прошедших проверку helo тупо подставляющих мое имя сервера, имена типа USER, ADMIN и т.п. Можно было бы (1) инвертировать, но я как-то раньше сделал подобное - у кучи отправителей с хело проблемы жуткие, особенно у госников, а это отличные клиенты, нельзя им мешать. Тут важно иметь резолверы надежные, поэтому в /etc/resolv.conf на всякий случай третьей строчкой дописал nameserver 8.8.8.8

(8) ну и это особенно упоротые спамеры, например уродский Alexander с его настойчивыми просьбами "передать руководителю". Прям диву даешься, неужели кто на это дерьмо сейчас ведется? Но он спамит с реального хоста, проходящего все проверки. Учитывая кучу выливаемых им помоев - не зазорно ручками его в список внести. Почему пихнул это сюда, честно не могу припомнить.

Вот, типа все.

ЗЫ: правка в (7)

logwrite = -XXX rDNS of IP: $sender_host_address (helo: $sender_helo_name) is missing. XXX-

Как я понял, 

$sender_host_name

и есть тот самый rDNS поэтому глупо пытаться его писать в лог.

Kaavain
На сайте с 28.07.2015
Offline
133
#8
Короче, пришлось все кардинально переделать. Многое не фильтровалось, и еще немного - фильтровалось зря. Типа если с мобилы отправляешь сам письма - а тебе фиг. Но теперь - феншуй.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий