LINUX.ORG.RU
ФорумAdmin

Что лучше - дропать или режектить?

 , , ,


0

1

Повадились на почтовый сервак всякие боты с разных стран подбирать email, например -

 550 5.1.1 <adam@chukcha.info>: Recipient address rejected: User unknown in virtual alias table; from=<0xt2aqt6mis3@daipra.it> to=<adam@chukcha.info> proto=ESMTP helo=<[193.32.160.151]> (total: 1)

Периодически блокирую их в файроволе, и тут возник вопрос: как лучше с ними бороться - дропать или режектить?

★★★★

Дропать конечно. Режект же во-первых, жрёт ресурсы, во-вторых, даёт понять, что ты живой и можно пытаться дальше.

no-such-file ★★★★★ ()
Ответ на: комментарий от no-such-file

Вот спасибо! Будем знать! :))
Единственное, опасаюсь, не получится ли при дропе атака типа наводнения, или sync, или еще какая-нибудь?

chukcha ★★★★ ()
Последнее исправление: chukcha (всего исправлений: 1)
Ответ на: комментарий от chukcha

Ну ты внимательнее смотри, там и на попытки логина в почту есть. Там ващет дохрена фильтров и еще более дохрена экшенов.

targitaj ★★★★★ ()

Общее правило, в общем, такое: то, что из внешней сети - хамски дропаем, то, что из внутренней - вежливо реджектим.

anonymous ()
Ответ на: комментарий от anonymous

Точнее: ботов - дропаем клиентов - реджектим не важно из какой они сети.

anonymous ()
Ответ на: комментарий от no-such-file

Можно ж своё правило написать.

Где именно - в фаере или fail2ban?


Точнее: ботов - дропаем клиентов - реджектим не важно из какой они сети.

Где тут должна быть запятая?
А то получается :) -

Казнить нельзя помиловать! :))

chukcha ★★★★ ()
Ответ на: комментарий от no-such-file

Да я понял, кого дропаем, а кого режектим, просто прикалываюсь над запятой ;)

Хорошо, а чем выгоднее прописывать правила в fail2ban, чем в файере?

chukcha ★★★★ ()
Ответ на: комментарий от chukcha

Где тут должна быть запятая?

А то получается :) - Там был перенос на следующую строку, но спасибо лоровскому форматировантю который его удалил.

anonymous ()
Ответ на: комментарий от anonymous

Это да, без знания BB в ЛОР лучше не соваться :)

chukcha ★★★★ ()
Ответ на: комментарий от targitaj

Хорошо, но пока не получил ответа на вопрос -

Хорошо, а чем выгоднее прописывать правила в fail2ban, чем в файере?

Догадываюсь, конечно, но лучше послушать знатоков ;)

chukcha ★★★★ ()
Ответ на: комментарий от targitaj

Ну да, они частенько меняются.
Кроме того, через какое-то некоторые из них, как это выразится - утихомируются, и их надо снова разбанивать.
В файере все это надо постоянно контролировать и перестраивать вручную, а fail2ban все это делает автоматически.
Правильны ли мои догадки? :)

chukcha ★★★★ ()
Ответ на: комментарий от chukcha

Ну да, fail2ban для этого и создан. Парсить в реальном времени логи, применять меры и следить за сроком действия принятых мер. Кроме локальных действий, еще и с тем же CloudFlare работает через API. Удобно.

targitaj ★★★★★ ()
Ответ на: комментарий от targitaj

Не подскажите ли, как в этом fail2ban настроить защиту от этих самых email-ботов?

А то настроил только защиту от ssh-попыток залогиниться, и считал, что настроил всё :)

chukcha ★★★★ ()
Ответ на: комментарий от targitaj

И что нужно вписать в postfix.conf , чтобы отвадить спам-ботов?

Там у меня пока такое: или оно уже готово к работе?

