URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 57895
[ Назад ]

Исходное сообщение
"bad HELO"

Отправлено sproot , 04-Июл-05 10:23 
Насколько правильно использовать следующий набор правил для отлова bad HELO ?

SLocal_check_mail
R$*                             $:$1 $| <$&{auth_authen}>
R$* $| <$+>                     $:$1
R$* $| <$*>                     $:$1 $| <[$&{client_addr}]>[$&s]
R$* $| <$=w>[$*]                $:$1
R$* $| <[0]>[$*]                $:$1
R$* $| <[$-.$-.$-.$-]>[$*]      $:$1 $| <$( access $2.$3.$4.$5 $:[$2.$3.$4] $)>[$6]
R$* $| <RELAY>[$*]              $:$1
R$* $| <[$-.$-.$-]>[$*]         $:$1 $| <$( access $2.$3.$4 $:[$2.$3] $)>[$5]
R$* $| <RELAY>[$*]              $:$1
R$* $| <[$-.$-]>[$*]            $:$1 $| <$( access $2.$3 $:[$2] $)>[$4]
R$* $| <RELAY>[$*]              $:$1
R$* $| <[$-]>[$*]               $:$1 $| <$( access $2 $:[$2] $)>[$3]
R$* $| <RELAY>[$*]              $:$1
R$* $| <[$*]> $=w               $#error $@5.7.1 $:"550 Access denied - bogus HELO " $&s
R$* $| <[$*]> [$=w]             $#error $@5.7.1 $:"550 Access denied - bogus HELO " $&s
R$* $| <[$*]> [$+.$+]           $:$1
R$* $| <[$*]> [$*]              $#error $@5.7.1 $:"550 Access denied - bogus HELO " $&s


Содержание

Сообщения в этом обсуждении
"bad HELO"
Отправлено sproot , 05-Июл-05 17:18 
неужели ни у кого нет мнения ?

"bad HELO"
Отправлено Medlar , 06-Июл-05 17:08 
Уточни вопрос.
Правильно ли написаны правила или корректно ли блокировать badHELO именно таким образом?

Похоже, ты использовал правила Neil W Rickert, добавив проверку на access?


"bad HELO"
Отправлено sproot , 07-Июл-05 12:11 
>Уточни вопрос.
>Правильно ли написаны правила или корректно ли блокировать badHELO именно таким образом?
Правильность я протестировал (sendmail -bt и т.д.). Ошибки были, но я их сразу исправлял. На форуме я привел окончательный вариант. Если кто-нибудь потестит набор правил, я буду только рад.
да и...корректно ли блокировать bad HELO именно так ?
>
>Похоже, ты использовал правила Neil W Rickert, добавив проверку на access?
совершенно верно (в 10-ку). Т.к. класс $=R в ходе проверок всегда оказывается пустым (хотя в o'reilly - sendmail, 3rd edition написано "The class $=R holds as its list of values the host and domain names that sendmail should allow mail to be relayed to. This $=R class should not be used directly because it could change without notice in future versions of sendmail."), я решил использовать access.

"bad HELO"
Отправлено Medlar , 07-Июл-05 14:10 
> Если кто-нибудь потестит набор правил, я буду только рад.
Я использую почти такой же набор, только без проверки access:
исторически так сложилось, что использую для разрешения релея только relay-domains. Хотя в книге и не рекомендуется его использовать, но, согласись :),выгода есть: одно правило на проверку $=R или несколько правил на проверку access...
И везде, где встречаются правила на блокировку плохого helo, они выглядят приблизительно так же (обычно попроще). У тебя, можно сказать, полный набор исключений предусмотрен.

>да и...корректно ли блокировать bad HELO именно так ?
Ну, по крайней мере, когда Neil W Ricket опубликовал свои правила на sendmail-овской конфе, замечаний со стороны Claus Assman и др. гуру не было :)

>Т.к. класс $=R в ходе проверок всегда оказывается
>пустым (хотя в o'reilly - sendmail, 3rd edition написано "The class
>$=R holds as its list of values the host and domain
>names that sendmail should allow mail to be relayed to. This
>$=R class should not be used directly because it could change
>without notice in future versions of sendmail."), я решил использовать access.
Этот класс у тебя потому пустой, что ты не используешь файл relay-domains.
Он у тебя либо отсутствует, либо пустой.

Если ты не против, я добавлю твои правила сюда - http://www.anrb.ru/linux/sendm.html#3.5


"bad HELO"
Отправлено sproot , 07-Июл-05 17:23 
>> Если кто-нибудь потестит набор правил, я буду только рад.
>Я использую почти такой же набор, только без проверки access:
>исторически так сложилось, что использую для разрешения релея только relay-domains. Хотя в
>книге и не рекомендуется его использовать, но, согласись :),выгода есть: одно
>правило на проверку $=R или несколько правил на проверку access...
>И везде, где встречаются правила на блокировку плохого helo, они выглядят приблизительно
>так же (обычно попроще). У тебя, можно сказать, полный набор исключений
>предусмотрен.
Набор не полный т.к. допускает задание ip адреса, и предпоследнее правило его пропустит. Я тут сделал небольшое изменение по этому поводу.
Согласно rfc 1425 формат команды EHLO такой ehlo-cmd ::= "EHLO" SP domain CR LF  (SP - пробел)
аналогично HELO.
Согласно rfc 821:
"...HELLO (HELO)
            This command is used to identify the sender-SMTP to the
            receiver-SMTP.  The argument field contains the host name of
            the sender-SMTP. ..."
Значит мы можем фильтровать по некорректному домену который выступает в качестве domain в  команде HELO/EHLO
берем http://ftp.ics.uci.edu/pub/websoft/wwwstat/country-codes.txt потом awk '{print $1}' > /etc/mail/top-level-domain
в sendmail.cf добавляем класс F{bh}/etc/mail/top-level-domain и  меняем строчку, из выше приведенных правил, R$* $| <[$*]> [$+.$+]       $:$1
на R$* $| <[$*]> [$+.$={bh}]       $:$1
вроде все...
>>да и...корректно ли блокировать bad HELO именно так ?
>Ну, по крайней мере, когда Neil W Ricket опубликовал свои правила на
>sendmail-овской конфе, замечаний со стороны Claus Assman и др. гуру не
>было :)
значить у меня есть "алиби" :)
>>Т.к. класс $=R в ходе проверок всегда оказывается
>>пустым (хотя в o'reilly - sendmail, 3rd edition написано "The class
>>$=R holds as its list of values the host and domain
>>names that sendmail should allow mail to be relayed to. This
>>$=R class should not be used directly because it could change
>>without notice in future versions of sendmail."), я решил использовать access.
>Этот класс у тебя потому пустой, что ты не используешь файл relay-domains.
>
>Он у тебя либо отсутствует, либо пустой.
ты прав
>Если ты не против, я добавлю твои правила сюда - http://www.anrb.ru/linux/sendm.html#3.5
не вопрос, добавляй.

"bad HELO"
Отправлено Medlar , 07-Июл-05 18:03 
>Набор не полный т.к. допускает задание ip адреса, и предпоследнее правило его пропустит.
Но ведь ip-адреса допустимы: например, маленькая конторка, почтовик есть, а домена нет, тогда он в HELO представится своим ip. Или не так?


>Значит мы можем фильтровать по некорректному домену который выступает в качестве domain
>в  команде HELO/EHLO
>берем http://ftp.ics.uci.edu/pub/websoft/wwwstat/country-codes.txt потом awk '{print $1}' > /etc/mail/top-level-domain
>в sendmail.cf добавляем класс F{bh}/etc/mail/top-level-domain и  меняем строчку, из выше приведенных правил, R$* $| <[$*]> [$+.$+]       $:$1
>на R$* $| <[$*]> [$+.$={bh}]       $:$1
>вроде все...
Дааа, нет предела совершенству :)