# Fail2Ban filter for selected Postfix SMTP rejections
#
#
[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf

[Definition]

_daemon = postfix(-\w+)?/(?:submission/|smtps/)?smtp[ds]

failregex = ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 554 5\.7\.1 .*$
            ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 450 4\.7\.1 Client host rejected: cannot find your hostname, (\[\S*\]); from=<\S*> to=<\S+> proto=ESMTP helo=<\S*>$
            ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 450 4\.7\.1 : Helo command rejected: Host not found; from=<> to=<> proto=ESMTP helo= *$
            ^%(__prefix_line)sNOQUEUE: reject: EHLO from \S+\[<HOST>\]: 504 5\.5\.2 <\S+>: Helo command rejected: need fully-qualified hostname;
            ^%(__prefix_line)sNOQUEUE: reject: VRFY from \S+\[<HOST>\]: 550 5\.1\.1 .*$
            ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 450 4\.1\.8 <\S*>: Sender address rejected: Domain not found; from=<\S*> to=<\S+> proto=ESMTP helo=<\S*>$
            ^%(__prefix_line)simproper command pipelining after \S+ from [^[]*\[<HOST>\]:?$

ignoreregex = 

[Init]

journalmatch = _SYSTEMD_UNIT=postfix.service

# Author: Cyril Jaquier

chukcha ★★★★ ()
Ответ на: комментарий от chukcha

чем выгоднее прописывать правила в fail2ban, чем в файере

Тем что он динамически определяет кого банить. Но если хочется можно и руками сделать banip.

no-such-file ★★★★★ ()
Ответ на: комментарий от no-such-file

Любопытно, если этот fail2ban такой белый и пушистый, то почему он идет отдельно, а не встраивают его сразу в дистрибутивы?

Помниться, еще в древнейшей Вынь 2000 есть встроенная фича для настройки числа попыток залогиниться и времени «заморозки».

chukcha ★★★★ ()
Ответ на: комментарий от chukcha

если этот fail2ban такой белый и пушистый, то почему он идет отдельно, а не встраивают его сразу в дистрибутивы?

Почему iptables идет отдельным пакетом, а брандмауэр в оффтопике встроенный? Почему openssh идет отдельным пакетом, а в оффтопике RDP встроенный?

И еще 100500 таких же аналогий... Я думаю ты понял к чему я веду, да?

Pinkbyte ★★★★★ ()
Ответ на: комментарий от Pinkbyte

Спасибо, я вспомнил и даже устыдился ;)
Как же я мог забыть, что Linux тем и хорош, что у него модульная архитектура!

chukcha ★★★★ ()
Ответ на: комментарий от targitaj

Да, так что делать с этим дефолтовыми правилами?

failregex = ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 554 5\.7\.1 .*$
            ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 450 4\.7\.1 Client host rejected: cannot find your hostname, (\[\S*\]); from=<\S*> to=<\S+> proto=ESMTP helo=<\S*>$
            ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 450 4\.7\.1 : Helo command rejected: Host not found; from=<> to=<> proto=ESMTP helo= *$
            ^%(__prefix_line)sNOQUEUE: reject: EHLO from \S+\[<HOST>\]: 504 5\.5\.2 <\S+>: Helo command rejected: need fully-qualified hostname;
            ^%(__prefix_line)sNOQUEUE: reject: VRFY from \S+\[<HOST>\]: 550 5\.1\.1 .*$
            ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 450 4\.1\.8 <\S*>: Sender address rejected: Domain not found; from=<\S*> to=<\S+> proto=ESMTP helo=<\S*>$
            ^%(__prefix_line)simproper command pipelining after \S+ from [^[]*\[<HOST>\]:?$

- поменять reject на drop и добавить эту? -
^%(__prefix_line)sdisconnect from \S+\[\]

chukcha ★★★★ ()
Ответ на: комментарий от anonymous

то, что из внешней сети - хамски дропаем, то, что из внутренней - вежливо реджектим

Плюсую этого анонимуса.

mord0d ★★★★★ ()
Ответ на: комментарий от mord0d

Ок, но тогда возникает закономерный вопрос - drop, если он такой хороший, то почему бы всех не дропать?
Не вникая, «свои» или «чужие» ;)

chukcha ★★★★ ()
Ответ на: комментарий от suffix

Спасибо за ценный веник! :))

А что означает «Проверка failregex из exim_auth (filter.d):» ?

Для этой проверки нужно выполнить какую-то команду, или как?

chukcha ★★★★ ()
Ответ на: комментарий от chukcha

почему бы всех не дропать?

Ну вперёд, чо. Но как ты будешь дебажить, если вдруг локальная почта (или релей) отвалится — это уже твоя головная боль.

mord0d ★★★★★ ()
Ответ на: комментарий от chukcha

Если нет ошибки, значит всё хорошо (спам-боты обкакаются от радости, что их почта "доходит" на все адреса). Конечно, с локальной почтой ты увидишь в логе что письмо было дропнуто, но по какой причине — сиди, гадай. Даже если у тебя всё работает, это не даёт никаких гарантий что в один "прекрасный" день ничего не отвалится после обновления или ты вдруг не опечатаешься в поле To:.

mord0d ★★★★★ ()
Ответ на: комментарий от mord0d

Конечно, с локальной почтой ты увидишь в логе что письмо было дропнуто, но по какой причине — сиди, гадай.

Так а если у меня нет локальной почты? Поскольку у меня внешний почтовый сервер на белом IP.

chukcha ★★★★ ()
Ответ на: комментарий от chukcha

нет локальной почты

внешний почтовый сервер

А между собой пользователи этого сервера переписываться не могут? Для MTA это локальная почта.

mord0d ★★★★★ ()
Ответ на: комментарий от mord0d

Для MTA это локальная почта.

Вот как? Любопытная классификация. Впрочем, логичная.
Спасибо!

chukcha ★★★★ ()
Ответ на: комментарий от suffix

filter.d папка в директории fail2ban - там лежат правила фильтрации. В моём случае - exim_auth.

Это я понял. Заинтересовало другое - слово «проверка».
Обычно этот термин предполагает какое-то действие. так что тут не понял.

chukcha ★★★★ ()
Ответ на: комментарий от chukcha

Это я проверял там инструментом failregex (входит в fail2ban) свои логи в той теме и в квадратных скобках было кол-во найденных совпадений. Сейчас убрал это чтобы Вас не смущало. Вообщем забейте :)

suffix ★★ ()
Последнее исправление: suffix (всего исправлений: 2)
Ответ на: комментарий от suffix

Ну почему же, этот инструментарий интересен и полезен, пусть остается.
А случаем, подобных правил для Postfix у вас нет? ;)
Потому что на одних серверах у меня стоит Exim, на других Postfix

chukcha ★★★★ ()
Ответ на: комментарий от targitaj

targitaj
Народ, похоже, что среди множества всяческих мыльных опер на тему «защиты почтового сервера от mail-ботов с помощью fail2ban » мне удалось найти действительно полезную статью - конкретную и без размазывания соплей: Настройка fail2ban для защиты Postfix на Centos

Готов ее заюзать, но прежде просьба к знатокам fail2ban глянуть - нет ли в ней ошибок? Могли чисто случайно вкрасться.

chukcha ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.