"bad HELO"
Отправлено sproot , 08-Июл-05 04:27 
>>Набор не полный т.к. допускает задание ip адреса, и предпоследнее правило его пропустит.
>Но ведь ip-адреса допустимы: например, маленькая конторка, почтовик есть, а домена нет,
>тогда он в HELO представится своим ip. Или не так?
нет, тогда в HELO будет хост-имя (не FQDN). Вот это я и проглядел :( Нужно еще добавить одну строчку перед R$* $| <[$*]> [$+.$={bh}]       $:$1
R$* $| <[$*]> [$+]              $:$1
тогда полностью правила будут такими:
SLocal_check_mail
R$*                             $:$1 $| <$&{auth_authen}>
R$* $| <$+>                     $:$1
R$* $| <$*>                     $:$1 $| <[$&{client_addr}]>[$&s]
R$* $| <$=w>[$*]                $:$1
R$* $| <[0]>[$*]                $:$1
R$* $| <[$-.$-.$-.$-]>[$*]      $:$1 $| <$( access $2.$3.$4.$5 $:[$2.$3.$4] $)>[$6]
R$* $| <RELAY>[$*]              $:$1
R$* $| <[$-.$-.$-]>[$*]         $:$1 $| <$( access $2.$3.$4 $:[$2.$3] $)>[$5]
R$* $| <RELAY>[$*]              $:$1
R$* $| <[$-.$-]>[$*]            $:$1 $| <$( access $2.$3 $:[$2] $)>[$4]
R$* $| <RELAY>[$*]              $:$1
R$* $| <[$-]>[$*]               $:$1 $| <$( access $2 $:[$2] $)>[$3]
R$* $| <RELAY>[$*]              $:$1
R$* $| <[$*]> $=w               $#error $@5.7.1 $:"550 Access denied - bogus HELO " $&s
R$* $| <[$*]> [$=w]             $#error $@5.7.1 $:"550 Access denied - bogus HELO " $&s
R$* $| <[$*]> [$+]              $:$1
R$* $| <[$*]> [$+.$={bh}]       $:$1
R$* $| <[$*]> [$*]              $#error $@5.7.1 $:"550 Access denied - bogus HELO " $&s
теперь главное чтобы имена клиентских машин не совпадали с коротким именем
почтового сервера, иначе 5 правило снизу их не пропустит :)
Теперь насчет ip в HELO. В том же rfc не написано ничего про ip в HELO, значит мы можем фильтровать. У меня было масса случаев когда спамеры подставляли в HELO ip адрес моего почтового сервера...


"bad HELO"
Отправлено Stas_Dragon , 09-Июл-05 21:47 
>Если ты не против, я добавлю твои правила сюда - http://www.anrb.ru/linux/sendm.html#3.5

Сколько всеого полезного по этой ссылке о Sendmail...
Спасибо автору этой странички! за такой хороший ресурс



"bad HELO"
Отправлено sproot , 10-Июл-05 09:33 
>>Если ты не против, я добавлю твои правила сюда - http://www.anrb.ru/linux/sendm.html#3.5
>
>Сколько всеого полезного по этой ссылке о Sendmail...
>Спасибо автору этой странички! за такой хороший ресурс
Да, ресурс отличный...все в одном месте. Автору респект. :)

"bad HELO"
Отправлено sproot , 25-Июл-05 01:07 
Новый релиззз. :)

# for bad-HELO
F{bh}/etc/mail/top-level-domain
Kipadr regex -aFOUND [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}

SLocal_check_mail
R$*                                     $:$1 $| <$&{auth_authen}>
R$* $| <$+>                             $:$1
R$* $| <$*>                             $:$1 $| <[$&{client_addr}]>[$&s]
R$* $| <$=w>[$*]                        $:$1
R$* $| <[0]>[$*]                        $:$1
R$* $| <[$-.$-.$-.$-]>[$*]              $:$1 $| <$( access $2.$3.$4.$5 $:[$2.$3.$4] $)>[$6]
R$* $| <RELAY>[$*]                      $:$1
R$* $| <[$-.$-.$-]>[$*]                 $:$1 $| <$( access $2.$3.$4 $:[$2.$3] $)>[$5]
R$* $| <RELAY>[$*]                      $:$1
R$* $| <[$-.$-]>[$*]                    $:$1 $| <$( access $2.$3 $:[$2] $)>[$4]
R$* $| <RELAY>[$*]                      $:$1
R$* $| <[$-]>[$*]                       $:$1 $| <$( access $2 $:[$2] $)>[$3]
R$* $| <RELAY>[$*]                      $:$1
R$* $| <[$*]> $=w                       $#error $@5.7.1 $:"550 Access denied - bogus HELO " $&s
R$* $| <[$*]> [$=w]                     $#error $@5.7.1 $:"550 Access denied - bogus HELO " $&s
R$* $| <[$*]> [[127.$-.$-.$-]]          $#error $@5.7.1 $:"550 Access denied - bogus HELO " $&s
R$* $| <[$*]> [[10.$-.$-.$-]]           $#error $@5.7.1 $:"550 Access denied - bogus HELO " $&s
R$* $| <[$*]> [[172.$-.$-.$-]]          $#error $@5.7.1 $:"550 Access denied - bogus HELO " $&s
R$* $| <[$*]> [[192.168.$-.$-]]         $#error $@5.7.1 $:"550 Access denied - bogus HELO " $&s
R$* $| <[$*]> [[$+]]                    $:$1 $| <[$2]> [[ $( ipadr $3 $) ]]
R$* $| <[$*]> [[FOUND]]                 $:$1
R$* $| <[$*]> [$+.$={bh}]               $:$1
R$* $| <[$*]> [$*]                      $#error $@5.7.1 $:"550 Access denied - bogus HELO " $&s